2

我想合并 2 张图片。如何删除 2 张图像之间的相同区域?

你能告诉我解决这个问题的算法吗?谢谢。

在此处输入图像描述

两个图像是屏幕截图图像。它们具有相同的宽度,并且图像 1 始终高于图像 2。

结果

4

3 回答 3

3

当两个图像具有相同的宽度并且左侧没有 X 偏移时,这应该不会太难。

您应该创建两个整数向量,并将每个像素行的 CRC 存储在相应的向量元素中。对两张图片执行此操作后,您会在第一个向量中找到下部图像第一行的 CRC。这是上图中的偏移量。然后检查两张图片中的所有后续 CRC 是否相同。如果没有,您必须再次在上图中查找下一次出现的初始 CRC。

在应用偏移量时检查两张图片之间的 CRC 是否相同后,您可以使用图形格式的 bitblit 功能并构建复合图片。

于 2013-06-01T13:06:07.707 回答
0

我以前没有遇到过类似的事情,但我认为以下方法可能有效:

  • 将两者都转换为灰度。

  • 增强对比度,例如灰色框可能会变白,文本会变黑。(这只是为了增加下一步的信心)

  • 应用一些阈值,将图片转换为黑白。

之后,您可以很有把握地找到相似的区域(以及重叠的偏移量)。要找到相似的部分,您可以使用 harper 的方法(这很好,但我不知道如果没有上述过滤它会有多可靠),或者您可以应用一些 DSP 操作,如卷积。

希望有帮助。

于 2013-06-01T13:23:28.237 回答
0

如果您的图像宽度相同并且图像 1始终位于顶部。我不明白这有多难。。

只需存储图像 1的最后一行的字节。

图像 2的第一行到最后一行,进行以下测试:

如果图像 2的当前行不等于图像 1的最后一行->继续 else ->中断循环

您必须为新图像定义一个新的字节容器:只需存储图像 1的所有行 +图像 2的所有行(找到的行 + 1)。

在这里让你大汗淋漓的是找到操作所有这些数据结构的库。但是经过一些链接和文档挖掘之后,您应该能够轻松地实现它。

于 2013-06-01T13:42:13.487 回答