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

前言

   双目摄像头标定是测距及其三维建模非常重要的步骤,因为标定出来的内外参数将会用来对原始图像进行反畸变校正,而反畸变的效果对立体匹配精度有着非常大的影响。此外,最终在求距离时(其公式为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里面参数输入好后,点击“标定”即可自动完成全部单目内外参数以及双目姿态参数的标定,并将标定过程中的信息以及结果都打印出来。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章