基于双目立体视觉的复杂背景下的牛体点云获取
2015-12-23薛广顺来智勇张志毅王美丽
薛广顺,来智勇,张志毅,王美丽
(西北农林科技大学 信息工程学院,陕西 杨凌712100)
0 引 言
利用三维重建技术研究我国肉牛产肉量与胴体形态特征参数的相关性,通过胴体形态特征参数活体预测肉牛产肉量具有一定的经济价值[1]。点云获取是进行三维重建的前提和基础,通常点云获取方式可以分为两类:基于主动视觉的点云获取和基于被动视觉的点云获取[2]。由于在点云获取过程中牛是运动的,而被动视觉具有点云获取简单、速度快的优点,所以本文采用一种基于计算机立体视觉的被动视觉技术获取点云。计算机立体视觉研究的主要内容是由多幅图像的平面图像恢复出被摄物体的三维坐标[3],其中基于两幅图像的双目立体视觉技术是一个研究热点,然而尚未有利用立体视觉技术获取牛体点云数据的技术研究。双目立体视觉中相机标定和立体匹配是两个比较关键和困难的问题[4],也是一直以来研究的热点,本文采用基于SIFT 的特征点提取和匹配方法实现特征点的匹配,并利用计算机视觉中的极线几何原理,剔除误匹配点,从而提高匹配精确度。在实际环境中,牛体所处环境和身体毛色情况较为复杂,把牛体从复杂的背景图像中筛选出来也是一个比较困难和棘手的问题。如何在复杂环境中检测出目标物体是目标定位的第一步,基于色彩的检测方法是一种最为流行的方法[5-7],针对牛体毛色及所处环境复杂的情况,本文采用基于贝叶斯的皮肤检测算法提取牛体图像。
本文以双目立体视觉理论为基础,以牛体为研究对象,通过相机系统标定、贝叶斯分类、特征点提取及匹配、相机成像模型原理获取点云等方法构建一个基于双目立体视觉的复杂背景下的牛体点云获取系统。
1 相机标定系统
本文采用两台相机,首先对每台相机进行单独标定获取相机的内部参数、畸变参数和外部参数,进而求取相机之间的旋转、平移关系和基础矩阵。若在标定过程中,同时对两台相机进行标定,会造成因标定板上的角点获取不准确,得到不准确的标定结果,因此,本文采用先对单个相机标定求出内部参数和畸变参数,再统一标定求出外部参数的标定方案。
1.1 相机标定
为了建立有效的成像模型,必须先对相机进行标定[8]。相机标定就是获得相机的内部参数、畸变参数和外部参数。内部参数是相机内部的几何和光学特性,外部参数是相机光心在世界坐标系中的位置和方向。真正的相机镜头通常有一些形变,主要的变形为径向形变,也会有轻微的切向形变。标定就是将相机的畸变系数(k1,k2,p1,p2)[9]求 出来,以对拍得的牛体照片进行校正,获得非畸变的图像。通过建立适当的数学模型,得到三维世界中的坐标与二维图像坐标之间的映射关系,可以快速地获取计算相机内外参数的精确值[10]。
理想情况下,相机的光学系统成像为针孔模型,即一幅视图是通过透视变换将三维空间中的点的相应坐标投影到图像平面。相应的投影公式如下
其展开式为
其中,m′是点M′投影在图像平面的坐标,以像素为单位;(X,Y,Z,1)是一个点的世界坐标的齐次表示。表1是相机的一些参数说明。
表1 相机标定参数
1.2 相机系统标定
双目立体视觉系统使用两台相机从不同角度获取同一景物的两幅图像,通过确定两幅图像上的对应点得到匹配点对,进而求出该点的三维坐标;近年来,立体视觉技术发展越来越快,立体测量精度也越来越高。精确地标定相机内外参数不仅可以直接提高测量精度,而且可以为后续的三维重建奠定良好的基础。相机系统标定就是求取相机之间的旋转、平移关系和基础矩阵。设空间一点P 的坐标为(X,Y,Z),已知左相机在角度为Rl,位置为tl时,P 在成像平面上的投影为ml,其齐次坐标表示为(xl,yl,1);右相机在角度为Rr,位置为tr时,P 在成像面上的投影为mr,其齐次坐标表示为(xr,yr,1)。设左右相机坐标系之间的旋转矩阵为R、平移向量为t,可以得到以下关系
利用式 (2)~式 (4)可求得旋转矩阵R 和平移向量t,即
1.3 极线约束中的基础矩阵F
极线约束是计算机视觉理论中的一个重要性质,对于双目立体视觉中的对应点匹配具有非常重要的作用[11]。若要使用极线约束,就必须首先计算出基础矩阵。假设ml,mr是空间点P 在两个图像上的投影点,且ml,mr是齐次坐标表示,则ml在图像平面πr上的极线方程为mTlFmr=0,F 即为两相机之间的基础矩阵。
在前面相机标定过程中,已经求得了左右相机的内部参数矩阵Al,Ar和两个相机坐标系之间的旋转矩阵R 和平移向量t,则基础矩阵F 可表示为
式中:[t]x——平移向量t的反对称矩阵。
基础矩阵F 实际上包括了双目立体视觉系统的所有参数,即两相机的内部参数Al,Ar和相机系统的旋转矩阵R和平移向量t。这说明基础矩阵F 只与相机系统的参数有关,与外部场景无关,是双目立体视觉固有的一种约束关系[12]。
2 牛体检测
牛体检测就是将照片中的牛体与其之外的信息区分开,根据图像像素的颜色信息将其判别为牛体或非牛体。颜色空间的选择决定牛体检测的效果,本文在RGB 和HSV 两个颜色空间上采用贝叶斯分类器实现牛体检测。
贝叶斯分类规则可表示为
式中:P(beef ∣c)和P(nonbeef ∣c)——给定的像素c是牛体和不是牛体的概率,它们是从颜色直方图直接计算出来的。P(beef ∣c)和P(nonbeef ∣c)之间的比率为
根据以上规则,当满足下列条件时,像素c可以被归类为牛体
式中:Θ——正确识别率和错误识别率的阈值,往往凭经验确定。
这种检测方法简单且便于计算,因此被广泛应用于皮肤检测领域,本文使用该方法对牛体颜色区域进行检测。
3 特征点提取及立体匹配
本文采用基于SIFT[13]特征点提取和匹配方法对检测出的两幅牛体图像进行特征点提取和匹配,并利用计算机视觉中的极线理论剔除误匹配点。SIFT 算法是一种基于旋转、仿射变换保持不变性的图像局部特征描述算法,主要分3个步骤:①特征点检测;②特征向量的生成;③特征点匹配。
3.1 特征点检测
SIFT 特征点检测建立在图像尺度空间的基础上,其主要过程是:在尺度空间内,利用唯一的线性核——高斯核,建立高斯金字塔;利用高斯金字塔构建DOG (高斯差分)金字塔。DOG 算子是尺度归一化的LOG 算子的近似,具有计算简单的优点,可通过不同尺度的高斯差分核与图像卷积确定特征点所在位置及其尺度;为了消除低对比度极值点和不稳定的边缘响应点,本文采用Hessian矩阵精确定位极值点,从而可以精确地获取图像的局部特征点。
3.2 特征向量的生成
对于每个图像局部特征点,为了使SIFT 算子具有旋转不变性,可通过特征点邻域像素的梯度方向分布特性为每个局部特征点确定方向参数。对每个特征点以该特征点为中心,取8x8的像素窗口,在每个4x4的小像素块上计算8个方向的梯度直方图,并绘制每个梯度方向的累加值,进而可以形成一个具有8个梯度方向向量信息的种子点,对每个特征点使用4x4共16个种子点进行描述,使得每个特征点产生128个数据,即形成128维的特征向量。
3.3 特征点匹配
SIFT 特征点匹配主要是对两副待匹配图像的SIFT 特征向量进行相似度度量,计算其中一副图像的每个特征点在另一幅匹配图像的特征点集中的最邻近匹配。本文采用欧式距离作为特征向量的相似度度量。特征向量a,b间的欧式距离Uab表示如下
式中:n——特征向量的维数,此处取128。
为了排除因为图像遮挡和背景混乱而产生的误匹配,通过比较最邻近距离和次邻近距离来消除误匹配
式中:Umin——最邻近距离,Ul——次邻近距离,若其比值小于阈值threshold,则判定为正确匹配点对,否则为错误匹配点对。
另外,我们还将利用在式 (7)求出的基础矩阵F,求出极线方程,利用极线约束剔除误匹配点对。根据前面介绍假设获得的匹配点对为ml,mr,其齐次坐标表示分别为(xl,yl,1),(xr,yr,1),则有
理论上,匹配点对若不满足式 (13)则剔除;在实际操作中,Fmr并非等于0,令
e是预先设定的阈值,通常取为0.2-2即可满足要求。如果匹配不满足式 (14),将其剔除。
4 点云获取
通过特征点匹配获得匹配点对后,可以通过一对匹配点得到三维点的坐标了。本部分通过相机成像模型求取三维点的坐标,这种方法的优点是直观、易懂[14]。对一匹配点对m1= (x1,y1,1)和m2= (x2,y2,1),根据二维图像点与三维空间点之间的映射关系,即
其中,Pi为对应图像的透视投影矩阵,M = (X,Y,Z,1)T为对应的空间点的三维坐标,s1,s2为比例系数。将式(15)和式 (16)展开,得
式 (17)包含3个方程
从式 (19)的3个方程中将比例系数s1消去,得
对式 (18)做相同的处理,消去比例系数s2,得
将式 (20)~式 (23)四式联立得到关于X,Y ,Z 这3个变量的4个方程。理论上来说,这4个方程中的某两个方程必定是线性相关的。但由于图像噪声以及计算的误差等因素导致其不是线性相关关系,所以求出的X,Y ,Z 是最小二乘意义上的解。解该联立方程,可获得匹配点对m1= (x1,y1,1)和m2= (x2,y2,1)对应的三维坐标点(X ,Y,Z) 。
5 实验结果
本文是基于OpenCV+C++实现的,实验所用相机为罗技Pro9000网络高清摄像机。
(1)相机系统标定结果:标定采用张正友的标定方法进行相机标定。在标定过程中,由于图像的内部参数、畸变参数和外部参数会受到标定过程中标定数目的影响,标定数目越多,理论上来说标定结果越准确。本文的相机标定过程中,采用20副7x9的棋盘图像,左右相机标定得到的相机内部参数见表2,畸变参数见表3,外部参数见表4。
通过式 (5)和式 (6)可得两相机坐标系之间的平移向量t和旋转矩阵R,见表5。
表2 左右相机的内部参数
表3 左右相机的畸变参数
表4 左右相机的外部参数
表5 两相机之间的平移向量t和旋转矩阵R
相机之间的基础矩阵
(2)牛体检测结果:在不同颜色通道上对牛体图像进行了一系列的实验来分析检测效果,同时建立了对应的训练集和测试集。为了支持实验,本文预先建立了47张彩色牛体图像组成的小型数据集,并且每张图像都已事先手动标记出了牛体区域。实验过程分为训练阶段 (训练集32张)和测试阶段 (测试集15张)两部分,见表6。
表6 数据集
在实验中,检测效果由正确识别率和错误识别率共同来决定ROC (receiver operating characteristic)曲线,其中正确识别率为牛体像素点并被正确检测为牛体的点的概率,而错误识别率为非牛体像素点被检测为牛体的点的概率,正确识别率越高而错误识别率越低的通道检测效果越好。
将所得的较好的颜色通道进行比较,ROC 曲线如图1所示,RG、HS、RGB这3个颜色通道都具有较好的效果。选取RG 通道进行牛体检测,结果如图2所示
图1 多通道ROC曲线比较
图2 牛体图像在RGB通道上牛体检测结果
观察结果可以看出结果图存在噪声与小洞,可通过形态学运算填补牛体中的小洞。开运算和闭运算是形态学中两个重要的操作,其中闭运算先对图像进行膨胀,然后腐蚀其结果,可以填充图像中的空洞并对图像轮廓有平滑作用;开运算现对图像进行腐蚀,之后再进行膨胀操作,可以消除图像中的毛刺及细小连接成分。
观察可以发现,背景噪声均为较小的区域且与牛体没有公共部分,牛体作为图像的主体部分,占据着图像的大部分区域并且内部连续,因此可以根据区域面积大小来区分牛体与噪声区域,过滤掉面积较小的被视为噪声的区域。得到连续牛体区域之后再对牛体进行填充,从而实现去噪和修补。从图3中可以很明显的看出,经过去噪和修补后,可以较为精确的提取出图像中的牛体信息。
图3 牛体二值图经去噪和修补处理所得结果
(3)特征点提取、匹配及三维点云获取:由于牛体体色比较单一,而我们利用SIFT 进行特征匹配的时候需要设置一个阈值,如果将这个阈值设置的很小,会有很多的匹配对,但是会产生很多的误匹配,所以阈值的选取决定了特征匹配的数目和匹配精度,本文中所选取的阈值为0.4。特征点提取及匹配结果为:左图特征点数共1725个,右图特征点数共2170 个,共得到1005 对匹配点,其中误匹配点对为14 对,粉红色为正确匹配点对,蓝色为误匹配点对,如图4 所示。这样,我们便获得了1005 对三维点数据。点云图如图5所示,从三维点云图可以大致看出牛体的轮廓。但也存在一些问题,由于获取的匹配点对较少,加上三维点获取的不均匀,导致只获取了牛体的部分信息。
图4 特征点提取及匹配图
图5 牛体三维点云图
6 结束语
本文进行了基于双目立体视觉的复杂背景下的牛体点云获取研究,采用两个普通数码相机拍摄图像,实现了牛体特征点的三维点云获取,并获得了较好的效果,此方法简便,成本低。
然而也存在一些问题,比如特征点匹配对较少,匹配点对获取不均匀,后期拟采用三目立体视觉进行改进,三目立体视觉能从3个角度获取牛体,相当于3个双目立体视觉系统,能在一定程度上增加匹配点对的数量和提高三维点云获取的精度。
[1]LIU Chaochao,SHEN Mingxia,PENG Zengqi.Current status and perspective of predicting beef yield grades using machine vision [J].Food Science,2011,32 (9):324-327 (in Chinese).[刘超超,沈明霞,彭增起.机器视觉预测牛肉产量级研究现状及展望 [J].食品科学,2011,32 (9):324-327.]
[2]JIANG Jing,ZHANG Xuesong.Depth estimation method based on computer vision [J].Electro-Optic Technology Application,2011,26 (1):51-55 (in Chinese). [江静,张雪松.基于计算机视觉的深度估计方法 [J].光电应用技术,2011,26 (1):51-55.]
[3]Gary Bradski,Adrian Kaebler.Learning OpenCV (Chinese version)[M].Beijing:Tsinghua University Press,2009 (in Chinese).[Gary Bradski,Adrian Kaebler.学习OpenCV (中文版)[M].北京:清华大学出版社,2009.]
[4]CHEN Shengyong,LIU Sheng.Realization of computer vision based on OpenCV [M].Beijing:Science Press,2008 (in Chinese).[陈胜勇,刘盛.基于OpenCV 的计算机视觉技术实现[M].北京:科学出版社,2008.]
[5]Phung SL,Bouzerdoum A,Chai D.Skin segmentation using color pixel classification:Analysis and comparison [J].IEEE Trans Pattern Analysis and Machine Intelligence,2007,27(1):148-154.
[6]Elgammal A,Muang C,Hu D.Skin detection-a short tutorial[C]//Encyclopedia of Biometrics,2009:1-5.
[7]Dai Yongli,Cai Cheng.Ladybird skin region detection based on Bayesian classifier[J].ICIC Express Letters,2013,7 (2):105-110.
[8]WU Hua.Research on 3Dreconstruction based on binocular stereo vision using the ordinary cameras[D].Nanning:Guangxi University,2012:15-19 (in Chinese). [吴华.基于普通摄像机的双目立体视觉三维重构技术研究 [D].南宁:广西大学,2012:15-19.]
[9]DANG Le.Study on 3Dreconstruction method based on binocular stereo vision [D].Xi’an:Changan University,2009:12-14 (in Chinese).[党乐.基于双目立体视觉的三维重建方法研究 [D].西安:长安大学,2009:12-14.]
[10]LIU Tao,YU Zhongqing,MA Qianli.Target distance caculation based on parallel binocular vision [J].Qingdao University (Natural Science),2009,22 (1):59-62 (in Chinese).[刘涛,于忠清,马千里.基于平行双目视觉的目标距离计算[J].青岛大学学报 (自然科学),2009,22 (1):59-62.]
[11]BAO Wenxia,LIANG Dong,WANG Nian.Image matching algorithm based on graph cut theory and geometric constraints[J].Computer Engineering,2007,33 (1):193-197 (in Chinese).[鲍文霞,梁栋,王年.基于图割理论和极几何约束的图像匹配算法[J].计算机工程,2007,33 (1):193-197.]
[12]LI Jian,KONG Lingyan.Research and implementation of stereo match algorithm based on OpenCV [J].Computer Engineering and Design,2013,34 (2):565-568 (in Chinese).[李健,孔令寅.基于OpenCV 的立体匹配算法的研究与实现[J].计算机工程与设计,2013,34 (2):565-568.]
[13]Lowe W.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,60 (2):91-110.
[14]CHEN Shengyong.The computer vision technology based on OpenCV [M].Beijing:Science Press,2008:235-250 (in Chinese) [陈胜勇.基于OpenCV 的计算机视觉技术实现[M].北京:科学出版社2008:235-250.]