【问题标题】:Grow bitmask border without touching objects在不接触对象的情况下增加位掩码边框
【发布时间】:2018-09-02 08:26:34
【问题描述】:

我在 C# 中编写了一个位掩码过滤器,用于增长边框,如果有足够的空间,找到的像素应该增长边框,但区域可能不会相互接触

input mask   output mask
..........    .....xxx...
.....x....    .....xxxx...
.....x....    xxx..xxxxxx.
..x..xxxx.    xxx..xxxxxx.
..........    xxx..xxxxxx.

使用 5x5 二进制卷积检查边界。
边框由 8 个像素组成 (x-2,y-2)(x,y-2)(x+2,y-2)... 即边框的角和中心。
如果找到一个像素,我将其对应的数组P[i] 设置为true
所以这 8 个像素表示在一个布尔数组中,从P[0] 低谷p[7] 开始。

接下来我计算布尔值trues。

如果P[.] > 3 的计数,那么附近还有另一个对象,我不会在那里增加边框。

如果计数为 1,例如(x-2,y)==true,则写掩码(x-1,y)

如果计数是 2,那么如果例如 (x+2,y)==true && (x+2,y+2)==true 则写掩码 (x+1,y+1)

我有很多布尔比较来最终完成这项工作。 我不会让你厌烦无聊的代码,但我想知道我使用的原理是否适合这个,或者是否有其他方法可以做到这一点。

因为我得到了一个副作用(虽然不是真正的问题),这使得形状在每次迭代中都更加立体。这在 PhotoShop 等程序中似乎很少发生。

=====
一些附加信息,代码必须在视频流上运行,所以我更喜欢快速的方法。我写了“枯燥”的代码,如果我要打印它,它的 80+ 行大部分是二进制比较代码,并且 switch case 也使它很快,80+ 是一个很长的帖子,用普通语言解释时更容易理解。

【问题讨论】:

  • 我把你的文字“binary convul​​sion”改成了“binary convolution”,我想这就是你想写的。但是,我不知道什么是二元卷积。您似乎实现了一个在 5x5 邻域中工作的自定义二进制过滤器。
  • 哈哈,谢谢,我不是英国人。

标签: c# image-processing computer-vision


【解决方案1】:

你听说过数学形态学吗?您或多或少地实现了thickening operator(虽然增厚的定义不同,但我认为结果或多或少相似),但有更有效的方法来做同样的事情。

另一种方法是:

  • 计算图像倒数的distance transform。这是一张图像,距离您的对象越远,灰度值越大。该图像将在对象之间的中间有脊。我们称这张图片为distance

  • 计算distancewatershed。这是一个二进制图像,其线条沿distance 的山脊延伸。我们称之为separation

  • Threshold distance 以适当的值使对象按您希望它们增长的数量增长。如果您想将对象放大 10 个像素,请选择阈值,以选择所有值小于或等于 10 的像素 (true)。

  • distance 中减去separationdistance 中设置的像素以及separation 中设置的像素应该被重置。现在,您的原始对象已按您选择的距离增长,但仍是分开的。

我不会让你厌烦无聊的代码......

【讨论】:

  • 我认为这些不符合他的要求,他写道,他希望形状能够增长,但前提是有足够的空间,因为它们不应连接。这是一个有趣的问题。我有点想知道细胞自动机是否可以做到。
  • @user613326 这正是这个建议的作用。形状会一直增长,直到它们几乎接触,但仍保持分离。我相信您可以使用元胞自动机来执行此操作,但它不会像我概述的算法那么有效。在 1980 年代的某个地方,元胞自动机或多或少地被抛弃在图像处理领域。
  • 哦,现在是 isee ,步骤所在的点。 ;) 以为你在那里给出了几个答案。
  • @CrisLuengo hm 我有点怀疑这会更有效,因为我正在围绕可以跳过大面积的对象构建这种方式。不过我不确定,但我的方法可以跟上视频源。宽度不是异国情调的硬件,也许我应该测试一下
  • @user3800527:这取决于您希望将对象增长到多远。您需要为每个像素增长通过图像。距离变换和分水岭各做两次穿过图像。阈值和减法可以组合成第五遍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多