数字图像处理
参考视频
Task 1 亮度变换
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。γ为伽马因子大小。控制了整个变换的缩放程度。
(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的情况带来的异常
对数变换实现了图像灰度扩展和压缩的功能。它扩展低灰度值而压缩高灰度值,让图像的灰度分布更加符合人的视觉特征。
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
,
11
,
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,11,2,...,L_k-1
sk=T(rk)=j=1∑kpr(rj)=j=0∑knnj,k=0,11,2,...,Lk−1
(3) 注意这时
s
k
s_k
sk为一个属于区间[0,1]的浮点数,可以通过
m
k
=
[
s
k
∗
(
L
−
1
)
]
m_k=[s_k*(L-1)]
mk=[sk∗(L−1)]将
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附近,因此图像从原来的过暗到过亮。因此直方图有时并不完美。
直方图连续运用多次以后,直方图和第一次均衡相差不多。