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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

根据分割过程中处理策略的不同
并行算法
所有判断和决定都可独立和同时地做出。
串行算法
前期处理的结果可被其后的处理过程所利用。
两种算法的对比
串行算法所用时间要长与并行算法,但其抗噪声能力 则强于并行算法。
分割算法分类表
分类
边界(不连续 性)
PB
区域(相似性)
并行处理
PR
串行处理
SB
SR
注意:现在尚无一种适合于所有图像的通用分割算法,
subimage(i);
j=imnoise(i,'salt & pepper',0.04);
subplot(2,2,2);
c=medfilt2(j,[2 2]);
subimage(j);
subplot(2,2,3);
d=medfilt2 (j ,[5 5]); subplot(2,2,4);
subimage(c);
subimage(d);
2、边缘检测
在对图像的研究和应用中,人们往往仅对各幅图像中
的某些部分感兴趣,需要将这些有关区域分离提取出
来,在此基础上对相关目标作进一步的处理。
分割算法
借助灰度图像中像素灰度值的两个性质:不连续性和 相似性。区域内部的像素一般具有灰度相似性,而在 区域之间的边界上一般具有灰度不连续性。 利用区域间灰度不连续性的基于边界的算法; 利用区域内灰度相似性的基于区域的算法。
附程序清单和处理前后图像。
operation取值:'bridge';'clean';'close'; 'fill';
‘majority’; ‘remove’; ‘shrink’;‘skel’等。
BW1 = imread('circles.png'); subplot(2,2,1); subimage(BW1); BW2 = bwmorph(BW1,'remove');
对一幅灰度图像用区域生长法进行分割
首先指定几个种子点,其次把图像中灰度值等
于种子点的像素点作为种子点,然后以种子点
为中心,各像素点与种子点的灰度值的差不超
过某个值。则认为该像素点和种子点具有相似
性。
MATLAB参考程序

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);
边界闭合
利用各种算子得到的边缘像素常常是孤立或分小段连
续的。为组成区域的封闭边界将不同的区域分开,需 要将边缘像素连接起来。
哈夫变换
是利用图像全局特性而将边缘像素连接起来组成区域
封闭边界的方法。
MATLAB实例
提取二进制图像的轮廓。 语法:
BW2 = bwmorph(BW1,operation)
图像分割是图像检索、识别和图像理解的基本
前提。
1、图像中值滤波
中值滤波是基于排序统计理论的一种能有效抑制噪声
的非线性信号处理技术。中值滤波的优点是运算简单
且速度较快,在某些条件下,中值滤波方法可以去除 噪声,保护图像边缘,使图像较好地复原。它非常适 用于一些线性滤波器无法胜任的数字图像处理的应用 场合。
均灰度值、纹理或颜色等信息。
区域生长由3个主要步骤组成
选择合适的种子点。
确定生长准则。
确定生长停止条件。
工具函数imreconstrct( )
语法格式:
outim=imreconstruct(markerim,maskim)
其中:
markerim
maskim
标记图像
模板图像
工具函数的工作过程是一个迭代过程。
实验四
数字图像滤波及边缘检测
一、实验目的
了解图像复原的基本方法。 了解图像边缘检测。
利用MATLAB提供的函数实现对图像处理。
二、实验原理
图像恢复和图像增强一样,都是为了改善图像
的视觉效果,以便后续处理。只是图像增强方
法更偏重于主观判断,而图像恢复则是根据图 像畸变或退化原因,进行模型处理。
BW2 = edge(I,'canny');
figure; imshow(BW2);
区域生长法分割图像
主要考虑像素及其空间邻域像素之间的关系,开始时
确定一个或多个像素点作为种子,然后按照某种相似
准则增长区域,逐步生成具有某种均匀性的空间区域, 将相邻(4邻域或8邻域)的具有相似性质的像素或区 域归并从而逐步增长区域,直到没有可以归并的点或 其他小区域为止。区域内像素的相似性度量可以是平
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,’ salt & pepper’,D)
‘speckle’ 乘法噪声参数设置: J=imnoise(I,’ speckle’,V),使用公式J=I+n*I, 向图像I中加入乘法噪声,其中n是均值为0,方差为V
利用Matlab实现数字图像中值滤波
应用Matlab 软件中图像处理工具箱的函数。 二维中值滤波器的函数格式如下:
B = Medfilt2(A,[m n]); B = Medfilt2(A)。(缺省窗口大小为[3 3])
图像中添加噪声
函数:imnoise() 格式: J=imnoise(I,type,……)
中值滤波的基本原理
中值滤波的基本原理是把数字图像或数字序列中一点
的值用该点邻域中各点值的中值替代。
例如:有一个序列为(2 ,3 ,4 ,5 ,6) ,这个序列的中
值为4。
中值滤波器用于图像处理中是这样进行的:设置一个滤
波窗口,将其移遍图像(序列)上的点,且用窗口内各 原始值的中值代替窗口中心点的值。
a=imread('dog1.jpg'); I=rgb2gray(a); subplot(1,2,1); imshow(I); seedx=[256,128,64]; seedy=[128,256,128]; hold on plot(seedx,seedy,'gs','linewidth',1); title('原始图像及种子位置'); I=double(I); markerim=I==I(seedy(1),seedx(1)); for i=2:length(seedx) markerim=markerim | (I==I(seedy(i),seedx(i))); end thresh=[15,10,15]; maskim=zeros(size(I)); for i=1:length(seedx) g=abs(I-I(seedy(i),seedx(i)))<=thresh(i); maskim=maskim | g; end [g,nr]=bwlabel(imreconstruct(markerim,maskim),8); g=mat2gray(g); subplot(1,2,2); imshow(g); title('三个种子点区域生长结果');
现在提出的分割算法大都是针对具体问题的。
边缘检测
采用并行边界技术。 两个具有不同灰度值的相邻区域之间总存在边缘。边
缘是灰度值不连续的结果,这种不连续常可利用求导 的方法检测到。一般常用一阶和二阶导数来检测边缘。
微分算子
边缘检测可借助空域微分算子通过卷积完成。 梯度算子; 拉普拉斯算子; 综合正交算子。
源自文库 三、实验内容
任选一幅图像,对其添加某种噪声,选取一种滤波方
法,对该图像进行处理,比较图像处理前后的差别。
任选一幅图像,提取其灰度图像的边缘并比较图像处
理前后的效果。
四、实验报告要求
简述实验目的; 简述你所采用的图像处理的方法、原理; 图像处理前后图像的变化;
分析你采用的这种方法的优点;
subplot(2,2,2);
subimage(BW2)
检测灰度图像的边缘
格式:
BW = edge(I,method)
I = imread('rice.png'); imshow(I);
BW1 = edge(I,'prewitt');
figure; imshow(BW1);
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);
相关文档
最新文档