matlab image processing toolbox : redressement d'image
Répondre à la discussion
Affichage des résultats 1 à 25 sur 25

matlab image processing toolbox : redressement d'image



  1. #1
    tchege

    matlab image processing toolbox : redressement d'image


    ------

    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
    Nom : image.png
Affichages : 349
Taille : 10,8 Ko

    -----

  2. #2
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Bonjour,
    Vous employez l'expression "redressement d'image" pour une opération qui n'est qu'une simple affinité : le rapport de visualisation en Y n'est pas le même que celui en X.
    Le redressement d'image est une opération beaucoup plus difficile.

    Si vous voulez de l'aide, décrivez votre algorithme. Le code, sauf cas particulier, est sans grand intérêt.
    Ceci dit, je trouve l'image très jolie comme ça.

  3. #3
    tchege

    Re : matlab image processing toolbox : redressement d'image

    On me demande de trouver un moyen de voir le plan que l'on voit sur la photo depuis la verticale, mais je ne vois pas comment faire.
    Je n'ai pas d'algo a proprement parlé, je suis débutant, je me suis inspiré de choses trouver sur le net.
    Je reformule m'a question j'aimerai changer la perspective de ma photo.
    merci pour ta réponse

  4. #4
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Bon, si le code indiqué est une copie d'un code trouvé sur le net, je ne peux rien pour toi.
    Si c'est un exercice je peux pas le faire à ta place.
    Par contre, si tu m'expliques ce que tu as fait, c'est à dire
    1- les données dont tu disposes
    2- le format de ces données
    3- les différentes opérations que tu effectues
    4- ce que tu veux obtenir

    Puis que tu me dises ce qui ne va pas, alors je pourrai d'aider.
    Je suis de la vieille école, et je n'imagine pas qu'on puisse écrire un programme sans savoir ce qu'on fait.
    Matlab est un logiciel de haut niveau, c'est un inconvénient majeur lors qu'on est débutant.

    Pour mémoire, un algorithme c'est la description d'une suite logique d'opérations élémentairse. Par exemple, si je veux faire une addition,
    1- j'écris le premier nombre sur une ligne
    2- l'écris le second nombre sur la ligne suivante, en prenant soin d'écrire les chiffres de même rand en-dessous l'un des autres
    3- j'additionne par colonne en commençant par la droite, au besoin, je me munis d'une table d'addition.
    4- si la somme de 2 chiffres est supérieure à 9, j'ai une retenue.
    5- etc.

  5. A voir en vidéo sur Futura
  6. #5
    tchege

    Re : matlab image processing toolbox : redressement d'image

    Je dispose de cette photo au format .png
    je rentre en U les coordonnées de 4 points et je leur donne une nouvelle destination en X.
    Et avec la fonction maketform('projective',U,X), je demande à matlab de mettre les point données en U sur X donc au coin de ma nouvelle image.
    J'aimerai avoir un moyen de trouver les points à mettre dans U automatiquement.
    Trouver les coins du plans ou bien les centres des ellipses, pour faire des transformations automatiques.
    Non ce n'est pas un exercice, un ami m'a demandé si je pouvais pas l'aider puisque lui débute sous matlab et que j'ai du temps de libre, donc j'ai décidé de me pencher sur son problème, ça m'amuse beaucoup de découvrir quelque chose de nouveau.

  7. #6
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Bon, je copie un bout de votre code, et vous expliquez ce que fait chaque instruction. Vous imaginez que je ne sais rien en informatique (ce qui est à peu vrai concernant Matlab) et vous expliquez tout en détail.
    Code:
    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);
    Pourquoi vous parlez d'ellipse, d'où sortez-vous les valeurs de U ?

  8. #7
    tchege

    Re : matlab image processing toolbox : redressement d'image

    ellipse : car avec l'angle de vue les trous ne sont plus des cercles mais des ellipses.
    la première ligne servira à tracer le rectangle pour voir la transformation.
    la deuxième sert à lire le fichier .png nommé ici image
    la deuxième de connaitre les dimension de l'image que l'on a appelé im à la ligne d'avant.
    U sont les coins de mon rectangle de base avant transformation (par exemple centre des trous aux 4 coins ou des angles du plan) ces valeurs peuvent dépendre chez vous en effet j'ai juste utilisé un curseur pour avoir des idées de valeurs pour un test. (voila celles utilisés pour le test ci-dessous U = [38 37 ; 509 37 ; 38 278 ; 509 278])
    X les valeurs de sortie pour le rectangle
    maketform permet de faire la transformation de projection
    et la dernière ligne pour ensuite pouvoir sortir les resultats.
    sur la photo suivante voila ce que j'obtiens mais je rentre moi meme les valeurs de U.
    j'aimerai que ce soit trouver automatiquement détection d'angle j'imagine.
    ensuite il faudra que je vois pour obtenir un meilleur rendu mais ça on verra plus tard.
    Images attachées Images attachées  

  9. #8
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    D'accord, si votre image représente un paysage (avec des arbres) ou un portrait (avec un visage), il n'y aura plus d'ellipse. Donc parler d'ellipse ici n'a pas d'intérêt.
    Que fait maketform ?
    Cette fonction prend un rectangle avec ce qu'il contient, en l'occurrence l'image, un rectangle de dimension nxm et "tire dessus" pour le faire rentrer dans le quadrilatère que vous appelé U.
    Si vous voulez que votre portrait ressemble un monstre avec une tête 2 fois plus haute que large, il suffira que votre rectangle destination soit 2 fois plus haut que large.
    Si vous ne connaissez pas ce rapport d'affinité, vous ne pourrez jamais le faire automatiquement.

  10. #9
    tchege

    Re : matlab image processing toolbox : redressement d'image

    Mon image représente un plan avec des trous, donc avec l'angle de vu on les voit comme des ellipses (vous ne voyez pas mes images en pièces jointes)
    U est mon rectangle de base, ici mon plan que l'on voit sous un certain angle
    et maketform le transforme en vue de dessus dans le rectangle appelé X

  11. #10
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Oh, mais si, j'ai tout vu.
    On pourrait imaginer un système automatique.
    Votre problème est une simple question d'affinité.
    Oubliez l'angle de prise de vue, sauf naturellement si ça fait partie des données du problème.
    Pour votre information en photographie aérienne, il faut 9 paramètres pour redresser une image. Dans votre cas, un seul suffit.
    Si l'explication de maketform vous oriente dans cette direction d'angle de prise de vue, c'est vraiment dommage.

  12. #11
    leon1789

    Re : matlab image processing toolbox : redressement d'image

    Le problème est plus compliqué que l'application d'une affinité : en effet,
    en perspective on voit la profondeur des trous,
    alors qu'en vision verticale la profondeur des trous n'apparaît pas.
    Une affinité (qui est une dilatation particulière suivant un axe fixé) ne fera pas disparaître la hauteur des trous.

  13. #12
    tchege

    Re : matlab image processing toolbox : redressement d'image

    alors comment peut-on faire?

  14. #13
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Citation Envoyé par leon1789 Voir le message
    Le problème est plus compliqué que l'application d'une affinité : en effet,
    en perspective on voit la profondeur des trous,
    alors qu'en vision verticale la profondeur des trous n'apparaît pas.
    Une affinité (qui est une dilatation particulière suivant un axe fixé) ne fera pas disparaître la hauteur des trous.
    Où vois-tu que les trous ont une profondeur ?
    Selon la photo, il s'agit d'une image plane représentant des ellipses.
    Apparemment, on sait qu'il s'agit de cercles, donc, on essaye d'avoir une phot représentant des cercles et pas forcément la section horizontale d'une série de cylindres.
    Réflexion faite, ta réponse n'est qu'un gag.

  15. #14
    tchege

    Re : matlab image processing toolbox : redressement d'image

    si sa réponse à un sens car c'est bien des trous fait dans un plan de 1,5mm d'épaisseur (donc de petits cylindres).
    Donc on peut voir leur épaisseur.

  16. #15
    leon1789

    Re : matlab image processing toolbox : redressement d'image

    Citation Envoyé par Dlzlogic Voir le message
    Où vois-tu que les trous ont une profondeur ?
    Selon la photo, il s'agit d'une image plane représentant des ellipses.
    Tu ne vois pas l'épaisseur grise apparaissant dans les ellipses ?
    Nom : Image12.png
Affichages : 338
Taille : 2,2 Ko

    Citation Envoyé par Dlzlogic Voir le message
    Réflexion faite, ta réponse n'est qu'un gag.
    Sacrée réflexion en effet.

  17. #16
    leon1789

    Re : matlab image processing toolbox : redressement d'image

    Citation Envoyé par tchege Voir le message
    alors comment peut-on faire?
    Il faut peut-être recomposer entièrement l'image...

    Les ellipses redeviennent des cercles de rayon R égal à la longueur du grand axe (horizontal) des ellipses.
    Notons r la longueur du petit axe (vertical) des ellipses,
    notons L la largeur et h la hauteur du rectangle incliné (tel qu'on le voit sur ton image initiale),
    et enfin notons H la hauteur du rectangle vu verticalement. Il faut déterminer H et pour cela je propose d'admettre une relation du genre R/r = H/h , ce qui donne H = h.R/r

    Pour dessiner la vue verticale, tracer un rectangle de largeur L et de hauteur H, et y placer 6*6 cercles de rayon R.

  18. #17
    tchege

    Re : matlab image processing toolbox : redressement d'image

    Il faut peut-être recomposer entièrement l'image
    Oui mais ça ne sera plus mon image de base, il n'existe pas un moyen de faire une correction de perspective?
    Garder la même image mais la voir depuis la verticale?

  19. #18
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Citation Envoyé par leon1789 Voir le message
    Tu ne vois pas l'épaisseur grise apparaissant dans les ellipses ?
    Pièce jointe 224638


    Sacrée réflexion en effet.
    Essayons d'être rigoureux.
    Une image 2D ne pourra jamais donner qu'une image 2D, et pas un objet 3D.
    Si la photo correspond à celle d'une série de tubes, aucune transformation simple ne pourra la transformer en image 3D.
    La préoccupation de notre ami consiste à avoir une photo, probablement pour l'impression, avec Matlab, représentant des tubes bien ronds. Si c'est autre-chose, je pense qu'il l'aurait dit dès le début - les images 3D sont à la mode - donc, je maintiens ce que j'ai dit.

    Par contre, si tu réussis à créer un objet 3D à partir d'une image 2D, je suis sûr que ça intéressera des tas de gens.

    PS Après lecture d'autres réponses, je pense qu'on rève.
    Dernière modification par Dlzlogic ; 24/07/2013 à 21h29.

  20. #19
    tchege

    Re : matlab image processing toolbox : redressement d'image

    Après lecture d'autres réponses, je pense qu'on rève.
    Donc tu penses que ce n'est pas possible de corriger la perspective pour voir mon plan depuis la verticale?
    Ce n'est pas pour l'impression je me suis renseigné, c'est pour analyser les positions des centres, c'est pourquoi on à besoin de voir l'image depuis la verticale pour avoir des cercles et trouver leurs centres.

  21. #20
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Bon, là, je vais essayer d'être sérieux.
    Une photo est la projection (perspective) sur un plan d'un objet. Les informations que l'on peut en tirer n'ont que 2 dimensions, X et Y.
    Si on prend 2 photos du même objet à partir de 2 points de vue différents, on peut calculer pour chaque point la position (X,Y,Z), c'est à dire 3D.
    Ceci est une opération compliquée mais couramment utilisée.
    En d'autres termes, à partir de 2 photos, mêmes prises avec tout le soin nécessaire, il faut bien connaitre ces méthodes pour espérer en tirer quelque-chose. Pour plus de détails, voir "photogramétrie".
    Donc, @ tchege, il vaudrait mieux que vous décriviez avec précision votre problème. Là on est vraiment entrain de diverger.

  22. #21
    tchege

    Re : matlab image processing toolbox : redressement d'image

    Donc, @ tchege, il vaudrait mieux que vous décriviez avec précision votre problème. Là on est vraiment entrain de diverger.
    On m'a demandé si je pouvais trouver un moyen, à partir d'une photo de plan comportant des trous vu avec un angle (de 40° par exemple) de la transformer pour voir ce plan depuis la verticale, et donc obtenir des cercles pour les étudier (positions des centres).
    On a des ellipses (du coup j'en reviens aux ellipses, c'est comme ça qu'on m'a parlé du problème quand on m'a demandé mon aide) et je veux obtenir des cercles. Si je ne suis toujours pas clair je pourrai essayer de le reformuler.
    En tout cas tout ce que tu me racontes commence vraiment à m’intéresser et je suis entrain de remercier mon ami pour m'avoir mis sur son problème.
    Merci du temps que tu y passes aussi.

  23. #22
    leon1789

    Re : matlab image processing toolbox : redressement d'image

    Citation Envoyé par Dlzlogic Voir le message
    Si la photo correspond à celle d'une série de tubes, aucune transformation simple ne pourra la transformer en image 3D.
    Si la photo correspond à celle d'une série de tubes, aucune transformation simple ne pourra la transformer en image 3D.
    qui a parlé d'image 3D ???

    Citation Envoyé par Dlzlogic Voir le message
    Par contre, si tu réussis à créer un objet 3D à partir d'une image 2D, je suis sûr que ça intéressera des tas de gens.
    Effectivement, tu diverges... Force est de constater que tu fais maintenant preuve de ta mauvaise foi habituelle.




    @tchege
    Bien sûr que c'est possible de créer l'image verticale à laquelle nous pensons (mais ce n'est pas un simple problème d'affinité comme le disait Dlzlogic, qui maintenant dit que le problème n'est plus soluble...).

    On peut créer ton image verticale, mais pas uniquement avec ton image initiale. Ce qui te sauveras, à mon avis, c'est le fait que tu saches qu'il s'agit de cercles et que le dessin en perspective a été visiblement obtenu par un "basculement en avant". C'est ce que je proposais ici http://forums.futura-sciences.com/pr...ml#post4559908



    Je m'arrête là car je sais comment les choses vont dégénérer avec Dlzlogic. Bonne chance !

  24. #23
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Je constate que Léon connait parfaitement ce problème, je laisse la main.

  25. #24
    tchege

    Re : matlab image processing toolbox : redressement d'image

    Ok pas de dispute les gars.
    Donc Léon, toi tu proposes de partir du centre des 36 ellipses et en fonction de ces postions refaire un plan avec des cercles qui auront pour centre ces positions et le même diamètre que la largeur des ellipses, c'est bien ça?

  26. #25
    Dlzlogic

    Re : matlab image processing toolbox : redressement d'image

    Bon, je fais parler mon imagination.
    Imaginons que le but de l'opération soit d'avoir une image plane dans le but de calculer et/ou vérifier les distances des différents tubes.
    Si c'est cela, j'ai un outil qui réalise cela. Il a été fait pour réaliser des redressements de façades. Là le terme "redressement" est employé à juste titre : soit une photo de façade, on veut en obtenir une image plane, c'est à dire une projection sur un plan vertical, et permettre des mesures.
    Mais, je rêve, Léon connait tout cela bien mieux que moi.

Discussions similaires

  1. Génèrer un signal PWM avec une toolbox Matlab pour un dsPIC 30F4013
    Par invite55caac64 dans le forum Électronique
    Réponses: 2
    Dernier message: 02/02/2011, 21h19
  2. Matlab : Symbolic Math Toolbox ?
    Par invite4ba7893d dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 25/12/2010, 20h13
  3. [MATLAB] Segmentation d'image + edition d'une matrice d'image
    Par invitef5d502cc dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 04/11/2009, 12h24
  4. Image processing, Phase correlation
    Par inviteb9c2ac19 dans le forum Électronique
    Réponses: 0
    Dernier message: 12/03/2007, 17h53
  5. matlab et l'utilisation d' "image processing toolbox"
    Par invite3df9f63b dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 07/07/2005, 22h02