深泽网站制作,如何快速新建一个网站,南京网站seo,seo 网站更多MATLAB图像处理视频请点击 http://study.163.com/course/courseMain.htm?courseId1003594013
所谓边缘是指其周围像素灰度有变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。物体的边缘是由灰度不连续所反映的。基于边缘的… 更多MATLAB图像处理视频请点击 http://study.163.com/course/courseMain.htm?courseId1003594013
所谓边缘是指其周围像素灰度有变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。物体的边缘是由灰度不连续所反映的。基于边缘的分割代表了一大类基于图像边缘信息的方法常用于图像分割。
更多MATLAB图像处理视频请点击 http://study.163.com/course/courseMain.htm?courseId1003594013 1.边缘检测的基本原理及常用边缘检测算子
边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映因此我们可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子。以下是对几种经典的边缘检测算子进行理论分析并对各自的性能特点做出了比较和评价。 人们以这些理论为依据提出了许多算法其中比较常用的边缘检测方法有差分边缘检测、Roberts 边缘检测算子、Sobel 边缘检测算子、Prewitt 边缘检测算子、Robinson 边缘检测算子、Laplace 边缘检测算子、Canny 算子和 LOG 算子等等。
1差分边缘检测方法 利用像素灰度的一阶导数算子在灰度迅速变化处得到高值来进行奇异点的检测。它在某一点的值就代表该点的“边缘强度”可以通过对这些值设置阈值来进一步得到边缘图像。然而用差分检测边缘必须使差分的方向与边缘方向垂直这就需要对图像的不同方向都进行差分运算增加了实际运算的繁琐性。 一般为垂直边缘、水平边缘、对角线边缘检测如下所示 差分边缘检测方法是最原始、最基本的方法。根据灰度迅速变化处一阶导数达到最大阶跃边缘情况原理要求差分方向与边缘方向垂直利用导数算子检测边缘。这种算子具有方向性运算繁琐目前很少采用。 2Roberts 边缘检测算子 Roberts 边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理采用对角线方向相邻两像素之差即 适当选取门限 TH并作如下判断如果 R(i, j)TH则(i, j)为阶跃状边缘点{R(i, j)}为边缘图像。 Roberts 算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘定位精度高但对噪声敏感。
3Sobel 边缘检测算子 数字图像{f (i, j)}的每个像素考察它上下左右邻点灰度的加权差与之接近的邻点的权大。据此定义 Sobel 算子如下 适当选取门限 TH并作如下判断如果 R(i, j)TH则(i, j)为阶跃状边缘点{R(i, j)}为边缘图像。 Sobel 算子很容易在空间上实现Sobel 边缘检测器不但产生较好的边缘检测效果而且受噪声的影响也比较小。当使用大的邻域时抗噪性能会更好但这样会增加计算量并且得出的边缘也会相应变粗。 Sobel 算子利用像素点上下、左右邻点的灰度加权算法根据在边缘点处达到极值这一现象进行边缘的检测。Sobel 算子对噪声具有平滑作用提供较为精确的边缘方向信息但它同时也会检测出许多伪边缘边缘定位精度不够高。当对精度要求不是很高时它是一种较为常用的边缘检测方法。 4Prewitt 边缘检测算子 Prewitt 边缘检测算子是一种边缘样板算子。这些算子样板由理想的边缘子图像构成。依次用边缘样板去检测图像与被检测区域最为相似的样板给出最大值。用这个最大值作为算子的输出值 P(i, j)这样可将边缘像素检测出来。 定义 Prewitt 边缘检测算子模板如下 个算子样板所对应的边缘方向如图 所示。适当选取门限 TH并作如下判断如果 P(i,j)TH则(i,j)为阶跃状边缘点{P(i,j)}为边缘图像。 5Robinson 边缘检测算子 Robinson 边缘检测算子也是一种边缘样板算子其算法和 Prewitt 边缘检测算子相似只是 8 个样板不同如图所示。 6Laplace 边缘检测算子 Laplace 边缘检测算子是一种二阶微分算子对于数字图像{ f (i,j)},它在图像中的位置(i,j)的 Laplace 定义如下 Laplace 边缘检测算子是无方向性的算子它比前面所述的多个方向导数算子的计算量要小因为只用一个模板且不必综合各模板的值。计算数字图像的 Laplace 值也是借助各种模板卷积实现的。实现 Laplace 运算的几种模板可见下图。在数字图像中可用差分来近似微分运算若选用图 7-4 中的第一个检测模板则 f (i,j)的 Laplace 算子为 几种常用的实现 Laplace 运算的检测模板如图所示。 由于 Laplace 算子是一种二阶导数算子对图像中的噪声相当敏感。另外它常产生双像素宽的边缘且也不能提供边缘方向的信息。由于以上原因Laplace 算子很少直接用于检测边缘而主要用于已知边缘像素后确定该像素是在图像的暗区或明区一边。 2.各种边缘检测算子的 MATLAB 实现及效果比较
在 MATLAB 中可以由 edge 函数实现各算子对边缘的检测以 Roberts 算子为例其语法格式如下 BWedgeI’roberts’ BWedgeI‘roberts’thresh [BWthresh]edgeI‘roberts’⋯ BWedgeI‘roberts’自动选择阈值用 Robert 算子进行边缘检测。 BWedgeI‘roberts’thresh根据所指定的敏感阈值 thresh 用 Robert 算子进行边缘检测它忽略了所有小于阈值的边缘。当 thresh 为空时自动选择阈值 [BWthresh]edgeI‘roberts’⋯返回阈值。 edge 函数对灰度图像 I 进行边缘检测返回与 I 同样大的二值图像 BW其中 1 表示边缘0 表示非边缘。I 是 unit8 型、unit16 型或者是 double 型BW 是 unit8 型。 其余 Sobel 算子、Prewitt 算子、LOG 算子、Canny 算子的实现仅需将‘roberts’用‘sobel’、‘prewitt’、‘log’、‘canny’代替即可。
例具体实现这几个算子的一个例程
Iimread(cameraman.tif); BW1 edge(I,sobel); %应用 Sobel 算子进行滤波 BW2 edge(I,roberts); %应用 Roberts 算子进行滤波 BW3 edge(I,prewitt); %应用 Prewitt 算子进行滤波 BW4 edge(I,log); %应用 LOG 算子进行滤波 BW5 edge(I,canny); %应用 Canny 算子进行滤波 subplot(2,3,1),imshow(I),title(原图); subplot(2,3,2),imshow(BW1),title(Sobel算子边缘检测); subplot(2,3,3),imshow(BW2),title(Roberts算子); subplot(2,3,4),imshow(BW3),title(Priwitt算子); subplot(2,3,5),imshow(BW4),title(LOG算子); subplot(2,3,6),imshow(BW5),title(Canny算子); 更多MATLAB图像处理视频请点击 http://study.163.com/course/courseMain.htm?courseId1003594013