你值得拥有的一款开源立体视觉软件
有小伙伴后台和小白说,能不能推荐几个适合入门的开源视觉项目,因为根据实际项目和代码学起来相对来说比较快。小白收集了一些比较简单的开源的项目,会陆陆续续的分享给大家,文末有源码地址,也可以点击“原文阅读”跳转
这次小白继续分享一个拥有中文说明文档的开源系统(我觉得叫软件可能更适合一些)。这个系统是小白本科时候去中科院自动化研究所时候使用过的一个系统,当时在那了解该系统,并对此系统进行了部分修改,使其能够满足当时的任务需求。
我们首先来看一下该系统的界面。
有没有觉得很清晰简捷,而且功能还很全面。图中红色:摄像头初始化区域;绿色:图像基本处理区域;蓝色:摄像头定标区域;橙色:双目匹配计算区域;
接下来小白为大家带来不同功能的操作步骤
选择拟打开的摄像头:
当电脑接入多个摄像头时:A.从“选择左/右摄像头”下拉菜单中选择该视角应该对应的摄像头设备名称(序号);B. 注意不同视角的摄像头设备序号不能相同,若相同会弹出警告窗口。
当电脑只有一个摄像头接入时:直接从“选择左摄像头”下拉菜单中选择摄像头设备名称(序号)。
选择摄像头的分辨率:
从“选择分辨率”下拉菜单中选择,目前有三种分辨率:640*480、352*288、320*240.
启动摄像头:
点击“启动摄像头”按钮,界面上各功能按钮生效,即可进行摄像头定标、双目匹配等操作。
点击“关闭摄像头”按钮,可以重新调整摄像头的配置。
点击“默认设置”,加载默认参数和选项;
按照实际需要调整相关参数和选项;
棋盘角点数:
nx和ny分别是棋盘上横向和纵向的角点个数,注意必须按照实际棋盘横向和纵向的最大角点数输入,否则会造成角点检测失败;
棋盘方块大小:
棋盘方块的实际大小,毫米为单位;
棋盘检测次数:
以10-20次为宜;
双目校正缩放系数:
取值范围为0至1,或者 -1。具体含义参见:http://blog.csdn.net/chenyusiyuan/article/details/8131496
棋盘图像来源:
默认为“从摄像机”,也可选择“从本地图片”;若选择“从本地图片”读入,在执行定标时,将弹出对话框分别选择左视图图像和右视图图像;注意左、右视图的图像数均需要至少4张;当左、右视图图像数与棋盘检测次数不一致时,取三者最小值为准;
双目校正算法:
默认为“BOUGUET”,也可选择“HARTLEY”;不过“HARTLEY”方法的双目校正尚未进行测试,可能存在bug;
标志位选择:
各标志位的设置请参见OpenCV相关文档;
FPP: CV_CALIB_FIX_PRINCIPAL_POINT
UIG: CV_CALIB_USE_INTRINSIC_GUESS
FAR: CV_CALIB_FIX_ASPECT_RATIO
ZTD: CV_CALIB_ZERO_TANGENT_DIST
SFL: CV_CALIB_SAME_FOCAL_LENGTH
FI: CV_CALIB_FIX_INTRINSIC
读入角点坐标数据:
如果曾进行过摄像机定标操作,程序文件夹内将保存有上一次操作的棋盘角点数据的文件(文件名为CornerData.yml)。点击该选项,将自动加载上一次操作的棋盘角点数据,跳过“棋盘角点检测”这一步,直接进行摄像机定标。如果文件夹内没有CornerData.yml文件或者文件读取失败,将弹出警告窗口,应检查该文件是否存在、或者不选择此项,重新进行棋盘角点检测;
读入单目定标结果:
将从本地文件(cameraParams_left.yml和cameraParams_right.yml)中加载摄像机参数,然后进行摄像机定标;如果加载失败,将弹出警告窗口;
首先执行单目定标:
在获取棋盘角点数据后,先调用cv::calibrate- Camera函数对左、右摄像机分别进行定标,获取摄像机内部参数,并将参数保存到cameraParams_left/right.yml文件中。然后再执行双目定标(当电脑接入的摄像头数大于1个时);
直接执行双目定标:
在获取棋盘角点数据后,直接调用stereoCalibrate函数进行双目定标(当电脑接入的摄像头数大于1个时);定标结果保存到calib_paras.xml文件中。
注意:H、I、J项是三选一的选项。
显示摄像机定标效果:
如果仅接入一个摄像头,则显示单目定标后消除畸变的效果;否则显示双目定标后左右视图畸变消除和行对准的效果。
特别说明
点击“执行摄像机定标”,开始定标操作,程序将依次执行以下工作:
棋盘角点检测
单目定标
双目定标
双目校正
显示定标效果
点击“退出摄像机定标”,完成或中止定标操作,恢复摄像机正常显示。该按钮仅在“棋盘角点检测”和“显示定标效果”阶段有效。
选择“双目匹配算法”:
“BM”或“SGBM”,点击后将清零相关的参数;点击“默认配置”:载入所选算法的默认参数;视需要调整参数,可以在计算视差期间实时调整各项参数;“参数设置”中各项参数的意义和取值请参见OpenCV相关文档;
选择图像来源:
“从摄像机”或“从本地图片”;
“双目校正”:
点选后,将需要手动选择摄像机定标文件,然后程序将根据定标参数对图像进行校正,再进行双目匹配和视差计算。若不点选,则程序直接对原始的左右视图进行视差计算,这种情况一般用于从本地读取下载好的公共测试图像,这些公共测试图像一般都已经过标定和行对齐,可直接用于视差计算;
“三维点云”:
点选后,将根据视差图生成三维点云,并检测距离最近的物体;但若读入的摄像机定标文件中记录的校正方法不是BOUGUET 方法,则无法生成点云;
“保存画面”:
点选后,将自动保存每帧左、右视图和视差图到本地;
“延时处理”:
点选后,将在计算完每帧视图的视差图和三维点云后,延时一定时间,再进入下一帧的处理;延时时间默认为 5 秒;可自行调整;
“切换视图”:
在“视差图”窗口中显示彩色视差、灰度视差、环境俯视、环境侧视图像;
“视场范围”:
设置视场的宽度、高度和深度范围。
“计算视差”
点击后将执行如下操作:
若选择“从本地图片”载入左右视图,则将弹出对话框分别选择左右视图图像,可单选或多选;
若点选了“双目校正”,将弹出对话框,由用户选择双目摄像机标定参数文件(文件名一般为calib_paras.xml),程序将分析相关参数;
程序进入循环,自动从本地或摄像机加载图像,进行双目匹配和视差计算等。
如果点选了“生成点云”,程序将根据视差图生成三维点云,并检测出距离最近的物体,在界面中显示物体的相关信息。
点击“停止计算”,退出双目匹配和视差计算操作,恢复摄像机正常显示。
如果小伙伴想了解更多的关于项目的内容,可以通过下载代码,阅读里面的说明文档,也可以在自己的电脑上跑一下该程序。
https://github.com/yuhuazou/StereoVision |