灰度直方图是一个离散函数,它表示图像每一个灰度级与该灰度级出现频率的对应关系。一般计算步骤:
1、统计各个灰度值的像素个数
2、根据统计表画出直方图
性质:
1、只反映该图像中不同灰度值出现的次数,并不能反映某一灰度值像素所在的位置
2、任何一张图像能唯一的确定一个与它对应的直方图,而一个直方图可以有很多个不同的图像
3、如果一张图片被分成好几份,那这好几份的小图的直方图加起来就是全图的直方图。有木有很神奇(哈哈)
用途:阈值分割、图像增强
灰度直方图就长下图这样:
最简单的阈值处理就是:
1、你有图像的灰度直方图
2、你是主子,你设定了一个阈值T
3、拿着设置的阈值T与每一个像素灰度值进行比较,小于的设为一种颜色,大于的设为另一种颜色。可以做颜色反转
方法:
基本全局阈值算法
1选择一个T的初始估计值
2用T分割图像,生成两组像素:G1由所有灰度值大于T的像素组成,G2就是另外一部分剩余(小于T)的像素
3对G1、G2中所有的像素计算平均灰度值
4上面求得的两个平均灰度之和的二分之一就是新的阈值T1
5重复以上2-4,直到迭代所得的T1值之差小于事先定义的参数T
应用:指纹识别
基本自适应阈值
对于不均匀亮度图像,全局阈值不能实现有效分割。
通过边界特性选择阈值
基本思想:
1如果直方图的各个波峰很高,很窄,对称,且被很深的波谷分开时,有利于选择阈值。
2为了改善直方图的波峰形状,我们只把区域边缘的像素汇入直方图,而不考虑区域中间的像素
3用微分算子,处理图像,使图像只剩下边界中心两边的值。
优点:
1在前景和背景所占区域面积差别很大时,不会造成一个灰度级的波峰过高,而另一个过低
2边缘上的点在区域内还是区域外的概率是相等的,因此可以增加波峰的对称性
3基于梯度和拉普拉斯算子选择的像素,可以增加波峰的高度。
实现:
1对图像进行梯度计算,得到梯度图像
2得到梯度值最大的那一部分的像素直方图
3通过直方图的谷底,得到阈值T
如果用拉普拉斯算子,不通过直方图,直接得到阈值,方法是使用拉普拉斯算子过滤图像,将0跨越点对应的灰度值为阈值。