我是靠谱客的博主 冷静手机,最近开发中收集的这篇文章主要介绍模板识别:使用OpenCV实现基于特征的图像对齐,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

我们将使用移动电话拍摄的表格的照片与表格的模板对齐。我们将使用的技术通常被称为“基于特征图像对齐”,因为在该技术中,在一个图像中检测稀疏的特征集并且在另一图像中进行特征匹配。然后基于这些匹配特征将原图像映射到另一个图像,实现图像对齐。如下图所示:

1 背景

1.1 什么是图像对齐或图像对准?

在许多应用程序中,我们有两个相同场景或同一文档的图像,但它们没有对齐。换句话说,如果您在一个图像上选择一个特征(例如白纸的一个边角),则另一个图像中同一个边角的坐标会有很大差异。图像对齐(也称为图像配准)是使一个图像(或两个图像)进行变换的方法,使得两个图像中的特征完美地对齐。入戏

下面是一个例子,中间的表是手机拍摄的表格,左边的表是原始文档。中间的表在经过图像对齐技术处理之后结果如右图所示,可以和左边的模板一样。对齐之后就可以根据模板的格式对用户填写的内容进行分析了。

1.2 图像对齐的应用

图像对齐有许多应用。

在许多文档处理应用程序中,第一步是将扫描或拍摄的文档与模板对齐。例如,如果要编写自动表单阅读器,最好先将表单与其模板对齐,然后根据模板中的固定位置读取字段。

在一些医学应用中,可以把多次拍摄的照片拼接起来。

图像对齐最有趣的应用可能是创建全景图。在这种情况下,两个图像不是平面的图像而是3D场景的图像。通常,3D对齐需要深度信息。然而,当通过围绕其光轴旋转相机拍摄两个图像时(如全景图的情况),我们可以使用本教程中描述的技术来对齐全景图的两张图像。

1.3 图像对齐基础理论

图像对齐技术的核心是一个简单的3×3矩阵,称为Homography(单应性变换)。具体见:

https://blog.csdn.net/LuohenYJ/article/details/89334249

https://en.wikipedia.org/wiki/Homography

https://mp.weixin.qq.com/s/-XrjAjf8ItNMkQyqvcjATQ

我们来看看用法。

C ++

findHomography(points1, points2, h)

python

h, status = cv2.findHomography(points1, points2)

其中,points1和points2是矢量/对应点的阵列,以及ħ是单应性矩阵。

1.4 如何找到对应点

在许多计算机视觉应用中,我们经常需要识别图像中有趣的稳定点。这些点称为关键点或特征点。在OpenCV中实现了几个关键点检测器(例如SIFT,SURF和ORB)。在本教程中,我们将使用ORB特征检测器,因为SIFT和SURF已获得专利,如果您想在实际应用中使用它,则需要支付许可费。ORB快速,准确且无许可证!ORB关键点使用圆圈显示在下图中。

ORB代表Oriented FAST和Rotated BRIEF;让我们看看FAST和BRIEF是什么意思。

特征点检测器有两个部分

(1) 定位器

识别图像上在图像变换下稳定不变的点,如平移(移位),缩放(增大/减小)和旋转。定位器找到这些点的x,y坐标。ORB检测器使用的定位器称为FAST。详细信息见:

https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_fast/py_fast.html

(2) 特征描述子

上述步骤中的定位器只能告诉我们有趣的点在哪里。特征检测器的第二部分是特征描述子,它对点的外观进行编码,以便我们可以分辨不同的特征点。在特征点评估的特征描述只是一个数字数组。理想情况下,两个图像中的相同物理点应具有相同的特征描述。ORB使用名为BRISK的特征描述子。详细信息见:

https://www.robots.ox.ac.uk/~vgg/rg/papers/brisk.pdf

定位器和特征描述子应用很广泛。计算机视觉的许多应用中,我们分两步解决识别问题a)定位;2)识别。例如,为了实现面部识别系统,我们首先需要一个面部检测器,其输出面部所在矩形的坐标。检测器不知道或不关心该人是谁。唯一的工作就是找到一张脸。系统的第二部分是识别算法。原始图像被裁剪为检测到的面部矩形,并且该裁剪的图像反馈送到最终识别该人的面部识别算法。特征检测器的定位器就像面部检测器。描述子类似识别器。

只有当我们知道两个图像中的对应特征时,才能计算出与两个图像相关的单应性。因此,使用匹配算法来查找一个图像中的哪些特征与另一图像中的特征匹配。为此,将一个图像中的每个特征的描述子与第二个图像中的每个特征的描述子进行比较,以找到良好的匹配点。也就是说我们可以通过描述子找到要匹配的特征点,然后根据这些匹配的特征点,计算两个图像相关的单应性,实现图像映射。

ORB其他信息可以见

https://www.jianshu.com/p/387b8ac04c94

2 OpenCV的图像对齐

2.1 基于特征的图像对齐的步骤

现在我们可以总结图像对齐所涉及的步骤。

Step1读图

我们首先在C ++中和Python中读取参考图像(或模板图像)和我们想要与此模板对齐的图像。

Step2寻找特征点

我们检测两个图像中的ORB特征。虽然我们只需要4个特征来计算单应性,但通常在两个图像中检测到数百个特征。我们使用Python和C ++代码中的参数MAX_FEATURES来控制功能的数量。

Step3 特征点匹配

我们在两个图像中找到匹配的特征,按匹配的评分对它们进行排序,并保留一小部分原始匹配。我们使用汉明距离(hamming distance)作为两个特征描述符之间相似性的度量。请注意,我们有许多不正确的匹配。

Step4 计算Homography

当我们在两个图像中有4个或更多对应点时,可以计算单应性。上一节中介绍的自动功能匹配并不总能产生100%准确的匹配。20-30%的比赛不正确并不罕见。幸运的是,findHomography方法利用称为随机抽样一致性算法(RANSAC)的强大估计技术,即使在存在大量不良匹配的情况下也能产生正确的结果。RANSAC具体介绍见:

https://www.cnblogs.com/xingshansi/p/6763668.html

https://blog.csdn.net/zinnc/article/details/52319716

Step5 图像映射

一旦计算出准确的单应性,我可以应用于一个图像中的所有像素,以将其映射到另一个图像。这是使用OpenCV中的warpPerspective函数完成的。

2.2 代码

在本节中,我们将使用OpenCV呈现用于图像对齐的C ++和Python代码。所处理的对象为对本文第二张图所示的三张图。其中第一张图为参考图像,第二张图为用于对齐的图,第三张图为结果图像。第一张图和第二张图特征点匹配的结果如下图所示:

所有代码获取:

本文相关代码 项目获取方式:

关注微信公众号 datayx  然后回复  cv  即可获取。

AI项目体验地址 https://loveai.tech

Python代码如下:


阅读过本文的人还看了以下文章:

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

长按图片,识别二维码,点关注

最后

以上就是冷静手机为你收集整理的模板识别:使用OpenCV实现基于特征的图像对齐的全部内容,希望文章能够帮你解决模板识别:使用OpenCV实现基于特征的图像对齐所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部