本章主要讲的是空间域的操作(即图像本身)
本章主要讨论形如 g ( x , y ) = T [ f ( x , y ) ] g(x,y) = T[f(x,y)] g(x,y)=T[f(x,y)]的灰度变换和空间滤波
上面的公式也可以写成更一般的形式 s = T ( r ) s = T(r) s=T(r)
s 、 r s、r s、r分别表示输出图像和源图像
操作 T T T可以是对邻域的操作(比如对图像进行模糊操作)
灰度变换和空间滤波可用于图像增强
灰度变换可以是一个简单的映射(比如 T T T代表查表操作,源图像每一个灰度值在表里头都有一个对应的灰度值作为输出)
s = 255 − r s = 255 - r s=255−r,就是一个8bit灰度图像的反转方法,可以做出来底片的效果
s = c log ( 1 + r ) , r ≥ 0 , c = c o n s t s = c\log{(1+r)}, r\ge0,c=const s=clog(1+r),r≥0,c=const
可以把灰度值中范围较窄低灰度值范围映射到一个范围较宽的灰度值范围,或者把范围较宽的高灰度值范围压缩为范围较窄的灰度值范围
s = c r γ s = cr^\gamma s=crγ
优点是可以任意复杂,缺点是需要用户手动输入
一般采用统计每个灰度值的像素个数,除以总像素个数,得到一个频率。
根据这个频率做出直方图
s = T ( r ) s=T(r) s=T(r)
这个博客讲的挺好:直方图均衡化
所用函数应该遵顼一下几个限制
变换函数 T ( r ) 是 单 增 函 数 T(r) 是单增函数 T(r)是单增函数——防止灰度反变换时出现人为缺陷
输出范围和输入范围相同 0 < r < L 0
正反函数都是一对一的(确保能够还原回去,如果遇到小数则选择合适的近似方法解决反变换问题)
s = T ( r ) = ( L − 1 ) ∫ 0 r P r ( r ) d r s = T(r) = (L-1)\int^r_0P_r(r)dr s=T(r)=(L−1)∫0rPr(r)dr,(L-1)为了使归一化后的像素展开到 [ 0 , L − 1 ] [0,L-1] [0,L−1]
直方图规定化(histogram specification)又称直方图匹配,是指使一幅图像的直方图变成规定形状的直方图而对图像进行变换的增强方法。就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以,直方图修正的关键就是灰度映像函数。
直方图规定化原理是对两个直方图都做均衡化,变成相同的归一化的均匀直方图。以此均匀直方图起到媒介作用,再对参考图像做均衡化的逆运算即可。直方图均衡化是直方图规定化的桥梁。
————————————————
版权声明:本文为CSDN博主「残月飞雪」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/majinlei121/article/details/46482615
相当于现在已知源图像的分布律 p k ( r ) pk(r) pk(r),均衡直方图 s s s 【 s = ( L − 1 ) ∫ 0 r p r ( t ) d t s = (L-1)\int^r_0p_r(t)dt s=(L−1)∫0rpr(t)dt】,想要变换称为的分布形式 p z ( z ) p_z(z) pz(z),把目标输出 z z z变为均衡直方图的变换函数 G ( z ) = ( L − 1 ) ∫ 0 z p z ( t ) d t G(z) = (L-1)\int^z_0p_z(t)dt G(z)=(L−1)∫0zpz(t)dt
这样,有以下几个公式:
s = ( L − 1 ) T ( r ) = ∫ 0 r p r ( t ) d t s = (L-1)T(r) =\int^r_0p_r(t)dt s=(L−1)T(r)=∫0rpr(t)dt
G ( z ) = ( L − 1 ) ∫ 0 z p z ( t ) d t = s G(z) = (L-1)\int^z_0p_z(t)dt = s G(z)=(L−1)∫0zpz(t)dt=s这里的** p z ( t ) p_z(t) pz(t)是我们希望得到的像素分布情况,是已知的**
均衡直方图相当于中间变量,起桥梁作用
根据已知 z = G − 1 [ G ( z ) ] = G − 1 ( s ) = G − 1 [ T ( r ) ] z = G^{-1}[G(z)] = G^{-1}(s) = G^{-1}[T(r)] z=G−1[G(z)]=G−1(s)=G−1[T(r)]
数字图像处理第三章的例3.7通过实例演示了一遍求解方法
实际情况中,其实不需要求出具体的反函数,可以用制表的方法进行像素值的映射
根据变换函数G(z) 可以得到 z → s z\to s z→s的映射,反过来用就可以了,需要单值函数才行,上面部分有说,要基本保证一一对应
在进行计算的时候需要进行四舍五入(灰度值是整数值),如果舍入以后不满足严格单增,那么按照惯例统一向下取整