AI老铁 · 2020年12月03日

双目测距系列(一)标定工具的开发

转载自:双目测距系列(一)标定工具的开发
作者:ltshan139

前言

双目摄像头标定是测距及其三维建模非常重要的步骤,因为标定出来的内外参数将会用来对原始图像进行反畸变校正,而反畸变的效果对立体匹配精度有着非常大的影响。此外,最终在求距离时(其公式为l=B*f/d),这里面参数都和标定息息相关。

标定工具

目前标定方法的理论基础都为张正友标定法,其大体思想是能找到一个比较好的初始值来进行一个最小二乘法迭代,从而获得最优化标定参数。
具体实现起来比较简单,因为opencv或matlab都已经提供了API支持,关键是先针对实验图片、标定板参数(比如宽高分别有几个角点,每个棋盘格的物理尺寸为多少mm等)确定好即可。
为了更方便的完成标定功能,最好是开发一个带GUI的标定工具,这样效率更高,因为可以灵活指定图片所在目录等。这里面需要注意的一个操作是,要将opencv的窗口映射到MFC IDC_STATIC_CV(PICTURE CONTROL)控件上。
相关代码可以参考下面:

cv::namedWindow("view", WINDOW_NORMAL);
HWND hWnd = (HWND)cvGetWindowHandle("view"); 
HWND hParent = ::GetParent(hWnd); 
::SetParent(hWnd, GetDlgItem(IDC_STATIC_CV)->m_hWnd); 
::ShowWindow(hParent, SW_HIDE);

这样后面调用imshow("view", xxx) 就可以将图片显示到MFC对话框控件上,非常方便。
GUI工具如下所示。param里面参数输入好后,点击“标定”即可自动完成全部单目内外参数以及双目姿态参数的标定,并将标定过程中的信息以及结果都打印出来。
12 03.png



推荐阅读



更多海思AI芯片方案学习笔记欢迎关注海思AI芯片方案学习

推荐阅读
关注数
18835
内容数
1369
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息