我正在设计一个将以标准化形式扫描到图像(例如,TBitmap)的系统.我想在这些页面上识别对齐标记,并使用这些裁剪标记的位置将页面旋转到正确的方向(因此顶部实际上是上),并将图像裁剪到对齐标记的位置.
我需要找到的典型标记的示例图像是:
Crop mark http://draftingmanuals.tpub.com/14065/img/14065_69_1.jpg
解决方法
只是集思广益的一些可能的方法.
模板匹配
一个强力的方法将是一个位图图像的注册标记应该是什么样子.然后,对于图像中与模板位图具有相同宽度和高度的每个可能的矩形,都可以将图像像素与模板像素进行比较.如果大多数相应的像素匹配,您可能已经找到了一个注册标记.这是非常计算密集型的,因为你必须扫描所有可能的位置,旋转,比例因子等.你可以通过利用你知道的东西来减少这个.例如,您的注册标记是对称的,因此您不需要检查所有可能的轮换.也许你知道标记的确切尺寸,因此可以避免迭代不同的比例因子.最后,您可能会知道注册标记应该靠近角落,因此可以跳过图像中间的大部分.
有趣的点
找到一种方法来识别图像中的“有趣点”.例如,似乎位于交叉点中心的点可以通过使用加强在基本方向上具有匹配像素的像素的小内核进行卷积然后对结果进行阈值来找到.这给出了一个似乎是交点的像素列表(可能会有一些噪点).您可以搜索这个坐标的子集,使其看起来像您的注册标记中的五个交叉点.您可能仍然需要应用模板匹配来找到最有可能的位置,但这会大大减少您将要尝试的位置,旋转和比例因子的数量.
特征检测
有线检测,圆检测等算法.您可以运行一些这些算法,然后在一个圆圈内查找两个交叉线段的组合.这可能是最强大的方法,但也可能是最难的工作.
一些预处理步骤,如运行边缘检测器,阈值或扩张,以及侵蚀过滤器也可能有助于如果图像不是真正的干净开始.