使用OpenCv函数cvPosit的旋转角度矩阵

时间:2013-06-13 14:26:00

标签: opencv rotation estimation angle

我正在研究3D姿势估算系统。我使用OpenCVs函数cvPosit来计算旋转矩阵和平移向量。

我还需要旋转矩阵的角度,但似乎没有算法正常工作。

函数cv :: RQDecomp3x3(),它是“opencv:如何从POSIT旋转矩阵获得偏航,滚动,俯仰”主题的答案,因为该函数需要投影矩阵的3x3矩阵。

此外,我尝试使用以下链接中的算法,但没有任何效果。

visionopen.com/cv/vosm/doc/html/recognitionalgs_8cpp_source.html

stackoverflow.com/questions/16266740/in-opencv-how-to-get-yaw-roll-pitch-from-posit-rotation-matrix

quad08pyro.groups.et.byu.net/vision.htm

stackoverflow.com/questions/13565625/opencv-c-posit-why-are-my-values-always-nan-with-small-focal-lenght

www.c-plusplus.de/forum/308773-full

我使用了最常见的Posit教程和Blender的自己的例子,因此我可以渲染图像来检索图像点并知道确切的角度。 Blender中物体的Z轴旋转了10度 - 由于Blender和OpenCV之间轴的变化,我检查了所有3轴的所有度数。

double focalLength = 700.0;
CvPOSITObject* positObject;
std::vector<CvPoint3D32f> modelPoints;
modelPoints.push_back(cvPoint3D32f(0.0f, 0.0f, 0.0f));  
modelPoints.push_back(cvPoint3D32f(CUBE_SIZE, 0.0f, 0.0f));
modelPoints.push_back(cvPoint3D32f(0.0f, CUBE_SIZE, 0.0f));
modelPoints.push_back(cvPoint3D32f(0.0f, 0.0f, CUBE_SIZE)); 

std::vector<CvPoint2D32f> imagePoints;
imagePoints.push_back( cvPoint2D32f( 157,372) );
imagePoints.push_back( cvPoint2D32f(423,386 ));
imagePoints.push_back( cvPoint2D32f( 157,108 ));
imagePoints.push_back( cvPoint2D32f(250,337));

// Moving the points to the image center as described in the tutorial
for (int i = 0; i < imagePoints.size();i++) {
    imagePoints[i] = cvPoint2D32f(imagePoints[i].x -320, 240 - imagePoints[i].y);
}

CvVect32f translation_vector = new float[3];    
CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER,iterations, 0.1f);
positObject = cvCreatePOSITObject( &modelPoints[0], static_cast<int>(modelPoints.size()));
CvMatr32f rotation_matrix = new float[9];   
cvPOSIT( positObject, &imagePoints[0], focalLength, criteria, rotation_matrix, translation_vector );

algorithms to get angles...

我已经尝试从弧度到度和顺时针计算结果但是我已经使用来自OpenCV的cvPosit的旋转矩阵得到了不好的结果。我还改变了矩阵格式以检查格式错误......

我使用了简单的旋转矩阵 - 就像只旋转x轴,y轴和z轴一样,并且有些算法工作。 cvPosit的旋转矩阵不适用于该算法。

我感谢任何支持。

0 个答案:

没有答案