Inverse of a projective transformation doesn't work with imwarp
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Matteo Guidi
il 16 Mar 2018
Commentato: Matteo Guidi
il 3 Apr 2018
I have an image, and a general projective2d transformation.
I = imread('cameraman.tif');
imshow(I)
tform = projective2d([0.96119642,-0.44830978,-0.00025835048;0.14598410,1.6215615,6.6809996e-05;1496.0447,1046.4227,1]);
J = imwarp(I,tform);
figure
imshow(J)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/171317/image.png)
I want to apply the inverse of the transformation, to get back to the original image. So I do:
tInv = invert(tform);
K = imwarp (J, tInv);
imshow(K);
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/171318/image.png)
Why are the results not consistent? The final image is tilted. How can I fix that?
Thanks
0 Commenti
Risposta accettata
Ashish Uthama
il 2 Apr 2018
Modificato: Ashish Uthama
il 2 Apr 2018
Try this:
I = imread('cameraman.tif');
imshow(I)
tform = projective2d([0.96119642,-0.44830978,-0.00025835048;
0.14598410,1.6215615,6.6809996e-05;
1496.0447,1046.4227,1]);
[J, Jref] = imwarp(I, imref2d(size(I)),tform);
disp(Jref)
figure
imshow(J)
tInv = invert(tform);
K = imwarp (J,Jref, tInv);
imshow(K);
imref2d helps capture the full spatial location of the output image. Notice how the X/YWorldLimits are large numbers? This gets lost when you dont use spatial referencing - hence, in your post, the input you are giving the second imwarp is not strictly the mathematical output of the first imwarp call.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Geometric Transformation and Image Registration in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!