我有一个射影变换t
:
t = [0.646 0.110 9.339e-05;
0.0113 0.551 -1.004e-05;
307.649 1131.141 1]
当我将此转化为图像,然后这个变换的逆应用到所产生的图像,我期待回到第一张图像。但我不是!
tProj = projective2d(t);
img1 = imwarp(original,tProj);
figure(1); imshow(img1);
tProj2 = projective2d(inv(t));
img2 = imwarp(img1,tProj2);
figure(2); imshow(img2);
原始图像
原始图像的转换
原始图像的变换的逆变换
你非常接近。您还必须引用空间位置的对象(通过imref2d
对象),以帮助捕捉输出图像的完整空间位置。翻转图像时,指定这个作为一个额外的投入imwarp
。在此之上,还必须从第一imref2d
呼叫捕获从输出imwarp
对象。一旦你有了这些对象,你可以使用这个有逆翘曲,以获得原始图像回来。注意,你将有一些零填充由于超出原始图像的尺寸扭曲图像。
换一种说法:
t = [0.646 0.110 9.339e-05;
0.0113 0.551 -1.004e-05;
307.649 1131.141 1];
original = imread('https://i.stack.imgur.com/lZzdT.jpg');
tProj = projective2d(t);
[img1, ra] = imwarp(original, tProj); % New
figure(1); imshow(img1);
tProj2 = projective2d(inv(t));
img2 = imwarp(img1,ra,tProj2); % New
figure(2); imshow(img2);
这是输出图像反转扭曲图像后,我得到: