同态滤波图像增强python代码 结果转换为rgb图
时间: 2023-08-06 11:10:11 浏览: 128
同态滤波图像增强源码
5星 · 资源好评率100%
可以使用OpenCV库中的`cvtColor`函数将增强后的灰度图像转换为RGB图像。以下是修改后的示例代码:
```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)
# 灰度图像转RGB图像
image_enhanced_rgb = cv2.cvtColor(image_enhanced, cv2.COLOR_GRAY2RGB)
# 显示结果
cv2.imshow("Original Image", image)
cv2.imshow("Enhanced Image", image_enhanced_rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`image_enhanced`是增强后的灰度图像,可以使用`cv2.cvtColor`函数将其转换为RGB图像保存在`image_enhanced_rgb`中。最终使用`cv2.imshow`函数显示原始图像和增强后的RGB图像。
阅读全文