如何在图像中找到对齐标记

时间:2012-03-21 17:28:16

标签: delphi image-processing graphics computer-vision crop

我正在设计一个系统,它将以标准化形式扫描到图像(例如,TBitmap)。我想在这些页面上识别对齐标记,并使用这些裁剪标记的位置将页面旋转到正确的方向(因此顶部实际上是向上)并将图像裁剪到对齐标记的位置。

我需要找到的典型标记的示例图像是:

Crop mark http://draftingmanuals.tpub.com/14065/img/14065_69_1.jpg

评估从扫描仪获得的图像以定位图像中的各种标记的技术是什么?我需要找到多个标记及其中心点位置。

3 个答案:

答案 0 :(得分:6)

只是头脑风暴一些可能的方法。

模板匹配

蛮力方法是获得注册标记应该是什么样的位图图像。然后,对于图像中与模板位图具有相同宽度和高度的每个可能矩形,将图像像素与模板像素进行比较。如果大多数相应的像素匹配,您可能找到了一个注册标记。这是非常计算密集型的,因为您必须扫描所有可能的位置,旋转,比例因子等。您可以利用您所知道的事情来减少这种情况。例如,您的注册标记是对称的,因此您无需检查所有可能的旋转。也许您知道标记的确切大小,因此可以避免迭代不同的比例因子。最后,您可能知道注册标记应该靠近角落,因此可以跳过图像的大部分中间位置。

有趣点

找到一种方法来识别图像中的“有趣点”。例如,可以通过使用小内核进行卷积来找到似乎位于交叉点中心的点,该小内核强化了在基本方向上具有匹配像素的像素,然后对结果进行阈值处理。这给出了一个似乎是交叉点的像素列表(可能存在一些噪声)。您可以在此坐标子集中搜索看起来像注册标记中的五个交叉点的“星座”。您可能仍需要应用模板匹配来查找最可能的位置,但这会大大减少您必须尝试的位置,旋转和比例因子的数量。

功能检测

有线检测,圆检测等算法。您可以运行一堆这些算法,然后在圆圈内查找两个交叉线段的组合。这可能是最强大的方式,但它可能也是最难的工作方式。

一些预处理步骤,如运行边缘检测器,阈值处理或扩张,以及侵蚀过滤器,如果图像开始时不是真正干净,也可能会有所帮助。

答案 1 :(得分:2)

我在PDF resource找到了法语 Colin BOUVRY处理识别刻在玻璃上的字符和符号

如果你对法语感到不舒服,你不必担心:德尔福的一些有价值的源代码列在文档的底部,相信我!

感谢。

答案 2 :(得分:0)

对于上面的标记,您可以对圆圈和线条使用Hough transform,然后检查是否有任何交叉线位于任何圆圈的中心,那么它就是您的标记。我不确定delphi,但Hough变换算法是众所周知的,并在大量的库中实现。