關于opencv標定角點的世界坐標求法的困惑,目前發現有三種求法:
1.\opencv\sources\samples\cpp中calibration.cpp求法
for( int i = 0; i < boardSize.height; i++ )
for( int j = 0; j < boardSize.width; j++ )
corners.push_back(Point3f(float(j*squareSize),float(i*squareSize), 0));
2.在《學習OpenCV》這本書11章例11-1求法
CV_MAT_ELEM(*object_points,float,i,0) = j/board_w;
CV_MAT_ELEM(*object_points,float,i,1) = j%board_w;
CV_MAT_ELEM(*object_points,float,i,2) = 0.0f;
3.博客http://blog.csdn.net/zhouyelihua/article/details/38421377#comments求法
CV_MAT_ELEM(*cam_object_points, float, i, 0) = (j/cam_board_w)*cam_Dx;
CV_MAT_ELEM(*cam_object_points, float, i, 1) = (j % cam_board_w)*cam_Dy;
CV_MAT_ELEM(*cam_object_points, float, i, 2) = 0.0f;
問題1:到底哪種求法是對的?
問題2:為什么不同影像對應的角點的世界坐標是一樣的?
問題3:方法一中squareSize是指棋盤格每個小格子的寬度/高度嗎?
問題4:方法二中坐標求法實在不理解,可以幫忙解釋一下嗎?
uj5u.com熱心網友回復:
1.三種求法都是對的,其實是一樣的。2.不知道
3.是滴
4.把坐標輸出來看一下就懂了。
uj5u.com熱心網友回復:
問題2:為什么不同影像對應的角點的世界坐標是一樣的?實際中標定是相機不動,標定板在動, 但是在標定計算的時候,你根本不知道標定板之間的世界坐標對應的關系,
所以只能反過來,假定標定板是不動,相機在移動(運動是相對的),這樣就世界坐標就都一樣,反正影像上的坐標都是知道.這樣就可以求解標定結果
求出來后你可以假定某個位置的相機固定,把其他的相機的坐標系的標定板轉換到改相機坐標系
可以看下matlab的標定工具箱,這個比較形象,最后的標定結果可以Switch to world-centered view 或者Switch to camera-centered view
http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example.html
uj5u.com熱心網友回復:
如何利用求解的引數將拍攝的照片的像素點投影到世界坐標uj5u.com熱心網友回復:
這個問題你解決了嗎,我現在也是很困惑
uj5u.com熱心網友回復:
2樓說的很形象uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/82954.html
標籤:圖形處理/算法
上一篇:Create子視窗顯示的問題?
