基于PNP的双目视觉外参获取方法毕业论文
2020-04-09 15:23:36
摘 要
二十世纪以来,由于计算机技术的迅猛发展,摄影测量也不可避免的受到了史无前例的影响。因此对摄影图像的处理技术不可避免的显得愈加重要,要求也愈加严格。
在此背景下,本课题以一个规则的长方体为例,用摄像机对其采集图像并进行有益的分析。主要进行了以下五个任务:对摄像机建立包含透镜畸变分析的摄像机针孔成像模型;用物理方法得到长方体角点的物理坐标;用摄像机采集图像后获取角点像素坐标;根据对应关系得到摄像机外参;求解摄像机坐标系下物体坐标。
本课题以OpenCv为计算机视觉库,以C 作为开发语言,完成对五个任务的编程工作,最后得到了摄像机的内部参数、外部参数和长方体的角点坐标。课题最终达到了课题的目标和要求,但是如果要应用到技术领域,精度有待进一步的提高。
关键词:摄像机,长方体,角点坐标,OpenCv,C
Abstract
Photogrammetry has been inevitably affected due to the rapid development of computer technology since twentieth Century. Therefore, the processing technology of photographic images inevitably becomes more and more important and the requirements are more stringent.
In this background, this paper takes a regular cuboid as an example, and uses binocular camera to collect images and make useful analysis. Four completed tasks are listed as follows: establish a camera pinhole imaging model including lens distortion analysis; obtain the physical coordinates of the corner points of the rectangular body by physical methods; obtain the pixel coordinates of the corner points after acquiring the image by the camera; obtain the camera's external parameters according to the corresponding relation; obtain the object coordinates in the camera coordinate system.
This paper takes OpenCv as the computer vision library and uses C as the development language to complete the programming of four tasks. Finally, the internal parameters of the camera, the external parameters and the corner coordinates of the cuboid are obtained. The paper meets the goals and requirements of the paper at last. However, if we want to apply it to the technical field, the accuracy needs to be further improved.
Keywords: camera, cuboid, corner coordinate, OpenCv, C
目录
第一章 绪论 1
1.1 选题背景 1
1.2 研究的目的及意义 1
1.3 国内外研究及现状 1
1.4 研究内容及组织形式 2
第二章 开发工具及PNP算法的求解过程 4
2.1 开发工具 4
2.1.1 OpenCv简介 4
2.1.2 visual studio2013简介 4
2.1.3 VS2013和OpenCv的配置 5
2.2 PNP算法的求解过程 5
2.2.1 角点 5
2.2.2 单应性矩阵 6
2.2.3 PNP问题 6
2.2.4 投影问题 7
2.2.5 透镜畸变问题 8
2.3 本章小结 9
第三章 任务分析和方案选择 10
3.1 任务分析 10
3.1.1 建立包含透镜畸变分析的摄像机针孔成像模型 10
3.1.2 求长方体角点的物理坐标 10
3.1.3 求长方体角点的像素坐标 10
3.1.4 求解摄像机的外参 10
3.1.5 外参准确性验证 11
3.2 方案选择 11
3.2.1 PNP方法选择 11
3.2.2 摄像机标定方法选择 11
3.2.3 角点检测算法选择 12
3.2.4 摄像机坐标系下长方体角点确定方法的选择 14
3.3 本章总结 14
第四章 功能实现 15
4.1 摄像机的内参数矩阵和畸变向量 15
4.2 长方体的物理坐标确定 16
4.3 长方体像的角点检测 17
4.4 摄像机外参的确定 19
4.5 利用长方体角点坐标验证外参准确性 20
4.6 本章小结 20
第五章 总结和展望 22
5.1 总结 22
5.2 展望 22
参考文献 24
致谢 25
绪论
1.1 选题背景
二十世纪以来,计算机技术迅猛发展,并应用到大大小小各种领域中,当然也包括数字图像处理领域[1]。在计算机技术出现以前,对图像处理方式比较单一,基本是人通过肉眼然后观察得到图像的特征。这样处理少量图像可能较为精准并处理结果将很大程度符合人们的需要,不过面对海量图片信息,用肉眼来一一识别的方法不仅耗时耗力甚至连精准度都大大下降,这是因为人类大脑记忆、处理能力等方面的限制。试想,给你一张刚刚拍摄出来的照片,照片上是即使是一个简单、易于描述的物体,让你仅使用肉眼通过这张照片精准得到摄像机坐标系下这个物体的坐标,也是难于登天。因此使用计算机技术对图像进行数字处理显得尤为迫切。这也是人们对图像信息更高标准的需求导致的必然趋势。
1.2 研究的目的及意义
本课题研究的只是现代数字图像处理中的双目视觉测量中的一个方面,即在得到摄像机的内参后,根据摄像机所摄图像,得到实物相对于摄像机的位置。
世界上每一个摄像机镜头都是非理想的,都包含畸变[2]。因为畸变主要源自透镜形状和透镜位置和成像仪的不平行,这都是无法避免的。在我们得到的内参中包含畸变参数,可以用来消除这些畸变,实现图像的还原。去畸变后得到的无失真图像可以用在更需要图像精确度的领域。
而得到实物相对于摄像机的位置,可以用来服务地形领域:建立地形数据库,为各式各样的土地信息系统、地理信息系统等提供空间基础数据。也可以用来服务非地形领域,如建筑、考古、生物、工业、医学等。总而言之,可以用来更准确更大范围的获取地球空间信息,高效管理空间信息,进而再创造更高效更合理的服务模式。
1.3 国内外研究及现状
视觉测量技术的基础是PNP问题。PNP问题(Perspective-N-points),又被称为N点透视问题。它起源于1841年,是摄影测量学中一个历史悠久的问题,也是计算机视觉领域一个极为经典的问题。它主要研究三维空间中N个点的透视几何关系。这个问题由德国数学家Grunert首先提出并给出解答。在1904年被一位德国的摄影学家再次提出和在1949年被一个美国摄影测量学家再次解答。
在国外,双目视觉测量技术已经广泛用于生产,主要有这四大领域:虚拟现实,三维测量,机器人导航和微操作系统的参数检测。较为前沿的应用有:日本研制的一种自适应双目视觉伺服系统,可以用来预测目标的下一步的运动方向;同样在日本,将视觉测量和机器人运动相结合,实现了长距离的导航;在美国,将视觉测量和雷达测物技术相结合,实现了一种全新的智能交通传感器等。
而在国内,双目视觉测量还处于初始阶段,大多基于理论创新或者是更为有效的算法。例如浙江大学完全利用透视成像原理,采用双目体视的方法,实现了仅使用较少特征点,并且不需要知道被测物体的基础状态和限制条件,便能得到运动着或不运动的被测物体的位姿参数[3]。再例如维视图像公司使用双目ccd相机,从摄像机内参标定、立体匹配到特征点分割处理都实现了更精确的算法和建立了更合理的数学模型。
总的来说,视觉测量技术从计算机技术的普及开始发展至今,虽然已经有了较为系统的算法,在生产中也有了较为具体的应用,不过距离构造出类似于人眼的通用立体视觉系统,还有很长的路要走。
1.4 研究内容及组织形式
本课题以一长方体为研究对象,首先对摄像机建立包含透镜畸变分析的摄像机针孔成像模型,得到摄像机的内部参数。然后摄取长方体照片后,提取图像的特征点,并描述特征点的像素坐标。接着用物理方法得到长方体的物理坐标。最后根据世界坐标系和摄像机坐标系对应关系,得到物体在摄像机坐标系下的坐标。本课题以OpenCv为计算机视觉库,以C 作为开发语言,在visual studio 13.0平台上编译。
根据研究的内容,对本课题的具体结构进行如下安排:
第一章,绪论,对选题背景,国内外研究现状及研究内容进行简单的介绍,并安排本课题的基本结构。
第二章,介绍在长方体图像处理的过程中所要用到的开发环境,开发工具及理论基础。
第三章,对所摄的长方体图像处理过程中需要实现的功能进行分析,建立合理的模型和确定合适的函数,并对其进行描述。
第四章,软件功能的实现,以visual studio为平台,C 为开发语言,对各部分功能进行验证。
第五章,总结展望:对本课题所作的成果作一个小结,对设计中的不足做补充说明。
开发工具及PNP算法的求解过程
2.1 开发工具
2.1.1 OpenCv简介
OpenCv(Open Computer Vision)是一个开源的计算机视觉库[4],其项目主页为http://SoureForge.net/projects/opencvlibrary。OpenCv使用C 或C语言编写代码,可以在Linux、Windows、Mac等不同操作系统上运行。同时,OpenCv也提供了Ruby、MATLAB、Python等其他语言的接口。
OpenCv主要关注实时应用,设计目标是执行速度尽可能快。它旨在搭建一个易于操作的计算机视觉框架,用来辅助使用者更迅速地开发具有一定复杂度的、与计算机视觉相关的软件[5]。OpenCv一共提供了500多个函数,函数覆盖范围广泛,包括了医学成像、工厂产品检测、用户界面、信息安全、立体视觉、摄像机标定和机器人等涉及计算机视觉的众多领域。在一般情况下,它提供的高层函数已经可以有效地解决计算机视觉中的一些很复杂的问题。即使没有恰如其分的高层函数,其提供的500多个基本函数也足够为大多数计算机视觉问题创建一个完美的解决方案。
2.1.2 visual studio2013简介
Visual studio 2013是微软公司在Builder 2013开发者大会上发布的一个较新的Visual Studio版本[6]。目前最新的版本是Visual Studio 2017。Microsoft Visual Studio是一个比较完整的开发工具集,它具备一个软件生命周期中所需要使用的大部分工具,如UML工具、代码管控工具、集成开发环境等等。所写的目标代码适用于微软支持的所有平台。它是目前最盛行的Windows平台应用程序的集成开发环境。与之前的版本相比,Visual Studio 2013新增了代码信息指示(Code information indicators)、身份识别、团队工作室(Team Room)、NET内存转储分析仪、敏捷开发项目模板的功能以及更强力的单元测试支持。总的来说,Visual studio是一个综合性产品系列,适用于每一个期望创建或升级更完美的应用程序的组织或个人开发人员。 Visual Studio2013的开始界面如图2.1所示。
图2.1 Visual Studio 2013
2.1.3 VS2013和OpenCv的配置
OpenCv在Visual studio 平台上实现需要配置开发环境。本课题使用的版本分别是Visual studio2013和OpenCv2.14.13。首先需要配置电脑系统环境变量,即在系统属性里Path变量添加OpenCV的bin路径。
图2.2 添加OpenCv的bin路径
其次需要在VS的工程中添加新的注册表,并在新的注册表中添加OpenCv的相关路径(主要是build文件夹中的三个文件),这个路径由自己的安装路径决定。添加完相关路径后,在VC 的库目录里面添加OpenCv的lib文件地址。然后在依赖项中添加对应的库文件头。这些都进行成功之后,最终会生成一个新的注册表。在以后需要用到OpenCv的函数时,只需要在VS的工程中直接添加这个注册表(Buildopencv)即可。注册表的缩略图如图2.3所示。
图2.3 最终生成的注册表
2.2 PNP算法的求解过程
2.2.1 角点
关于角点的描述有这几种:一阶导数(灰度的梯度)的局部最大所对应的像素点;两条及两条以上边缘的交点;图像中梯度值和梯度方向变化很快的点;一阶导数最大、二阶导数为0,物体边缘变化不连续的点。这不是给出角点的定义,只是提供了几种选择角点的方案[7]。我们甚至可以自己定义感兴趣的点为角点。
角点是图形图像很重要的特征,在对图形图像的理解和分析中起着很大的作用。它在保留了图形图像关键特征的同时,有效地减少了图形图像的信息量,也有效的提高了计算的速度,使实时处理成为可能。角点的概念贯穿于本课题之中,对本课题的研究至关重要。
在本课题中选取目标长方体的8个棱角作为角点,这样选取不仅符合我们的观察直觉,也满足上述选择角点的方案,它们均是三条边缘的交点。倘若我们一定要选择长方体面上的若干点作为角点,其特征很难描述,这会使角点检测算法的建模过于困难甚至难以完成。
2.2.2 单应性矩阵
在计算机视觉中,平面的单应性被定义为从一个平面到另一个平面的投影映射[8]。因此以上两个摄像机坐标系到世界坐标系的映射矩阵,摄像机坐标系和像平面坐标系的映射矩阵都可以称为单应性矩阵。不过在本课题中,我们用单应性矩阵H特指世界坐标系到像平面的映射矩阵。无论是摄像机坐标系到世界坐标系的映射过程还是摄像机坐标系和像平面坐标系的映射过程都包含在单应性矩阵H内。这使原本需要多次变换的坐标关系显得不那么复杂,也有利于计算机的数据处理。
2.2.3 PNP问题
PNP问题(Perspective-N-points),又被称为N点透视问题[9]。正如上文所说,它是计算机视觉领域的一个极为经典的问题。其实质是利用对应点求解相机位姿。位姿指的是世界坐标系和摄像机坐标系的对应关系,这种对应关系反映在数学上就是用来联系两个坐标系的旋转矩阵和平移向量。那么PNP问题的求解就变成了求解所谓的旋转矩阵和平移向量。这个过程如图2.4所示。
图2.4 世界坐标系到摄像机坐标系的变换
既然被称为N点透视,那么必须要讨论N的取值。N是选取的特征点的个数,无需置疑的是N的取值越大,所得到旋转矩阵和平移向量便越精确。而实际上,N的取值只要大于或等于3即可求出一组解。例如所谓的P3P,计算机首先用3个点的对应关系求出4组解,然后再把第四个点代入公式,得到4组投影,选择投影误差最小的那组解作为最终的旋转矩阵和平移向量[10]。
另外,在计算机计算的过程中,为了使用矩阵运算,没有直接用笛卡尔坐标系描述特征点的坐标,而是引入了齐次坐标的概念。齐次坐标在图形学中是一个十分基础的概念,简单来说就是用维来代表N维坐标[11]。因此,原来的像点在齐次坐标中就变成了,并且,。如果我们假设为摄像机系下的坐标向量,为点在世界坐标系中的坐标向量,为旋转矩阵,为平移向量,那么可以得到:
(2-1)
2.2.4 投影问题
按照解决事情的顺序,投影问题应当排在PNP问题的前面,不过由于PNP问题在计算机视觉中独特的地位,本课题先解释了PNP问题。PNP问题讨论的是摄像机坐标系和世界坐标系的关系,投影问题讨论的则是摄像机坐标系和像平面坐标系的关系。这种对应关系同样可以用矩阵表示,这个矩阵就是所谓的摄像机内参数矩阵。投影关系如图2.5所示。
图2.5 成像投影关系
从图像中,根据相似三角形的知识,不难得到两组坐标的对应关系:
(2-2)
(2-3)
值得注意的是,我们引入了两个不同的焦距和,还引入了两个新的参数和。引入两个不同的焦距是因为单个像素点在低价成像仪上是矩形而不是正方形。对于焦距,实际上是透镜的物理焦距长度F与成像仪的每个单元尺寸的乘积。同样的道理也适用于和。和以即物理焦距F均不能在摄像机标定过程中直接测量,只有组合量和可以直接计算出来。而引入参数和是因为芯片的中心通常不在光轴上,所以用和对可能的偏移进行描述。如果我们假设q是像平面上的点的坐标向量,Q是摄像机坐标系下物体的坐标向量,M是摄像机的内参数矩阵,那么可以得到:
(2-4)
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: