1

我有一张图片

在此处输入图像描述

我想通过像这样将其移回来获得投影变换:

在此处输入图像描述

但我能看到的唯一结果是:

在此处输入图像描述

我找不到我的错误。我的代码(A - 我要转换的图片):

p=0.25;
a=p*rows(A);

U = @(m, n) ([1 1; 1 m; n 1; n m]);
V = @(m, n) ([1+a 1+a; 1-a m-a; n-a 1+a; n+a m-a]);


D=transform(A, U(rows(A), cols(A)),...
               V(rows(A), cols(A)),...
               'projective');
imshow(D)

function B=transform(A,U,V,type)
[m n] = size(A)
tform = maketform(type,U,V);  
B = imtransform(A,tform,'size',[m n]);
4

1 回答 1

0

似乎您的轴的“方向”混淆了。试试这个映射:

V = @(m, n) ([1+a 1-a; 1+a m+a; n-a 1+a; n-a m-a]);

对于黑色背景,您可以通过设置一些参数/值对来修复它imtransform

(可惜我不是用matlab的电脑,所以不能保证映射的正确性,我明天检查一下,如果不对的话更新一下)

于 2013-02-13T22:09:20.127 回答