【发布时间】:2014-08-03 14:57:42
【问题描述】:
openCV中有拉普拉斯函数可以直接计算二阶导数。但这并不意味着我会得到正确的边缘?因为在输出中有很多负值。 我浏览了这个链接并意识到在那之后我还必须找到过零点。我不知道如何找到零交叉。有人可以帮我吗?
【问题讨论】:
标签: c++ opencv image-processing computer-vision
openCV中有拉普拉斯函数可以直接计算二阶导数。但这并不意味着我会得到正确的边缘?因为在输出中有很多负值。 我浏览了这个链接并意识到在那之后我还必须找到过零点。我不知道如何找到零交叉。有人可以帮我吗?
【问题讨论】:
标签: c++ opencv image-processing computer-vision
会发生零交叉
如果你有类似的东西
Laplacian(src, dst, CV_16S);
你只需要扫描dst寻找这两个案例
【讨论】:
这是一个简单的 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 最大值。因此,零交叉定义为负值像素周围为正值,或正值像素周围为负值。
希望对你有帮助!!!
【讨论】: