在OpenCV里实现Sobel算子

前面学习过Prewitt算子,它是采用平滑和差分来计算边缘,如果把平滑修改一下,改为高斯平滑,那么这个算子就叫做Sobel算子,这个算子的3阶表示如下:

在OpenCV里实现Sobel算子_第1张图片

x轴方向卷积核

在OpenCV里实现Sobel算子_第2张图片

y轴方向卷积核

Sobel算子是可分解的卷积核,比如x轴垂直方向可分解为:

[1,2,1]转置 * [-1,0,1]

这样很容易理解它是一维高斯平滑之后再做差分计算。当然,Sobel算子像高斯平滑一样,可以有3、5、7等阶的算子。

可以使用下面例子来演示:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np
from scipy import signal

#图片的路径
imgname = "edge1.png"

#读取图片
image = cv2.imread(imgname, cv2.IMREAD_GRAYSCA

你可能感兴趣的:(OpenCV)