本文主要是介绍图像处理-灰度变换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
灰度变换是直接在图像上进行操作的方法。
灰度变换:
一些基本的灰度变换函数:
1.图像反转
2.对数变换
3.幂律变换:存在伽马变换(系数称为伽马)来矫正显示器的失真。还可以用来增强对比度(通过增大灰度密集区域的间距来增强图像的对比度)
4.分段线性变换:
(1)对比度拉伸:可以将灰度密集区域变换到较为宽广的范围,压缩不感兴趣区域的灰度范围。
(2)灰度级分层,将感兴趣区域的灰度直接增强,消去/不改变其他区域灰度值。
(3)比特平面分层:通过每个像素相应的每一位0/1来够成图片,有助于节省数据占用的空间。
直方图处理:
1.直方图均衡化:
对于直方图上灰度范围较为集中的图像(某个范围内像素灰度值的概率较大)会显得偏暗或者偏亮,进而造成对比度低的视觉效果,我们可以进行直方图均衡化来增强对比度。
其实就是通过计量原图中各灰度值相对于总体像素个数出现的频率占比(这个占比包含小于它的灰度的那部分比例,这个占比是归一化的,其总和为1),然后通过原图的最大灰度(因为不能改变图像原来的灰度范围区间),将最大灰度(其实就是原来的灰度范围)乘以频率占比,按照各个灰度出现的频率重新分配成新的灰度(四舍五入了)。这样就有了原始图像灰度对应新的灰度的一个关系,实现了重新分配的目的。
比如,原来图像较暗,灰度集中在较为低的区域内,通过对低灰度区域占比的计算,我们知道这个比重较大,相反,高灰度区域的占比就很小了。这样,我们用低灰度区域较高的占比乘以总的灰度范围,就会得到比较大的值,这个值四舍五入之后还是比较大,那么低灰度区域的这些像素,就被拉到一个灰度值较高的区域,低灰度区域的密集度相对来说就比较小了。那这样拉开了间距,对比度自然就提升了。
相反,对于灰度值较高,占比数量较少的这些像素来说,通过这么一通计算,他们仍然在较高的灰度范围上(因为占比是累加的,包含以前那些低灰度区域的占比在内),甚至有可能被挤到最高的灰度上,这样就忽略了不太感兴趣的区域。
(其实通过占比的自然提升,灰度是一定会上升到最大的,只不过提升的快的时候,灰度有可能会跳过一些值,将范围展开,其实这也反映了均衡化的效果)
2.直方图匹配(规定化):
其实就是设定一个期望的直方图样式,通过设定一个变换函数,将原图像的直方图变换成为希望的样式的直方图。
这样的好处在于可以任意的改变直方图的形状,不像直方图均衡化一样不可控,能够将不想要的区域进行抑制。
3.局部直方图均衡:
当目标在几个小区域时,我们使用全局直方图的变换可能难以产生效果,因为小区域的像素比较少,难以起到决定性的作用。局部直方图均衡通过将输入图像划分为小的子块(不重叠/重叠)来进行均衡,能得到不错的效果。
4.使用直方图统计量增强图像:
这篇关于图像处理-灰度变换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!