实验三图像分割与边缘检测.docx
- 文档编号:24734817
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:25
- 大小:188.81KB
实验三图像分割与边缘检测.docx
《实验三图像分割与边缘检测.docx》由会员分享,可在线阅读,更多相关《实验三图像分割与边缘检测.docx(25页珍藏版)》请在冰豆网上搜索。
实验三图像分割与边缘检测
实验三图像分割与边缘检测
上课教师:
赵欢喜实验指导:
吴磊
实验地址:
科技楼4楼运算机实验中心时刻:
一.实验目的
1.明白得图像分割的大体概念;
2.明白得图像边缘提取的大体概念;
3.把握进行边缘提取的大体方式;
4.把握用阈值法进行图像分割的大体方式。
二.实验大体原理
●图象边缘检测
图像明白得是图像处置的一个重要分支,研究为完成某一任务需要从图像中提取哪些有效的信息,和如何利用这些信息说明图像。
边缘检测技术关于处置数字图像超级重要,因为边缘是所要提取目标和背景的分界限,提掏出边缘才能将目标和背景区分开来。
在图像中,边界说明一个特点区域的终结和另一个特点区域的开始,边界所分开区域的内部特点或属性是一致的,而不同的区域内部的特点或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的不同来实现的,这些不同包括灰度,颜色或纹理特点。
边缘检测事实上确实是检测图像特点发生转变的位置。
图象边缘检测必需知足两个条件:
一能有效地抑制噪声;二必需尽可能精准确信边缘的位置
由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生中断,因此,边界检测包括两个大体内容:
第一抽掏出反映灰度转变的边缘点,然后剔除某些边界点或填补边界中断点,并将这些边缘连接成完整的线。
边缘检测的方式大多数是基于方向导数掩模求卷积的方式。
导数算子具有突出灰度转变的作用,对图像运用导数算子,灰度转变较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方式,提取边界点集。
一阶导数与是最简单的导数算子,它们别离求出了灰度在x和y方向上的转变率,而方向α上的灰度转变率能够用相应公式进行计算;关于数字图像,应该采纳差分运算代替求导。
一幅数字图像的一阶导数是基于各类二维梯度的近似值。
图像f(x,y)在位置(x,y)的梯度概念为以下向量:
(3-4)
在边缘检测中,一样用那个向量的大小,用
表示
(3-5)
函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模。
利用梯度模算子来检测边缘是一种专门好的方式,它不仅具有位移不变性,还具有各向同性。
为了运算简便,实际中采纳梯度模的近似形式。
或
传统的边缘检测算法通过梯度算子来实现的,在求边缘的梯度时,需要对每一个象素位置计算。
在实际中经常使用小区域模板卷积来近似快速计算,简单有效,即梯度算子一样采纳滤波算子的形式来完成,因此应用很普遍。
模板是N*N的权值方阵,经典的梯度算子模板有:
Sobel模板、Prewitt模板、Roberts模板、Laplacian模板等。
具体模板请见书。
拉普拉斯高斯(LoG)算法是一种二阶边缘检测方式。
它通过寻觅图像灰度值中二阶微分中的过零点(ZeroCrossing)来检测边缘点。
其原理为,灰度级变形成的边缘通过轻风算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,那么峰值处的微分值为0,峰值双侧符号相反,而原先的极值点对应二阶微分中的过零点,通过检测过零点即可将图像的边缘提掏出来。
(a)原图(b)边缘检测后的图(c)阈值处置后的图
图3-1检测具有-45度边缘的图例
1.点检测
原理:
常数灰阶区域中的某孤立点对某种模板的响应绝对值确信是最强烈的。
最经常使用的模板有:
Matlab实现方式:
g=abs(imfilter(double(f),w))>=T;wherewisaappropriatepointdetectionmaskwhichsatisfiestheabovecondition.
实例:
thedetectionofisolatedbrightpointinthedarkgrayareaofthenortheastquadrant.
(imagesize:
675*675)
实例代码:
f=imread('Fig1002(a)(test_pattern_with_single_pixel).tif');
w=[-1-1-1;-18-1;-1-1-1];
g=abs(imfilter(double(f),w));
T=max(g(:
));
g=g>=T;
subplot(121);imshow(f);
title('theoriginalimage');
subplot(122);imshow(g(1:
end-400,400:
end));
title('theisolatedpointdetected(onlyapartdisplayed)');
=======================================================
2.线(通常假定一个象素厚度)检测
原理与上同,典型模板有(要紧方向性):
实例:
-450方向线的检测:
3.边沿检测
方式:
利用一阶或二阶导数。
对一节导数,关键问题是如何估量水平和垂直方向的梯度Gx和Gy,二阶导数通常利用Laplacian算子计算,可是Laplacian算子很少单独用来检测边缘,因为其对噪声超级灵敏,而且其结果会产生双边沿,加大了边缘检测的困难。
但是,若是Laplacian算子能与其他边缘检测算法相结合,如边缘定位算法,那么其是一个强有力的补充。
通常两个标准用来测度图像强度的迅速转变:
(1)找出强度的一阶导数值大于某个事前阈值标准的位置;
(2)找出图像二阶导数的跨零点。
IPT工具箱函数edge提供了几种基于上面两种标准的估量器:
其语法为:
[g,t]=edge(f,‘method’,parameters);
那个地址‘method’参数包括这几种类型的边缘检测子:
Sobel,Prewitt,Roberts,LaplacianofaGaussian(LoG),ZerocrossingsandCanny,前三种的模板见以下图:
另一个强有力的边缘检测器:
CannyEdgeDetector(Canny[1986]),其算法的大体步骤如下:
(1)First,theimageissmoothedusingaGaussianfilterwithaspecifiedstandarddeviation
(2)Thelocalgradient,g(x,y)=[Gx2+Gy2]1/2,andedgedirection,(x,y)=tan-1(Gy/Gx),arecomputedateachpoint.AnyofthefirstthreetechniquescanbeusedtocomputertheGxandGy.Anedgepointisdefinedtobeapointwhosestrengthislocallymaximuminthedirectionofthegradient.
(3)Theedgepointsgiverisetoridgesinthegradientmagnitudeimage.Thealgorithmthentracksalongthetopoftheseridgesandsetstozeroallpixelsthatarenotactuallyontheridgetopsoastogiveathinline,aprocessknownasnonmaximalsuppression.Theridgepixelsarethethresholdedusingthresholds,T1andT2,withT1 (4)Finally,thealgorithmperformsedgelinkingbyincorporatingtheweakpixelsthatare8-connectedtostrongpixels. 注意: Edgefunctiondoesnotcomputeedgesat±450.Tocomputeedgesweneedtospecifythemaskanduseimfilter. 4.Hough变换 Inpractice,theresultingpixelsproducedbythemethodsdiscussedintheprevioussectionsseldomcharacterizeanedgecompletelybecauseofnoise,breaksfromnonuniformillumination,andothereffectsthatintroducespuriousdiscontinuities.HoughTransformisonetypeoflinkingproceduretofindandlinklinesegmentsforassemblingedgepixelsintomeaningfuledges. AbouttheprincipleofHoughtransform,pleaserefertopage586intextbook. InstanceofHoughtransform: %constructinganimagecontaining5isolatedforegroundpixelsinseverallocaitons: f=zeros(101,101); f(1,1)=1,f(101,1)=1,f(1,101)=1,f(101,101)=1,f(51,51)=1; [H,theta,rho]=hough(f);%houghtransform imshow(theta,rho,H,[],'notruesize'); axison,axisnormal; xlabel('\theta'),ylabel('\rho'); ●图象分割 图像分割是将图像划分成假设干个互不相交的小区域的进程,小区域是某种意义下具有一起属性的像素的连通集合。 如不同目标物体所占的图像区域、前景所占的图像区域等。 连通是指集合中任意两个点之间都存在着完全属于该集合的连通途径。 单色(灰度)图像的分割一般是基于图像强度的两个大体特点: 灰阶值的不持续性和灰度区域的相似性。 第一类方式主若是基于图像灰阶值的突然变换(如边缘)来分割图像,而第二类方式主若是把图像的某个子区域与某预概念的标准进行比较,以二者之间的相似性指标为指导来划分图像区域: 如阈值化技术、面向区域的方式、形态学分水岭分割算法等。 先给出原图的直方图,再定出阈值(门限)T,一样取两个峰值间的谷值。 参数法 这种方式用于目标所占图像面积已知的情形。 设目标在最简单图像f(i,j)中所占的面积s0与图像面积s之比为P=s0/s,那么背景所占面积比为1-P=(s-s0)/s。 一样来讲,低灰度值为背景,高灰度值为目标。 若是统计图像f(i,j)灰度值不大于某一灰度t的像元数和图像总像元数之比为1-p时,那么以t为阈值。 3.自适应全局阈值(单阈值) 算法步骤如下: 1、初始化阈值T(一样为原图像所有像素平均值)。 2、用T分割图像成两个集合: G1和G2,其中G1包括所有灰度值小于T的像素,G2包括所有灰度值大于T的像素。 3、计算G1中像素的平均值m1及G2中像素的平均值m2。 4、计算新的阈值: T=(m1+m2)/2。 5、若是新阈值跟原阈值之间的差值小于一个预先设定的范围,停止循环,不然继续2-4步。 全局单阈值分割只适用于很少的图像。 对一样图像采纳局部阈值法或多阈值法会取得更好的成效 4.最大类间方差法(OTSU) 设有M-1个阈值: 0≤k1<k2<…<KM-1≤L-1。 将图像分割成M个灰度值的类Cj,(Cj∈[kj-1+1,…,kj];j=1,2,…,M;k0=0,kM=L),那么各类Cj的发生概率ωj和平均值μj为 (3-1) (3-2) 式中,ω(0)=0,μ(0)=0。 由此可得各类的类间方差为 (3-3) 将使上式的σ2值为最大的阈值组(k1,k2,…,kM-1),作为M值化的最正确阈值组。 假设取M为2,即分割成2类,那么可用上述方式求出二值化的阈值。 三.实验提示 的图像处置工具箱中提供的edge函数能够实现检测边缘的功能,其语法格式如下: BW=edge(I,’sobel’) BW=edge(I,’sobel’,thresh,direction) BW=edge(I,‘Roberts’) BW=edge(I,’log’) BW=edge(I,’log’,thresh,sigma) BW=edge(I,‘canny’) BW=edge(I,’canny’,thresh,sigma) 那个地址BW=edge(I,'sobel')采纳Sobel算子进行边缘检测。 BW=edge(I,'sobel',direction)能够指定算子方向,即: direction=’horizontal’,为水平方向; direction=‘vertical‘,为垂直方向; direction=‘both‘,为水平和垂直两个方向。 BW=edge(I,'canny',thresh,sigma)和BW=edge(I,'log',thresh,sigma)别离为用canny算子和拉普拉斯高斯算子进行边缘检测。 选项’log’和’canny’的Sigma默许值别离为和。 例: 用三种算子进行边缘检测。 I=imread(''); imshow(I) BW1=edge(I,'roberts'); figure,imshow(BW1),title('用Roberts算子') BW2=edge(I,'sobel'); figure,imshow(BW2),title('用Sobel算子') BW3=edge(I,'log'); figure,imshow(BW3),title('用拉普拉斯高斯算子') 2.也能够通过滤波方式实现图像的图象边缘,如拉普拉斯模板(有好几个): i=imread('') I=doubole(i); h=[0,1,0;1,-4,0;0,1,0] j=conv2(I,h,’same’); k=I-j; imshow(k,[]); 3.I>T结果为一个逻辑值矩阵,I中大于T的值对应的位置为1(真),其余位置为0(假)。 I(I>T)表示I中所有大于T的值组成的向量。 255*(I>T)+0*(I<=T)可将I中大于T的像素值设为255,小于等于T的像素值设为0。 四、练习 1点、线和边缘检测 1.1.1点检测 点检测模板w: -1 -1 -1 -1 8 -1 -1 -1 -1 检测方式: g=abs(imfilter(double(f),w))>=T 练习1 f=imread(‘’); w=[-1-1-1;-18-1;-1-1-1]; g=abs(imfilter(double(f),w)); T=max(g(: )); T=T*; g=g>=T; imshow(f);figure,imshow(g); 线检测 水平模板、+45度模板、垂直模板、-45度模板。 练习2 f=imread(‘’); imshow(f); w=[2-1-1;-12-1;-1-12]; g=abs(imfilter(double(f),w)); figure,imshow(g); 利用edge函数的边缘检测 语法: [g,t]=edge(f,‘method’,parameter) 说明: g是一个逻辑数组,其值为: 在f中检测到边缘的位置为1,其他位置为零;t是edge是用的阈值;method为边缘监测器方式,可选为: ‘sobel’,‘prewit’,‘roberts’,‘log’(LoG),‘zerocoss’,‘canny’等;parameter包括两部份: T为指定的阈值,第二部份为dir(检测边缘的首选方向: ‘horizontal’,‘vertical’,‘both’),或sigma(标准方差),或H(指定的滤波函数)。 练习3 f=imread(‘’); imshow(f); [gsobel,t]=edge(f,‘sobel’); figure,imshow(gsobel); [glog,t]=edge(f,‘log’); figure,imshow(glog); [gcanny,t]=edge(f,‘canny’); figure,imshow(gcanny); 2.2利用Hough变换的线检测 练习4 设计与实现一个基于Hough变换的直线检测器。 2.3阈值处置 2.3.1全局阈值处置 语法: T=graythresh(f) 说明: T是阈值,归一化为0至1之间的值。 2.3.2局部阈值处置 通过一个形态学顶帽算子并对取得的结果利用graythresh来计算。 练习5 f=imread(‘’); imshow(f); T=graythresh(f); g=f>=T; figure,imshow(g); 2.4基于区域的分割 2.4.1区域生长 2.4.2区域割裂和归并 练习6 设计与实现一个基于区域生长的分割程序。 2.5利用分水岭变换的分割 练习7 f=imread(‘’); 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); 2.6分割后处置 语法: BW2=bwfill(BW1,c,r,n) 说明: 填充二进制图像的背景色。 (形态学处置) 练习8 BW1=[10000000 11111000 10001010 10001110 11110111 10011010 10001010 10001110] BW2=bwfill(BW1,3,3,8) I=imread(''); BW3=~im2bw(I); BW4=bwfill(BW3,'holes'); imshow(BW3) figure,imshow(BW4) 语法: bwareaopen 说明: 二进制图像区域打开,清除小物体。 五.部份参考程序和参考结果 1.衡宇轮廓刻画 代码: f=imread('Fig1006(a)(building).tif'); [gv,t]=edge(f,'sobel','vertical');%usingthresholdcomputedautomatically,heret= subplot(231);imshow(f,[]); title('theoriginalimage'); subplot(232);imshow(gv,[]); title('verticaledgewiththresholddeterminedautomatically'); gv1=edge(f,'sobel',,'vertical');%usingaspecifiedthreshold. subplot(233);imshow(gv1,[]); title('verticaledgewithaspecifiedthreshold'); gboth=edge(f,'sobel',;%edgedetectionoftwodirections subplot(234);imshow(gboth,[]); title('horizontalandverticaledge'); %edgedetectionof450directionusingimfilterfunction w45=[-2-10;-101;012]; g45=imfilter(double(f),w45,'replicate'); T=*max(abs(g45(: ))); g45=g45>=T; subplot(235);imshow(g45,[]); title('edgeat45withimfilter'); wm45=[012;-101;-2-10]; g45=imfilter(double(f),wm45,'replicate'); T=*max(abs(g45(: ))); g45=g45>=T; subplot(236);imshow(g45,[]); title('edgeat-45withimfilter'); 另一个实验: 为比较三种检测方式的相对性能: Sobel,LoG和Cannyedgedetectors,和为了改善检测成效所需利用的技术。 %usingthedefaultthreshold f=imread('Fig1006(a)(building).tif'); [gs_default,ts]=edge(f,'sobel');%ts= [gl_default,tl]=edge(f,'log');%tl=andthedefaultsigma= [gc_default,tc]=edge(f,'canny');%tc=[]andthedefaultsigma= %usingtheoptimalthresholdacquiredbymanualtest gs_best=edge(f,'sobel',; gl_best=edge(f,'log',,; gc_best=edge(f,'canny',[],; Theleftcolumn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 图像 分割 边缘 检测