【问题标题】:How do I find average-distance transform of a binary image?如何找到二值图像的平均距离变换?
【发布时间】:2016-07-10 02:03:48
【问题描述】:

距离变换提供每个像素与最近的边界/轮廓/背景像素的距离。我不想要最近的距离,但我想得到某种平均测量像素与边界/轮廓在所有方向上的距离。任何有关计算此距离变换的建议将不胜感激。如果有任何现有的算法和/或有效的 C++ 代码可用于计算这种距离变换,那也太好了。

【问题讨论】:

  • 你检查过 OpenCV 函数:distanceTransform 和 Matlab 函数:bwdist in 吗?

标签: algorithm image-processing distance


【解决方案1】:

如果您有轮廓的二值图像,则可以计算某些窗口内每个像素周围的边界像素数(使用例如积分图像或cv::blur)。这会给你想要的东西。

您也许可以将其与对平均距离的距离变换进行归一化。

【讨论】:

  • 嗯.. 听起来是个合理的想法。我会试一试。是的,我确实有轮廓的二进制图像。但是您的解决方案将无法为距离轮廓比窗口大小更远的像素产生适当的距离。
【解决方案2】:

如果您想要“像素与边界/轮廓在所有方向上的距离的平均度量”,那么恐怕您必须提取轮廓,并且对于图案内的每个像素,您必须计算平均距离与属于轮廓的像素。

“粗略”近似的启发式方法是使用源点(它们可能是图案末端)计算许多距离图,然后对于图案内的每个像素,计算距离的所有距离的总和地图。但是要获得精确的测量值,您必须计算与属于轮廓的像素一样多的距离图。但如果一个近似值“没问题”,那么这将加快处理速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2014-03-03
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多