2.1.2 相机坐标系
相机坐标系是以相机为中心制定的坐标系,中心透视投影的光心和光轴即相机的光心和光轴,相机坐标系原点取为相机光心, 轴与相机光轴重合,且取相机方向为正向。
2.1.3 像平面坐标系
图像物理坐标系是在相机内所形成的像平面 坐标系,一般取像平面与相机坐标系平面平行。
图像像素坐标系是在相机内所形成的 坐标系,一般取像平面的左上角为原点。
图像上每一点的亮度与物体某个表面点的反射光的强度有关,而图像点在图像平面上的位置仅与相机空间物体的相对方位和相机的内部结构有关,相机的内部结构式由相机的内部参数所决定的。为了描述相机的成像几何关系,需要对相机进行数学建模。通常采用真空模型,也称为线性模型,这种模型在数学上是三文空间到二文平面的中心投影,由一个 矩阵来描述,这种模型是一个(退化的)射影变换,因此通常又称它为射影摄像机。
2.1.4 相机标定原理
相机标定是指建立相机图像像素位置与场景点位置之间的关系,其途径是根据相机模型,由已知特征点的图像坐标和世界坐标求解相机的模型参数,如图2-2所示:
相机需要标定的模型参数分为内部参数和外部参数,转换关系为:世界坐标系中的点到相机坐标系的变换可用一个正交变换矩阵R和一个平移变换矩阵T表示, 、 、 、 、 是线性模型的内部参数,其中 、 分别定义为X和Y方向的等效焦距, 、 是图像中心(光轴与图像平面的交点)坐标;R和T是旋转矩阵和平移矩阵。相机的标定任务就是求出每个变换矩阵中的参数。
2.2 相机标定流程
采用黑白棋盘格纸作为标定模版,每一个棋盘格的尺寸为24 18mm,采集一组标定图像,如图2-3所示:
图2-3 采集标定图像
(1)设置当前目录,将标定图像放到toolbox文件夹下;在command window输入calib_gui,运行标定主函数;点击image names,我们的文件没有前缀,这里直接回车,要求输入图片格式,我们是 bmp,输入b,自动载入图片,如图2-4所示:
图2-4 MATLAB自动载入图片
(4)点击Extract grid corners,提取角点,如图2-5所示:图2-5 提取角点
(5)提取完毕,点击Calibration,完成标定,标定结果截图如图2-6所示,外参数储存在矩阵里,输入矩阵名字查看,平移矩阵Tc_n,旋转矩阵Rc_n:
图2-6 标定结果内参数截图
3 系统软件设计
3.1 总体设计结构
本文依照软件工程理论,进行了模块化的分析和设计。模块化结构式软件设计过程中应该遵循的基本原理,由于模块化结构具有可修改性、可读性、验证性等优点,在大型软件开发工程中越来越多地被采用。采用模块化原理使软件结构清晰,容易阅读理解和文护。
图3-1 软件的功能模块图
如图3-1所示,软件总体上由图像采集模块、图像数据处理模块和数据备份传输模块组成。其中,图像数据处理模块主要包括目标定位和线性尺寸测量两个部分,是软件系统的核心功能。
3.2 图像采集模块
在本文的实验中,包括标定、定位与线性尺寸测量,所采用的是拍摄一组图片,储存在电脑中,再调用处理。
而在系统实际的运作中,我们希望可以实时的从相机中读入图片,进行相关处理。OpenCV将与操作系统、文件系统和相机之类的硬件进行交互的一些函数纳入HighGUI库中。有了HighGUI,我们可以方便地打开窗口、显示图像、读出或者写入图像相关的文件、处理简单的鼠标、光标和键盘事件。我们在HighGUI模块中调用cvCreateCameraCapture()。 MATLAB数字图像的协同测量方法研究+文献综述(3):http://www.youerw.com/jixie/lunwen_4042.html