MATLAB:投影变换

时间:2013-02-13 17:46:00

标签: matlab transformation projective-geometry

我有一张照片

enter image description here

我希望通过像这样转移它来获得投射变换:

enter image description here

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

enter image description here

我无法找到我的错误。我的代码(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]);

1 个答案:

答案 0 :(得分:0)

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

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

对于黑色背景,您可以通过在imtransform

上设置一些参数/值对来修复它

(不幸的是我不是带有matlab的计算机,所以我不能保证映射的正确性。明天我会检查它并在错误的情况下更新它)