最近在看張正友標定和畸變校正的的Opencv源代碼, 求出畸變系數后利用initundistortrectifymap()函式和remap()函式進行畸變校正。但是有一點不明白的就是,在initundistortrectifymap()函式中,是先將影像坐標(u, v)轉換攝像機坐標系,再到世界坐標(X, Y, Z),然后在轉換到攝像機坐標系(x', y', 1),在攝像機坐標系中利用畸變校正模型得到去畸變后的坐標(x'', y'', 1),然后再轉換到影像坐標系(u', v'),這是什么原理呢?求大神指導,如果能夠詳細的解釋整個程序,更是感激不盡!!
uj5u.com熱心網友回復:
樓主所說的東西,我沒看過。不過,我一般用undistort 這個函式,進行校正影像。
uj5u.com熱心網友回復:
Opencv檔案里說undistort()函式就是initundistortrectifymap()函式和remap()函式的簡單組合。我就是最近在看opencv原始碼,關于畸變校正的步驟不太明白。uj5u.com熱心網友回復:

這是opencv2.4.9中關于initundistortrectifymap()函式的說明,我看了好蒙。。。
uj5u.com熱心網友回復:

undistort是我說的兩個函式的組合,大俠有興趣了互相探討一下。
uj5u.com熱心網友回復:
2625812497 這是我扣扣號,,不過,我是用的比較多,,,原理什么的弄明白的少
uj5u.com熱心網友回復:
可以多參考點關于畸變的文獻,弄懂那幾個坐標系間的關系就行。對于畸變模型中所用的是影像坐標,但是直接從影像中提取的是像素左邊,所以要先轉化。轉化后可以用實際提取到的影像坐標的畸變模型來表示理想坐標uj5u.com熱心網友回復:
http://wiki.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA#.E9.92.88.E5.AD.94.E7.9B.B8.E6.9C.BA.E6.A8.A1.E5.9E.8B.E5.92.8C.E5.8F.98.E5.BD.A2uj5u.com熱心網友回復:
最近在看張正友標定和畸變校正的的Opencv源代碼, 求出畸變系數后利用initundistortrectifymap()函式和remap()函式進行畸變校正。但是有一點不明白的就是,在initundistortrectifymap()函式中,是先將影像坐標(u, v)轉換攝像機坐標系,再到世界坐標(X, Y, Z),然后在轉換到攝像機坐標系(x', y', 1),在攝像機坐標系中利用畸變校正模型得到去畸變后的坐標(x'', y'', 1),然后再轉換到影像坐標系(u', v'),這是什么原理呢?求大神指導,如果能夠詳細的解釋整個程序,更是感激不盡!uj5u.com熱心網友回復:
http://blog.csdn.net/ssw_1990/article/details/53216767感覺這個博客寫的還可以 可以參考一下uj5u.com熱心網友回復:
[quote=參考 10 樓 真的可以,貨真價實的干貨
uj5u.com熱心網友回復:
樓主可能認為undistort()函式是進行畸變校正吧,但是正好相反,undistort是用來獲得重映射remap的查找表map1、2 的。所以undistort的功能是把影像從“校正后”變換到“畸變”影像。
uj5u.com熱心網友回復:
這是opencv2.4.9中關于initundistortrectifymap()函式的說明,我看了好蒙。。。
從式子來看,是將某一幀影像上的點(像素坐標),轉換為起始幀的點(像素坐標),是一個加入了內參、外參(R,t)、畸變函式的2D到2D的轉換程序
uj5u.com熱心網友回復:
樓主我想請教下您現在弄清楚了嗎,opencv給的說明怎么看起來像是把無畸變的影像加上畸變的程序
看了半天被繞暈了
uj5u.com熱心網友回復:
https://blog.csdn.net/humanking7/article/details/45037239 這個解釋我看懂了uj5u.com熱心網友回復:
這個initUndistortRectifyMap函式其實是在找畸變前和畸變后的坐標映射關系,即map1和map2。整個流程為:由于從畸變前推畸變后的坐標比較容易(我不嚴謹地理解為后者類似于前者的函式值),所以,使用undistort函式(標定得到的內參和畸變系數作為輸入)由imgsize得到影像大小,遍歷元素坐標,由坐標轉化關系得到畸變后的坐標,得到映射關系,即map1和map2,然后再使用remap(map1和map2以及已經得到的畸變后地影像作為輸入),利用映射關系給畸變后地元素找畸變前地位置就得到了輸出(即畸變前地影像),不知道這么理解有沒有問題?可以參考這個博客地公式推導https://blog.csdn.net/humanking7/article/details/45037239
uj5u.com熱心網友回復:
當然,由于坐標映射推導涉及非整數量,因此,推導得到的畸變后的坐標值有可能是非整數,因此中間會涉及插值操作(在remap函式中)。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/112267.html
標籤:機器視覺
