图像处理图像滤波边缘处理.docx

上传人:b****7 文档编号:8738396 上传时间:2023-02-01 格式:DOCX 页数:11 大小:819.46KB
下载 相关 举报
图像处理图像滤波边缘处理.docx_第1页
第1页 / 共11页
图像处理图像滤波边缘处理.docx_第2页
第2页 / 共11页
图像处理图像滤波边缘处理.docx_第3页
第3页 / 共11页
图像处理图像滤波边缘处理.docx_第4页
第4页 / 共11页
图像处理图像滤波边缘处理.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

图像处理图像滤波边缘处理.docx

《图像处理图像滤波边缘处理.docx》由会员分享,可在线阅读,更多相关《图像处理图像滤波边缘处理.docx(11页珍藏版)》请在冰豆网上搜索。

图像处理图像滤波边缘处理.docx

图像处理图像滤波边缘处理

课程设计

 

姓名:

学号:

学院:

专业:

 

课目:

数字图像处理

 

图像处理实验部分

此次实验在MATLAB中实现:

打开MATLAB,“file”—“new”—“script”,则创建新文件即完成,在新建的“Editor-Untitled”即可编程。

下面简单介绍此次实验中主要应用到的函数:

1、imread

该函数用于读入各种图像文件。

如:

a=imread(‘rice.tif’),其中图像rice.tif在MATLAB安装目录“matlab”-“toolbox”-“images”-“imdemos”下,若图片不在该目录下,则读入图像格式如下:

a=imread(‘D:

\Demo4.bmp’)。

2、imshow

该函数用于图像文件得显示。

如a=imshow(‘rice.tif’)。

3、rgb2gray

该函数用于将彩色转为黑白图像。

如:

I=rgb2gray[I]。

4、subplot

该函数一般格式为:

subplot(m,n,p),用于在同一窗口中绘制多个子图,把图形窗口分割为m*n个子图,然后再第P个小窗口中创建坐标轴。

5、fspecial

利用该函数可生成滤波时所用的模板。

其调用格式如下:

(1)h=fspecial(type)

(2)h=fspecial(type,parameters)

参数type指定滤波器的类型,parameters是与滤波器类型有关的具体参数。

6、medfilt2

该函数用于实现中值滤波。

其调用格式如下:

B=medfilt2(A,[m,n]):

对图像A执行二维中值滤波。

每个输出像素为m*n领域的中值。

在图像边界用0填充,所以边缘的中值为[m,n]/2,区域的中值,可能失真。

7、imfilter

该函数对任意类型数组或多维图像进行滤波。

调用方法如下:

B=imfilter(A,H)

B=imfilter(A,H,option1,option2,…)

或g=imfilter(f,w,filtering_mode,boundary_options,size_options)

其中,f为输入图像,w为滤波掩膜,g为滤波后图像。

filtering_mode用于指定在滤波过程中使用“相关”还是“卷积”。

boundary_options用于处理的边界充零问题,边界的大小由滤波器的大小确定。

一、图像滤波:

1、均值滤波

基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度值g(x,y)。

 

3*3,5*5,7*7窗口下均值滤波实验程序如下:

clearall

I=imread('D:

\A.jpg');

J=imnoise(I,'gaussian',0,0.02);%加入均值为0,方差为0.01的高斯噪声

w1=fspecial('average',[33]);%%先定义3*3窗口的滤波器

w2=fspecial('average',[55]);%%先定义5*5窗口的滤波器

w3=fspecial('average',[77]);%%先定义7*7窗口的滤波器

a=imfilter(J,w1,'replicate');%%让图像通过滤波器

b=imfilter(J,w2,'replicate');

c=imfilter(J,w3,'replicate');

subplot(2,3,1);

imshow(I);

title('原始图像');

subplot(2,3,2);

imshow(J);

title('加入高斯噪声后图像');

subplot(2,3,3);

imshow(a);

title('3*3均值滤波图像');

subplot(2,3,4);

imshow(b);

title('5*5均值滤波图像');

subplot(2,3,5);

imshow(c);

title('7*7均值滤波图像');

运行结果:

MATLAB中实现的均值滤波结果(包括3*3,5*5,7*7窗口)

2、中值滤波

中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。

方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升的二维数据序列,并取出序列中位于中间位置的灰度作为中心像素的灰度。

对一个滑动窗口内的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值(非线性)。

中值滤波法能有效削弱椒盐噪声,且比邻域、超限像素平均法更有效

3*3,5*5,7*7中值滤波实验程序:

clearall

I=imread('D:

\shu.bmp');

I=rgb2gray(I);

J=imnoise(I,'salt&pepper',0.02);

subplot(2,3,1);

imshow(I);title('原图像');

subplot(2,3,2);

imshow(J);title('添加椒盐噪声图像');

k1=medfilt2(J);%进行3*3模板中值滤波

k2=medfilt2(J,[5,5]);%进行5*5模板中值滤波

k3=medfilt2(J,[7,7]);%进行7*7模板中值滤波

subplot(2,3,3);

imshow(k1);title('3*3模板中值滤波');

subplot(2,3,4);

imshow(k2);title('5*5模板中值滤波');

subplot(2,3,5);

imshow(k3);title('7*7模板中值滤波');

结果:

MATLAB中实现的中值滤波结果(包括3*3,5*5,7*7窗口)

3、试验比较:

由上面两种滤波的结果可以得出以下结论:

均值滤波算法简单,计算速度快,平滑后噪声方差为处理前的1/m。

但是图像产生模糊,特别在边缘和细节处;而且邻域越大,模糊程度越严重,由图可以看出,即3*3模板去噪能力没有5*5模板强,但5*5模板的处理室图像更模糊。

与均值滤波相比,中值滤波对脉冲干扰及椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。

且运算速度快,可硬化,便于实时处理,但是对点、线等细节较多的图像却不太合适。

由图可以看出,在三个窗口中实现的中值滤波,7*7窗口滤波后的图像最模糊。

二、边缘检测

1.Roberts算子

  Roberts算子是最古老的算子之一,是一种交差差分算子。

由于它只使用当前像素的2*2邻域,是最简单的梯度算子,所以计算非常简单。

Roberts算子计算时利用的像素数一共有4个,可以用模板对应4个像素与模板相应的元素相乘相加得到。

Roberts算子边缘定位准,主要缺点是其对噪声的高度敏感性,原因在于仅使用了很少几个像素来近似梯度。

实用于边缘明显而且噪声较少的图像分割。

2、Sobel的原理:

Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。

对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。

当对精度要求不是很高时,是一种较为常用的边缘检测方法。

在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。

在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量.该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。

在边沿检测中,常用的一种模板是Sobel算子。

由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。

美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。

在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

3、Laplacian算子

这是二阶微分算子,对噪声比较敏感,所以,图像一般先经过平滑处理,因为平滑处理也是用模板进行的,所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。

Laplacian算子一般不以其原始形式用于边缘检测,因为其作为一个二阶导数,Laplacian算子对噪声具有无法接受的敏感性;同时其幅值产生算边缘,这是复杂的分割不希望有的结果;最后Laplacian算子不能检测边缘的方向;所以Laplacian在分割中所起的作用包括:

(1)利用它的零交叉性质进行边缘定位;

(2)确定一个像素是在一条边缘暗的一面还是亮的一面;一般使用的是高斯型拉普拉斯算子(LaplacianofaGaussian,LoG),由于二阶导数是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果的拉普拉斯是一样的。

所以在LoG公式中使用高斯函数的目的就是对图像进行平滑处理,使用Laplacian算子的目的是提供一幅用零交叉确定边缘位置的图像;图像的平滑处理减少了噪声的影响并且它的主要作用还是抵消由Laplacian算子的二阶导数引起的逐渐增加的噪声影响。

4、实验程序:

clearall

I=imread('D:

\Demo4.bmp');

BW1=edge(I,'roberts');%采用roberts算子进行边缘检测

BW2=edge(I,'sobel');%采用sobel算子进行边缘检测

BW3=edge(I,'log');%采用log算子进行边缘检测

subplot(2,2,1);

imshow(I);

title('原始图像');

subplot(2,2,2);

imshow(BW1);

title('Roberts边缘检测');

subplot(2,2,3);

imshow(BW2);

title('sobel边缘检测');

subplot(2,2,4);

imshow(BW3);

title('log边缘检测')

5、实验结果:

6、算法比较:

算子

加法运算PN

乘法运算MN

Roberts

3*N2

0

Sobel

11*N2

2*N2

Laplacian

4*N2

N2

从加法的角度来看,Roberts算子的运算速度较快,从乘法的角度看Laplacian算子的运算速度较快。

Roberts算子对边缘定位比较准,所以分割结果的边界宽度比较窄。

但是Roberts算子由于不包括平滑,对噪声比较敏感,在图像噪声较少的情况下,分割的结果还是相当不错的。

Soble算子对噪声有抑制作用,因此不会出现很多孤立的边缘像素点,不过Soble算子对边缘的定位不是很准确,图像的边界宽度往往不止一个像素,不适合对边缘定位的准确性要求很高的应用。

Sobel算子是通过像素平均来实现的,有一定的抗噪能力,同时图像也产生了一定的模糊。

由于Laplacian算子利用的是二阶导数信息,对噪声比较敏感,所以分割结果中在一些像素上出现了散碎的边缘像素点。

不过Laplacian算子对边缘的定位还是比较准的。

三、图像分割:

1、固定阈值法:

利用图像的灰度特征来选择一个最佳阈值,使前景和背景的两个灰度级分布的有效信息为最大。

这里主要以图像二值化为例。

图像二值化是通过设定某个阀值,把具有灰度级的图像变换成只有两个灰度级的黑白图像。

设输入图像为f ( x, y ),二值化后的图像为g ( x, y ), 阀值为T, 那么图像二值化的方法为

2、最大类间方差法(otsu方法)

假定:

图像f(i,j)的灰度区间为[0,L-1],选择一阈值t将图像的象元分为c1、c2两组。

其中,C1:

f(i,j)

w1,灰度均值:

m1,均方差:

12。

C2:

f(i,j)>t,象元数:

w2,灰度均值:

m2,均方差:

22。

当组内方差越小,则组内象素越相似;组间方差越大,则两组的差别越大。

所以B2/w2的值越大,分割效果越好。

3、实验程序:

clearall

I=imread('D:

\shu.bmp');

I=rgb2gray(I);

T=0.5*(double(min(I(:

)))+double(max(I(:

))));%设置初始阈值为最大灰度和最小灰度值和的一半

done=false;

while~done

g=I>=T;%分成两组像素,灰度值大于或者等于T的和灰度值小于T的

Tnext=0.5*(mean(I(g))+mean(I(~g)));%新阈值两个范围内像素平均值和的一半

done=abs(T-Tnext)<0.5;%0.5是自己指定的参数,根据要达到的效果来自行选择

T=Tnext;

end

%以下程序就是根据上面确定的阈值进行图像二值分割

J=I;

K=find(J>=T);

J(K)=255;

K=find(J

J(K)=0;

figure;

subplot(2,2,1),imshow(I,[]),title('原始图像');

subplot(2,2,2),imshow(J,[]),title('固定阈值法分割后图像');

Th=graythresh(I);

display('GlobalThresholding-Otsu''sMethod');

Th

bw=im2bw(I,Th);

subplot(2,2,3);

imshow(bw);

title('Otsu分割后图像');

4、实验结果:

5、实验比较:

对于最大类间方差分割法,因为方差是灰度分布均匀性的一种量度,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。

Otsu是对固定阈值法的改进,但是它不能反映图像的几何结构,有时判断标准与人的视觉不一致。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1