Laplacian算子:类似于二阶sobel导数。实际上,在opencv中通过调用sobel算子来计算拉普拉斯算子。
Laplace函数实现的方法:先用Sobel 算子计算二阶 x 和 y 导数,再求和。
应用层面,我们先看与一下该函数的原型:
dst = cv2.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])
测试代码如下:
import cv2 as cv img = cv.imread("lena.jpg",cv.IMREAD_UNCHANGED) gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_TRIANGLE) cv.namedWindow("binary",cv.WINDOW_AUTOSIZE) cv.imshow("binary",binary) laplacian = cv.Laplacian(binary,cv.CV_64F); laplacian = cv.convertScaleAbs(laplacian); cv.namedWindow("laplacian",cv.WINDOW_AUTOSIZE) cv.imshow("laplacian",laplacian) cv.waitKey(0) cv.destroyAllWindows()
拉普拉斯对噪声敏感,会产生双边效果,但是不能检测出边的方向。并且它不直接用于边的检测,只起辅助的角色,检测一个像素是在边的亮的一边还是暗的一边利用零跨越,确定边的位置。