1 / 24

实验九 数字图像的边界提取

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

Download Presentation

实验九 数字图像的边界提取

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实验九 数字图像的边界提取

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

  3. 二、相关知识 • 在图像处理中,有一种十分实用的操作叫做边界提取,在提取了图像的边界后,就可以对图像进行进一步的操作,如图像分割、特定区域的提取、骨架提取等等。 • 常用的边界检测算子有微分算子、拉普拉斯高斯算 子和canny算子。 • 在MATLAB中,系统提供edge函数,其功能是利用各种边界检测算子来检测灰度图像的边界。 • 函数edge的用法有以下几种:

  4. 二、相关知识 • 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的用法有以下几种:

  5. 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’;

  6. thresh:指定的阈值, • 所有不强于thresh的边都被忽略; • direction:对于’sobel’和’prewitt’方法指定方向, • 可取值为:’horizontal’和’vertical’, • ’both’(缺省值) • I:输入图像; • method:提取边界的方法,共有六种可取的值, • 即共有六种可使用的方法,包括: • ’sobel’,’prewitt’,’roberts’,’log’, • ’zerocross’,’canny’,缺省时使用’sobel’;

  7. thresh:指定的阈值, • 所有不强于thresh的边都被忽略; • direction:对于’sobel’和’prewitt’方法指定方向, • 可取值为:’horizontal’和’vertical’, • ’both’(缺省值) • BW:返回的二值图像,其中1代表找到的边界。 • 在这些方法中,canny是较为优秀的一种,该方法使用两种不同的阈值分别检测强边界和弱边界,并且仅当弱边界和强边界相连时,才将弱边界包含在输出图像中。因此,这种方法不容易被噪声干扰,更容易检测到真正的弱边界。

  8. 关于这些方法的真正含义,我们以后有专门的课程加以详细讨论,现在先看看它们的效果。关于这些方法的真正含义,我们以后有专门的课程加以详细讨论,现在先看看它们的效果。 • 例:分别调用’sobel’, ’prewitt’, ’roberts’, • ’log’, ’zerocross’和’canny’六种方法检测图像 • rice.tif的边界。程序如下: • BW:返回的二值图像,其中1代表找到的边界。 • 在这些方法中,canny是较为优秀的一种,该方法使用两种不同的阈值分别检测强边界和弱边界,并且仅当弱边界和强边界相连时,才将弱边界包含在输出图像中。因此,这种方法不容易被噪声干扰,更容易检测到真正的弱边界。

  9. 关于这些方法的真正含义,我们以后有专门的课程加以详细讨论,现在先看看它们的效果。关于这些方法的真正含义,我们以后有专门的课程加以详细讨论,现在先看看它们的效果。 • 例:分别调用’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');

  10. 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');

  11. 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);

  12. 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);

  13. 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])

  14. 运行结果如下,从结果可以看 • 出,canny算子提取的边界较 • 为完整。

  15. 关于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。

  16. 试一下,我们这个教材上的图题位置参数是多少?试一下,我们这个教材上的图题位置参数是多少? • 可选的属性还有,’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。

  17. 试一下,我们这个教材上的图题位置参数是多少?试一下,我们这个教材上的图题位置参数是多少? • 可选的属性还有,’color’,‘fontname’,’fontsize’等,有需要的时候可以通过察看help来进一步学习。 • 我们再看一个例子,还是用原图rice.tif,这次我们来考虑阈值问题,在不用edge中第三和参数时,系统自动选择阈值,我们可以用函数的如下调用格式来看系统为我们选择的阈值是多少,我们先看如下程序为我们带来的结果:

  18. I=imread('rice.tif'); • [BW1,th1]=edge(I,'sobel'); • th1str=num2str(th1); • imshow(I);title('图1: rice.tif原图', 'fontsize',14,'position',[128,280,0]); 统自动选择阈值,我们可以用函数的如下调用格式来看系统为我们选择的阈值是多少,我们先看如下程序为我们带来的结果:

  19. 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])

  20. figure;imshow(BW1);ti='图8: sobel算子提取的边界,阈值为'; • ti=strcat(ti,th1str);title(ti,'fontsize',12,'position',[128,280,0])

  21. 我们将上面的程序中第二行换成 • [BW1,th1]=edge(I,'sobel',0.05); • 即可得到图9的结果。我们看到,边界提取得比图8要完整,因此,我们还可以通过调整阈值来改善边界提取得结果。

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

  23. 三、实验内容 • 3.对于图像circbw.tif用上面提到的六种方法分别提取边界并加以比较,这次你认为那种算子提取的边界最好? • 4.完成实验报告,报告中只需要指明程序名,不需要程序和图,只要写明你的结论即可。 • 于图的下方,居中,选择其中的一幅图,使其图题的字体为黑体,字号为14号。 • 2.对于图像bonemarr.tif,通过调整阈值的方法,得出一幅你认为较好的边界图,并给出此时的阈值。

  24. 3.对于图像circbw.tif用上面提到的六种方法分别提取边界并加以比较,这次你认为那种算子提取的边界最好?3.对于图像circbw.tif用上面提到的六种方法分别提取边界并加以比较,这次你认为那种算子提取的边界最好? • 4.完成实验报告,报告中只需要指明程序名,不需要程序和图,只要写明你的结论即可。

More Related