• 边缘检测


    • Sobel算子

      应用于图像特征的提取,边缘检测,变化率最大的地方就是边缘过度的地方。边缘是什么 – 是像素值发生跃迁的地方,是图像的显著特征之一,在图像特征提取、对象检测、模式识别等方面都有重要的作用。如何捕捉/提取边缘 – 对图像求它的一阶导数delta =  f(x) – f(x-1), delta越大,说明像素在X方向变化越大,边缘信号越强。

       Soble算子是离散微分算子(discrete differentiation operator),用来计算图像灰度的近似梯度Soble算子功能集合高斯平滑和微分求导,又被称为一阶微分算子,求导算子,在水平和垂直两个方向上求导,得到图像X方法与Y方向梯度图像。I为两个方向的不同权值。

       图一为原图,图二为X方向的梯度,图二为Y方向的梯度,图三为X+Y的最终图像梯度。

       Scharr算子原理和Soble算子原理相同:处理效果更加清晰,文理比较明显。

    •  Laplance算子

    [{ m{L}}left( f ight) = frac{{{partial ^2}f}}{{partial {x^2}}} + frac{{{partial ^2}f}}{{partial {y^2}}}]

       在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。下图为Laplance算子提取的边缘特征。

    •  Canny算法边缘检测

      边缘检测要转化为灰度图像,非最大信号抑制,即用于处理边缘的效果,在一个方向上,纵向切向或指定方向等,如果不是最大值就把它去掉,这样就使轮廓看起来比较细,更加的清晰,贴合边界。

       抑制完成后,有的边界是连在一起的,通过高低阈值(即小于最低阈值的舍去,高于最高阈值的保留,在最低和最高之间的进行阈值连接)。例如T1低阈值, T2为高阈值,凡是高于T2的都保留,凡是小于T1都丢弃,从高于T2的像素出发,凡是大于T1而且相互连接的,都保留。最终得到一个输出二值图像。推荐的高低阈值比值为 T2: T1 = 3:1/2:1,下图为通过Canny算子得到的边界,非常清晰。

     相关代码解释如下:

     1 边缘处理函数:copyMakeBorder(in1,out1,top,bottom,left,right,BORDER_CONSTANT, color);
     2 //上下左右分别用像素值预先填充边缘,赋一个初值像素,默认的处理方法是:
     3  //BORDER_DEFAULT,BORDER_CONSTANT 填充边缘用指定像素值,即最后一个color来指定,
     4 //BORDER_REPLICATE 填充边缘像素用已知的边缘像素值,即用给定的初值上下左右。
     5 //BORDER_WRAP 用另外一边的像素来补偿填充。
     6 
     7 convertScaleAbs(A, B), 计算图像A的像素绝对值,输出到图像B;
     8 
     9 Sobel 算子Sobel(huidu_image, Sobel_image, -1, 0, 1, 3);
    10 //输入的图像要是灰度图像,-1为输出图像位图深度,0为X方向的求导阶数,1为Y方向的求导阶数
    11 //Scharr算子原理和Soble算子原理相同:处理效果更加清晰,纹理比较明显。
    12 
    13 拉普拉斯算子Laplacian(huidu,out1,-1,3);
    14 //参数意义同上。
    15 
    16 Canny边缘检测Canny(huidu, out1,50,100,3,false ); 
    17 //50,100,为低阈值和高阈值,3为Soble算子的size,通常3x3,取值3,选择 true表示是L2来归一化,否则用L1归一化。
  • 相关阅读:
    第二次作业——评分!
    第一次点评!
    神经网络测试:利用分块patch输入的弊端
    利用分块进行网络输入测试
    python 用filter求解素数
    英语语法
    git clone 下载出现Time out
    路由转发
    获取用户密码
    后门维持
  • 原文地址:https://www.cnblogs.com/fuzhuoxin/p/12126224.html
Copyright © 2020-2023  润新知