使用C#对齐图像内的两(2)个图像和对象

时间:2013-11-14 07:43:12

标签: c# image-processing emgucv aforge accord.net

我有两张图片(扫描表格):

第一张图片是模板图片(空白表格),第二张图片是包含数据的图片(表格已填写完毕)。

我正在尝试将图像与数据对齐/叠加到模板图像以生成最终图像(将两个图像内的对象彼此对齐)。

我能够获得两个图像的四边形角,变换四边形角,并对生成的图像(矩形)进行校正,但是当我覆盖图像时,我得到一个双视最终图像,因为两个图像中的对象没有正确对齐。

我发布了一个带有图片的问题并链接到AForge论坛http://www.aforgenet.com/forum/viewtopic.php?f=4&t=3013的视频,但没有得到任何回复。

我也在http://www.codeproject.com/Articles/95453/Automatic-Image-Stitching-with-Accord-NET查看了Accord.Net的拼接示例,但它仍然无法解决我的问题。

任何帮助都是值得欣赏的。

1 个答案:

答案 0 :(得分:1)

这种错位的主要原因是:扫描过程中,文档图像与普通图像有很大不同。

解释:在扫描期间,图像被量化,并且该量化步骤总是导致文档的不同采样,这意味着,一些黑色像素可能是白色而另一方面(尽管不是肉眼)。

除此之外,扫描选项可能不同,这意味着不同的dpi,位深度。

此外,扫描仪可能不同,由于量化过程不同,导致更高的不匹配。

最后,主要问题是拉伸。您可能看不到,但是由于进纸器,所有扫描的文档都有拉伸,或者您猜测它是量化的。这种拉伸因图像而异,并且在单个图像上不均匀。如果图像稍微倾斜,则拉伸成一定角度,因此dpi在不同图像中不均匀,dpi在一幅图像上也不均匀,dpi在任何图像中的方向变化也不均匀。

以上所有内容几乎不可能将一幅图像完美地对齐在另一幅图像之上。 纠偏和通过锚定机制进行翻译(另一个话题太长,无法在此讨论)可能有所帮助,但只有两种方法可以尝试实现上述目标:

  1. 在排列后应用形态学开口:侵蚀然后扩张。这会产生诸如需要使上述内核的大小与图像大小和dpi匹配的问题,否则您将呈现一些不可读的字符。此外,如果图像中的内容大小不同,则必须进行分区分析和blob检测,以了解要在图像的哪个部分执行的内核大小,然后应用常规平滑。 (强烈建议不要使用此方法)。
  2. 对文档进行文档分析,这意味着您将了解这是什么类型的表单,并且表单具有为每个部分设置的每个坐标和大小。完成初始对齐后,调整填充图像的部分大小以匹配原始图像的部分(需要通过填充算法隔离对象)。
  3. 无论如何,你可以看到这不是一项微不足道的任务,事实上,它是文档图像处理和识别中最难的一项。