sobel算子
sobel是用于边缘检测的离散微分算子,结合了高斯平滑和微分求导,用来计算灰度函数的近似梯度。在图像的任何一点使用此算子,都将会产生对应的梯度适量或是其法矢量。
计算过程
图像I。
- 对I在x和y两个方向求导。水平方向上:I与一个奇数大小的内核Gx进行卷积;垂直方向上:I与一个奇数大小 的内核Gy进行卷积。
- 在图像的每一点,结合以上的两个结果求出近似梯度。G=|Gx|+|Gy|;
使用sobel算子,sobel()函数
- 参数1 src
- 参数2 dst
- int ddepth
- int dx
- int dy
- int ksize 默认3
- double scale 缩放因子,默认1,默认情况下没有应用缩放。
- double delta 表示在结果存入目标图之前的delta可选值,默认0
- int borderType 边界模式 有默认值
内核为3时,sobel可能产生明显误差,毕竟sobel只是求取了导数的近似值而已,为解决此问题,opencv提供了Scharr函数,sobel结合高斯平滑和分化,结果具有更多的抗噪性
拉普拉斯算子 Laplacian算子
f的拉普拉斯算子也是笛卡尔坐标系中的所有非混合二阶偏导数求和;
对于k>=2,算子Δ:C®->C®;
对于任何开集Ω,有算子Δ;C®->C®.
拉普拉斯算子的定义:
Laplacian(f)=δ^2 f/δ x^2 +δ ^2 f /δ y^2
虽然拉普拉斯算子使用了图像梯度,但是内部代码调用了sobel算子。
-
计算拉普拉斯变换
Laplacian() -
src
-
edges
-
ddepth
-
ksize
-
double scale
-
double delta
-
int borderType