J'aimerai un coup de main sur matlab, je suis débutant et je dois redresser une image. En effet, mon image est un plan avec des trous sur toutes la surface (il y en a 36 (6x6)). Et on voit le plan avec un angle depuis la verticale, du coup les trous ne sont plus des cercles mais des ellipses. J'aimerai alors redresser l'image pour la voir depuis la verticale et que mes trous redeviennent circulaires. J'ai le code suivant : clear all; close all; clc; traceRect = @(M) plot(M([1 2 4 3 1],1) ,M([1 2 4 3 1],2), 'r-*'); im = imread('image.png'); [m n rgb] = size(im); U = [38 35 ; 265 54 ; 40 426 ; 267 404]; X = [ 0 0 ; n 0 ; 0 m ; n m]; tform = maketform('projective',U,X); [B,xdata,ydata] = imtransform(im, tform);
subplot(1,2,1) imshow(im) hold on traceRect(U) subplot(1,2,2) imshow(B, 'XData', xdata, 'YData', ydata) hold on traceRect(X)
Et enfait c'est moi qui rentre les coordonnées de mes centres des ellipses aux 4 coins dans la variable U. J'aimerai que Matlab les trouve tout seul parce que j'aimerai qu'il réalise cela pour plusieurs photo (je m'occuperai de la boucle pour la lecture de plusieurs fichiers plus tard). Est-il possible aussi plutot que de prendre les 4 coins de le faire pour tous les centres? Le rendu après redressement sera meilleur non? Merci de votre aide.
Marsh Posté le 23-07-2013 à 18:35:32
Bonjour,
J'aimerai un coup de main sur matlab, je suis débutant et je dois redresser une image.
En effet, mon image est un plan avec des trous sur toutes la surface (il y en a 36 (6x6)). Et on voit le plan avec un angle depuis la verticale, du coup les trous ne sont plus des cercles mais des ellipses. J'aimerai alors redresser l'image pour la voir depuis la verticale et que mes trous redeviennent circulaires.
J'ai le code suivant :
clear all;
close all;
clc;
traceRect = @(M) plot(M([1 2 4 3 1],1) ,M([1 2 4 3 1],2), 'r-*');
im = imread('image.png');
[m n rgb] = size(im);
U = [38 35 ; 265 54 ; 40 426 ; 267 404];
X = [ 0 0 ; n 0 ; 0 m ; n m];
tform = maketform('projective',U,X);
[B,xdata,ydata] = imtransform(im, tform);
subplot(1,2,1)
imshow(im)
hold on
traceRect(U)
subplot(1,2,2)
imshow(B, 'XData', xdata, 'YData', ydata)
hold on
traceRect(X)
Et enfait c'est moi qui rentre les coordonnées de mes centres des ellipses aux 4 coins dans la variable U.
J'aimerai que Matlab les trouve tout seul parce que j'aimerai qu'il réalise cela pour plusieurs photo (je m'occuperai de la boucle pour la lecture de plusieurs fichiers plus tard).
Est-il possible aussi plutot que de prendre les 4 coins de le faire pour tous les centres? Le rendu après redressement sera meilleur non?
Merci de votre aide.
voici un exemple de l'image