我是opencv的新手,但願意學習。我想知道下面描述的東西是否可能。匹配對象的3D旋轉
相機在黑暗的背景上看到白色鉛筆(管,圓柱等)。我想在3D空間中提取對象的旋轉並在我的程序中使用它。它不必非常準確或快速(甚至可達到10fps)。
我很明顯在尋找解決方案,但對於一些指導:看什麼,看什麼,這個過程是如何被專業人士調用的。
我是opencv的新手,但願意學習。我想知道下面描述的東西是否可能。匹配對象的3D旋轉
相機在黑暗的背景上看到白色鉛筆(管,圓柱等)。我想在3D空間中提取對象的旋轉並在我的程序中使用它。它不必非常準確或快速(甚至可達到10fps)。
我很明顯在尋找解決方案,但對於一些指導:看什麼,看什麼,這個過程是如何被專業人士調用的。
由於幾何模糊不可能從一個任意物體的圖像中提取3D旋轉。你可以得到相同的圖像whith不同的座標/方向的對象。但是您可以在屏幕圖像平面中提取旋轉角度。 您可以使用時刻來解決這個問題。首先你應該二進制化圖像。你可以使用一些顏色過濾teqnique。當您有二值化圖像時,您可以評估時刻http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html。當你做,你可以計算角度如下:
...
double M00=moments.m00;
double M20=moments.m20;
double M02=moments.m02;
double M11=moments.m11;
// Center of mass
double xc=M10/M00;
double yc=M01/M00;
double A=(M20/M00)-xc*xc;
double B=2*((M11/M00)-xc*yc);
double C=(M02/M00)-yc*yc;
// Ellipse axis
double LL=sqrt(((A+C)+sqrt(B*B+(A-C)*(A-C)))/2)*2;
double LW=sqrt(((A+C)-sqrt(B*B+(A-C)*(A-C)))/2)*2;
//
M20=moments.mu20;
M02=moments.mu02;
M11=moments.mu11;
double theta=(atan2(2*M11,(M02-M20))/2)*(180/M_PI);
...
有估計3D旋轉的方式,如果你使用具有已知尺寸平板對象。你可以估計單應性矩陣。並將其分解爲旋轉和平移。例如,如這裏所述:http://hal.archives-ouvertes.fr/docs/00/17/47/39/PDF/RR-6303.pdf。