使用拉普拉斯算子的OpenCV Blob探测器

时间:2017-01-18 08:05:42

标签: c++ opencv

我从显微镜获得了一个图像,需要对其进行分析(隔离斑点)。我一直在尝试很多方法来阈值和过滤图像,这给了我很好的结果,现在我正在努力获得最好的结果。

我一直在阅读有关拉普拉斯算子并使用高斯拉普西亚(Lapacian of Gauss)来发现零交叉,这是图像的边缘。

我已经为我的主题图片实现了this代码,我可以查看拉普拉斯结果,但我不知道如何“使用”它,因为它在其他“空间”(深度)

这是主题图像和拉普拉斯结果。我如何从拉普拉斯图像中获得斑点?

subject

laplacian

1 个答案:

答案 0 :(得分:0)

由于您已经在输入图像上完成了拉普拉斯,因此您需要做的下一步是:

  • 阈值图像以获取二进制图像。

  • 在二进制图像中查找轮廓(blob)。

示例代码可能如下所示:

laplacian_img_RGB = cv2.cvtColor(laplacian_img, cv2.COLOR_GRAY2BGR)

ret, thresh = cv2.threshold(laplacian_img, 140, 255, cv2.THRESH_BINARY)

img, contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

# For debugging Purposes
for i in xrange(len(contours)):
    laplacian_img_RGB = cv2.drawContours(laplacian_img_RGB, contours, i, [0, 255, 0], 3)

cv2.imwrite("./debug.png", laplacian_img_RGB)