一、直方图定义
直方图显示图像数据时会以左暗又亮的分布曲线形式呈现出来,而不是显示原图像数据,并且可以通过算法来对图像进行按比例缩小,且具有图像平移、旋转、缩放不变性等众多优点。直方图在进行图像计算处理时代价较小,所以经常用于图像处理!
二、灰度直方图
依据定义,若图像具有L(通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图像f(x,y)的灰度直方图hist[0…L-1]可用如下计算获得。
1、初始化 hist[k]=0; k=0,…,L-1
2、统计 hist[f(x,y)]++; x=0,…,M-1, y =0,…,N-1
3、归一化 hist[f(x,y)]/=M*N
图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。
#计算灰度图的直方图
def clczhifangtu(gray) :
hist_new = []
num = []
hist_result = []
hist_key = []
gray1 = list(gray.ravel()) #将读取出来的数组转化为一维列表方便循环遍
obj = dict(collections.Counter(gray1)) #计算每个灰度级出现的次数
obj = sorted(obj.items(),key=lambda item:item[0])
for each in obj :
hist1 = [