使用 R 在二进制图像中进行线检测和距离测量

Line Detection and Distance Measurement in Binary Images using R

我真的非常感谢任何(理论上 or/and 实用的)指导我如何检测、计算二值图像上的线数(通常为 2 或 1)并测量它们之间的最短距离.这些线是先前处理的产物(rgb->grey->canny edge->cropping->dilation)。我目前正在尝试使用 R 的成像器包,但我可以想到像 Matlab 或 Scilab 这样的替代方案。

非常感谢,

image task

我想出了下面的方法...

第一步

从左上角或其他地方开始,沿着边缘(无论哪种方式)前进,直到找到与边缘相交的白色像素。我从左边往下走,在 0,167 处找到了那个。

第 2 步

从该像素开始用黑色填充。这将完全删除左下角的线,只留下右上角的线。如果此时检查图像的平均亮度并且它为零,则只有一条线并且停止。

步骤 3

使用欧几里德距离形态计算与白色像素的距离。我在此处使用 ImageMagick 在命令行中执行此操作,但我认为您可以在 OpenCV、Matlab 或 R 中执行此操作。

convert lines.jpg -threshold 50% -negate -morphology Distance euclidean:4  euclidean.png

第 4 步

现在沿着左下角的线(您之前暂时删除的线)继续前进,找到该线上最暗的像素。那就是离左上线最近的那个,它的亮度就是距离。

使用霍夫变换怎么样?这是一种非常常见的检测二值图像中直线的算法。我认为它在 PET package 中可用。或者,我也建议使用 OpenCV。