当前位置:文档之家› 基于MATLAB的图像处理研究

基于MATLAB的图像处理研究

基于MATLAB的图像处理研究
基于MATLAB的图像处理研究

基于MATLAB的图像处理研究

姓名:彭宝

学号:2131138

导师:孙韶媛

指导老师:齐金鹏

基于MATLAB的图像处理研究

1研究目的

由于现阶段,随着科技的发展,计算机技术的应用已经渗透到社会的方方面面,而与图像有关的通信、网络、传媒、多媒体等已经给人们的生活带来巨大的变化。放观长远,图像技术将在未来的很长一段时间内,影响着计算机应用的各个领域。因此,探究图像处理技术对今后计算机图像处理的发展有着很好的前瞻作用,也为图像处理的技术创新在以后提供理论上的支持。

图像平滑和图像锐化作为图像处理中比较基础且尤为重要的基本方式,在今后的数字化的信息时代中仍然会有广泛的用处。作为基本的图像处理,在数字技术应用的许多方面都有需要的地方,无论是计算机,还是微电子、通信工程、嵌入式系统、传感技术都有着十分重要的地位。

2空域图像处理

2.1图像平滑基本概述

图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法。

2.1.1 线性滤波(均值滤波)

对一些图像进行线性滤波可以去除图像中某些类型的噪声。领域平均法就是一种非常适合去除通过扫描得到的图像中的噪声颗粒的线性滤波。

领域平均法是空间域平滑噪声技术。对于给定的图像()j i f,中的每个像素点()n

m,,取其领域S。设S含有M个像素,取其平均值作为处理后所得图像像素点()n

m,处的灰度。用一像素领域内各像素灰度平均值来代替该像素原来的灰度,即领域平均技术。

领域S的形状和大小根据图像特点确定。一般取的形状是正方形、矩形及十字形等,S的形状和大小可以在全图处理过程中保持不变,也可以根据图像的局

部统计特性而变化,点(m,n)一般位于S 的中心。如S 为3×3领域,点(m,n)位于S 中心,则

()()∑∑-=-=++=111

1

,91,i j j n i m f n m f (2.1)

假设噪声n 是加性噪声,在空间各点互不相关,且期望为0,方差为2σ,图像g 是未受污染的图像,含有噪声图像f 经过加权平均后为

()()()()∑∑∑+

=

=

j i n M

j i g M

j i f M

n m f ,1,1,1, (2.2)

由上式可知,经过平均后,噪声的均值不变,方差2

21σσM

=,即方差变小,说明噪声强度减弱了,抑制了噪声。 2.1.2 中值滤波

中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。

设有一个一维序列1f ,,…,n f ,取窗口长度为m(m 为奇数),对此序列进行中值滤波,就是从输入序列中2f 相继抽出m 个数,v i f -,…,1-i f ,…,1f ,…,

1+i f ,…,v i f +,其中i 为窗口的中心位置,2

1

-=

m v ,再将这m 个点按其数值大小排列,取其序号为正中间的那作为输出。用数学公式表示为:

{}v i i v i i f f f Med Y +-=,,,,ΛΛ (2.3) 2

1

,-=

∈m v Z i 对于二维序列{}ij X 进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为:

}{,ij A

j i X Med Y = (2.4)

其中,A 为滤波窗口。

2.1.3 滤波效果

在进行滤波前,首先给图像添加噪声,在此,给图像添加高斯噪声和椒盐噪声,并进行均值滤波和中值滤波得到图像如下:

加入高斯噪声后图像加入椒盐噪声后图像

高斯噪声下均值滤波椒盐噪声下均值滤波

高斯噪声下中值滤波椒盐噪声下中值滤波

图1高斯噪声与椒盐噪声下的均值滤波与中值滤波

2.1.4结果分析

中值滤波和均值滤波后,都残留一些噪点,但是均值滤波残留的噪点量要明显小于中值滤波。说明均值滤波对于线性的高斯噪声的滤波效果要优于中值滤波。

2.2图像锐化

2.2.1 图像锐化的基本概述

图像在传输过程中,通常质量都要降低,除了噪声因素外,图像一般都要变得模糊。这主要是因为图像的传输或转换系统的传递函数对高频成分的衰减作用,造成图像的细节轮廓不清晰。图像锐化就是使灰度反差增强,从而增强图像

中边缘信息,有利于轮廓抽取。因为轮廓或边缘就是图像中灰度变化率最大的地方。因此,为了把轮廓抽取出来,就是要找一种方法把图像的最大灰度变化处找出来。

2.2.2 拉普拉斯算子——基于二阶微分的图像增强

Laplacian 算子是不依赖于边缘方向的二阶微分算子,是常用的二阶导数算子.拉普拉斯算子是一个标量而不是向量,具有线性特性和旋转不变,即各向同性的性质。

拉普拉斯微分算子强调图像中灰度的突变,弱化灰度慢变化的区域。这将产生一幅把浅灰色边线、突变点叠加到暗背景中的图像。计算数字图像的拉普拉斯值也可以借助于各种模板。拉普拉斯对模板的基本要求是对应中心像素的系数应该是正的,而对应于中心像素邻近像素的系数应是负的,它们的和应该为零。 将原始图像和拉普拉斯图像叠加在一起的简单方法可以保护拉普拉斯锐化处理的效果,同时又能复原背景信息。

拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性,比较适用于改善因为光线的漫反射造成的图像模糊。其原理是,在摄像记录图像的过程中,光点将光漫反射到其周围区域,这个过程满足扩散方程:

f kV t

f

2=?? (3.1) 经过推导,可以发现当图像的模糊是由光的漫反射造成时,不模糊图像等于模糊图像减去它的拉普拉斯变换的常数倍。另外,人们还发现,即使模糊不是由于光的漫反射造成的,对图像进行拉普拉斯变换也可以使图像更清晰。

拉普拉斯锐化的一维处理表达式是:

()()()2

2dx

x f d x f x g -= (3.2) 在二维情况下,拉普拉斯算子使走向不同的轮廓能够在垂直的方向上具有类似于一维那样的锐化效应,其表达式为:

22222

y

f

x f f ??+??=? (3.3)

2.2.3在拉普拉斯算子下的空域锐化结果如下:

拉普拉斯滤波图像(ui nt8)拉普拉斯滤波图像(doubl e)

原始图像中减去ui nt8原始图像中减去doubl e

图2 拉普拉斯算子下的空域锐化结果

3频域图像处理

3.1基本概述

频率域平滑处理就是选择合适的低通滤波器对其频谱成分进行调整,然后经逆傅立叶变换得到平滑图像。其中常用的频率域平滑处理方法一般为频率域低通滤波法。频率域低通滤波是在分析图像信号的频率特征性时,一幅图像中的边缘、跳跃部分以及颗粒噪声代表图像信号的高频分量,而大面积的背景区则代表图像信号的低频分量。用滤波的方法滤除其高频部分就能去除噪声,使图像得到平滑。

3.2 Butterworth 滤波器下的平滑锐化处理

0.2

0.40.60.81

图3 频域低通滤波(平滑)

0.20.40.60.8

图4 频域高通滤波(锐化)

3.3结果分析

经过多次的实践和理论上的推导不难发现图像平滑和图像锐化是两个完全对立的图像处理技术。图像平滑让图像中的细节成分越来越少,而相对的,图像锐化则是凸显图像的细节部分。

图像平滑的弊端在于会把图像本身一些很好的细节部分给模糊掉,从而降低图像的质量。对一些分辨率很高而且细节很唯美的图像来说,图像平滑来处理噪声反而效果不是很好。

图像锐化则是让图像变得更为清晰。通过图像锐化可以使图像的细节部分变得清楚起来。但是如果图像有噪声,只会让图像变得更加模糊,图像锐化不能对有噪声的图像进行处理。

4 直方图均衡化处理

4.1基本原理

在实际应用中,希望能够有目的地增强某个灰度区间的图像,即能够人为地修正直方图的形状,使之与期望的形状相匹配,这就是直方图规定化的基本思想。换句话说,希望可以人为地改变直方图形状,使之成为某个特定的形状,直方图规定化就是针对上述要求提出来的一种增强技术,它可以按照预先设定的某个形状来调整图像的直方图。每一可能的灰度层次所占的像素个数尽量均等,每个像素具有同样的显示机会,从而使图像细节清晰,改善图像的整体对比度。

4.2直方图及其均衡化结果

00.005

0.010.0150.020.025

00.005

0.010.0150.020.025

图5 直方图及其均衡化

参考文献:

[1] 罗军辉.MATLAB7.0在图像处理中的应用 [M].机械工业出版社,2006.06 [2] 张毓晋.图像工程(第二版)[M].北京:清华大学出版社,2007.05 [3] 李显宏.MATLAB7.x 界面设计与编译技巧[M].电子工业出版社,2006.12 [4] 孙宏琦,施维颖,巨永峰.利用中值滤波进行图像处理[J].长安大学学报(自然科学版),2003,23(2):104-106

[5] 程佩青.数字信号处理教程(第二版)[M].北京:清华大学出版社,2007.2 [6] Conzalez R, Woods R.数字图像处理[M].北京:电子工业出版社,2011.6

附录

%%%%%%%%%%%% 空域锐化滤波 %%%%%%%%%%%%%%%%%%

%%%% matlab读入图像的数据是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(I);%%%%%%%%% uint8 转换 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);

g=fft2(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)^2+(v-v0)^2;

H1(u,v)=1/(1+(D/D0)^(2*n));

H2(u,v)=1/(1+(D0/D)^(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('直方图均衡化')

相关主题
文本预览
相关文档 最新文档