OpenCV 图片处理:保持彩色图像的质量增强方法
非常抱歉给您带来困扰。根据您的需求,您希望处理后的图像仍然保持彩色。为了实现这一点,我们需要在处理图像之前,将其从 BGR 颜色空间转换为 YUV 颜色空间,然后对 Y 通道进行处理,最后将图像转换回 BGR 颜色空间。
以下是改进后的代码:
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
image = cv2.imread('photo.jpg')
# 将图像从 BGR 转换为 YUV
image_yuv = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
# 提取 Y 通道
image_y = image_yuv[:,:,0]
# 傅里叶变换
fft = np.fft.fft2(image_y)
fft_shift = np.fft.fftshift(fft)
magnitude_spectrum = 20 * np.log(np.abs(fft_shift))
# 显示频谱图
plt.subplot(121), plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
# DCT变换
dct = cv2.dct(np.float32(image_y))
dct_shift = np.fft.fftshift(dct)
dct_spectrum = 20 * np.log(np.abs(dct_shift))
# 显示DCT频谱图
plt.subplot(121), plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(dct_spectrum, cmap='gray')
plt.title('DCT Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
# 去噪和质量增强
# 直方图均衡化
equ = cv2.equalizeHist(image_y)
# 去过曝光
clahe = cv2.createCLAHE(clipLimit=2.0)
cl = clahe.apply(image_y)
# 光线补偿
mean, std = cv2.meanStdDev(image_y)
mean_val = mean.item()
std_val = std.item()
adjusted = cv2.addWeighted(image_y, 1, image_y, (127-mean_val)/std_val, 0)
# 将处理后的 Y 通道与原始 U、V 通道合并为彩色图像
image_yuv[:,:,0] = adjusted
image_output = cv2.cvtColor(image_yuv, cv2.COLOR_YUV2BGR)
# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Equalized Histogram', cv2.cvtColor(image_output, cv2.COLOR_BGR2RGB))
cv2.imshow('Contrast Limited Adaptive Histogram Equalization', cv2.cvtColor(cv2.merge([equ, image_yuv[:,:,1], image_yuv[:,:,2]]), cv2.COLOR_YUV2BGR))
cv2.imshow('Light Compensation', cv2.cvtColor(cv2.merge([adjusted, image_yuv[:,:,1], image_yuv[:,:,2]]), cv2.COLOR_YUV2BGR))
cv2.waitKey(0)
cv2.destroyAllWindows()
请尝试运行改进后的代码,查看处理后的图像是否仍保持彩色。如果还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/1ua 著作权归作者所有。请勿转载和采集!