边缘检测

  01 Jan 2015


Sobel算子(一阶导)、Laplacian算子(二阶偏导)

LOG算子(高斯拉普拉斯函数)

也叫Marr边缘检测,它把的Gauss平滑滤波器和Laplacian锐化滤波器结合了起来,先平滑掉噪声,再进行边缘检测。

Canny算子

首先在x和y方向求一阶导数,然后组合为4个方向的导数。这些方向导数达到局部最大值的点就是组成边缘的候选点。后设定两个阈值,如果一个像素的梯度大于上限阈值,则被认为是边缘像素,如果低于下限阈值,则被抛弃,如果介于二者之间,只有当其高于上限阈值的像素连接时才会被接受。

步骤:

  1. 用高斯滤波器平滑图象;

  2. 用一阶偏导的有限差分来计算梯度的幅值和方向;

  3. 对梯度幅值进行非极大值抑制;

  4. 用双阈值算法检测和连接边缘。

Prewitt(普瑞维特)算子

与sobel相似,其模板为将sobel的模板中间的2与-2改成1和-1

Robort(罗伯特)算子

一种最简单的算子,是一种利用局部差分算子寻找边缘的算子,他采用对角线方向相邻两象素之差近似梯度幅值检测边缘。检测垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感,无法抑制噪声的影响。其模板为2*2的对角为1/-1、0/0。

Kirsch(凯西)算子

采用8个模板对图像上的每一个像素点进行卷积求导数,这8个模板代表8个方向,对图像上的8个特定边缘方向作出最大响应,运算中取最大值作为图像的边缘输出。

int ntemplate[8][9]={

{5,5,5,-3,0,-3,-3,-3,-3},

{-3,5,5,-3,0,5,-3,-3,-3},

{-3,-3,5,-3,0,5,-3,-3,5},

{-3,-3,-3,-3,0,5,-3,5,5},

{-3,-3,-3,-3,0,-3,5,5,5},

{-3,-3,-3,5,0,-3,5,5,-3},

{5,-3,-3,5,0,-3,5,-3,-3},

{5,5,-3,5,0,-3,-3,-3,-3}}