行进方格:在一个源场中找到多个轮廓?


9

原则上,这是对几周前某个问题的后续问题,尽管这通常是关于算法的,但并不适用于我的实际问题。

该算法基本上会从图片的左上方开始搜索图片中的所有线条,直到找到边界的像素为止。在伪C ++中:

int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
   if(pixels[i] == border)
   {
      start = i;
      break;
   }
} 

找到一个像素后,它将启动行进平方算法,并找到像素所属的任何对象的轮廓。

假设我有这样的事情:

在此处输入图片说明

除了白色以外的所有东西都是边框。

并找到了第一个斑点的轮廓点:

在此处输入图片说明

对于一般算法,已经结束了。它找到了轮廓并完成了工作。我怎样才能继续移动到其他两个斑点以找到它们的轮廓?


与此请看这个需要帮助的 stackoverflow.com/questions/17232672/...

Answers:


7

您能简单地通过以背景色绘制多边形来删除它,然后重复进行直到没有剩余的多边形了吗?


1
那是应该做的。用背景(或其他颜色)填充找到的元素,然后继续搜索(您可以在找到第一个“匹配项”的位置继续)
bummzack 2011年

哦,哇。我什至不知道洪水泛滥。谢谢。
TravisG 2011年


1

为什么不将Blob信息保存到另一个数组,并检查新发现的像素是否落在较早Blob的边界框中?将需要更多的操作来处理低于早期斑点的中心且落在边界框内的斑点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.