首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将逆变换应用于变换后的图像并不能给出原始图像。

将逆变换应用于变换后的图像并不能给出原始图像。
EN

Stack Overflow用户
提问于 2019-02-07 16:43:25
回答 1查看 247关注 0票数 3

我有一个射影变换t

代码语言:javascript
复制
t = [0.646     0.110    9.339e-05;
     0.0113    0.551    -1.004e-05;
     307.649   1131.141         1]

当我将这个转换应用于一个图像,然后将这个转换的逆变换应用于生成的图像时,我希望返回到第一个图像。但我不是!

代码语言:javascript
复制
tProj = projective2d(t);
img1 = imwarp(original,tProj);
figure(1); imshow(img1);

tProj2 = projective2d(inv(t));
img2 = imwarp(img1,tProj2);
figure(2); imshow(img2);

原始图像

原图变换

原始图像变换的逆变换

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-08 02:07:09

你们很亲密。还必须引用空间位置对象(通过imref2d对象)以帮助捕获输出图像的全部空间位置。在倒置图像时,可以将其指定为imwarp中的附加输入。在此基础上,还必须从第一个imref2d调用中捕获输出imwarp对象。一旦你有了这些对象,你就可以用它来扭曲反方向,得到原来的图像。请注意,您将有一些零填充,因为扭曲的图像延伸超过了原始图像的尺寸。

换言之:

代码语言:javascript
复制
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);

这是反转扭曲图像后得到的输出图像:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54578204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档