老师:傅健
数字图像处理有两个目的,一是对图像进行加工和处理,得到人的视觉和心理需要的改进形式,二是对图像中的目标物(或景物)进行分析和理解。
在学习具体的数字图像处理方法之前,首先需要学习一些预备知识,对人眼视觉特性 、色度学模型、数字图像的表示、图像的采样和量化以及图像处理涉及到的一些数学变换工具有所了解。
与听觉的有限一样,人类的视觉感知也仅限于一定的电磁波段,与照相机具有一定类似性的人眼的构造决定了其视觉特性和成像过程,体现在亮度适应性、同时对比度、视错觉、Mach带、分辨率等方面,人眼可以从逼真度和可懂度两个角度评价一张图片的质量,而数字图线处理中可以用降质图像和标准图像之间的互相关函数、常用均方误差及峰值均方差误差作出定量评价。
人类感知仅限于电磁波的视觉波段,但成像机器则可以覆盖几乎全部电磁波谱。
(1)人眼构造(与照相机类似):
(2)人眼成像过程:
(3)亮度适应特性:
暗光适应(10-30秒);亮光适应(1-2秒);暗视阈值到强闪光之间的光强度差别约为 1 0 10 10^{10} 1010 级。
(4)同时对比度(亮度/色度)
(5)Mach带:人眼在观察一条由均匀黑和均匀白的区域形成的边界时,会感觉在亮度变化部位附近的暗区和亮区分别存在一条更黑和更亮的条带。
(6)分辨率
(7)图像质量的评价标准:
色度学模型的本质是用几个基本的元素变量去构成丰富的色彩空间,常见的色度学模型包括RGB、HSI、CMY和YUV:
RGB 使用三原色合成,在多媒体技术(发出光)中使用最多;
YUV(YCrCb)使用一个亮度信号和两个色差信号,因占用的频宽更多而多用于欧洲电视系统;
HSI 使用色调、饱和度和光强表示颜色,因其分量的独立性带来的工作简化而应用在图像处理和计算机视觉算法中;
CMY 使用三原色的补色合成,多应用在印刷行业(反射光)中,并考虑到黑色的常用性和经济性,加入黑色形成了CMYK色度学模型。
颜色可用色调(Hue)、饱和度(Saturation)和亮度(Intensity)来描述。
三基色原理:R-red,G-green,B-blue。
不同技术领域采用的不同彩色表示方法:RGB,HSI,CMY,YUV
图像处理和计算机视觉中的大量算法都可以在HSI色彩空间中方便地使用,且是可以分开处理且相互独立的,大大简化了图像分析和处理的工作量。
数字图像由填充各位置像素灰度值的二维矩阵表示,增加两个通道后构成彩色图像,若把多行的矩阵排列成一列/一行,即变成了图像的矢量形式,用一维/二维随机场可以描述一幅静态/动态的随机图像,本章还介绍了密度、均值、方差、自相关和互相关等性质的计算函数。
矩阵和矢量表示。
矢量:把二维矩阵转化为一维向量
变换:增强,特征提取,数字压缩
采样与量化:模拟转化为数字
随机场
如果将我们看到的世界,或者一张胶片所记录的图像理解为二维模拟信号,将其转换成可以进一步处理的数字图像——二维数字信号,需要经过采样和量化两个步骤,即在空间分辨率和灰度级上进行离散化。这个离散化过程所采用的间隔大小,直接影响着图像的空间分辨率、灰度分辨率、数据量、细节层次等等,我们需要在根据实际需求作出选择。
一个宏观经验是:对缓变的图像,应该细量化、粗采样,避免假轮廓;对于细节丰富的图像,应该细采样、粗量化,避免图像的模糊和混叠。
现实中的一幅黑白图像可用二维连续函数 f ( x , y ) f(x,y) f(x,y) 表示,而连续函数表示的图像无法被数字系统传输和存储,需要首先进行空间上的离散化和灰度级值的离散化。
量化级数越大,则数据量、计算量、传输量、存储量越大,同时分辨率也更高、图像质量越好,而超过人眼的分辨率是不必要的,我们需要采用适合的量化级数。
数字图像处理可以在空域和频域两个空间中进行,常出现的情况是,图像的某一个特征在一个域中不突出而在另一个域中突出,因此信号处理常用数学变换工具进行两域间的相互变换。相关的改变包括傅里叶变换、卷积、相关、余弦变换等等,应用在图像中时首先需要离散化,具体应用功能包括正弦波去噪、白噪声降噪、图像压缩、直线检测等等。
图像的空域处理指在图像元组成的一长度为自变量的空间进行运算处理,包括代数运算、几何运算、灰度变换和空间邻域运算(如空间滤波)。
代数运算即对图像进行加、减、乘、除即它们符合形成的线性运算:
加法运算 可以通过多重影像叠加降低随机噪声;
减法运算 可以用来检测变化及运动的物体;
乘法运算 可以用来强化对比度特征,实现掩膜处理(图像的局部显示);
除法运算 可用于校正成像设备的非线性影响,或用于使用比率变换检测图像间差别。
点的加、减、乘、除等运算输出图像的过程,是空域下点运算的典型应用。
通过加法运算(如:曝光时间的延长、多张照片叠加)可以降低加性随机噪声。
在遥感图像中经常使用。
C ( x , y ) = A ( x , y ) + B ( x , y ) M a t l a b 中 调 用 : Z = i m a d d ( X , Y ) 或 Z = i m a d d ( X , Y , ′ u i n t 1 6 ′ ) C(x,y)=A(x,y)+B(x,y)\\\ \\ \begin{aligned} \rm Matlab中调用:&\rm Z=imadd(X,Y)\\ 或& \rm Z=imadd(X,Y,'uint16') \end{aligned} C(x,y)=A(x,y)+B(x,y) Matlab中调用:或Z=imadd(X,Y)Z=imadd(X,Y,′uint16′)
像素相加可能发生数据值溢出,截取数据类型的最大值,称之为“饱和处理”。
Matlab提供了噪声添加函数 imnoise
,噪声类型如下:高斯白噪声、0均值高斯白噪声、泊松噪声、椒盐噪声、乘性噪声。
M a t l a b 中 调 用 : J = i m n o i s e ( I , s a l t p e p p e r , 0.02 ) \rm Matlab中调用:J=imnoise(I,salt\ pepper,0.02) Matlab中调用:J=imnoise(I,salt pepper,0.02)
可以用于检测变化及运动的物体。
C ( x , y ) = A ( x , y ) − B ( x , y ) M a t l a b 中 调 用 : Z = i m s u b t r a c t ( X , Y ) 或 Z = i m a b s d i f f ( X , Y ) C(x,y)=A(x,y)-B(x,y)\\\ \\ \begin{aligned} \rm Matlab中调用:&\rm Z=imsubtract(X,Y)\\ 或& \rm Z=imabsdiff(X,Y) \end{aligned} C(x,y)=A(x,y)−B(x,y) Matlab中调用:或Z=imsubtract(X,Y)Z=imabsdiff(X,Y)
可以用来实现掩膜处理。
时域中的卷积运算与频域中的沉积运算相对应。
C ( x , y ) = A ( x , y ) × B ( x , y ) M a t l a b 中 调 用 : Z = i m m u l t i p l y ( I , 0.5 ) C(x,y)=A(x,y){\times}B(x,y)\\\ \\ \begin{aligned} \rm Matlab中调用:&\rm Z=immultiply(I,0.5)\\ \end{aligned} C(x,y)=A(x,y)×B(x,y) Matlab中调用:Z=immultiply(I,0.5)
可用于校正成像设备的非线性影响,可以用在特殊形态的图像处理中。(像素值的比率变化)
C ( x , y ) = A ( x , y ) ÷ B ( x , y ) M a t l a b 中 调 用 : Z = i m d i v i d e ( X , Y ) C(x,y)=A(x,y){\div}B(x,y)\\\ \\ \begin{aligned} \rm Matlab中调用:&\rm Z=imdivide(X,Y)\\ \end{aligned} C(x,y)=A(x,y)÷B(x,y) Matlab中调用:Z=imdivide(X,Y)
上述四则运算的归总运算
C ( x , y ) = k 1 ⋅ A ( x , y ) + k 2 ⋅ B ( x , y ) 或 C ( x , y ) = k 1 ⋅ A ( x , y ) + k 2 ⋅ B ( x , y ) + k M a t l a b 中 调 用 : Z = i m l i n c o m b ( k 1 , A 1 , k 2 , B 2 , . . . ) 或 Z = i m l i n c o m b ( k 1 , A 1 , k 2 , B 2 , . . . , k ) C(x,y)=k1{\cdot}A(x,y)+k2{\cdot}B(x,y)\\ 或C(x,y)=k1{\cdot}A(x,y)+k2{\cdot}B(x,y)+k\\ \ \\ \begin{aligned} \rm Matlab中调用:&\rm Z=imlincomb(k1,A1,k2,B2,...)\\ 或&\rm Z=imlincomb(k1,A1,k2,B2,...,k)\\ \end{aligned} C(x,y)=k1⋅A(x,y)+k2⋅B(x,y)或C(x,y)=k1⋅A(x,y)+k2⋅B(x,y)+k Matlab中调用:或Z=imlincomb(k1,A1,k2,B2,...)Z=imlincomb(k1,A1,k2,B2,...,k)
图像的几何运算包括对图像进行旋转、放缩、裁剪、镜像以及以它们为基础的复合运算。
因为旋转后的各像素坐标不能正好落在整数坐标处,需要进行插值,matlab提供旋转变换中对插值方法的选择。
将图像绕原点逆时针旋转 α \alpha α 度。
[ a ( x , y ) b ( x , y ) 1 ] = [ cos α sin α 0 − sin α cos α 0 0 0 1 ] [ x y 1 ] M a t l a b 中 调 用 : B = i m r o t a t o ( A , a n g l e , m e t h o d , b b o x ) \left[\begin{matrix}a(x,y)\\b(x,y)\\1\end{matrix}\right]= \left[\begin{matrix}{\cos}\alpha&{\sin}\alpha&0\\ -{\sin}\alpha&{\cos}\alpha&0\\ 0&0&1 \end{matrix}\right] \left[\begin{matrix}x\\y\\1\end{matrix}\right] \\\ \\ \rm Matlab中调用:B=imrotato(A,angle,method,bbox) ⎣⎡a(x,y)b(x,y)1⎦⎤=⎣⎡cosα−sinα0sinαcosα0001⎦⎤⎣⎡xy1⎦⎤ Matlab中调用:B=imrotato(A,angle,method,bbox)
method 插值方法:nearest-最近邻插值法、bilinear-双线性插值法、bicubic-双立方插值法
bbox 大小选择:loose-B图像足够包含整幅图像A、crop-输出图像B与A同样大小
图像的插值法
(1)最近邻插值
f ( x ) = f ( x k ) , 1 2 ( x k − 1 + x k ) < x < 1 2 ( x k + x k + 1 ) f(x)=f(x_k),{\quad}\frac{1}{2}(x_{k-1}+x_k)
(2)双线性插值
根据四个相邻点的值,通过两次插值计算出的灰度值。
(3)双立方插值
插值类型为三次函数,其插值领域为 4 × 4 4\times4 4×4,插值效果好但是运算量大。
将图像在 x x x 方向上缩放 c c c 倍, y y y 方向上缩放 d d d 倍
[ a ( x , y ) b ( x , y ) 1 ] = [ c 0 0 0 d 0 0 0 1 ] [ x y 1 ] M a t l a b 中 调 用 : B = i m r e s i z e ( A , s c a l e ) B = i m r e s i z e ( A , [ n u m r o w s n u m c o l s ] ) [ Y n e w m a p ] = i m r e s i z e ( X , m a p , s c a l e ) [ . . . ] = i m r e s i z e ( . . . , m e t h o d ) [ . . . ] = i m r e s i z e ( . . . , p a r a m e t e r , v a l u e ) \left[\begin{matrix}a(x,y)\\b(x,y)\\1\end{matrix}\right]= \left[\begin{matrix}c&0&0\\ 0&d&0\\ 0&0&1 \end{matrix}\right] \left[\begin{matrix}x\\y\\1\end{matrix}\right] \\\ \\ \begin{aligned} \rm Matlab中调用:\rm B&\rm=imresize(A,scale)\\ \rm B&\rm=imresize(A, [numrows\ numcols])\\ \rm [Y\ newmap]&\rm=imresize(X,\ map,\ scale)\\ \rm [...]&\rm=imresize(...,\ method)\\ \rm[...]&\rm=imresize(...,\ parameter,\ value) \end{aligned} ⎣⎡a(x,y)b(x,y)1⎦⎤=⎣⎡c000d0001⎦⎤⎣⎡xy1⎦⎤ Matlab中调用:BB[Y newmap][...][...]=imresize(A,scale)=imresize(A,[numrows numcols])=imresize(X, map, scale)=imresize(..., method)=imresize(..., parameter, value)
scale-缩放比例,method-插值方法(与图像旋转中相同)
参数对-配置抗锯齿(Antialiasing)、色图优化(Colormap)、颜色抖动(Dither)、缩放比例(Scale)、输出大小控制(OutputSize)、插值方法(Method)。
通过指定4个顶点坐标或交互地使用鼠标选取矩阵,裁剪图像中的矩形子图。
M a t l a b 中 调 用 : A = i m c r o p B = i m c r o p ( A ) B = i m c r o p ( A , [ X m i n , Y m i n , X m a x , Y m a x ] ) h e l p i m c r o p \begin{aligned} \rm Matlab中调用:\rm A&\rm=imcrop\\ \rm B&\rm=imcrop(A)\\ \rm B&\rm=imcrop(A,\ [X_{min},\ Y_{min},\ X_{max},\ Y_{max}])\\ & \rm help\ imcrop \end{aligned} Matlab中调用:ABB=imcrop=imcrop(A)=imcrop(A, [Xmin, Ymin, Xmax, Ymax])help imcrop
水平镜像操作即将图像的左右部分以图像垂直中轴线为中心镜像对称。
[ a ( x , y ) b ( x , y ) 1 ] = [ 1 0 0 0 − 1 0 0 0 1 ] [ x y 1 ] M a t l a b 中 调 用 : \left[\begin{matrix}a(x,y)\\b(x,y)\\1\end{matrix}\right]= \left[\begin{matrix}1&0&0\\ 0&-1&0\\ 0&0&1 \end{matrix}\right] \left[\begin{matrix}x\\y\\1\end{matrix}\right] \\\ \\ \begin{aligned} \rm Matlab中调用: \end{aligned} ⎣⎡a(x,y)b(x,y)1⎦⎤=⎣⎡1000−10001⎦⎤⎣⎡xy1⎦⎤ Matlab中调用:
对给定图像进行两次或两次以上的平移、镜像、旋转、比例等基本变换的多次变换。
灰度变换是基于点操作将每一个像素的灰度值按照一定的数学变换公式转换为一个新的灰度值,常用对比度增强、直方图均衡化等方法,使图像清晰、特征明显,具体的,包括线性增强和非线性增强两种。在灰度处理中,直方图是一种可以直观表示灰度分布的形式,因此灰度变换也包括了对直方图的统计和操作。
常用的方变换有:对比度增强、直方图均值化等。
灰度转换是一种点处理方法,将输入图像的每个像素灰度值映射到另一个灰度值
g ( x , y ) = T [ f ( x , y ) ] g(x,y)=T[f(x,y)] g(x,y)=T[f(x,y)]
f f f 为图像灰度; γ \gamma γ 为入射光强度; r r r 为常数
一般希望图像灰度与光强成正比,因此构造如下变换式:
g = k r = k ( f c ) 1 γ g=kr=k(\frac{f}{c})^{\frac{1}{\gamma}} g=kr=k(cf)γ1
线性和非线性变换都可以用同一函数实现,其中gamma用来描述I和J的关系曲线形状
M a t l a b 中 调 用 : J = i m a d j u s t ( I ) J = i m a d j u s t ( I , [ l o w _ i n ; h i g h _ i n ] , [ l o w _ o u t , h i g h _ o u t ] ) J = i m a d j u s t ( I , [ 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 ) \begin{aligned} \rm Matlab中调用:\rm J&\rm=imadjust(I)\\ \rm J&\rm=imadjust(I,[low\_in;high\_in],[low\_out,high\_out])\\ \rm J&\rm=imadjust(I,[low\_in;high\_in],[low\_out,high\_out],gamma)\\ \end{aligned} Matlab中调用:JJJ=imadjust(I)=imadjust(I,[low_in;high_in],[low_out,high_out])=imadjust(I,[low_in;high_in],[low_out,high_out],gamma)
直方图是多种空间域处理技术的基础。从直方图上可以体现出一幅图像的曝光效果与质量。
概率统计公式:
p ( r ) = n r p ( r ) = n r / N p(r)=n_r\\ p(r)=n_r/N p(r)=nrp(r)=nr/N
显示直方图
M a t l a b 中 调 用 : i m h i s t ( I ) i m h i s t ( I , n ) J = i m a d j u s t ( I , [ 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 ) \begin{aligned} \rm Matlab中调用:& \rm imhist(I)\\ & \rm imhist(I,n)\\ \rm J&\rm=imadjust(I,[low\_in;high\_in],[low\_out,high\_out],gamma)\\ \end{aligned} Matlab中调用:Jimhist(I)imhist(I,n)=imadjust(I,[low_in;high_in],[low_out,high_out],gamma)
n为灰度等级
目的在于显示出一幅灰度等级丰富且动态范围大的图像。
设直方图均衡化处理前后的图像灰度级分别为 r r r 和 s s s
变换函数 s = T ( r ) s=T(r) s=T(r) 为单调递增函数,同样在 [ 0 , 1 ] [0,1] [0,1] 范围内
利用累积分布函数作为灰度变换函数,动态范围被大大扩展,对于对比度较弱的图像进行处理非常有效。
M a t l a b 中 调 用 : J = h i s t e p ( I , h g r a m ) J = h i s t e p ( I , N ) \begin{aligned} \rm Matlab中调用:& \rm J=histep(I,hgram)\\ & \rm J=histep(I,N)\\ \end{aligned} Matlab中调用:J=histep(I,hgram)J=histep(I,N)
空域滤波在图像空间中借助模板进行邻域操作完成的,从操作特点上分为线性滤波和非线性滤波两种,从滤波效果上来分又可以分为平滑滤波和锐化滤波:
平滑滤波 常用方法有均值滤波(线性)和中值滤波(非线性):均值滤波可以有利抑制噪声,但也可能使图像目标区域的边界变得模糊,模糊程度与所用模板的领域半径成正比,且均值滤波不能有效去除椒盐噪声;中值滤波则能够在消除噪声的同时,保持细节部分,防止边缘模糊,中值滤波能够有效消除椒盐噪声,但对高斯噪声的消噪效果不理想。
锐化滤波 则是对图像施加梯度因子,使图像经过梯度运算,留下灰度值变化大的边缘,达到锐化目的。具体的方法,梯度法包括水平垂直差分法、Roberts交叉差分法、拉普拉斯算子法等等。
其中非加权邻域平均最为简单,这种平均方法可以用模板卷积求得,复杂一点的,可以使用加权领域平均。
Matlab提供了两个函数实现图像的邻域平均处理: f s p e c i a l \rm fspecial fspecial 和 f i l t e r 2 \rm filter2 filter2
邻域平均法在抑制噪声的同时,也引起了模糊,相当于图像信号通过了一个低通滤波器。邻域平均法不能有效去除椒盐噪声。
Matlab提供了 m e d f i l t 2 \rm medfilt2 medfilt2 函数实现图像的中值滤波。
中值滤波法在消除噪声的同时,能够保持图像中的细节部分,防止边缘模糊。中值滤波法对椒盐噪声的消噪效果比较好,对高斯噪声的消噪效果不理想。
对一个图像的灰度值定义 x x x、 y y y 两个方向上的梯度及综合梯度,一般把梯度向量的模值称为梯度:
G [ f ( x , y ) ] = [ G x G y ] = [ ∂ f ∂ x ∂ f ∂ y ] G M [ f ( x , y ) ] = G x + G y = ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 或 G M [ f ( x , y ) ] = ∣ G x ∣ + ∣ G y ∣ G[f(x,y)] =\left[\begin{matrix}G_x\\G_y\end{matrix}\right] =\left[\begin{matrix}\frac{{\partial}f}{{\partial}x}\\\frac{{\partial}f}{{\partial}y}\end{matrix}\right]\\\ \\ G_M[f(x,y)]=\sqrt{G_x+G_y}=\sqrt{(\frac{{\partial}f}{{\partial}x})^2+(\frac{{\partial}f}{{\partial}y})^2}\\\ \\ 或\ G_M[f(x,y)]=|G_x|+|G_y| G[f(x,y)]=[GxGy]=[∂x∂f∂y∂f] GM[f(x,y)]=Gx+Gy=(∂x∂f)2+(∂y∂f)2 或 GM[f(x,y)]=∣Gx∣+∣Gy∣
有水平垂直差分法和Roberts交叉差分法
对整个图像的像素值进行梯度的求解,常见的梯度算子有 S o b e l Sobel Sobel 算子和 P r e w i t t Prewitt Prewitt 算子,以 S o b e l Sobel Sobel 算子为例,在对 ( x , y ) (x,y) (x,y) 处的像素进行处理时,x方向的梯度算子和计算公式分别是:
S x = [ − 1 0 1 − 2 0 2 − 1 0 1 ] g ( x , y ) = ( f ( x + 1 , y − 1 ) + 2 ∗ f ( x + 1 , y ) + f ( x + 1 , y + 1 ) ) − ( f ( x − 1 , y − 1 ) + 2 ∗ f ( x − 1 , y ) + f ( x − 1 , y + 1 ) ) S_x=\left[\begin{matrix}-1&0&1\\-2&0&2\\-1&0&1\end{matrix}\right]\\\ \\ g(x,y)=(f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1))-(f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1)) Sx=⎣⎡−1−2−1000121⎦⎤ g(x,y)=(f(x+1,y−1)+2∗f(x+1,y)+f(x+1,y+1))−(f(x−1,y−1)+2∗f(x−1,y)+f(x−1,y+1))
其他算子如图
在灰度值不变的区域,梯度为0,因此图像经过梯度云端后,留下经过锐化的边缘图像。
拉普拉斯算子是不依赖于边缘方向的二阶微分算子,其微分表达式和针对图像的具体计算方式分别为:
▽ 2 f ( x , y ) = ∂ 2 f ( x , y ) ∂ x 2 + ∂ 2 f ( x , y ) ∂ y 2 G ( i , j ) = ∣ 4 f ( i , j ) − f ( i + 1 , j ) − f ( i − 1 , j ) − f ( i , j + 1 ) − f ( i , j − 1 ) ∣ {\triangledown}^2f(x,y) =\frac{{\partial}^2f(x,y)}{{\partial}x^2} +\frac{{\partial}^2f(x,y)}{{\partial}y^2}\\\ \\ G(i,j)=|4f(i,j)-f(i+1,j)-f(i-1,j)-f(i,j+1)-f(i,j-1)| ▽2f(x,y)=∂x2∂2f(x,y)+∂y2∂2f(x,y) G(i,j)=∣4f(i,j)−f(i+1,j)−f(i−1,j)−f(i,j+1)−f(i,j−1)∣
其他算子如图:
频域处理是图像处理的一种有效且成熟的手段,使处理过程变得简单而方便。与空域处理相比,它着眼的变换更加宏观,也就是其执行的操作”格局更大“。本讲将分成三个部分进行介绍频域操作的数学基础、频域滤波和频域复原。
频域滤波所使用的离散傅里叶变换本身,具有可分离性、平移性、周期性、共轭对称性、旋转不变性等等性质。图像 f ( x , y ) f(x,y) f(x,y)经过频域变换和中心化后变为 F ( u , v ) F(u,v) F(u,v),各位置频率体现在其与中心点的距离,边缘和噪声对应傅里叶变换后的高频部分,低通滤波即滤除高频部分,获得更光滑图像;高通滤波则可以使图像得到锐化(一般需要经过一次直方图均衡化处理);同态滤波使用照度-反射模型,同时进行灰度范围的压缩和对比度增强,突出了图像的细节。
频域复原中,可以将退化过程模型化为一个退化函数和一个加噪声项,这个函数称为点扩展函数PSF,对于频域脉冲所造成的周期性噪声,可以使用带阻滤波器、陷波滤波器等包围噪声脉冲,实现有效修复,其他的还有维纳、Lucy-Richardson等滤波器。
频域处理的具体过程,是利用了二维离散傅里叶变换进行各种层面的滤波,本章节将关注如何在Matlab中实现频域滤波,具体包括低通滤波、高通滤波、带通/阻滤波和同态滤波。
二维傅里叶变换的一般表达式与离散表达式
F ( u , v ) = 1 M N ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) exp [ − j 2 π ( u x M + v y N ) ] f ( x , y ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 F ( u , v ) exp [ j 2 π ( u x M + v y N ) ] F(u,v)=\frac{1}{MN}\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}f(x,y) \exp[-j2\pi(\frac{ux}{M}+\frac{vy}{N})]\\\ \\ f(x,y)=\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}F(u,v)\exp[j2\pi(\frac{ux}{M}+\frac{vy}{N})] F(u,v)=MN1x=0∑M−1y=0∑N−1f(x,y)exp[−j2π(Mux+Nvy)] f(x,y)=x=0∑M−1y=0∑N−1F(u,v)exp[j2π(Mux+Nvy)]
其中离散傅里叶变换具有可分离性、平移性、周期性及共轭对称性、旋转不变性和线性性质等。
(1)可分离性
一个二维傅里叶变换可以通过先后两次运用一维傅里叶变换来实现。
f ( x , y ) → 列 方 向 F ( x , v ) → 行 方 向 F ( u , v ) f(x,y){\xrightarrow{列方向}}F(x,v){\xrightarrow{行方向}}F(u,v) f(x,y)列方向F(x,v)行方向F(u,v)
(2)平移性
可以简单地将傅里叶变换的原点移动到相应位置 N × N N\times N N×N,即 M a t l a b Matlab Matlab 提供的 f f s h i f t ffshift ffshift 函数的原理。
(3)周期性及共轭对称性
傅里叶变换和反变换均以 N N N 为周期,若 f ( x , y ) f(x,y) f(x,y) 为实函数,则它的傅里叶变换具有共轭对称性
F ( u , v ) = F ( u + N , v ) = F ( u , v + N ) = F ( u + N , v + N ) ∣ F ( u , v ) ∣ = ∣ F ( − u , − v ) ∣ F(u,v)=F(u+N,v)=F(u,v+N)=F(u+N,v+N)\\\ \\ |F(u,v)|=|F(-u,-v)| F(u,v)=F(u+N,v)=F(u,v+N)=F(u+N,v+N) ∣F(u,v)∣=∣F(−u,−v)∣
(4)旋转不变性
若 f ( x , y ) f(x,y) f(x,y) 在空域旋转 θ 0 \theta _0 θ0 ,则相应的傅里叶变换 F ( u , v ) F(u,v) F(u,v) 也在频域上旋转同样的 θ 0 \theta _0 θ0。
将图像模板在图像中逐像素移动,并对每个像素进行指定数量的计算,这个过程就是卷积的过程。
图像的边缘和噪声对应于傅里叶变换中的高频部分,想要消除它们的影响就要进行低通滤波,常见的低通滤波器由理想低通滤波器、巴特沃斯(Buteerworth)低通滤波器、高斯低通滤波器(GLPF)、切比雪夫低通滤波器等。
图像边缘对应于高频分量,要锐化图像时可以使用高通滤波器,高通滤波器是低通滤波器的反操作。
常见的高通滤波器有理想高通滤波器、巴特沃斯(Buttorworth)高通滤波器等。
光照射在物体上,反射分量反映图像细节内容,处于高频区域,照度分量变化缓慢,处于低频区域。因此,要增强图像细节,就要加强高频成分、减弱低频成分。
使用照度-反射模型开发频域处理,同时进行灰度范围压缩和对比度增强。
具体变换过程:
变换后的效果如下图所示
图像复原的目的在于利用先验知识减少/去除获取数字图像过程中发生的图像质量的下降,恢复被退化图像的本来面目,其实现过程是:弄清图像退化的原因,分析引起退化的环境因素,建立相应的数学模型,并沿着图像降质的逆过程恢复图像。本章将分为三个部分:退化函数建模、仅有噪声图像的复原和频域滤波器复原法。
图像分割即将图像分割为不同目标物和背景的区域,是图形分析和理解的一个关键步骤,其结果将直接影响到目标物特征提取和描述,从大方向上分为边缘检测法和区域生成法两种方法。
边缘检测法首先使用各类梯度法检测图像中的边缘点,然后使用局部边缘连接法、光栅扫描跟踪法或Hough变换法将检测的边缘点连接成边缘线或特定形状。
区域生成法则包括各类阈值分割方法和利用图像空间性质实现的区域增长/分裂法。
特征识别即对原始数字图像进行变换,在大量统计分析的基础上,对抽出的图像特征进行识别和分类。可以分为三个阶段:
① 特征分割/分离,将特征与背景或无关特征分离;
② 特征度量,对抽取出的特征进行定量表征,如位置、尺寸等;
③ 特征分类,通过模式识别决策理论,确定特征的归属类别。
对于缺陷识别问题,可以细分为缺陷增强、缺陷提取/分类、缺陷识别三个部分:
① 缺陷增强:运用前面所学的空域/频域图像增强方法,突出缺陷在图像中的对比度。
② 缺陷提取与分类:利用图像分割方法进行边缘点线或区域的提取,利用先验知识、模糊识别对提取出的缺陷进行分类。
③ 缺陷识别:以图像、颜色、声音、报告等光、声、电和纸质媒介指示缺陷。
以基于X射线投射成像的核燃料棒焊缝缺陷识别为例
① 环形焊缝在射线方向的厚度不均,背景起伏较大,易淹没特征,须采取必要处理措施。
② 核燃料棒结构尺寸大多相似,拍摄条件可固定不变。
③ 实测表明,核燃料棒焊缝缺陷多呈圆形状。
④ 核燃料棒紧贴探测器,后续图像处理须考虑增大分辨率。
(1)改进图像获取方法(散射抑制、补偿照透、叠加降噪等),改善原始图像质量。
(2)增强对比度(局部范围灰度变换),增强分辨率(立方卷积插值法),去除背景(模拟背景,与图像进行相减运算)。
(3)缺陷识别,模拟人眼对缺陷部分“亮且均匀”的认知,需要对同时考虑检测区域的灰度对比度和灰度方差,另外将检测区域设定为圆弧状。具体算法:定义了检测区域、近比较区域、远比较区域,遍历整个焊缝区域计算灰度差、方差,其值落在指定范围内的代表是缺陷。
两个比较区域的距离参数很关键,须真实反应对比度特性。