数字图像的边界提取
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九数字图像的边界提取
一、实验目的
了解有关数字图像边界提取的基本概念,熟悉Matlab软件中关于数字图像边界提取的基本命令,掌握利用Matlab软件进行数字图像边界提取的方法;同时,学会在图上加图题,会控制图题的位置。
二、相关知识
在图像处理中,有一种十分实用的操作叫做边界提取,在提取了图像的边界后,就可以对图像进行进一步的操作如图像分割,特定区域的提取,骨架提取等等。
常用的边界检测算子有微分算子、拉普拉斯高斯算子和canny算子。
在MA TLAB中,系统提供edge函数,其功能是利用各种边界检测算子来检测灰度图像的边界。
函数edge的用法有以下几种:
1.BW=edge(I);
2.BW=edge(I,method);
3.BW=edge(I,method,thresh);
4.BW=edge(I,method,thresh,direction)
其中:
I:输入图像;
method:提取边界的方法,共有六种可取的值,即共有六种可使用的方法,包
括:’sobel’,’prewitt’,’roberts’,’log’,’zerocross’,’canny’,缺省时使用’sobel’;
thresh:指定的阈值,所有不强于thresh的边都被忽略;
direction:对于’sobel’和’prewitt’方法指定方向,可取值为:’horizontal’和’vertical’,’both’(缺省值)BW:返回的二值图像,其中1代表找到的边界。
在这些方法中,canny是较为优秀的一种,该方法使用两种不同的阈值分别检测强边界和弱边界,并且仅当弱边界和强边界相连时,才将弱边界包含在输出图像中。因此,这种方法不容易被噪声干扰,更容易检测到真正的弱边界。
关于这些方法的真正含义,我们以后有专门的课程加以详细讨论,现在先看看它们的效果。
例:分别调用’sobel’,’prewitt’,’roberts’,’log’,’zerocross’和’canny’六种方法检测图像rice.tif的边界。程序如下:
I=imread('rice.tif');
BW1=edge(I,'sobel');
BW2=edge(I,'prewitt');
BW3=edge(I,'roberts');
BW4=edge(I,'log');
BW5=edge(I,'zerocross');
BW6=edge(I,'canny');
imshow(I);title('图1: rice.tif原图','fontsize',14,'position',[128,280,0]);
figure;imshow(BW1);title('图2: sobel算子提取的边界','fontsize',14,'position',[128,280,0])
figure;imshow(BW2);title('图3: prewitt算子提取的边界','fontsize',14,'position',[128,280,0])
figure;imshow(BW3);title('图4: roberts算子提取的边界','fontsize',14,'position',[128,280,0])
figure;imshow(BW4);title('图5: log算子提取的边界','fontsize',14,'position',[128,280,0])
figure;imshow(BW5);title('图6: zerocross算子提取的边界','fontsize',14,'position',[128,280,0])
figure;imshow(BW6);title('图7: canny算子提取的边界','fontsize',14,'position',[128,280,0]) 运行结果如下:
从上面结果我们可以看出,canny算子提取的边界较为完整。
关于title语句的用法,注意一下我们程序中的title语句,其简单用法就是踢title(‘图题的内容’),其实它还有一些可选的参数,包括图题的位置,图题的颜色,图题的字体,大小,等等参数,其一般用法是title(...,'属性名',属性值,...),例如,要控制图题的位置,用属性名’position’,其属性值是一个三维向量[x,y,[z]],其初始值是[0 0 0],其单位由units参数决定。Units的可选值为pixels | normalized | inches | centimeters | points | {data},normalized 将整个矩形规范化成[0,1]×[0,1],其余都是绝对单位,1 point = 1/72 inch。
试一下,我们这个教材上的图题位置参数是多少?
可选的属性还有,’color’,‘fontname’,’fontsize’等,有需要的时候可以通过察看help来进一步学习。
我们再看一个例子,还是用原图rice.tif,这次我们来考虑阈值问题,在不用edge中第三和参数时,系统自动选择阈值,我们可以用函数的如下调用格式来看系统为我们选择的阈值是多少,我们先看如下程序为我们带来的结果:
I=imread('rice.tif');
[BW1,th1]=edge(I,'sobel');
th1str=num2str(th1)
imshow(I);
title('图1: rice.tif原图','fontsize',14,'position',[128,280,0]);
figure;imshow(BW1);
ti='图8: sobel算子提取的边界,阈值为';
ti=strcat(ti,th1str)
title(ti,'fontsize',12,'position',[128,280,0])