我想合并2张图片。如何删除2张图像之间的相同区域?
你能告诉我一个算法来解决这个问题。感谢。
两个图像是屏幕截图图像。它们具有相同的宽度,图像1总是高于图像2。
答案 0 :(得分:3)
当两个图像具有相同的宽度并且左侧没有X偏移时,这应该不会太困难。
您应该创建两个整数向量,并将每个像素行的CRC存储在相应的向量元素中。对两张图片执行此操作后,您会在第一个矢量中找到下图像第一行的CRC。这是上图中的偏移量。然后检查两张图片中的所有后续CRC是否相同。如果没有,则必须再次在上图中查找下一次出现的初始CRC。
在应用偏移后检查两张图片之间的CRC是否相同后,您可以使用图形格式的bitblit功能并构建合成图片。
答案 1 :(得分:0)
我之前没有遇到类似的事情,但我认为以下内容可能有效:
将两者都转换为灰度。
增强对比度,灰色框可能会变为白色,文字会变成更黑。。 (这只是为了增加下一步的信心)
应用一些阈值,将图片转换为黑白。
之后,您可以找到相似的区域(因此重叠的偏移)具有良好的置信度。要找到相似的部分,你可以使用harper的方法(这很好,但我不知道没有上述过滤会有多可靠),或者你可以应用像卷积这样的DSP操作。
希望有所帮助。
答案 2 :(得分:0)
如果您的图片宽度相同,图片1 始终位于顶部。我不明白它有多难......
只需存储图像1 的最后一行的字节。
从 image 2 的第一行到最后一行进行此测试:
如果图像2 的当前行不等于图像1的最后一行 - > 继续强> 别的 - > 打破循环
您必须为新图像定义新的字节容器: 只需存储图像1 的所有行+ image 2 的所有行(从找到的行+ 1开始)。
让您大汗淋漓的是找到库来操纵所有这些数据结构。但经过一些链接和文档挖掘之后,您应该能够轻松实现它。