基于MATLAB的图像处理研究
1研究目的
由于现阶段,随着科技的发展, 计算机技术的应用已经渗透到社会的方方面 面,而与图像有关的通信、网络、传媒、多媒体等已经给人们的生活带来巨大的 变化。放观长远, 图像技术将在未来的很长一段时间内, 影响着计算机应用的各 个领域。因此,探究图像处理技术对今后计算机图像处理的发展有着很好的前瞻 作用,也为图像处理的技术创新在以后提供理论上的支持。 图像平滑和图像锐化作为图像处理中比较基础且尤为重要的基本方式, 在今后的 数字化的信息时代中仍然会有广泛的用处。 作为基本的图像处理, 在数字技术应 用的许多方面都有需要的地方,无论是计算机,还是微电子、通信工程、嵌入式 系统、传感技术都有着十分重要的地位。
2空域图像处理
- 图像平滑基本概述 图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪
声和干扰高频成分, 使图像亮度平缓渐变, 减小突变梯度, 改善图像质量的图像 处理方法。
- 线性滤波(均值滤波)
对一些图像进行线性滤波可以去除图像中某些类型的噪声。 领域平均法就是 一种非常适合去除通过扫描得到的图像中的噪声颗粒的线性滤波。
领域平均法是空间域平滑噪声技术。 对于给定的图像 f i, j 中的每个像素点
m,n,取其领域S。设S含有M个像素,取其平均值作为处理后所得图像像素
点 m,n 处的灰度。用一像素领域内各像素灰度平均值来代替该像素原来的灰度, 即领域平均技术。
领域S的形状和大小根据图像特点确定。一般取的形状是正方形、矩形及十 字形等,S的形状和大小可以在全图处理过程中保持不变,也可以根据图像的局
部统计特性而变化,点(m,n) —般位于S的中心。女口 S为3X 3领域,点(m,n)位 于S中心,贝U
1 1
f m, n f m
9 i 1 j 1
|
|
|
|
|
|
|
说明噪声强度减弱了,抑制了噪声。
2.1.2中值滤波
中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计 特性,所以比较方便。但是对一些细节多,特别是点、线、尖顶细节多的图像不 宜采用中值滤波的方法。中值滤波的基本原理是把数字图像或数字序列中一点的 值用该点的一个邻域中各点值的中值代替。
设有一个一维序列fi,…,fn,取窗口长度为m(m为奇数),对此序列进 行中值滤波,就是从输入序列中f2相继抽出m个数,f v,…,
v,其中i为窗口的中心位置,v专,再将这M点按其数值大
用数学公式表示为:
Yi Med fi
m 1
可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的
中值滤波可以表示为:
|
|
其中,A为滤波窗口
2.1.3滤波效果
在进行滤波前,首先给图像添加噪声,在此,给图像添加高斯噪声和椒盐噪
,并进行均值滤波和中值滤波得到图像如下:
|
|
|
|
|
|
|
|
|
|
|
|
图1高斯噪声与椒盐噪声下的均值滤波与中值滤波
2.1.4结果分析
中值滤波和均值滤波后,都残留一些噪点,但是均值滤波残留的噪点量要明
显小于中值滤波。说明均值滤波对于线性的高斯噪声的滤波效果要优于中值滤 波。
2.2图像锐化
2.2.1图像锐化的基本概述
图像在传输过程中,通常质量都要降低,除了噪声因素外,图像一般都要变 得模糊。这主要是因为图像的传输或转换系统的传递函数对高频成分的衰减作 用,造成图像的细节轮廓不清晰。图像锐化就是使灰度反差增强,从而增强图像
中边缘信息,有利于轮廓抽取。因为轮廓或边缘就是图像中灰度变化率最大的地 方。因此,为了把轮廓抽取出来,就是要找一种方法把图像的最大灰度变化处找 出来。
222拉普拉斯算子一一基于二阶微分的图像增强
Laplacia n 算子是不依赖于边缘方向的二阶微分算子, 是常用的二阶导数算
子.拉普拉斯算子是一个标量而不是向量,具有线性特性和旋转不变,即各向同 性的性质。
拉普拉斯微分算子强调图像中灰度的突变,弱化灰度慢变化的区域。这将产 生一幅把浅灰色边线、突变点叠加到暗背景中的图像。计算数字图像的拉普拉斯 值也可以借助于各种模板。拉普拉斯对模板的基本要求是对应中心像素的系数应 该是正的,而对应于中心像素邻近像素的系数应是负的,它们的和应该为零。 将原始图像和拉普拉斯图像叠加在一起的简单方法可以保护拉普拉斯锐化处理 的效果,同时又能复原背景信息。
拉普拉斯算子是最简单的各向同性微分算子, 具有旋转不变性,比较适用于 改善因为光线的漫反射造成的图像模糊。其原理是,在摄像记录图像的过程中, 光点将光漫反射到其周围区域,这个过程满足扩散方程 :
f 2
—kV2f (3.1)
t
经过推导,可以发现当图像的模糊是由光的漫反射造成时, 不模糊图像等于 模糊图像减去它的拉普拉斯变换的常数倍。另外,人们还发现,即使模糊不是由 于光的漫反射造成的,对图像进行拉普拉斯变换也可以使图像更清晰。
拉普拉斯锐化的一维处理表达式是:
|
|
|
在二维情况下,拉普拉斯算子使走向不同的轮廓能够在垂直的方向上具有类
似于一维那样的锐化效应,其表达式为
|
|
|
223在拉普拉斯算子下的空域锐化结果如下:
|
|
|
|
图2拉普拉斯算子下的空域锐化结果
3频域图像处理
3.1基本概述
频率域平滑处理就是选择合适的低通滤波器对其频谱成分进行调整, 然后经
逆傅立叶变换得到平滑图像。其中常用的频率域平滑处理方法一般为频率域低通 滤波法。频率域低通滤波是在分析图像信号的频率特征性时,一幅图像中的边缘、 跳跃部分以及颗粒噪声代表图像信号的高频分量, 而大面积的背景区则代表图像 信号的低频分量。用滤波的方法滤除其高频部分就能去除噪声, 使图像得到平滑。
|
|
|
|
|
|
0. 6
0. 4 -
0. 2
0 c c
0 200 400 600
图4频域高通滤波(锐化)
3.3 结果分析
经过多次的实践和理论上的推导不难发现图像平滑和图像锐化是两个完全 对立的图像处理技术。 图像平滑让图像中的细节成分越来越少, 而相对的, 图像 锐化则是凸显图像的细节部分。
图像平滑的弊端在于会把图像本身一些很好的细节部分给模糊掉, 从而降低 图像的质量。 对一些分辨率很高而且细节很唯美的图像来说, 图像平滑来处理噪 声反而效果不是很好。
图像锐化则是让图像变得更为清晰。 通过图像锐化可以使图像的细节部分变 得清楚起来。 但是如果图像有噪声, 只会让图像变得更加模糊, 图像锐化不能对 有噪声的图像进行处理。
4 直方图均衡化处理
4.1 基本原理
在实际应用中,希望能够有目的地增强某个灰度区间的图像, 即能够人为 地修正直方图的形状, 使之与期望的形状相匹配,这就是直方图规定化的基本 思想。换句话说,希望可以人为地改变直方图形状,使之成为某个特定的形状, 直方图规定化就是针对上述要求提出来的一种增强技术, 它可以按照预先设定的 某个形状来调整图像的直方图。每一可能的灰度层次所占的像素个数尽量均等, 每个像素具有同样的显示机会,从而使图像细节清晰,改善图像的整体对比度。
4.2直方图及其均衡化结果
直方图
直方图均衡化
图5直方图及其均衡化
参考文献:
- 罗军辉.MATLAB7.0在图像处理中的应用[M].机械工业出版社,2006.06
- 张毓晋.图像工程(第二版)[M].北京:清华大学出版社,2007.05
- 李显宏.MATLAB7.X界面设计与编译技巧[M].电子工业出版社,2006.12
- 孙宏琦,施维颖,巨永峰.利用中值滤波进行图像处理[J].长安大学学报(自 然科学版),2003, 23( 2): 104-106
⑸ 程佩青.数字信号处理教程(第二版)[M].北京:清华大学出版社,2007.2
⑹Conzalez R, Woods R. 数字图像处理[M].北京:电子工业出版社,2011.6
附录
%%%%%%%%%空%域%锐%化滤波 %%%%%%%%%%%%%%%%%%
%%%% matla读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。
%%%%所以要先将图像转为 double 格式的才能运算。
clear all ; close all
I = imread( 'peng.jpg' );
w=fspecial( 'laplacian' ,0.2) %%%%%%%%%建%立%%拉式算子模板
w8=[1,1,1;1,-8,1;1,1,1] %%%%%%%%%拉%普%%拉斯滤波后的 uint8 图像
I1= imfilter(I,w, 'replicate' );
figure(1)
subplot(2,2,1),imshow(I1), title( ' 拉普拉斯滤波图像( uint8 ) ' ); %%%拉普拉斯滤波后的 uint8 类图像
f = im2double(l); %%%%%%%%% u转换 double 类
f1= imfilter(f,w, | 'replicate' | ); | ||||
subplot(2,2,2), | imshow(f1,[]), | title( ' 拉普拉斯滤波图像( | double ) ' ) | ; %%%拉普拉斯滤波后的 double | ||
类图像 | ||||||
f2= imfilter(f,w8, | 'replicate' | ); | ||||
f4 = f-f1; | ||||||
f8 = f-f2; | ||||||
subplot(2,2,3), | imshow(f4);title( | ' 原始图像中减去 | uint8' | ); %%%% | 增强后的结果, | 从原始图像中 |
减去 uint8 所得的结果 | ||||||
subplot(2,2,4), | imshow(f8);title( | ' 原始图像中减去 | double' | ); %%%% | 增强后的结果, | 从原图图像中 |
减去 double 类所得到的结果: |
%%%%%%%%%%%频%域%图%%像%平滑和锐化 %%%%%%%%%%%%%%%% clc;clear all ;close all ;
f=imread ( 'peng.jpg' );
[row,col]=size(f);
gls1=fftshift(g);
gls2=fftshift(g);
H=zeros(row,col);
x0=floor(row/2);
y0=floor(col/2);
u0=x0;v0=y0;
D0=50;%截止频率
n=0.2; %滤波器阶数
for u=1:row
for v=1:col
D=(u-u0)A2+(v-v0F2;
H1(u,v)=1心+(D/D0F(2*n));
H2(u,v)=1心+(D0/DF(2*n));
gls1(u,v) = gls1(u,v)*H1(u,v);
gls2(u,v) = gls2(u,v)*H2(u,v);
end
end
%%%%%%%%%%频%域%图%像%平滑 %%%%%%%%%%%%%%%%%%%
figure(1)
rs1=ifftshift(gls1); %%反频移
r1=real(ifft2(rs1)); %%反变换
subplot (2,2,1);imshow(f);
subplot (2,2,2);imshow(uint8(r1));
subplot (2,2,3);imshow(f+uint8(r1));
subplot (2,2,4);
H3=H1(x0,y0:col);
plot(H3);
axis([0 y0 min(H3) max(H3)]);
%%%%%%%%%频%域%%图%像锐化 %%%%%%%%%%%%%%%%
figure(2)
rs2=ifftshift(gls2); %%反频移
r2=real(ifft2(rs2)); %%反变换
subplot (2,2,1);imshow(f);
subplot (2,2,2);imshow(uint8(r2));
subplot (2,2,3);imshow(f+uint8(r2));
subplot (2,2,4);
H4=H2(x0,y0:col);
plot(H4);
axis([0 y0 min(H4) max(H4)]);
%%%%%%直%方%图% 及其均衡化 %%%%%%%%%%%%%
clear;
I=imread( 'peng.jpg' );
I=rgb2gray(I);
I2=I;
add=[];
add1=[];
tab1=zeros(1,256);
tab2=zeros(1,256);
for n=0:255
X=I==n;
add=[add;sum(sum(X))];
end;
[a,b]=size(I);
final=add/(a*b);
for n=1:256
for i=1:n
tab1(n)=tab1(n)+final(i);
end;
end;
tab1=tab1*255;
tab2=round(tab1);
for n=1:a
for m=1:b
for t=0:255
if I(n,m)==t
I2(n,m)=tab2(t+1);
end;
end;
end;
end;
for n=0:255
X1=I2==n;
add1=[add1;sum(sum(X1))];
end;
[a1,b1]=size(I2);
final1=add1/(a1*b1);
figure;
subplot(211);stem(final, 'Marker' , 'none' ); title( ' 直方图 ' )
subplot(212);stem(final1, 'Marker' , 'none' ) ;title( '直方图均衡化 ' )
2
滤波窗口也是二维的,但这种二维窗口