如何用椭圆有效地表示二值图像中的斑点? |打开简历
How to efficiently represent blobs in binary image with ellipse? | OpenCV
我想用定向椭圆表示斑点。
我在 opencv 中用 findContours()
实现了这个。但我正在考虑实时应用轮廓或斑点检测器,它们会表现更好。
GaussianBlur(im, tempIm, Size(9, 9), 1, 1, BORDER_REFLECT);
findContours(tempIm, contours, hierarchy, RETR_TREE, CHAIN_APPROX_TC89_KCOS);
Blur 还扩展了 blob 的边界,这不是必需的。
输入图片
输出图像
Contours 是对象的轮廓,blob detector 是在 findContours
之上的算法。 Blob 检测器不仅可以找到边界,还可以计算中心以及它是否与您定义的某些形状和大小相匹配。它比 findContours
更重,如果您关心性能并且不需要这些功能,则不应使用它。
如果您想保持图像二值化并且不扩展轮廓,您可以使用中值模糊而不是高斯模糊。您也可以使用 dilate/erode/open/close operations 及其组合来对二值图像进行去噪。这些方法在二进制图像上具有相对可比性,您可以测试最佳性能和结果,然后为您的任务选择一个。
Tutorial code here描述了如何用椭圆表示找到的轮廓。 cv::fitEllipse
用于为轮廓创建椭圆。然后就可以用cv::ellipse
画图功能显示了
我想用定向椭圆表示斑点。
我在 opencv 中用 findContours()
实现了这个。但我正在考虑实时应用轮廓或斑点检测器,它们会表现更好。
GaussianBlur(im, tempIm, Size(9, 9), 1, 1, BORDER_REFLECT);
findContours(tempIm, contours, hierarchy, RETR_TREE, CHAIN_APPROX_TC89_KCOS);
Blur 还扩展了 blob 的边界,这不是必需的。
输入图片
输出图像
Contours 是对象的轮廓,blob detector 是在 findContours
之上的算法。 Blob 检测器不仅可以找到边界,还可以计算中心以及它是否与您定义的某些形状和大小相匹配。它比 findContours
更重,如果您关心性能并且不需要这些功能,则不应使用它。
如果您想保持图像二值化并且不扩展轮廓,您可以使用中值模糊而不是高斯模糊。您也可以使用 dilate/erode/open/close operations 及其组合来对二值图像进行去噪。这些方法在二进制图像上具有相对可比性,您可以测试最佳性能和结果,然后为您的任务选择一个。
Tutorial code here描述了如何用椭圆表示找到的轮廓。 cv::fitEllipse
用于为轮廓创建椭圆。然后就可以用cv::ellipse
画图功能显示了