本文目录一览

1,基于canny理论的图像边缘检测

如果用matlab实现canny,直接调用edge()函数就可以了。如果不明白,可以用matlab中的帮助:doc canny或者help canny。

基于canny理论的图像边缘检测

2,Canny算子的介绍

Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法。更为重要的是 Canny 创立了边缘检测计算理论(Computational theory of edge detection)解释这项技术如何工作。

Canny算子的介绍

3,sobel 算子和 canndy 算子的区别

我觉得你这个说法就有问题,sobel边缘检测运用sobel算子,就是3×3或者5×5等等之类的矩阵,canny是在sobel算法的基础上加以改进,并没有canny算子,canny算法的边缘检测部分就是sobel算法。
计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量。

sobel 算子和 canndy 算子的区别

4,Canny算子的参数

Canny 算法包含许多可以调整的参数,它们将影响到算法的计算的时间与实效。高斯滤波器的大小:第一步所用的平滑滤波器将会直接影响 Canny 算法的结果。较小的滤波器产生的模糊效果也较少,这样就可以检测较小、变化明显的细线。较大的滤波器产生的模糊效果也较多,将较大的一块图像区域涂成一个特定点的颜色值。这样带来的结果就是对于检测较大、平滑的边缘更加有用,例如彩虹的边缘。阈值:使用两个阈值比使用一个阈值更加灵活,但是它还是有阈值存在的共性问题。设置的阈值过高,可能会漏掉重要信息;阈值过低,将会把枝节信息看得很重要。很难给出一个适用于所有图像的通用阈值。目前还没有一个经过验证的实现方法。

5,canny算法的OpenCV中的Canny函数

采用 Canny 算法做边缘检测void cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int aperture_size=3 );--image 输入图像.--edges 输出的边缘图像--threshold1 第一个阈值--threshold2 第二个阈值--aperture_size Sobel 算子内核大小 (见 cvSobel).函数 cvCanny 采用 CANNY 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。

6,canny 算法的阈值有两个到底是做什么用的

第一个是低阈值,第二个高阈值高阈值比较严格,求的边缘很少,认为高阈值的边缘都是有效。低阈值宽松,求的边缘很多(一般包括了高阈值求到的边缘),其中不少是无效的边缘(反正不想要的)。先用高阈值求边缘。canny求得的边缘希望是连在一起的(通常是封闭的),但高阈值求的边缘一般断断续续。断开的地方如果低阈值求的边缘存在,就用低阈值的边缘接上去,目的让边缘尽量都连在一起。其它情况下低阈值的边缘是不用的。两个阈值是有区别的,高的那个阈值是将要提取轮廓的物体与背景区分开来,就像阈值分割的那个参数一样,是决定目标与背景对比度的,低的那个阈值是用来平滑边缘的轮廓,有时高的阈值设置太大了,可能边缘轮廓不连续或者不够平滑,通过低阈值来平滑轮廓线,或者使不连续的部分连接起来
canny 算子的步骤主要有:stage 1. image smoothingstage 2. differentiationstage 3. non-maximum suppressionstage 4. edge thresholding其中前两步就是 sobel 算子求梯度,然后进行处理。 sobel 算子得到的结果应该就是梯度吧?但是 梯度的 取值有什么范围吗? 好像不好确定。另外,在sobel 算子边缘检测的时候, 好像matlab 里面有 自动选择阈值的方法,不知是什么方法?另外如果手动设置阈值的时候,阈值为0-1的一个小数,相对最大的梯度的一个比列吧!即大于这个比例就认为是边缘,否则不是。

文章TAG:算法  基于  理论  图像  canny算法  
下一篇