关于直方图均衡化我一直想写文章简要介绍这个原理。
对于给定图像,所有像素点的分布在给定阈值内可能非常密集或稀疏。 为了进一步强调图像的对比度信息,尝试使像素的分布均匀,换言之,使同一阈值区间内的像素点数尽量相同。
关于直方图均衡化的理论基础概率的分布函数。 简单地说,在连续型随机变量的情况下,分布函数等于随机变量在某个区间的概率密度函数的积分。 分布函数可以简单地理解为发生累计的概率。 对于离散型随机变量来说,分布函数是每个离散点发生概率的累积。
在介绍概率的基础后,介绍基于该原理实现直方图均衡化的方法。
1 .首先计算整个图像的直方图
2 .根据直方图求出每个像素点发生的概率
3 .将对应于每个像素点的概率乘以动态范围(例如,8bit=255 )并下采样后获得平均化后的图像。
很多博主举例计算,后来陆续附上matlab和python的实现,以及最近其他直方图算法的研究。
importnumpyimportpylabimportcv2importmatplotlib.pyplotaspltdefhisteq (im,nbr_bins=65536 ) 3360print ) im.shape,in dtype=numpy.int16 ) # Calculate the histogram imhist,bins=numpy.histograation NBR _ bins-1 ), density=false (# calculatetheprobabilitydensityfunctionofthesub-histogramhistpdf=imhist/numpy.float 32 (im.size ) derivethecumulativehistogramcdf=hist pdf.cumsum (# histogramequalizationforeachofthesub-histograms fl=255 * CD ffl=fpl im.shape(0) ) : for j in range(0) 0,im.shape(0) ) :img[I][j]=fl(im[I] 1) pylab.plot(xr,) fall=histeq(img,nbr_bins=65536 ) PLT.subplot(221 )、plt.show ) new_img、' gray ' )、PLT.title ) TT