空域处理之亮度变换

参考视频
空间域处理的数学表示为:

其中 T:在f(x,y)上的操作,定义在(x,y)的某个邻域上。方形和矩形邻域是使用最多的,因为它们易实现,也可使用圆形区域。T可以在一组图像上进行消除,例如噪声消除。
T最简单的情况是邻域大小为1 × \times × 1,这是g只依赖于f(x,y)处的值,即
s = T ( r ) s=T(r) s=T(r)
称为灰度变换或亮度变换,其中s与r分别为输出和输入的亮度值。

1. 幂律变换

伽马变换本质上是对图像矩阵中的每个值进行幂运算。
幂函数 s = c r γ ( r ∈ [ 0 , 1 ] ) \text{幂函数}s=cr^γ(r\in[0,1]) 幂函数s=crγ(r[0,1])
其中,r为灰度图像的输入值(原来的灰度值),取值范围为[0,1]。s为经过伽马变换后的灰度输出值。c为灰度缩放系数,通常取1。γ为伽马因子大小。控制了整个变换的缩放程度。
在MATLAB中,使用
g = i m a d j u s t ( f , [ l o w − i n , h i g h − i n ] , [ l o w − o u t , h i g h − o u t ] , g a m m a ) g=imadjust(f,[low_-in,high_-in],[low_-out,high_-out],gamma) g=imadjust(f,[lowin,highin],[lowout,highout],gamma)

(1)应用例子1:对比度增强

伽马变化对图像亮度影响效果

  • 当γ >1时,曲线在γ =1的下方,因此图像会变暗。
  • 当0<γ<1时,曲线在γ =1的上方,因此图像会变亮。
    在这里插入图片描述
    伽玛变换对图像对比度的影响主要体现在以下几个方面:
  • 增强低灰度区域的对比度:当伽马因子γ<1时,伽马变换会将低灰度区域映射到更宽的灰度区间,从而增强这些区域的对比度。这使得图像中的暗部细节更加明显
  • 增强高灰度区域的对比度:当伽马因子γ >1时,伽马变换会将高灰度区域映射到更宽的灰度区间,从而增强这些区域的对比度,这使得图像中的亮部细节更加清晰。

如下图所示,伽马因子γ<1时,图像变亮,随着γ的逐渐减小,暗部细节逐渐清晰。
在这里插入图片描述
如下图所示,伽马因子γ>1时,图像变暗,随着γ的逐渐增大,亮部细节逐渐清晰。在这里插入图片描述
因此在进行伽马变换进行对比度增强改善图像质量时,首先根据图像的的亮度,判断伽马值是大于1还是小于1,然后再选取合适的伽马值。

(2)应用例子2:伽马校正

在这里插入图片描述

计算机生成的图像通常是在线性颜色空间中创建的,在线性颜色空间中,像素值与光的强度成正比。
然而由于显示设备的这种非线性特性,如果不对图像进行校正,直接将线性颜色空间的图像显示在屏幕上,如图所示,由于显示器对于输入的图像呈非线性变换(如 y = x 2 y = x^2 y=x2 ),使得显示的图像过暗。
因此在显示前先用伽马校正( z = x 0.5 z=x^{0.5} z=x0.5),经显示器显示后( y = z 2 = x y=z^{2}=x y=z2=x)恢复为原来的图像。

2. 分段线性函数

在这里插入图片描述
如图所示,该分段线性函数在低灰度区域,斜率小于1,将很宽的输入压缩至很宽的输出,压缩低灰度区域;在中间的灰度区域,斜率大于1,将很窄的输入拉伸至很宽的输出,拉伸中间灰度区域。
因此该分段线性函数会压缩低灰度区域和高灰度区域,拉伸中间区域,从而,增强中间灰度区域的对比度,凸显出中间部分。

3. 灰度级分层

灰度级分层的两种基本形式如下:

  • 将感兴趣的范围内的灰度值显示为一个值,而其他灰度值显示为另一个值

  • 将感兴趣的范围内的灰度值变亮或变暗,而其他灰度值保持不变

如下图所示,(a)处理后的图像应为二值图像,所以对应(d),(b)处理后的应为灰度图像,所以对应图(c).
在这里插入图片描述

4. 比特位面图像

如下图所示,第一幅图为原图(灰度图像),下面8幅图为各个比特位上的图片(二值图像)。会发现越高位上的图片会显示大致的轮廓,而低位部分则显示细节。
注意:各个比特面上的图像均为二值图像,之所以看上去像灰度图像,是因为点的密集程度不一样。
在这里插入图片描述
在这里插入图片描述

5. 对数变换

s = c l o g ( 1 + r ) s=clog(1+r) s=clog(1+r)

  • 其中c是常数,r为输入灰度值,s为输出灰度值
  • 该变换的形状类似于gamma曲线
  • 请注意: gamma曲线是可变的,而对数函数的形状是固定的。
  • 加1的目的是处理像素值为0的情况带来的异常

对数变换实现了图像灰度扩展和压缩的功能。它扩展低灰度值而压缩高灰度值,让图像的灰度分布更加符合人的视觉特征。

  • 例如,傅里叶谱的值在[0, 1 0 6 10^6 106]或更高的范围内并不少见。当显示在一个线性缩放到8位的显示器上时,高值占据了显示器的主导地位,从而丢失了低强度值的视觉细节频谱。通过计算log,动态范围如 1 0 6 10^6 106减少到大约14,这便于显示管理。
  • 执行对数转换时,通常希望将压缩后端值恢复到显示的全部范围。对于8位,再MATLAB中最简单的方法是使用这个语句
    g s = i m 2 u i n t 8 ( m a t 2 g r a y ( g ) ) ; gs=im2uint8(mat2gray(g)); gs=im2uint8(mat2gray(g));

使用mat2gray将彩色图像的像素值映射到[0,1]范围,而im2uint8将值映射到[0,255]范围。

6. 对比拉伸变换

s = T = 1 1 + ( m r ) E s=T=\frac{1}{1+(\frac{m}{r})^E} s=T=1+rm)E1

在这里插入图片描述

7.直方图均衡算法

算法步骤:
(1)对输入图像计算其直方图,并计算其归一化直方图 p r p_r pr
(2)利用下面的累计映射计算输入图像中每个灰度级 r k r_k rk对应的输入图像的灰度级 s k s_k sk
s k = T ( r k ) = ∑ j = 1 k p r ( r j ) = ∑ j = 0 k n j n , k = 0 , 1 , 2 , . . . , L k − 1 s_k=T(r_k)=\sum_{j=1}^{k} {p_r(r_j)}=\sum_{j=0}^{k}{\frac{n_j}{n}},k=0,1,2,...,L_k-1 sk=T(rk)=j=1kpr(rj)=j=0knnj,k=0,1,2,...,Lk1
(3) 注意这时 s k s_k sk为一个属于区间[0,1]的浮点数,可以通过 m k = [ s k ∗ ( L − 1 ) ] m_k=[s_k*(L-1)] mk=[sk(L1)] s k s_k sk转换为一个整数的灰度级别,其中[ ]代表着一种取整操作,这里不妨假设为四舍五入的取整运算
注意:这种取整运算会导致多个输入灰度级对应同一个灰度级的输出,即 m p = m p + 1 = . . . . . . = m q = m q + 1 m_p=m_{p+1}=... ...=m_q=m_{q+1} mp=mp+1=......=mq=mq+1,这时输出图像的灰度级 m k m_k mk对应的归一化直方图中的概率值为对应的多个输入灰度级的概率之和。
如下图所示,经过直方图均衡化后,像素值大多集中在高灰度值附近,造成这种原因的可能性就是中间有多个连续的像素值的数量都为0,然后进行累加运算后全部都映射到了150附近,因此图像从原来的过暗到过亮。因此直方图有时并不完美。

在这里插入图片描述

直方图连续运用多次以后,直方图和第一次均衡相差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值