代码语言:javascript复制
import cv2
o=cv2.imread('C:/Users/xpp/Desktop/Lena.png',cv2.IMREAD_GRAYSCALE)#原始图像
Laplacian=cv2.Laplacian(o,cv2.CV_64F)#Laplacian算子
Laplacian=cv2.convertScaleAbs(Laplacian)#计算结果取绝对值
cv2.imshow("original",o)
cv2.imshow("Laplacian",Laplacian)
cv2.waitKey()
cv2.destroyAllWindows()
算法:Laplacian(拉普拉斯)算子是二阶导数算子,具有旋转不变性,没有边缘的方向信息,双倍加强噪声对图像的影响。通常情况下,Laplacian算子的系数之和为零。
P5lap=(P2 P4 P6 P8)-4xP5
Sobel算子=|左-右|/|下-上| Scharr算子=|左-右|/|下-上|
Laplacian算子=|左-右| |左-右| |下-上| |下-上|
- 非边界(梯度值小,边缘不明显): P5lap=(94 80 92 85)-4x88=-1
- 边界(梯度值大,边缘较明显): P5lap=(200 204 175 158)-4x88=385
- 边界(梯度值大,边缘较明显): P5lap=(20 24 17 15)-4x88=-276
dst=cv2.Laplacian(src, ddepth[, ksize[, scale[, delta[, borderType]]]])
- src表示输入图像
- ddepth表示输出图像的深度
- ksize表示Laplacian核的大小
- scale表示计算Laplacian值所采用的缩放因子,默认值是1,可选参数
- delta表示加到输出图像的值,默认值是0,可选参数
- borderType表示边界样式
注意:Laplacian算子类似二阶Sobel导数,计算两个方向的梯度值。ksize的值是正的奇数值。