2013-02-13 4 views
1

J'ai une photoMatlab: transformations projectives

enter image description here

et je veux obtenir la transformation projective en le déplaçant en arrière comme ceci:

enter image description here

mais le seul résultat que je peux voir est-ce:

enter image description here

et je ne trouve pas mon erreur. Mon code (A - image que je veux transformer):

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

Répondre

0

Il semble que vous avez les « directions » de vos axes mélangés. Essayez cette application:

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

Pour le fond noir vous pouvez le corriger en réglant un paramètre/valeur paire sur imtransform

(Malheureusement, je ne suis pas un ordinateur avec Matlab, donc je ne peux pas garantie l'exactitude de la cartographie.Je vais vérifier demain et le mettre à jour si elle est fausse)

+0

Je ne veux toujours pas je veux. Cependant, quand je compile votre code dans ma tête, matlab me donne ce que j'attends et avec mon code - pas ... – myname