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

14 次查看(过去 30 天)
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 个评论
Torsten
Torsten 2022-11-29
编辑:Torsten 2022-11-29
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 2022-11-29
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.

请先登录,再进行评论。

回答(1 个)

Siraj
Siraj 2023-9-4
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.

类别

Help CenterFile Exchange 中查找有关 Geometric Transformation and Image Registration 的更多信息

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by