0

这是图像处理算法的一部分,需要进行更多优化。我们有一个由 0 和 1 组成的大型稀疏矩阵。在这个稀疏矩阵中,有一个或多个 1 的密集区域。假设整个矩阵代表一个图像,0代表非视频区域,1代表视频区域。基本上所有附近的 1 应该组合在一起以找出更近似的视频区域。因此,围绕所有 1 绘制边界将在图像中给出精确的视频区域。

在此处输入图像描述

如上面 0 和 1 的矩阵所示。有 4 个 1 的密集区域。我们尝试了一种简单的方法,该方法具有更高的时间复杂度和预期的进一步改进。

如果块中 1 的数量高于某个阈值,我们尝试的方法是在 3*3 或 2*2 的块大小中转换所有 0。但即使这种方法也没有给我们视频块的确切边界。

所以寻找一种在时间和空间复杂度上都很好的更好的算法。实际上这个计算需要实时完成,所以算法的时间复杂度必须非常低。如果我们能在 O(n) 线性时间内实现,那就太好了。

4

1 回答 1

1

这里常用的方法是应用扫描线算法。

基本上,它的工作原理如下:查看每一列。如果它由全零组成,请转到下一列。如果它包含 1,则保存最小和最大的垂直位置(它们可能是矩形坐标的候选者)。当您进一步移动扫描线时,相应地调整您的候选人。如果您找到了候选并到达一条由全零组成的线,那么您的候选坐标就是矩形的实际坐标。

您也可以(或另外)垂直扫描并检查行而不是列。

根据您的矩阵(或您的任务)的属性,有很多不同的可能解决方案。考虑以下矩阵:

1 1 1
1 1 1
1 1 1

它包含多少个矩形?1?9?4?

在您的示例中,两个触摸矩形也可以视为一个较大矩形的一部分。

一些建议:更清楚地说明您的问题。

于 2013-01-19T08:49:43.703 回答