实验三数字图像滤波及边缘检测

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验三数字图像滤波及边缘检测了解图像滤波的基本方法。了解图像边缘检测。利用MATLAB提供的函数实现对图像处理。一、实验目的二、实验原理为了提高图像的质量,如去除噪声,提高图像的清晰度等。我们需要对获取的图像进行处理以达到所需效果。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。1、图像中值滤波中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。中值滤波的优点是运算简单且速度较快,在某些条件下,中值滤波方法可以去除噪声,保护图像边缘,使图像较好地复原。它非常适用于一些线性滤波器无法胜任的数字图像处理的应用场合。三、实验内容中值滤波的基本原理中值滤波的基本原理是把数字图像或数字序列中一点的值用该点邻域中各点值的中值替代。例如:有一个序列为(2,3,4,5,6),这个序列的中值为4。中值滤波器用于图像处理中是这样进行的:设置一个滤波窗口,将其移遍图像(序列)上的点,且用窗口内各原始值的中值代替窗口中心点的值。利用Matlab实现数字图像中值滤波应用Matlab软件中图像处理工具箱的函数。二维中值滤波器的函数格式如下:B=Medfilt2(A,[mn]);B=Medfilt2(A)。(缺省窗口大小为[33])函数:imnoise()格式:J=imnoise(I,type,……)type:‘gaussian’Gauss白噪声‘salt&pepper’椒盐噪声‘speckle’乘法噪声图像中添加噪声‘gaussian’Gauss白噪声参数设置:M、V:在图像中加入均值为M、方差为V的高斯白噪声。(缺省M=0,V=0.01)J=imnoise(I,’gaussian’,M,V)‘salt&pepper’椒盐噪声参数设置:D:在图像I中加入强度为D的“椒盐”黑白像素点.(缺省为0.05)J=imnoise(I,’gaussian’,D)‘speckle’乘法噪声参数设置:J=imnoise(I,’speckle’,V),使用公式J=I+n*I,向图像I中加入乘法噪声,其中n是均值为0,方差为V均匀分布的随机噪声.(V的缺省值为0.04)x=imread(‘dog.jpg','jpg');i=rgb2gray(x);subplot(2,2,1);subimage(i);j1=imnoise(i,'gaussian',0,0.04);subplot(2,2,2);subimage(j1);j2=imnoise(i,'salt&pepper',0.04);subplot(2,2,3);subimage(j2);j3=imnoise(i,'speckle',0.08);subplot(2,2,4);subimage(j3);a=imread('dog.jpg','jpg');i=rgb2gray(x);subplot(2,2,1);subimage(i);j=imnoise(i,'salt&pepper',0.04);subplot(2,2,2);subimage(j);c=medfilt2(j,[22]);subplot(2,2,3);subimage(c);d=medfilt2(j,[55]);subplot(2,2,4);subimage(d);对加噪的图像进行二维中值滤波2、灰度图像平滑、锐化滤波锐化和平滑是图像增强的重要手段,采用前者可以突出图像的细节,采用后者可以滤除图像中的噪声,从而达到图像清晰的目的。工具函数:fspecial(type)格式:H=fspecial(type)type取值:‘average’均值低通滤波‘gaussian’高斯低通滤波‘prewitt’边缘算子增强滤波‘sobel’边缘算子增强滤波几种滤波的比较I=double(imread('cameraman.tif'));subplot(2,2,1);imshow(I,[])H=fspecial('average',5);F1=double(filter2(H,I));subplot(2,2,2);imshow(F1,[])H=fspecial(‘gaussian’,7,3);F2=double(filter2(H,I));subplot(2,2,3);imshow(F2,[])H=fspecial('prewitt');F3=uint8(I+filter2(H,I));subplot(2,2,4);imshow(F3,[])通过实验可知,均值和高斯滤波是原图像模糊,而边缘算子可以增强图像边缘。采用“原图-低通图像”的方法锐化图像I=double(imread('cameraman.tif'));subplot(1,3,1)imshow(I,[])H=fspecial('average',5);F1=double(filter2(H,I));subplot(1,3,2)imshow(F1,[])F2=2*I-F1;subplot(1,3,3)imshow(uint8(F2),[])3、边缘检测在对图像的研究和应用中,人们往往仅对各幅图像中的某些部分感兴趣,需要将这些有关区域分离提取出来,在此基础上对相关目标作进一步的处理。分割算法借助灰度图像中像素灰度值的两个性质:不连续性和相似性。区域内部的像素一般具有灰度相似性,而在区域之间的边界上一般具有灰度不连续性。利用区域间灰度不连续性的基于边界的算法;利用区域内灰度相似性的基于区域的算法。根据分割过程中处理策略的不同并行算法所有判断和决定都可独立和同时地做出。串行算法前期处理的结果可被其后的处理过程所利用。两种算法的对比串行算法所用时间要长与并行算法,但其抗噪声能力则强于并行算法。分割算法分类表注意:现在尚无一种适合于所有图像的通用分割算法,现在提出的分割算法大都是针对具体问题的。分类边界(不连续性)区域(相似性)并行处理PBPR串行处理SBSR边缘检测采用并行边界技术。两个具有不同灰度值的相邻区域之间总存在边缘。边缘是灰度值不连续的结果,这种不连续常可利用求导的方法检测到。一般常用一阶和二阶导数来检测边缘。微分算子边缘检测可借助空域微分算子通过卷积完成。梯度算子;拉普拉斯算子;综合正交算子。边界闭合利用各种算子得到的边缘像素常常是孤立或分小段连续的。为组成区域的封闭边界将不同的区域分开,需要将边缘像素连接起来。哈夫变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的方法。MATLAB实例提取二进制图像的轮廓。语法:BW2=bwmorph(BW1,operation)operation取值:'bridge';'clean';'close';'fill';‘majority’;‘remove’;‘shrink’;‘skel’等。BW1=imread('circles.png');subplot(2,2,1);subimage(BW1);BW2=bwmorph(BW1,'remove');subplot(2,2,2);subimage(BW2)检测灰度图像的边缘格式:BW=edge(I,method)I=imread('rice.png');imshow(I);BW1=edge(I,'prewitt');figure;imshow(BW1);BW2=edge(I,'canny');figure;imshow(BW2);四、课后练习任选一幅图像,对其添加某种噪声,选取一种滤波方法,对该图像进行处理,比较图像处理前后的差别。任选一幅图像,提取其灰度图像的边缘并比较图像处理前后的效果。以上两题任选一题完成即可。五、实验报告要求简述实验目的;简述你所采用的图像处理的方法、原理;图像处理前后图像的变化;分析你采用的这种方法的优点;附程序清单和处理前后图像。

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功