【问题标题】:Applying inverse transformation to a transformed image does not give original将逆变换应用于变换后的图像不会给出原始图像
【发布时间】:2019-07-01 20:34:08
【问题描述】:

我有一个投影变换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);

原图

原图变换

原图变换的逆变换

【问题讨论】:

    标签: image matlab image-processing computer-vision


    【解决方案1】:

    你很亲密。您还必须引用空间位置对象(通过imref2d 对象)以帮助捕获输出图像的完整空间位置。在反转图像时,您将其指定为imwarp 的附加输入。除此之外,您还必须从第一个 imwarp 调用中捕获输出 imref2d 对象。一旦你有了这些对象,你就可以使用它来扭曲反向以获取原始图像。请注意,由于扭曲的图像超出了原始图像的尺寸,您会有一些零填充。

    换句话说:

    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);
    

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

    【讨论】:

      猜你喜欢
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2018-09-08
      相关资源
      最近更新 更多