『youcans 的 OpenCV 例程300篇 - 总目录』
【youcans 的 OpenCV 例程300篇】50. 直方图处理之直方图统计量图像增强
图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数。
直方图统计量图像增强,是基于直方图的统计量信息(如均值和方差)对图像的灰度和对比度进行调整。直方图统计量不仅用于图像的全局增强,在图像局部增强中更加有效。
局部均值和方差是根据像素邻域特征进行灰度调整的基础。像素邻域的局部均值是平均灰度的测度,局部方差是对比度的测度。使用局部均值和方差可以开发出简单而强大的图像局部增强算法。
以下基于 Rafael C. Gonzalez “Digital Image Processing (4th.Ed.)” 中的方法和案例进行介绍。
增强后的图像 g(x,y) 与原始图像 f(x,y) 的修正公式为:
g(x,y)={C∗f(x,y),(k0mG<m(Sxy)<k1mG)and(k2σG<σ(Sxy)<k3σG)f(x,y),C=max(rGlobal)/max(rROI)g(x,y)= \begin{cases} C*f(x,y) ,(k_0 m_G < m(S_{xy}) <k_1 m_G) and (k_2 \sigma_G < \sigma(S_{xy}) <k_3 \sigma_G)\\ f(x,y) , \end{cases}\\ C = max(r_{Global})/max(r_{ROI}) g(x,y)={C∗f(x,y),(k0mG<m(Sxy)<k1mG)and(k2σG<σ(Sxy)<k3σG)f(x,y),C=max(rGlobal)/max(rROI)
如果待增强区域相对平均灰度更暗,可以选择 k0=0,k1=0.1k_0 = 0, k_1 = 0.1k0=0,k1=0.1;如果待增强区域的对比度很低,可以选择 k2=0,k3=0.1k_2 = 0, k_3 = 0.1k2=0,k3=0.1。
需要指出的是,这种方法只对某些特殊类型的图像有效,而且需要针对具体图像进行 ROI 设置和参数调节,才能取得较好的图像增强效果。
基本例程:1.63 直方图统计量图像增强
# # 1.63 直方图统计量图像增强img = cv2.imread("../images/Fig0326a.tif", flags=0) # flags=0 读取为灰度图像imgROI = img[12:120, 12:120]maxImg, maxROI = img.max(), imgROI.max()const = maxImg / maxROIimgHSE = enhanceHistStat(img, const) # 子程序:直方图统计量增强 (自定义方法)plt.figure(figsize=(10, 6))plt.subplot(131), plt.title("Original image"), plt.axis('off')plt.imshow(img, cmap='gray', vmin=0, vmax=255)plt.subplot(132), plt.title("Global equalize histogram"), plt.axis('off')imgEqu = cv2.equalizeHist(img) # 使用 cv2.qualizeHist 完成直方图均衡化变换plt.imshow(imgEqu, cmap='gray', vmin=0, vmax=255)plt.subplot(133), plt.title("Histogram statistic enhance"), plt.axis('off')plt.imshow(imgHSE, cmap='gray', vmin=0, vmax=255)plt.show()
(本节完)
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18