decomposeEssentialMat() always return normalized T (Bug #3423)


Added by Yoshinari Kameda over 11 years ago. Updated about 11 years ago.


Status:Cancelled Start date:2013-12-06
Priority:Normal Due date:
Assignee:Yoshinari Kameda % Done:

0%

Category:calibration, 3d
Target version:3.0
Affected version:branch 'master' (3.0-dev) Operating System:Linux
Difficulty: HW Platform:x86
Pull request:

Description

Hi,

It seems decomposeEssentialMat() always returns normalized T (|T|=1.0).
T should be a transition vector, so it should have some proper length, right?
I have checked it only at python.
(It happens at recoverPose() too.)

R0,R1,T = cv2.decomposeEssentialMat(E)

R0,R1 seems to be fine.
Attached is my quick code to check that. Ple

---FYI---
I got the code on 2013/11/15 by
git clone git://github.com/Itseez/opencv.git


recoverPose_debug00.py - script to check the function behavior (1.3 kB) Yoshinari Kameda, 2013-12-06 06:24 pm

recoverPose_debug00.txt - output of the script (669 Bytes) Yoshinari Kameda, 2013-12-06 06:24 pm


History

Updated by Nikita Manovich about 11 years ago

Hi,

Thank you for the bug report. Could you please help us to investigate and fix the problem? If you can prepare a pull request to fix the problem it will help us a lot. Please look at the article: http://www.code.opencv.org/projects/opencv/wiki/How_to_contribute

  • Assignee set to Yoshinari Kameda
  • Status changed from New to Open

Updated by Bo Li about 11 years ago

Hi this is not a problem. By decomposing essential matrix, you are not able to recover the full translation but only the direction. I've sent a pr to update the doc. For the code attached: your generated E is scaled by the length of t. However, in practice when you estimate an essential or fundamental matrix, you don't have scale.

  • Status changed from Open to Cancelled

Also available in: Atom PDF