实验九  数字图像的边界提取
Download
1 / 24

实验九 数字图像的边界提取 - PowerPoint PPT Presentation


  • 109 Views
  • Uploaded on

实验九 数字图像的边界提取. 一、实验目的. 了解有关数字图像边界提取的基本概念,熟悉 MATLAB 软件中关于数字图像边界提取的基本命令,掌握利用 MATLAB 软件进行数字图像边界提取的方法;同时,学会在图上加图题,会控制图题的位置。. 二、相关知识. 在图像处理中,有一种十分实用的操作叫做边界提取,在提取了图像的边界后,就可以对图像进行进一步的操作,如图像分割、特定区域的提取、骨架提取等等。 常用的边界检测算子有微分算子、拉普拉斯高斯算 子和 canny 算子。 在 MATLAB 中,系统提供 edge 函数,其功能是利用各种边界检测算子来检测灰度图像的边界。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 实验九 数字图像的边界提取' - hadley-hodge


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

一、实验目的

  • 了解有关数字图像边界提取的基本概念,熟悉MATLAB软件中关于数字图像边界提取的基本命令,掌握利用MATLAB软件进行数字图像边界提取的方法;同时,学会在图上加图题,会控制图题的位置。


二、相关知识

  • 在图像处理中,有一种十分实用的操作叫做边界提取,在提取了图像的边界后,就可以对图像进行进一步的操作,如图像分割、特定区域的提取、骨架提取等等。

  • 常用的边界检测算子有微分算子、拉普拉斯高斯算

    子和canny算子。

  • 在MATLAB中,系统提供edge函数,其功能是利用各种边界检测算子来检测灰度图像的边界。

  • 函数edge的用法有以下几种:


二、相关知识

  • 1.BW=edge(I);

  • 2.BW=edge(I,method);

  • 3.BW=edge(I,method,thresh);

  • 4.BW=edge(I,method,thresh,direction)

  • 其中:

    子和canny算子。

  • 在MATLAB中,系统提供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’(缺省值)

  • 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的边界。程序如下:

  • BW:返回的二值图像,其中1代表找到的边界。

  • 在这些方法中,canny是较为优秀的一种,该方法使用两种不同的阈值分别检测强边界和弱边界,并且仅当弱边界和强边界相连时,才将弱边界包含在输出图像中。因此,这种方法不容易被噪声干扰,更容易检测到真正的弱边界。



  • BW6=edge(I,'canny');关于这些方法的真正含义,我们以后有专门的课程加以详细讨论,现在先看看它们的效果。

  • imshow(I);title('图1: rice.tif原图', 'fontsize',

  • 14,'position',[128,280,0]);

  • figure;imshow(BW1);

  • title('图2: sobel算子提取的边界','fontsize',

  • 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])

  • 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中第三和参数时,系个三维向量[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]);

    统自动选择阈值,我们可以用函数的如下调用格式来看系统为我们选择的阈值是多少,我们先看如下程序为我们带来的结果:


  • 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])


  • figure;imshow(BW1);ti='试一下,我们这个教材上的图题位置参数是多少?图8: sobel算子提取的边界,阈值为';

  • ti=strcat(ti,th1str);title(ti,'fontsize',12,'position',[128,280,0])


  • 我们将上面的程序中第二行换成试一下,我们这个教材上的图题位置参数是多少?

  • [BW1,th1]=edge(I,'sobel',0.05);

  • 即可得到图9的结果。我们看到,边界提取得比图8要完整,因此,我们还可以通过调整阈值来改善边界提取得结果。


三、实验内容试一下,我们这个教材上的图题位置参数是多少?

  • 1.对于图像text.tif,testpat1.tif,blood1.tif,nodules1.tif用上面提到的六种方法分别提取边界并加以比较,对这四幅图像提取边界的结果,分别对每一幅图给出你的判断,认为哪种算子提取的边界最好?同时理解各种边界提取算子同时存在的必要性。对每一幅图均标出图题,并使图题的位置位于图的下方,居中,选择其中的一幅图,使其图题的字体为黑体,字号为14号。

  • 2.对于图像bonemarr.tif,通过调整阈值的方法,得出一幅你认为较好的边界图,并给出此时的阈值。


三、实验内容试一下,我们这个教材上的图题位置参数是多少?

  • 3.对于图像circbw.tif用上面提到的六种方法分别提取边界并加以比较,这次你认为那种算子提取的边界最好?

  • 4.完成实验报告,报告中只需要指明程序名,不需要程序和图,只要写明你的结论即可。

  • 于图的下方,居中,选择其中的一幅图,使其图题的字体为黑体,字号为14号。

  • 2.对于图像bonemarr.tif,通过调整阈值的方法,得出一幅你认为较好的边界图,并给出此时的阈值。


  • 3试一下,我们这个教材上的图题位置参数是多少?.对于图像circbw.tif用上面提到的六种方法分别提取边界并加以比较,这次你认为那种算子提取的边界最好?

  • 4.完成实验报告,报告中只需要指明程序名,不需要程序和图,只要写明你的结论即可。


ad