首页 > 编程知识 正文

matlab canny边缘检测,传统边缘检测算法实现

时间:2023-05-04 13:18:41 阅读:12479 作者:232

Canny边缘检测算法1、边缘检测步骤1)滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,导数通常对噪声敏感,

因此,需要采用滤波器来改善与噪声相关的边缘检测器的性能。 常见的过滤方法主要有包容的茶过滤器、平均过滤器等。2)增强:边缘增强的基础是确定图像各点附近强度的变化值。 增强算法能够使图像灰度点接近附近

强度值有明显变化这一点被强调了。 在实现具体编程时,可以通过计算梯度振幅来决定。 http://www.Sina.com/http://www.Sina.com /增强的图像通常具有较大的梯度值,附近有许多点,但在特定的APP应用中这些点

点不是我们要找的边缘点,应该以某种方式取舍这些点。 在实际工程中,常用

的方法用阈值化方法检测。一般用sobel算子

二、最佳边缘定义Canny是目前最好的边缘检测算法,其目标是找到最佳边缘,其最佳边缘定义如下:

1、好的检测:算法尽可能显示图像中的实际边缘

2、定位良好:标识边缘应尽可能接近实际图像边缘

3、最小响应:图像中的边缘只能标记一次

三. Canny边缘检测算法步骤http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com/http://www.Sina.com/3358 www

1、图像灰度:方法1:Gray=(R G B )/3;

方法2 )2:Gray=0.299R 0.587G 0.114B; (该参数考虑了人眼的生理特征)

2、对图像进行包容滤茶:根据待滤波像素点及其邻近点的灰度值按照一定的参数规则进行加权平均。 就这样

可以有效地消除叠加在理想图像上的高频噪声。

1、包容的茶平滑包容的茶平滑水平和垂直方向呈现包容的茶分布,更强调中心点像素平滑后的权重,比较均值滤波

有更好的平滑效果。 其中,(x,y )为坐标,为标准偏差:

在使用包容的茶过滤器之前,需要获得包容的茶过滤器(kernel )。 怎么得到包容的茶过滤器? 实际上,将包容的茶函数离散化,将滤波器中相应的横轴索引代入包容的茶函数,即可得到相应的值。 不同大小的过滤器得到的值不同。 以下是(2k 1) x(2k1 )过滤器的计算公式:

5x5的卷积核k=2

重要的是,要理解包容的恰切卷积核大小的选择会影响Canny检测器的性能。

尺寸越大,检测器对噪声的灵敏度越低,但边缘检测的定位误差也略有增加。 (原因是对噪声不敏感,同时对边缘不太敏感,所以后面的边缘检测器检测不到边缘)3)检测:

3 .计算梯度幅度和方向(例如,使用Prewitt、Sobel运算符等)的可选模板: soble运算符、Prewitt运算符、Roberts模板等;

一般使用soble运算符,OpenCV API也使用soble运算符,使用soble水平运算符和垂直运算符计算输入图像和卷积dx、dy :

此外,可以获得点(x,y )处的图像梯度大小。

为了简化计算,图像点(x,y )处的梯度大小也可以近似为:

点(x,y )处的坡度方向如下。

下图显示了中心点(x,y )的梯度向量、梯度方位角和边方向(其中一个点的边与梯度向量正交)。

4、基于梯度方位角对梯度幅度进行非极大值抑制细化边缘(找到真正的边缘)mmydy是抑制非极大值元素,可理解为局部最大搜索。 该局部表示附近,在附近有附近的维数和附近的大小这两个参数可变。1. 对图像进行灰度化保持局部最大值,抑制非局部最大值的所有值

1、Canny中非极大值抑制2. 对图像进行包容的嚓茶滤波

3358 www.Sina.com/http://www.Sina.com/(使用梯度值而不是像素值进行插值,以获得dTmp1和dTmp2

其中,dTmp1用g1和g2插值,dTmp2用g8和g9插值。 即,用与交点相邻的2个像素点的3. 计算梯度幅值和方向(如使用Prewitt,Sobel算子等)进行插值。 这里,g1、g2、…、g9表示该点的梯度强度,是梯度振幅值。

其他三种情况也是如此,4 对梯度幅值进行非极大值抑制

向 的不同选择不同点的梯度值进行插值

单线性插值原理如下:

单线性插值化简可得: y =(y1-y0) * [(x-x0)/(x1-x0)] + x0
2) 将当前像素的梯度强度与沿正负梯度方向上的两个梯度插值点dTm1和dTm2进行比较。
3) 如果当前像素的梯度强度与dTm1和dTm2的梯度强度相比是最大的,则该像素点的梯度值保留,作为边缘点,否则该像素点的的梯度值将被抑制(的梯度值置为0)。这样可以抑制非极大值,保留局部梯度最大的点的的梯度值,以得到细化的边缘。

5、用双阈值算法检测和连接边缘

还要进行双阈值处理的原因:

完成非极大值抑制后,会得到一个以梯度局部极小值构成的图像,在图像上显示的就是有许多离散的点点,因此要把真正是边缘的点连接起来,同时去除孤立的噪声点。

思想:

•人工给定两个阈值,一个是低阈值TL,一个高阈值TH,
• 如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素,该位置的像素值置255;
•如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素;
• 如果边缘像素的梯度值小于低阈值,则会被抑制,该位置的像素值置0。

双阈值检测:

大于高阈值为强边缘,小于低阈值不是边缘。介于中间是弱边缘。
阈值的选择取决于给定输入图像的内容。

算法步骤:

1、选取系数TH和TL,比率为2:1或3:1。(一般取TH=0.3或0.2,TL=0.1);
2、将小于低阈值的点抛弃,赋0;将大于高阈值的点立即标记(这些点为确定边缘点),赋1或255;
3、将小于高阈值,大于低阈值的点使用8连通区域确定(即:只有与TH像素连接时才会被接受,成为边缘点,赋1或255)具体的,当强边缘的8邻域内有弱边缘像素,则将如边缘像素变成强边缘,赋值1或255,或者反过来理解,只要弱边缘的8邻域内有强边缘,则如边缘变成强边缘,赋值1或255

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。