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