Clear Filters
Clear Filters

How can I fix the error "The specified transformation matrix is not valid because it is singular to working precision."

11 views (last 30 days)
I want to do image registration and therefore calculate the transformation matrix with the following code.
[tform, inlierIdx, status] = estgeotform2d(matchedPointsDis,matchedPointsRef,'projective', MaxNumTrials=100000, MaxDistance=1);
But really often the following error occurs:
The specified transformation matrix is not valid because it is singular to working precision.
Does anyone knows what the problem is?
  2 Comments
Torsten
Torsten on 29 Nov 2022
Edited: Torsten on 29 Nov 2022
Most probably, your supplied matchedPointsDis and matchedPointsRef are such that a non-singular transformation T with T(matchedPointsDis) = matchedPointsRef cannot be found.
Ivan Herger
Ivan Herger on 29 Nov 2022
Yes that is possible. But is there a way to fix that error or do I have to accept that I can't registrate the two images?
Maybe the problem is that the algorithm can't find a model with these matchedPoints?
I use detectKAZEFeatures, extractFeatures and then matchFeatures to define the matchedPointsDis and matchedPointsRef.

Sign in to comment.

Answers (1)

Siraj
Siraj on 4 Sep 2023
Hi! It is my understanding that you have two images, and you are trying to register them. To my knowledge, the error that you are getting is because there are not enough inliners in “matchedPointsDis” and “matchedPointsRef”. One possible reason for such an error can also be that the inliner points are collinear.
To resolve this issue, try using some other feature extraction technique.
You can also check the “status” and see what is going wrong.
Refer to the following link to see what the “status” code signifies.https://www.mathworks.com/help/vision/ref/estgeotform2d.html#mw_f1265016-2bb6-4f73-a574-04fd68d80698
Hope this helps.

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!