我有一个二进制图像作为输入。二进制图像在前景中包含几个不相交的区域。
对于不在某个区域的每个像素,我想知道距离最近区域边界的距离。这是标准的图像处理算法吗?如果是这样,它叫什么?它看起来与距离变换算法不同。
我想出的一个强力解决方案是使用Sobel边缘检测区域边界。然后,对于不在区域中的每个像素,计算到所有边界像素的距离并取最小的像素。
我将在CUDA中实现这一点,所以我在考虑将边界像素放在一个常量缓冲区中,以便在进行距离计算时更快地读取内存。
有关更好方法的任何建议吗?
答案 0 :(得分:1)
我认为您只是缺少设置以应用距离变换。我刚才才知道距离变换最近是什么,所以我为可能的无知道歉。但是:
创建一个图像(相同尺寸),其中分类的blob包含为0(已填充),其他所有内容均为1.对该图像执行距离变换算法。然后,对于原始图像中的每个未分类像素,基于坐标在距离变换图像上查找其对应值。该值(据我所知)将是到最近的分类对象的距离。