实验三图像分割与边缘检测.doc
《实验三图像分割与边缘检测.doc》由会员分享,可在线阅读,更多相关《实验三图像分割与边缘检测.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流实验三图像分割与边缘检测.精品文档.实验三 图像分割与边缘检测上课老师:赵欢喜 实验指导:吴磊 实验地点:科技楼4楼计算机实验中心 时间:2010.12.14一实验目的1. 理解图像分割的基本概念;2. 理解图像边缘提取的基本概念;3. 掌握进行边缘提取的基本方法;4. 掌握用阈值法进行图像分割的基本方法。二实验基本原理图象边缘检测图像理解是图像处理的一个重要分支,研究为完成某一任务需要从图像中提取哪些有用的信息,以及如何利用这些信息解释图像。边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背
2、景区分开来。在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。边缘检测实际上就是检测图像特征发生变化的位置。图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:首先抽取出反映灰度变化的边缘点,然后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。边缘检测的方法大多数是基于方向导数掩模
3、求卷积的方法。导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。一阶导数与是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向上的灰度变化率可以用相应公式进行计算;对于数字图像,应该采用差分运算代替求导。一幅数字图像的一阶导数是基于各种二维梯度的近似值。图像f(x,y)在位置(x,y)的梯度定义为下列向量: (3-4)在边缘检测中,一般用这个向量的大小,用表示 (3-5)函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模。利用梯度模算子来检测边缘是一
4、种很好的方法,它不仅具有位移不变性,还具有各向同性。为了运算简便,实际中采用梯度模的近似形式。 或者 传统的边缘检测算法通过梯度算子来实现的,在求边缘的梯度时,需要对每个象素位置计算。在实际中常用小区域模板卷积来近似快速计算,简单有效,即梯度算子一般采用滤波算子的形式来完成,因此应用很广泛。模板是N*N的权值方阵,经典的梯度算子模板有:Sobel模板、Prewitt模板、Roberts模板、Laplacian模板等。具体模板请见书。拉普拉斯高斯(LoG)算法是一种二阶边缘检测方法。它通过寻找图像灰度值中二阶微分中的过零点(Zero Crossing)来检测边缘点。其原理为,灰度级变形成的边缘经
5、过微风算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,则峰值处的微分值为0,峰值两侧符号相反,而原先的极值点对应二阶微分中的过零点,通过检测过零点即可将图像的边缘提取出来。(a)原图 (b)边缘检测后的图 (c) 阈值处理后的图图3-1 检测具有-45度边缘的图例1点检测原理:常数灰阶区域中的某孤立点对某种模板的响应绝对值肯定是最强烈的。最常用的模板有:Matlab 实现方法:g = abs(imfilter(double(f),w) = T; where w is a appropriate point detection mask which satisfies the ab
6、ove condition.实例:the detection of isolated bright point in the dark gray area of the northeast quadrant.(image size: 675*675)实例代码:f=imread(Fig1002(a)(test_pattern_with_single_pixel).tif);w = -1 -1 -1; -1 8 -1; -1 -1 -1;g = abs(imfilter(double(f), w);T = max(g(:);g = g= T;subplot(121);imshow(f);title
7、(the original image);subplot(122);imshow(g(1:end-400, 400:end);title(the isolated point detected (only a part displayed);2线 (通常假定一个象素厚度) 检测 原理与上同,典型模板有(主要方向性):实例:-450 方向线的检测:3边沿检测方法:使用一阶或者二阶导数。对一节导数,关键问题是怎样估计水平和垂直方向的梯度Gx 和Gy,二阶导数通常使用Laplacian算子计算,但是Laplacian算子很少单独用来检测边缘,因为其对噪声非常敏感,而且其结果会产生双边沿,加大了边缘检
8、测的困难。然而,如果Laplacian算子能与其他边缘检测算法相结合,如边缘定位算法,则其是一个强有力的补充。通常两个标准用来测度图像强度的迅速变化:(1) 找出强度的一阶导数值大于某个事先阈值标准的位置;(2) 找出图像二阶导数的跨零点。IPT 工具箱函数edge 提供了几种基于上面两种标准的估计器:其语法为:g, t = edge(f, method, parameters);这里 method 参数包括这几种类型的边缘检测子:Sobel, Prewitt, Roberts, Laplacian of a Gaussian (LoG), Zero crossings and Canny,前
9、三种的模板见下图:另一个强有力的边缘检测器:Canny Edge Detector (Canny 1986),其算法的基本步骤如下:(1) First, the image is smoothed using a Gaussian filter with a specified standard deviation s(2) The local gradient, g(x, y) = Gx2+Gy21/2, and edge direction, q(x, y) = tan-1(Gy /Gx), are computed at each point. Any of the first thre
10、e techniques can be used to computer the Gx and Gy. An edge point is defined to be a point whose strength is locally maximum in the direction of the gradient.(3) The edge points give rise to ridges in the gradient magnitude image. The algorithm then tracks along the top of these ridges and sets to z
11、ero all pixels that are not actually on the ridge top so as to give a thin line, a process known as nonmaximal suppression. The ridge pixels are the thresholded using thresholds, T1 and T2, with T1 T 结果为一个逻辑值矩阵,I中大于T的值对应的位置为1(真),其余位置为0(假)。I(I T) 表示I 中所有大于T的值组成的向量。255* (IT) + 0*(I=T练习1f=imread(moon.t
12、if);w=-1 -1 -1; -1 8 -1; -1 -1 -1;g=abs(imfilter(double(f), w);T=max(g(:);T=T*0.5;g=g=T;imshow(f); figure, imshow(g);1.1.2线检测水平模板、+45度模板、垂直模板、-45度模板。练习2f=imread(circbw.tif);imshow(f);w=2 -1 -1; -1 2 -1; -1 -1 2;g=abs(imfilter(double(f), w);figure,imshow(g);1.1.3使用edge函数的边缘检测语法:g,t=edge(f, method, pa
13、rameter)说明:g是一个逻辑数组,其值为:在f中检测到边缘的位置为1,其他位置为零;t是edge是用的阈值;method为边缘监测器方法,可选为: sobel, prewit, roberts, log(LoG), zerocoss, canny等;parameter包含两部分:T为指定的阈值,第二部分为dir(检测边缘的首选方向: horizontal, vertical, both),或sigma(标准方差),或H(指定的滤波函数)。练习3f=imread(rice.tif);imshow(f);gsobel,t=edge(f, sobel);figure, imshow(gsobe
14、l);glog,t=edge(f, log);figure, imshow(glog);gcanny,t=edge(f, canny);figure, imshow(gcanny);22 使用Hough变换的线检测练习4设计与实现一个基于Hough变换的直线检测器。23 阈值处理231 全局阈值处理语法:T=graythresh(f)说明:T是阈值,归一化为0至1之间的值。232 局部阈值处理通过一个形态学顶帽算子并对得到的结果使用graythresh来计算。练习5f=imread(moon.tif);imshow(f);T=graythresh(f);g=f=T;figure, imshow
15、(g);24 基于区域的分割241 区域生长 242 区域分裂和合并练习6设计与实现一个基于区域生长的分割程序。25 使用分水岭变换的分割练习7f=imread(cell.tif);imshow(f);g=im2bw(f, graythresh(f);figure,imshow(g);gc=g;D=bwdist(gc);L=watershed(-D);w=L= =0;g2=g&w;figure,imshow(g2);26 分割后处理语法:BW2 = bwfill(BW1,c,r,n)说明:填充二进制图像的背景色。(形态学处理)练习8BW1 =1 0 0 0 0 0 0 01 1 1 1 1 0
16、 0 01 0 0 0 1 0 1 01 0 0 0 1 1 1 01 1 1 1 0 1 1 11 0 0 1 1 0 1 01 0 0 0 1 0 1 01 0 0 0 1 1 1 0BW2 = bwfill(BW1,3,3,8)I = imread(blood1.tif);BW3 = im2bw(I);BW4 = bwfill(BW3,holes);imshow(BW3)figure, imshow(BW4)语法:bwareaopen说明:二进制图像区域打开,清除小物体。五. 部分参考程序和参考结果1房屋轮廓描绘代码:f = imread(Fig1006(a)(building).tif
17、);gv, t = edge(f, sobel, vertical); % using threshold computed automatically, here t = 0.0516subplot(231);imshow(f, );title(the original image);subplot(232);imshow(gv, );title(vertical edge with threshold determined automatically);gv1 = edge(f, sobel, 0.15, vertical); % using a specified threshold.s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 图像 分割 边缘 检测
限制150内