1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
% On ouvre l'image en niveaux de gris
I = imread('homographie.jpg');
I = I(:,:,1);
% On initialise la matrice résultat
I2 = zeros(size(I));
% Coins de l'image (déterminés à la main) dans l'original
A = [13 13 1; 19 100 1; 108 88 1; 99 -2 1];
% Coins de l'image rectifiée
B = [1 1 1; 1 size(I2,2) 1; size(I2,1), size(I2,2) 1; size(I2,1), 1 1];
% On estime la matrice d'homographie
H = inv(A'*A)*A'*B;
% On considère la transformée inverse
inv_H = inv(H);
% On remplit l'image rectifiée avec les bons pixels de l'image d'origine
for x = 1: size(I2,1)
for y = 1:size(I2,2)
uv = max(round([x,y,1] * inv_H),1);
u = uv(1); v=uv(2);
%le max(...,1) c'est pour éviter les coordonnées nulles.
I2(x,y) = I(u,v);
end
end
%On affiche le résultat
figure;
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(uint8(I2)); |
Partager