您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 图像的阈值分割及边缘检测技术
数字图像处理实验报告题目:图像的阈值分割及边缘检测技术班级:姓名:学号:图像的阈值分割及边缘检测技术一、实验目的1、了解图像的分割技术,掌握图像的全局阈值分割技术并通过MATLAB实现;2、了解图像的边缘检测,掌握梯度算子图像边缘检测方法。二、实验内容1、基于直方图的全局阈值图像分割方法;2、Edge命令(roberts,perwitt,sobel,log,canny),实现边缘检测。三、实验原理1、全局阈值是最简单的图像分割方法。其中,直方图法的原理如下:想做出图像的直方图,若其直方图呈双峰且有明显的谷底,则可以讲谷底点所对应的灰度值作为阈值T,然后根据该阈值进行分割,九可以讲目标从图像中分割出来。这种方法是用于目标和背景的灰度差较大且直方图有明显谷底的情况。2、用于边缘检测的梯度算子主要有Roberts算子、Prewitt算子、Sobel算子。这三种检测算子中,Roberts算子定位精度较高,但也易丢失部分边缘,抗噪声能力差,适用于低噪声、陡峭边缘的场合。Prewitt算子、Sobel算子首先对图像做平滑处理,因此具有一定的抑制噪声的能力,但不能排除检测结果中的虚假边缘,易出现多像素宽度。四、实验步骤1、全局阈值分割:①读取一张图像;②生成该图像的直方图;③根据直方图双峰产生的低谷估计阈值T;④依次读取图像各个点的像素,若大于阈值,则将像素改为255,若小于阈值,则将该像素改为0;实验代码如下:I=imread('cameraman.tif');%读取一张图像subplot(221);imshow(I);%显示该图像subplot(222);imhist(I);%生成该图像的直方图T=60;%根据直方图估计阈值T为60[m,n]=size(I);%取图像的大小为【m,n】fori=1:m%依次读取图像各个点的像素,若大于阈值,则将像素改为255,若小于阈值,则将该像素改为0forj=1:nifI(i,j)=TI(i,j)=255;elseI(i,j)=0;endendendsubplot(223);imshow(I);%显示全局阈值分割后的图像2、图像的边缘检测①读取一张图像;②分别使用roberts算子检测、Prewitt算子检测、sobel算子检测、log算子检测、canny算子检测对图像进行处理③输出实验结果图像实验代码如下:I=imread('cameraman.tif');%读取一张图像subplot(231);imshow(I);title('原图像');BW1=edge(I,'roberts');%进行Roberts算子边缘检测,门限值采用MATLAB默认值BW2=edge(I,'prewitt');%进行prewitt算子边缘检测,门限值采用MATLAB默认值BW3=edge(I,'sobel');%进行sobel算子边缘检测,门限值采用MATLAB默认值BW4=edge(I,'log');%进行log算子边缘检测,门限值采用MATLAB默认值BW5=edge(I,'canny');%进行canny算子边缘检测,门限值采用MATLAB默认值subplot(232);imshow(BW1,[]);title('进行Roberts算子边缘检测');subplot(233);imshow(BW2,[]);title('进行prewitt算子边缘检测');subplot(234);imshow(BW3,[]);title('进行spnel算子边缘检测’);subplot(235);imshow(BW4,[]);title('进行log算子边缘检测');subplot(236);imshow(BW5,[]);title('进行canny算子边缘检测');五、实验结果1、图像全局阈值分割源图像直方图全局阈值分割后的图像2、图像的边缘检测六、实验心得1、通过本次实验,我学习到利用MATLAB进行图像的全局阈值分割,其方法是通过图像的直方图估计出阈值再进行分割。图像的阈值分割技术属于一类并行区域分割算法,若图像中目标和背景具有明显不同的灰度集合,且两个灰度集合可用一个灰度级阈值T进行分割,那么就可以用阈值分割灰度级的方法在图像中分割出目标区域和背景区域。2、边缘检测的目的是根据边缘来进行图像分割。边缘检测要按照图像的内同和应用的要求进行,可以先对图像做预处理,使边缘突出,然后选择合适的阈值进行分割。边缘检测的方法有roberts算子检测、Prewitt算子检测、sobel算子检测、log算子检测、canny算子检测等。
本文标题:图像的阈值分割及边缘检测技术
链接地址:https://www.777doc.com/doc-5684526 .html