Why does transformation matrix compute varying results?
Show older comments
Hi there,
I am interested in computing the transformation matrix of a series of images using Matlab's estimateGeometricTransform().
I am using a set of 2D images where a dot is almost centered on a blank canvas. With each increment of my scene image, I compare the matched ORB features of my reference and respective Scene image. I have attached my reference and sample test images.
From Scene 1 to Scene 5 image, you can see the dot gradually moves up in the y-axis. So I anticipated to see my translation vector along the y-axis to increase while the other variable in the transformation matrix remain the same. However that is not the case. I have attached my transformation matrices when I compared each Scene image with the Reference image.
Although the dot moves forward in only y-axis, all variables in the computed transformation matrix are changing without a consistent pattern. What could be causing unstable output of the results?
3 Comments
Helia Sh
on 20 Nov 2018
KALYAN ACHARJYA
on 20 Nov 2018
Be Specific quaestion please? Read here
Helia Sh
on 20 Nov 2018
Answers (1)
What could be causing unstable output of the results?
Probably because there are infinite solutions. For example, any initial rotation of the circular black dot, followed by a y-translation, results in the same image and therefore would be a valid solution.
4 Comments
Helia Sh
on 20 Nov 2018
It is still not clear why the translation vectors of the transformation matrix are changing so dramatically (sometimes detecting shifts in a factor of 10)
But you've seen for yourself that the transformation matrices that you are getting do bring the dot successfully to the desired location, just as a direct translation along the y-axis would. That should make it very clear that there are many possible transformations that work. If we agree that there are multiple solutions for every position of the dot, then why do you expect to see a particular pattern in the solutions chosen by the code?
and oscillating between positive and negative
Because, for example, instead of translating forward in the y-direction by +10, I could equivalently translate by -10 and then perform a rotation of 180 degrees about the starting location of the dot. Both of these transformations would bring the dot to the same spot.
Alternatively, I could translate in the direction 10*[-1,-1]/sqrt(2) and then rotate 135 degrees to reach the same spot. There are infinite possible translation/rotation combinations that would work with many possibilities for the signs of the numbers.
Categories
Find more on Point Cloud Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!