同态滤波图像增强python代码
时间: 2023-07-09 13:35:06 浏览: 120
以下是一份使用Python实现同态滤波图像增强的示例代码:
```python
import cv2
import numpy as np
def homomorphic_filter(image, sigma, gamma_L, gamma_H):
# 对数变换
img_log = np.log1p(np.array(image, dtype="float") / 255)
# 傅里叶变换
img_fft = np.fft.fft2(img_log)
# 中心化
img_fft_shift = np.fft.fftshift(img_fft)
# 高斯滤波器
rows, cols = image.shape
M, N = np.meshgrid(np.arange(-cols/2, cols/2), np.arange(-rows/2, rows/2))
D = np.sqrt(M**2 + N**2)
H = (gamma_H - gamma_L) * (1 - np.exp(-sigma * (D**2))) + gamma_L
# 滤波
img_fft_filtered = H * img_fft_shift
# 反中心化
img_fft_filtered_shift = np.fft.ifftshift(img_fft_filtered)
# 反傅里叶变换
img_filtered = np.real(np.fft.ifft2(img_fft_filtered_shift))
# 指数变换
img_exp = np.expm1(img_filtered)
img_output = np.uint8(255 * img_exp / np.max(img_exp))
return img_output
# 读取图像
image = cv2.imread("lena.jpg", cv2.IMREAD_GRAYSCALE)
# 同态滤波增强
sigma = 10
gamma_L = 0.25
gamma_H = 2.0
image_enhanced = homomorphic_filter(image, sigma, gamma_L, gamma_H)
# 显示结果
cv2.imshow("Original Image", image)
cv2.imshow("Enhanced Image", image_enhanced)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`image`是输入的灰度图像,`sigma`、`gamma_L`和`gamma_H`是同态滤波的参数。最终的增强后的图像保存在`image_enhanced`中,使用`cv2.imshow`函数可以显示原始图像和增强后的图像。
阅读全文