openCV中有拉普拉斯函数,它直接计算双导数。但这并不意味着我会抓住边缘吗?因为在输出中有许多负值。 我通过这个链接,意识到在那之后我也必须找到过零点。我不知道如何找到过零点。有人可以帮帮我吗?
答案 0 :(得分:2)
时会发生零交叉
如果您有类似
的内容Laplacian(src, dst, CV_16S);
您只需要扫描dst
寻找这两种情况
答案 1 :(得分:1)
这是Python中的一个简单实现:
LoG = cv2.Laplacian(src, cv2.CV_16S)
minLoG = cv2.morphologyEx(LoG, cv2.MORPH_ERODE, np.ones((3,3)))
maxLoG = cv2.morphologyEx(LoG, cv2.MORPH_DILATE, np.ones((3,3)))
zeroCross = np.logical_or(np.logical_and(minLoG < 0, LoG > 0), np.logical_and(maxLoG > 0, LoG < 0))
整个想法是ERODE操作计算每个像素周围邻域的最小值,并最大化DILATE。因此,在具有负值的像素具有正值的情况下定义零交叉,或者具有正值的像素具有负值的情况。
我希望它有所帮助!!!