OpenCV Q&A Forum - RSS feedhttp://answers.opencv.org/questions/OpenCV answersenCopyright <a href="http://www.opencv.org">OpenCV foundation</a>, 2012-2018.Mon, 14 May 2018 06:33:08 -0500Aruco giving weird rotationshttp://answers.opencv.org/question/191502/aruco-giving-weird-rotations/I'm doing a simple aruco tracking on MATLAB, using mexopencv package.
Currently I'm using an overhead camera looking down on a 2D plane, where my aruco marker lies.
I want to see if the orientation accuracy of aruco markers are good or not. To do this, I plan to see if the rotation of 90, 180, 270 degrees on a 2D plane gives accurate results (ideally, I want to see [0,0,90],[0,0,180],[0,0,270]). I have recorded `rvecs` of the aruco marker at its origin position, after 90 degrees, 180 degrees, and 270 degrees rotation on the 2D plane. I turned the `rvecs` into a 3x3 matrix using `cv.Rodrigues` function. Hence,
- M1 = 3x3 matrix of rvecs at origin position.
- M2 = 3x3 matrix of rvecs after 90 degrees rotation.
- M3 = 3x3 matrix of rvecs after 180 degrees rotation.
- M4 = 3x3 matrix of rvecs after 270 degrees rotation.
I believe these matrices are relative to the camera frames, therefore essentially being orientation matrix. To find the rotation matrix between M1 and M2, I inversed M1, and then multiplied M2 on it (i.e. M2 * M1^-1). I used `cv.Rodrigues` on the output matrix to achieve the angles again.
However, I'm getting some inconsistent results, especially on 180 degrees rotation as
- 90 degrees rotation: cv.Rodrigues(M2*M1^-1) to show [-0.6,-4,90.3] degrees, this isn't too bad
- 180 degrees rotation: cv.Rodrigues(M3*M1^-1) to show ***[125,-4,126] degrees**, **it doesn't seem right***
- 270 degrees rotation: cv.Rodrigues(M4*M1^-1) to show [0.9,3,-90] degrees, this isn't too bad either,
Is there something that I'm doing it wrong?
Thanks
Mon, 14 May 2018 06:33:08 -0500http://answers.opencv.org/question/191502/aruco-giving-weird-rotations/