数字图像处理完整MATLAB代码在我的资源可以看到,为方便下载,下面是百度网盘资源:
链接:https://pan.baidu.com/s/17S7PZJwwvb3PFMFVxqEY5w
提取码:HUAT
目录
代码:
链接:https://pan.baidu.com/s/1TK6kVMd5_IaAyIcXyaci1g
提取码:HUAT
一、实验目的与要求
1、了解图像边缘提取的基本概念;
2、了解进行边缘提取的基本方法;
3、编程实现对所给图像的边缘进行提取。
二、实验预习部分
1. 边缘检测的常用算子有哪些?
基于一阶导数:Roberts算子、Sobel算子、Prewitt算子
基于二阶导数:高斯-拉普拉斯边缘检测算子
Canny边缘检测算法
2. 学习《Matlab图像处理教程简易教程》中的“图像分割”下的“边缘检测”这部分内容,明确在matlab中边缘检测算法用什么实现的?
图像中具有不同灰度的相邻区域之间总存在边缘。通过计算一阶导数或二阶导数可以方便地检测出图像中每个像素在其邻域内的灰度变化,从而检测出边缘。
三、实验内容及步骤
1.在实验二的基础上,在GUI界面增加图像边缘检测功能菜单项或者控件,显示新增功能如下:
2. 分别打开两幅道路图,一幅道路线清晰的图像,一幅道路线被噪声干扰的图像,并将其都转化为灰度图像,显示图像:
3、用Roberts算子在不同高、中、低阈值情况下对两幅图像分别进行边缘检测,记录对应阈值及检测后的图像;
图1高阈值T= 0.25 时的Roberts算子检测结果:
图2高阈值T= 0.25 时的Roberts算子检测结果:
图1中阈值T= 0.15 时的Roberts算子检测结果:
图2中阈值T= 0.15 时的Roberts算子检测结果:
图1低阈值T= 0.05 时的Roberts算子检测结果:
图2低阈值T= 0.05 时的Roberts算子检测结果:
实验结果分析可得Roberts算子边缘检测中对噪声的敏感程度如何?
Roberts算子边缘检测中对噪声的敏感程度较为敏感。
4、用Prewitt算子对一幅图像分别进行水平、垂直、及两个方向边缘检测,记录对应阈值及检测后的图像;
水平方向检测,阈值T= 0.09 时的Prewitt算子检测结果:
垂直方向检测,阈值T= 0.09 时的Prewitt算子检测结果:
双方向检测,阈值T= 0.09 时的Prewitt算子检测结果:
结果表明Prewitt算子进行边缘检测时在哪个方向的检测结果效果最好?
Prewitt算子进行边缘检测时在双方向的检测结果效果最好。
5、用Sobel算子在水平,垂直、及双方向下对图像进行边缘检测,记录对应阈值及检测后图像;
水平方向检测,阈值T= 0.09 时的Sobel算子检测结果:
垂直方向检测,阈值T= 0.09 时的Sobel算子检测结果:
双方向检测,阈值T= 0.09 时的Sobel算子检测结果:
结果表明Sobel算子进行边缘检测时在哪个方向的检测结果效果最好?
Sobel算子进行边缘检测时在双方向的检测结果效果最好。
6、利用LOG算子对一幅图像进行边缘检测。检测结果:
7、用Canny算子检测边缘的结果
8、对检测效果进行如下分析;
1)分析在边缘定位精度方面,上面几种方法的定位精度的高低?
Roberts算子和Log算子定位精度较高。Roberts算子简单直观,Log算子利用二阶导数零交叉特性检测边缘。但Log算子只能获得边缘位置信息,不能得到边缘方向信息。
2)边缘方向的敏感性方面进行分析,以上算子各自在哪些方向检测比较敏感?
Sobel算子、Prewitt算子检测斜向阶跃边缘效果较好,Roberts算子检测水平和垂直边缘效果较好。Log算子不具有边缘方向检测功能。Sobel算子能提供最精确的边缘方向估计。
3)去噪能力方面考虑,以上算子各自的去噪能力如何?
Roberts算子和Log算子虽然定位精度高,但受噪声影响大。
Sobel算子和Prewitt算子模板相对较大因而去噪能力较强,具有平滑作用,能滤除一些噪声,去掉一部分伪边缘,但同时也平滑了真正的边缘,降低了其边缘定位精度。
4)总的来说,哪种算子的边缘检测效果最好?
总体来讲,Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中方案。
9、记录上述每一步的函数执行语句,写入实验报告。