雙目測距系列(一)標定工具的開發

前言

   雙目攝像頭標定是測距及其三維建模非常重要的步驟,因爲標定出來的內外參數將會用來對原始圖像進行反畸變校正,而反畸變的效果對立體匹配精度有着非常大的影響。此外,最終在求距離時(其公式爲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裏面參數輸入好後,點擊“標定”即可自動完成全部單目內外參數以及雙目姿態參數的標定,並將標定過程中的信息以及結果都打印出來。

 

 

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