图像处理图像滤波边缘处理Word格式文档下载.docx
《图像处理图像滤波边缘处理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图像处理图像滤波边缘处理Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
该函数一般格式为:
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('
[55]);
%%先定义5*5窗口的滤波器
w3=fspecial('
[77]);
%%先定义7*7窗口的滤波器
a=imfilter(J,w1,'
replicate'
%%让图像通过滤波器
b=imfilter(J,w2,'
c=imfilter(J,w3,'
subplot(2,3,1);
imshow(I);
title('
原始图像'
subplot(2,3,2);
imshow(J);
加入高斯噪声后图像'
subplot(2,3,3);
imshow(a);
title('
3*3均值滤波图像'
subplot(2,3,4);
imshow(b);
5*5均值滤波图像'
subplot(2,3,5);
imshow(c);
7*7均值滤波图像'
运行结果:
MATLAB中实现的均值滤波结果(包括3*3,5*5,7*7窗口)
2、中值滤波
中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让围的像素值接近的真实值,从而消除孤立的噪声点。
法是去某种结构的二维滑动模板,将板像素按照像素值的大小进行排序,生成单调上升的二维数据序列,并取出序列中位于中间位置的灰度作为中心像素的灰度。
对一个滑动窗口的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值(非线性)。
中值滤波法能有效削弱椒盐噪声,且比邻域、超限像素平均法更有效
3*3,5*5,7*7中值滤波实验程序:
\shu.bmp'
I=rgb2gray(I);
salt&
pepper'
0.02);
原图像'
添加椒盐噪声图像'
k1=medfilt2(J);
%进行3*3模板中值滤波
k2=medfilt2(J,[5,5]);
%进行5*5模板中值滤波
k3=medfilt2(J,[7,7]);
%进行7*7模板中值滤波
imshow(k1);
3*3模板中值滤波'
imshow(k2);
5*5模板中值滤波'
imshow(k3);
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、实验程序:
I=imread('
\Demo4.bmp'
BW1=edge(I,'
roberts'
%采用roberts算子进行边缘检测
BW2=edge(I,'
sobel'
%采用sobel算子进行边缘检测
BW3=edge(I,'
log'
%采用log算子进行边缘检测
subplot(2,2,1);
subplot(2,2,2);
imshow(BW1);
Roberts边缘检测'
subplot(2,2,3);
imshow(BW2);
sobel边缘检测'
subplot(2,2,4);
imshow(BW3);
log边缘检测'
)
5、实验结果:
6、算法比较:
算子
加法运算PN
乘法运算MN
Roberts
3*N2
Sobel
11*N2
2*N2
Laplacian
4*N2
N2
从加法的角度来看,Roberts算子的运算速度较快,从乘法的角度看Laplacian算子的运算速度较快。
Roberts算子对边缘定位比较准,所以分割结果的边界宽度比较窄。
但是Roberts算子由于不包括平滑,对噪声比较敏感,在图像噪声较少的情况下,分割的结果还是相当不错的。
Soble算子对噪声有抑制作用,因此不会出现很多孤立的边缘像素点,不过Soble算子对边缘的定位不是很准确,图像的边界宽度往往不止一个像素,不适合对边缘定位的准确性要求很高的应用。
Sobel算子是通过像素平均来实现的,有一定的抗噪能力,同时图像也产生了一定的模糊。
由于Laplacian算子利用的是二阶导数信息,对噪声比较敏感,所以分割结果中在一些像素上出现了散碎的边缘像素点。
不过Laplacian算子对边缘的定位还是比较准的。
三、图像分割:
1、固定阈值法:
利用图像的灰度特征来选择一个最佳阈值,使前景和背景的两个灰度级分布的有效信息为最大。
这里主要以图像二值化为例。
图像二值化是通过设定某个阀值,把具有灰度级的图像变换成只有两个灰度级的黑白图像。
设输入图像为f
(
x,
y
),二值化后的图像为g
),
阀值为T,
那么图像二值化的法为
2、最大类间差法(otsu法)
假定:
图像f(i,j)的灰度区间为[0,L-1],选择一阈值t将图像的象元分为c1、c2两组。
其中,C1:
f(i,j)<
t,象元数:
w1,灰度均值:
m1,均差:
12。
C2:
f(i,j)>
t,象元数:
w2,灰度均值:
m2,均差:
22。
当组差越小,则组象素越相似;
组间差越大,则两组的差别越大。
所以B2/w2的值越大,分割效果越好。
3、实验程序:
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<
T);
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);
imshow(bw);
Otsu分割后图像'
4、实验结果:
5、实验比较:
对于最大类间差分割法,因为差是灰度分布均匀性的一种量度,差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间差最大的分割意味着错分概率最小。
Otsu是对固定阈值法的改进,但是它不能反映图像的几结构,有时判断标准与人的视觉不一致。