2 - 数字图像处理

Download Report

Transcript 2 - 数字图像处理

第4章
图像增强
4.1 图像增强概述
4.1.1
图像增强的定义
对图像的某些特征,如
边缘
轮廓
对比度等
进行强调或锐化,以便于显示、观察或进一
步分析与处理。
首要目标:
处理图像,使其比原始图像更适合于特
定应用。
增强的方法是因应用不同而不同的。
图像增强方法只能有选择地使用。
增强的结果
只是靠人的主观感觉加以评价。
4.1.2 图像增强研究的内容
灰度变换
点运算
空间域
直方图修正法
平滑
区域运算
锐化
高通滤波
频率域
图像增强
低通滤波
同态滤波增强
假彩色增强
彩色增强
伪彩色增强
彩色变换增强
代数运算
图4.1 图像增强的内容
4.2 空间域单点增强
点运算
像素值通过运算改变之后,可以改善图
像的显示效果。
这是一种像素的逐点运算。
点运算与相邻的像素之间无运算关系
是旧图像与新图像之间的映射关系。
对于一幅输入图像,经过点运算将产生
一幅输出图像。
输出图像上每个像素的灰度值仅由相应输入
像素的灰度值决定,而与像素点所在的位置
无关。
典型的点运算:
对比度增强、对比度拉伸或灰度变换。
4.2.1
灰度级校正
 在成像过程中,如
光照的强弱、感光部件的灵敏度、光学系统的不
均匀性、元器件特性的不稳定
等均可引起图像亮度分布的不均匀。
灰度级校正
在图像采集系统中对图像像素进行逐点修正,使
得整幅图像能够均匀成像。

设理想真实的图像为 f (i, j ) ,实际获得的含噪
声的图像为g (i, j ) ,则有
g (i, j )  e(i, j ) f (i, j )
(4.1)
 e(i, j ) 是使理想图像发生畸变的比例因子。
知道了 e(i, j ) , 就可以求出不失真图像。
标定系统失真系数的方法
采用一幅灰度级为常数C的图像成像,若经成像
系统的实际输出为 g c (i, j) ,则有
g c (i, j )  e(i, j )C
(4.2)
 可得比例因子:
e i, j   gc i, j  C 1
(4.3)
 可得实际图像g(i,j)经校正后所恢复的原始图像
g  i, j 
f  i, j   C
g c  i, j 
 乘了一个系数C/ gc(i,j) ,校正后可能出现“溢出”现
(4.4)
象
 灰度级值可能超过某些记录器件或显示设备输入信号的动态
可范围
 需再作适当的灰度变换,最后对变换后的图像进行量化。
4.2.2 灰度变换
 灰度变换
 可使图像动态范围增大,图像对比度扩展
 从而使图像变得清晰以及图像上的特征变得明
显。
1.线性变换
 令原图像f (i, j)的灰度范围为[a,b]
 线性变换后图像g(i, j)的范围为[a’, b’]。
g(i,j)
b
a
f(i,j)
a
b
图4.2 线性变换
g(i, j)与f(i, j)之间的关系为:
g  i, j   a '
b ' a '
[ f  i, j   a ]
ba
(4.5)
分段线性变换的目的
突出感兴趣的目标或灰度区间,相对抑
制那些不感兴趣的灰度区间。
常用的是三段线性变换。
Mg
g
d
c
f
a
a
b
b
Mf
图4.3 三段线性
 c / a  f  i, j 

0  f  i, j   a

g  i, j     d  c  /  b  a    f  i, j   a   c
a  f  i, j   b

 M g  d  /  M f  b    f  i, j   b   d



b  f  i, j   M f
 对灰度区间[a,b]进行了线性拉伸,而灰度区
间[0,a]和[b,Mf]则被压缩。
 仔细调整折线拐点的位置及控制分段直线的
斜率,可以对图像的任一灰度区间进行拉伸
或压缩 。
【例4.1 】在MATLAB环境中,采用图像线性变
换进行图像增强。应用MATLAB的函数
imadjust将图像0.3×255~0.7×255灰度之间的
值通过线性变换映射到0~255之间。
解:分别取:a=0.3×255,b=0.7×255,
a’=0,b’=255。
实现的程序:
•
•
•
•
•
A=imread('pout.tif');
%读入图像
imshow(A);
%显示图像
figure,imhist(A);
%显示图像的直方图
J1=imadjust(A,[0.3 0.7],[]);
%函数将图像在0.3*255~0.7*255灰度之间的值
通过线性变换映射到0~255之间
• figure,imshow(J1);
%输出图像效果图
• figure,imhist(J1)
%输出图像的直方图
(a)原图
(b)原图的直方图
(c)输出图像
(d)输出图像的直方图
图4.4 图像线性变换
2.非线性灰度变换
 当用某些非线性函数如对数、指数函数等
作为映射函数时,可实现灰度的非线性变换。
 对数变换的一般表达式为:
g(i, j)  c log(1  f (i, j) )
(4.7)
对数变换可以增强低灰度级的像素,压制高
灰度级的像素,使灰度分布与视觉特性相匹配。
4.2.3 灰度直方图变换
直方图(图4.5 ):指图像中各种不同
灰度级像素出现的相对频率 。
相
对
频
率
灰度级
 灰度直方图描述了图像的概貌。
 直方图变换后可使图像的灰度间距拉开或使
灰度分布均匀,从而增大对比度,使图像细
节清晰,达到增强的目的。
 直方图变换有
 直方图均衡化及直方图规定化两类。
 直方图均衡化
 通过对原图像进行某种变换,使得图像的直方
图变为均匀分布的直方图。
 灰度级连续的灰度图像:当变换函数是原图
像直方图累积分布函数时,能达到直方图均
衡化的目的。
 对于离散的图像,用频率来代替概率 。
【例4.2】假定有一幅总像素为n=64×64的图
像,灰度级数为8,各灰度级分布列于表4.1
中。试对其进行直方图均衡化。
表4.1 一幅图像的灰度级分布
k
0
1
2
3
4
5
6
7
rk
0
1/7
2/7
3/7
4/7
5/7
6/7
1
nk
790
1023
850
656
329
245
122
81
pr(rk)
0.19
0.25
0.21
0.16
0.08
0.06
0.03
0.02

0.19
0.44
0.65
0.81
0.89
0.95
0.98
1
1/7
3/7
5/7
6/7
6/7
1
1
1
sk
1/7
3/7
5/7
6/7
1
n sk
790
1023
850
985
448
pr(sk)
0.19
0.25
0.21
0.24
0.11
sk
sk

解:(1)求变换函数 s k


s0  T (r0 )   pr (rj )  0.19
0
j 0
类似地计算出

1
s1  T (r1 )   pr (rj )  0.19  0.25  0.44
j 0






s2  0.65, s3  0.81, s4  0.89, s5  0.95, s6  0.98, s7  1
(2)计算 s k

 输出图像灰度是等间隔的,且与原图像灰度
范围一样取8个等级,即要求最终的值sk=k/7,
k=1,2,…,7。

 需要对 s k 进行重新量化后加以修正:








s0  1 7, s1  3 7 , s2  5 7 , s3  6 7 , s4  6 / 7, s5  1, s6  1, s7  1
(3) sk 的确定

s
 由 k 可知,输出灰度级仅为5个级别:
s0  1/ 7, s1  3 / 7, s2  5 / 7, s4  6 / 7, s7  1
(4)计算对应每个
sk 的
n sk
 因为 r0  0 映射到 s0  1/ 7 ,所以有790个像
素在输出输出图像上变成 s0  1/ 7
s  3 / 7 ,所以有1023个像素取
 r=
1 1/ 7 映射到 1
值 s1  3 / 7 。r=
映射到 s2  5 / 7 ,因此有
2 2/ 7
850个像素取值 s2  5 / 7。
因为 r4 和 r3 都映射到 s4  6 / 7 ,因此有
7
656+329=985个像素取值 s4  6 /。同理有
245+122+81=488个像素变换 s7  1 。
(5)计算 ps  sk   nsk / n
【例4.3】在MATLAB环境中,采用直方
图均衡的方法进行图像增强 。
解:程序如下
A=imread('p1.jpg');
I=histeq(A);
%调用函数完成直方图均衡化
subplot(1,2,1),imshow(A);
%直方图均衡化前的图像效
果
subplot(1,2,2),imshow(I);
%直方图均衡化后的图像效果
figure,subplot(1,2,1),imhist(A);
%均衡化前的直方图
subplot(1,2,2),imhist(I);
%均衡化后的直方图
4.3 平滑
 一种区域增强的算法 ,平滑算法有:
 邻域平均法,中值滤波和边界保持类滤波等。
4.3.1
邻域平均法
 大部分的噪声都可以看作是随机信号,对图
像的影响可以看作是孤立的。
 某一像素,如果它与周围像素点相比,有明
显的不同,则该点被噪声感染了。
 设当前待处理像素为f (m,n) ,给出一个大
小为3×3的处理模板。
图4.7 模板示意图
处理后的图像设为 g (m, n) ,则处理过程
可描述为
1
f ( m  i, n  j )

g (m, n)   9 
iZ jZ

f (m, n)

当 f (m, n) 
1
f ( m  i, n  j )  

9 iZ jZ
其他
其中Z={-1,0,1}, 为门限,它可以根据
对误差容许的程度,选为图像灰度均方
差的  f 若干倍,或者通过实验得到。
也可以把平均处理看作是图像通过一个低
通空间滤波器后的结果
设该滤波器的冲激响应为H(r,s) ,于是滤
波器输出的结果g(m,n)表示成卷积的形式,
即
fˆ (m, n) 
k
l
  f (m  r, n  s) H (r, s),
m, n  0,1,2, N  1 (4.8)
r  k s l
 k,l决定了所选邻域的大小 ,为加权函数,
又被称为掩模(Mask)或模板
常用的模板:
1 1 1
H 1  101 1 2 1
1 1 1
1 1 1
H 3  18 1 0 1
1 1 1
1 2 1 
H 2  161 2 4 2
1 2 1 
0 14 0
H 4  12  14 1 14 
0 14 0
【例4.4】分别采用4种模板对图像进行处理。
I1 = imread('blood1.tif');
I=imnoise(I1,'salt & pepper');
%对图像加椒盐噪声
imshow(I);
h1= [0.1 0.1 0.1; 0.1 0.2 0.1; 0.1 0.1 0.1];
%定义4种模板
h2=1/16.*[1 2 1;2 4 2;1 2 1];
h3=1/8.*[1 1 1;1 0 1;1 1 1];
h4=1/2.*[0 1/4 0;1/4 1 1/4;0 1/4 0];
I2=filter2(h1,I);
%用4种模板进行滤波处理
I3=filter2(h2,I);
I4=filter2(h3,I);
I5=filter2(h4,I);
figure,imshow(I2,[])
%显示处理结果
figure,imshow(I3,[])
figure,imshow(I4,[])
figure,imshow(I5,[])
(a)有噪声的图像
(b)模板1处理的结果图
(c)模板2处理的结果图
(d)模板3处理的结果图
(e)模板4处理的结果图
图4.8 平滑处理的例子
4.3.2
中值滤波
 邻域平均法:在去噪的同时也使边界变得
模糊了。
 中值滤波:非线性的处理方法,在去噪的
同时可以兼顾到边界信息的保留。
 选一个含有奇数点的窗口W,将这个窗口在图
像上扫描,把该窗口中所含的像素点按灰度级
的升(或降)序排列,取位于中间的灰度值,
来代替该点的灰度值。
g (m, n)  Median f (m  k , n  l ), (k , l ) W  (4.9)
例:选择滤波用的窗口W如图,是一个一维的
窗口,待处理像素的灰度取这个模板中灰度的
中值,滤波过程为:
图4.9 一维窗口
 常用的窗口还有方形、十字形、圆
形和环形等。
图4.10 中值滤波的常用窗口
中值滤波对于消除孤立点和线段的干扰十
分有用。
特别是对于二进噪声尤为有效,对于消除高斯
噪声的影响效果不佳。
对于一些细节较多的复杂图像,还可以多次使
用不同的中值滤波,然后通过适当的方式综合
所得的结果作为输出,这样可以获得更好的平
滑和保护边缘的效果。
【例4.5】选用3×3的窗口进行中值滤波。
I1 = imread('blood1.tif');
I=imnoise(I1,'salt & pepper',0.02);
imshow(I);
K = medfilt2(I);
%中值滤波
figure,imshow(K);
(a) 原图
(b)结果图
图4.11 中值滤波
4.3.3
边界保持类滤波
1. K近旁均值滤波器(KNNF)
 在m×m的窗口中,属于同一集合类的像素,它们的
灰度值将高度相关。
 被处理的像素(对应于窗口中心的像素)可以用窗口
内与中心像素灰度最接近的k个邻近像素的平均灰度
来代替。
(1)作一个m×m的作用模板。
(2)在其中选择K个与待处理像素的灰度差为最小的像
素。
(3)用这K个像素的灰度均值替换掉原来的值。
模板为3×3,k=3的K近旁均值滤波器。
图4.12 K近旁均值滤波器
2. K近旁中值滤波器(KNNMF)
在K近旁均值滤波器中,不选k个邻近像素的
平均灰度来代替,而选k个邻近像素的中值灰度
来代替。
图4.13 K近旁中值滤波器
3. 最小均方差滤波器
对图像上待处理的像素(m,n)选它
的5×5邻域。
在此邻域中采用图4.14所示的模板。
计算各个模板的均值和方差,按方差
排序,最小方差所对应的模板的灰度
均值就是像素(m,n)的输出值。
图4.14 最小均方差滤波器模板
计算步骤如下:
(1)按图做出9个模板,计算出各自的方差。
(2)选出方差为最小的模板。
(3)用该模板的灰度均值代替原像素的灰度值。
均值和方差公式:
1
f 
N
f
i
1
 
N
2
i
2
(
f

f
)

i
(4.9)
其中  是指对应的模板,N是模板中像素的数量。
以方差作为各个邻域灰度均匀性的测度。
若邻域含有尖锐的边缘,灰度方差必定很大,
而不含边缘或灰度均匀的邻域,方差就很小,那
么最小方差所对应的邻域就是灰度最均匀邻域。
通过这样的平滑既可以消除噪声,又能够不破
坏邻域边界的细节。
4.4
锐化
 基本思想:
 有时还需要加强图像中景物的边缘和轮廓。
 边缘和轮廓常常位于图像中灰度突变的地方,
因而可以直观的想到用灰度的差分对边缘和
轮廓进行提取。
4.4.1
梯度锐化法
二元函数f (x,y)在坐标点(x,y)处的梯度定义为
 f 
G x   x 
f      f 
G y   
 y 
(4.10)
 梯度向量的幅度:
1
2 2
y
f  mag(f )  [G  G ]
2
x
f
f
 [( ) 2  ( ) 2 ] 2
x
y
1
(4.11)
为了降低运算量,常用绝对值或最大值运
算代替平方与平方根运算近似求梯度的幅度:
f | Gx |  | G y |
(4.12)
f  max(|Gx |, | Gy |)
(4.13)
 数字微分将用差分代替:
Gx  f (i  1, j )  f (i, j )
Gy  f (i, j  1)  f (i, j)
(4.14)
(4.15)
图4.15 沿x和y方向的一阶差分
图4.16 罗伯茨差分
 所有梯度值都和相邻像素之间的灰度差分成
比例。
 利用它来增强图像中景物的边界。
 采用梯度进行图像增强的方法有:
• 第一种方法:使其输出图像的各点等于该点
处的梯度。即
g (i, j )  f (i, j )
(4.16)
 缺点:输出的图像在灰度变化比较小的区域,g(i,j)
很小,显示的是一片黑色。
• 第二种方法: 对梯度值超过某阈值T的像素选用梯
度值,而小于T时选用原像素点值。
f (i, j ), f (i, j )  T
(4.17)
g (i, j )  
f (i, j ), 其他

 适当的选取T,可以有效地增强边界而不影响比
较平滑的背景。
 第三种方法:对梯度值超过T的像素选用固定
灰度LG 代替,而小于T时仍选用原像素点值
LG , f (i, j )  T
g (i, j )  
 f (i, j ), 其他
(4.18)
 这种方法可以使边界清晰,同时又不损害灰
度变化比较平缓区域的图像特性。
• 第四种方法:将梯度值超过T的像素选用梯度
值,而小于T时选用固定的灰度LB 。即
f (i, j ), f (i, j )  T
g (i, j )  
LB , 其他

(4.19)
 这种方法将背景用一个固定的灰度级LB来表
示,便于研究边缘灰度的变化。
• 第五种方法:是将梯度值超过某阈值T的像素选用固
定灰度LG ,而小于该阈值T时选用固定的灰度LB 。
LG , f (i, j )  T
g (i, j )  
 LB , 其他
(4.20)
 该法生成的是二值图,根据阈值将图像分成边缘和
背景,便于研究边缘所在的位置。
【例4.5】利用罗伯茨梯度对图像进行锐化处理。
解: 程序如下:
I = imread('rice.tif');
imshow(I);
BW1 = edge(I,'roberts',0.1);
figure, imshow(BW1);
(a)原图像
(b)结果图
图4.17 罗伯茨梯度的锐化
4.4.2
拉普拉斯算子(Laplacian)
除一阶微分外,还可以选用二阶微分算子。
 一个连续的二元函数f (x,y),其拉普拉斯运算
定义为
2
2

f

f
(4.21)
2 f  2  2
x
y
 对于数字图像,拉普拉斯算子可以简化为
g (i, j)  4 f (i, j)  f (i 1, j)  f (i 1, j)  f (i, j 1)  f (i, j 1)(4.22)
• 也可以表示为卷积的形式,即
g (i, j ) 
k
l
  f (i  r, j  s) H (r, s),
i, j  0,1,2, N  1
r  k s l
其中,k=1,l=1,H (r, s) 取下式
 0 1 0 
H 1   1 4  1
 0  1 0 
(4.23)
拉普拉斯的增强算子:
g (i, j )  5 f (i, j )  f (i  1, j )  f (i  1, j )  f (i, j  1)  f (i, j  1)
其对应的模板为:
 0 1 0 
 
H 1   1 5  1
 0  1 0 
(4.24)
【例4.6】应用拉普拉斯算子进行图像锐化处
理。
解: 程序如下
I = imread('2.gif');
imshow(I);
h=[0 -1 0;-1 4 -1;0 -1 0];
I2=imfilter(I,h);
figure,imshow(I2);
(a)原图像
(b)结果图
图4.18 拉普拉斯算子的锐化
4.4.3
高通滤波
常用的高通模板有:
 1 2 1 
H 3   2 4  2
 1  2 1 
 1  1  1
H 2   1 8  1
 1  1  1
4.4.4
 0 1 0 
H 4   1 5  1
 0  1 0 
其他锐化算子
1. Sobel算子

S  dx  d y
2

1
2 2
(4.25)
d x  [ f (i  1, j  1)  2 f (i  1, j)  f (i  1, j  1)]  [ f (i  1, j  1)  2 f (i  1, j)  f (i  1, j  1)]
d y  [ f (i  1, j  1)  2 f (i, j  1)  f (i  1, j  1)]  [ f (i  1, j  1)  2 f (i, j  1)  f (i  1, j  1)]
用模板来表示:
1 0  1 
d x  2 0  2
1 0  1
 1  2  1
d y   0 0 0 
 1 2 1 
2. Prewitt算子

S p  dx  dy
2

1
2 2
用模板表示 d x , d y :
1 0  1
d x  1 0  1
1 0  1
 1  1  1
d y   0 0 0 
 1 1 1 
3. Isotropic算子

SI  d x  d y
2
用模板表示 d x , d y
1
d x   2
 1
1 
0  2 
0  1 
0

1
2 2
:
 1  2  1


dy   0
0
0
1

2
1


【例4.7】利用Sobel算子和Prewitt算子对图像进
行锐化处理。
I = imread('ric.tif');
imshow(I);
hs=fspecial('sobel');
S=imfilter(I,hs);
hp=fspecial('prewitt')
P=imfilter(I,hp);
figure,imshow(S,[]);
figure,imshow(P,[]);
(a)Sobel算子
(b)Prewitt算子
图4.19 锐化结果