直方图均衡化实现暗光增强

直方图均衡化(Histogram Equalization, HE) 是一个很经典的方法,可以用来实现暗光图像增强(Low Light Image Enhancement, LLIE) ,尽管现在深度学习很发达,但是从实用和效率的角度而言,该方法还是很好用的。并且该方法也是无监督的,它不需要任何正常光图片作为监督学习。只需要导入暗光图片即可。
具体代码也很简单

import matplotlib.pyplot as plt
from skimage import io, exposure

# Load RGB image
image = io.imread('./low/1.png')

# Apply histogram equalization to each color channel separately
image_eq = exposure.equalize_hist(image, nbins=256)

# Display the original and the equalized image
fig, ax = plt.subplots(ncols=2, figsize=(10, 5))
ax[0].imshow(image)
ax[0].set_title('Original')
ax[1].imshow(image_eq)
ax[1].set_title('Histogram equalization')
plt.show()

实验结果如下
直方图均衡化实现暗光增强_第1张图片
图片用的是LLIE中很常用的一个数据集LOL-v1
为了更好地验证生成图像的好坏,可以引入PSNR(峰值信噪比,Peak Signal-to-Noise Ratio)和SSIM(结构相似度,Structure Similarity)两个metrics来计算增强图像的质量。其中PSNR越大,图像差异越小,SSIM越大,两张图像越相似,并且SSIM<=1。

计算他们也很简单. 由于之前HE生成的图像是(0,1)区间的,原图是(0,255),需要对image_eq 乘255.

from skimage import io, metrics

# Load the original and reconstructed images
img_original = io.imread('./high/1.png')
img_reconstructed = image_eq*255

# Calculate PSNR
psnr = metrics.peak_signal_noise_ratio(img_original, img_reconstructed)

# Calculate SSIM
ssim = metrics.structural_similarity(img_original, img_reconstructed, multichannel=True)

# Print the results
print(f"PSNR: {psnr:.2f}")
print(f"SSIM: {ssim:.2f}")

计算结果为psnr: 20.94, SSIM: 0.67

你可能感兴趣的:(图像处理,统计学/数据处理/机器学习,深度学习,python,开发语言,图像处理,深度学习,算法)