2013-08-18 77 views
-3

我是opencv的新手,但願意學習。我想知道下面描述的東西是否可能。匹配對象的3D旋轉

相機在黑暗的背景上看到白色鉛筆(管,圓柱等)。我想在3D空間中提取對象的旋轉並在我的程序中使用它。它不必非常準確或快速(甚至可達到10fps)。

我很明顯在尋找解決方案,但對於一些指導:看什麼,看什麼,這個過程是如何被專業人士調用的。

回答

1

由於幾何模糊不可能從一個任意物體的圖像中提取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