# Inverse of a projective transformation doesn't work with imwarp

18 ビュー (過去 30 日間)
Matteo Guidi 2018 年 3 月 16 日
コメント済み: Matteo Guidi 2018 年 4 月 3 日
I have an image, and a general projective2d transformation.
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)
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);
Why are the results not consistent? The final image is tilted. How can I fix that?
Thanks

サインインしてコメントする。

### 採用された回答

Ashish Uthama 2018 年 4 月 2 日

Try this:
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.
##### 1 件のコメント表示非表示 なし
Matteo Guidi 2018 年 4 月 3 日
Perfect, that was exactly what I was looking for.
Thank you very much!

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!

Translated by