网站登录页面怎么做,做网站用的幻灯片大小,网站引导页在线做,大丰微信网站开发公司『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】47. 直方图处理之直方图匹配 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数#xff0c;用来描述每个灰度级在图像矩阵中的像素个数。
直方图均衡直接对图像全局进行均衡化…『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】47. 直方图处理之直方图匹配 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数用来描述每个灰度级在图像矩阵中的像素个数。
直方图均衡直接对图像全局进行均衡化生成具有均匀直方图的图像并不考虑局部图像区域的具体情况。对于一幅图像的局部区域、具体缺陷有时需要生成具有特殊形状直方图的图像。
直方图匹配又称为直方图规定化是指将图像的直方图调整为规定的形状。 例如将一幅图像或某一区域的直方图匹配到另一幅影像上使两幅影像的色调保持一致。
这就需要在直方图均衡的基础上再进行一次反变换将均匀形状的直方图调整为规定的形状。
直方图匹配的主要步骤为
1通过规定图像 z 的直方图 pz(z)p_z(z)pz(z)计算其直方图均衡变换的 sks_ksk
2通过 sks_ksk 计算图像 z 的直方图均衡变换函数 GGGG(zq)skG(z_q)s_kG(zq)sk
3计算变换函数 GGG 的逆变换函数 G−1G^{-1}G−1zqG−1(sk)z_qG^{-1}(s_k)zqG−1(sk)
4对输入图像 r 进行直方图均衡得到均衡图像 s然后再用逆变换函数 G−1G^{-1}G−1 将其映射到 pz(z)p_z(z)pz(z)得到直方图匹配图像 z。本步骤中的两次变换也可以合并为一次完成。 例程1.59 灰度图像直方图匹配 # 1.59 灰度图像直方图匹配img cv2.imread(../images/imgGaia.tif, flags0) # flags0 读取为灰度图像imgRef cv2.imread(../images/Fig0307a.tif, flags0) # 匹配模板图像, matching template# imgOut calcHistMatch(img, imgRef) # 子程序直方图匹配# 计算累计直方图histImg, bins np.histogram(img.flatten(), 256) # 计算原始图像直方图histRef, bins np.histogram(imgRef.flatten(), 256) # 计算匹配模板直方图cdfImg histImg.cumsum() # 计算原始图像累积分布函数 CDFcdfRef histRef.cumsum() # 计算匹配模板累积分布函数 CDF# 计算直方图匹配转换函数transM np.zeros(256)for i in range(256):index 0vMin np.fabs(cdfImg[i] - cdfRef[0])for j in range(256):diff np.fabs(cdfImg[i] - cdfRef[j])if (diff vMin):index int(j)vMin difftransM[i] index# 直方图匹配# imgOut np.zeros_like(img)imgOut transM[img].astype(np.uint8)fig plt.figure(figsize(10,7))plt.subplot(231), plt.title(Original image), plt.axis(off)plt.imshow(img, cmapgray) # 原始图像plt.subplot(232), plt.title(Matching template), plt.axis(off)plt.imshow(imgRef, cmapgray) # 匹配模板plt.subplot(233), plt.title(Matching output), plt.axis(off)plt.imshow(imgOut, cmapgray) # 匹配结果histImg, bins np.histogram(img.flatten(), 256) # 计算原始图像直方图plt.subplot(234, yticks[]), plt.bar(bins[:-1], histImg)histRef, bins np.histogram(imgRef.flatten(), 256) # 计算匹配模板直方图plt.subplot(235, yticks[]), plt.bar(bins[:-1], histRef)histOut, bins np.histogram(imgOut.flatten(), 256) # 计算匹配结果直方图plt.subplot(236, yticks[]), plt.bar(bins[:-1], histOut)plt.show()本节完 版权声明 youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/125112487) Copyright 2022 youcans, XUPT Crated2021-11-18