如何快速定位图片中的空(f.i. white)空间

时间:2017-01-23 10:21:22

标签: c# algorithm image-processing

line = line.replaceAll("(\\d{4},)", ",\1");中找到空(白色)空间的fastest & most efficient way是什么? (无需说使用System.Drawing.ImageLockBits ...)

我的任务是通过不掩盖现有内容来找到unsafe的位置...
在我的情况下,现有图像是pdf文档中的渲染图像。

我的目标是将另一张图片放在有足够空间的最低位置: (以下示例中的绿色) Text as Image with white space

  • 扫描每个像素并找到合适的位置是否是一个很好的决定?

  • 或者有更有效的方法吗?也许使用网格并寻找一个汇总值来评估小区域?

也许有人知道现有的&快速算法还是可以提供示例代码?
非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为你可以通过尝试用很少的像素测试消除大面积来避免扫描大多数像素。

让图片的宽度为 WIDTH 。 让图片的高度为 HEIGHT

您可以使用 HEIGHT / 2 + 1 像素将尺寸 WIDTH / 2 + 1 的图块平铺文档。

只要可以放置图片,它就会完全覆盖其中一个图块。

因此我的算法是这样的:

  1. 创建一个布尔的二维数组(或类似的数据结构)作为它完全在其中的每个图块的标记。

  2. 遍历所有瓷砖。

  3. 对于每个图块检查像素,直到您点击非白色像素(将图块标记为非白色)或扫描所有像素(将图块标记为白色)。为了扫描图块的像素,我将使用交错模式,如png在隔行扫描模式下使用。通过这种方式,你很有可能找到一个非白色像素,其测试远远低于瓷砖的所有像素。
  4. 如果可以扩展到图片的大小,请检查每个白色图块(从左下角到右上角)。 (再次使用隔行扫描模式以最小化比较次数)