2017-08-28 88 views
1

我有一个二进制图像作为输入。二进制图像包含前景中的几个不相交区域。距离区域

对于不在某个区域的每个像素,我想知道距离最近区域边界的距离。这是一个标准的图像处理算法?如果是这样,那叫什么?它看起来与距离变换算法不同。

我想出的bruteforce解决方案是使用Sobel边缘检测区域边界。然后,对于不在某个区域中的每个像素,计算与所有边界像素的距离并取最小值。

我将在CUDA中实现它,所以我在考虑将边界像素放在一个常量缓冲区中,以便在进行距离计算时读取更快的内存。

任何建议更好的方法?

+3

你为什么认为它与距离变换不同?据我所知,这完全是一种距离变换。 –

+0

更多地思考它之后,你是对的。只需要首先反转我的图像。 – Kratos

回答

1

我想你只是缺少设置,以应用距离变换。我只是刚刚了解到最近的距离变化,所以我为我可能的无知道歉。但是:

创建一个图像(相同尺寸),其中包含的分类斑点为0(填充),其他所有元素均为1.对该图像执行距离变换算法。然后,对于原始图像中的每个未分类像素,根据坐标查找距离变换图像上的相应值。该值(据我了解)将是距离最近的分类对象的距离。