begin process at 2008 07 19 16:48:47
1 212 905 membres
227 nouveaux aujourd'hui
14 165 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DÉTECTION DES DROITES DANS UNE IMAGE : HOUGH


Information sur la source

Catégorie :Graphique Classé sous : hough, transformée, détection, image, cmugraphics Niveau : Débutant Date de création : 17/07/2007 Date de mise à jour : 08/08/2007 08:38:43 Vu / téléchargé: 6 527 / 6 559

Note :
Aucune note

Commentaire sur cette source (36)
Ajouter un commentaire et/ou une note


Description

Ce programme est une application direct de la transformée de Hough.
Le but de ce programme est de détecter les principales droites de l’image.
Le principe de la transformée de Hough est développé dans la source :

Le traitement des images est le suivant:
1) À partir de l'image en niveaux de gris on calcule le gradient à partir du filtre de Sobel.
2) On binarise l'image avec un seuil choisi par l'utilisateur.
3) On calcule la transformée de Hough de l'image
4) On binarise cette transformée avec un second seuil choisi par l'utilisateur
5) On reconstruit l'image en calculant la transformée de Hough inverse.

Conclusion

Il faut faire attention de traiter des images de taille 200 px par 200 px. Il n'y a pas de protections au cas où ce critère ne soit pas respecté.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

08 août 2007 08:38:43 :
Voila les premières modifications apportées: J'ai ajouté la couleur. J'ai optimisé le seuillage de la transformée de Hough. (Tous les pixels se touchant après seuillage sont transformée en 1 pixel équivalent. C'est une sorte d'érodé ultime. Et pour répondre à Kirua, j'ai mis deux exécutables: 1 pour la TH à partir de l'image de seuillé du gradient (exe V1) et 1 pour la TH à partir de tous les points de l'image initial pondéré par les valeurs du gradient de l'image.
  • signaler à un administrateur
    Commentaire de Kirua le 19/07/2007 00:22:01

    Juste pour être sûr d'avoir compris, parce que je n'ai jamais fait de traitement d'image. Est-ce que ça fonctionne comme ça:

    * tu appliques l'opérateur gradient (Sobel) à l'image
    * tu binarise au moyen d'un seuil, pour isoler les contours
    * pour chaque point "vrai" (blanc) de l'image, tu traces la sinusoïde de Hough associée dans une nouvelle image, en incrémentant la brillance des pixels
    * tu utilises un seuil pour binairser l'image résultante, ce qui te donne quelques points blancs
    * tu appliques l'inverse de la transformée de Hough à ces points-là, pour obtenir des droites dans l'image original

    Correct?

    Je sais que ça ressemble fort à la description que tu fais, mais le doute subsiste en moi au niveau de la transformée directe de Hough. J'aurais pas fait comme ça, mais ça a l'air fichtrement plus simple que de calculer des points de concurrence de millions de sinusoïdes e façon analytique ^^.

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 19/07/2007 08:24:07

    Salut Kirua

    Tu as tout juste, c'est exactement ce que je fais.

    Je ne sais pas si cela existe de calculer une transformée de Hough sur une image en niveau de gris. Sans doute, mais il faudrait attribuer des poids différents pour chaque valeur de niveau de gris pour espérer trouver les droites de l'image.
    En calculant le gradient en prétraitement, on met directement en valeur les contours de l'image ce qui facilite grandement la détection de droite et améliore la vitesse du traitement.

    Ca fait des figures assez artistique la transformée direct de Hough?

  • signaler à un administrateur
    Commentaire de Kirua le 19/07/2007 12:41:46

    Ca m'a bien intéressé ton truc, alors me suis amusé avec matlab hier soir. J'ai programmé un filtre de Sobel, c'est super amusant ^^ (*kirua s'amuse*). Ca donne un effet de crayonné sur les photos :).

    Je vais me renseigner sur la transformée de Hough. J'ai déjà lu un article descriptif sur wikipdia, mais il n'y a pas de développement mathématique.

    Tu connais d'autres filtres ou traitements qui pourraient être amusants à tester? Ca m'intéresserait de trifatouiller avec tout ça :).

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 19/07/2007 13:21:49

    Ouai c'est sympas matlab pour ça. On peut faire ce genre de chose assez rapidement sans ce prendre la tête.

    Dans le même genre je peux te proposer le filtre de Prewitt ou de Roberts. Il s'applique comme le filtre de sobel.
    Un autre filtre sympa à tester c'est le filtre repoussage:
    [-2,-1,0;-1,1,1;0,1,2]. Il donne des choses assez surprenantes.

    Ya bien sure tous les filtres classiques: moyenne, médian, laplacien, pseudo filtre...
    Le pseudo filtre est pas mal du tout, il crée un certain relief dans l'image.( [0,-1,0;-1,2,0;0,0,0] + 128 )

    Photoshop propose plein d'autre filtres mais je ne sais pas trop comment ils sont construit. Si quelqu'un à de la doc sur ces filtre, je suis preneur.

    Ammuse toi bien Kirua

  • signaler à un administrateur
    Commentaire de Kirua le 19/07/2007 18:20:27

    Je viens de tester tout ça, c'est assez amusant. Le filtre de Prewitt marche bien!

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 23/07/2007 09:50:55

    >Kirua: "le filtre de Prewitt marche bien". Cela dépend quels critères tu te fixes pour dire ça.
    D'un point de vue esthétique c'est vraiment subjectif, donc tu as sûrement raison. Cependant, d'un point de vue du traitement de l'image, le filtre de Sobel est bien plus utilisé que celui de Prewitt. (90% des fois on utilisera Sobel). Le gradient obtenu est beaucoup plus facilement exploitable puisque la différence entre les niveaux de gris est bien plus marquée.

  • signaler à un administrateur
    Commentaire de aquamanfx le 24/07/2007 17:42:57

    Bonjour,
    Ayant fait ma thèse en imagerie numérique sur la reconnaissance de forme et notamment sur transformée de Hough (TH), je ne resiste pas quand je vois des discussions sympa comme celles ci.
    Tout d'abord, pour KIRUA qui souhaite un peu plus de mathématiques; je le renvoie à cette excellente référence : http://irevues.inist.fr/bitstream/2042/2334/3/02.PDF+TEXTE.pdf , qui résume et formalise assez bien les principe de base des différentes TH (1 à m et m à 1).
    Sans rentrer dans tous les détails et avancées récentes, aujourd'hui les principaux problèmes tournent généralement autour du choix des maxima et des pas de discrétisation dans l'espace d'accumulation de Hough.
    Pour le filtrage, si vous avez du temps(!), -c'est un sujet également passionnant- je vous recommande cette page : http://perso.enst.fr/~maitre/BETI/Filtrage.html qui synthétise assez bien quels filtres utiliser selon ce que l'on souhaite chercher.
    Si vous avez des questions, n'hésitez pas!

    Il faudra un de ces jours que je mette au propre les KM de code que j'ai fait sur ces sujets pour en faire profiter les autres sur ce forum où je ne fais que passer et regarder; faute de temps...
    Je n'ai pas eu le temps de regarder le source dans le détail, mais j'y apporterai ma contribution! Promis!
    Bonne soirée

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 26/07/2007 08:42:07

    Salut AQUAMANFX

    Merci à toi pour tous les liens, surtout pour celui des filtres. Il est très complet et je ne connaissais pas tous les filtres présentés. Je regarderai un peu plus précisement.

    Sinon c'était quoi le sujet de ta thèse? Ta reconnaissance de forme était exclusivement basé sur la TH?
    Parce que j'aimairai bien voir tourner un vrai algo bien optimisé.
    A+      

  • signaler à un administrateur
    Commentaire de aquamanfx le 26/07/2007 19:08:31

    Le sujet de ma thèse était "Etude d'algorithmes pour la fonction détection d'obstacles pour les vols en hélicoptères" (qui malheureusement est confidentielle pour 10 ans...).
    Dans une partie, j'ai utilisé deux TH pour retrouver dans un espace 3D de points des câbles suspendus; une pour détecter les droites et une autres pour trouver des chaînettes (détail de l'algo ici: www.wipo.int/pctdb/en/wo.jsp?IA=WO2007010113&wo=2007010113&DISPLAY=DOCS ). Pour les droites le principal souci était de trouver les bons seuils et les bons pas de discrétisation. Cette partie n'étant pas la plus coûteuse en temps de calculs le plus dur était de détecter les chaînettes pour tendre vers du temps réel.
    Je ne peux sur cette partie de ma thèse (à mon grand regret) que divulguer le principe général de l'algo qui a été protégé par mon entreprise dans le cadre d'un système puisque le brevet est publié (je suis contre les brevets qui protègent du code uniquement que ce soit dit! ^^) mais pas les sources.

    Par contre comme je disais plus haut il faudra que je fasse passer sur le site mes algos de TH optimisées pour les droites et les ellipses faits avec glut et opengl. Mais avant il faut que je les commente bien mieux sinon il seront inexploitables! Je vais profiter de mes vacances dans quelques semaines pour m'y atteler, ça fera une meilleure base de discussion. En vrac, pour jeter les bases de l'optimisation, il faut avoir une idée de ce que l'on cherche; c'est à dire as t on une idée du nombre de droites potentielles à trouver ?(pour détecter les lignes d'un cours de tennis par exemple!) Si oui, on fait des heuristiques pour ne pas avoir à reparcourir tout le tableau des max, sinon il faut rentrer dans des algo de recherche de max.
    A+

  • signaler à un administrateur
    Commentaire de Kirua le 31/07/2007 16:48:43

    Super, merci pour les liens :).

    Dès septembre, j'aurai dans le cadre de mes études un cours sur les signaux et systèmes, ce qui devrait m'amener un pas plus loin dans les notions de FFT, filtres continus/discrets 1D/2D, cool cool ^^.

    Je vais potasser ça, j'ai qq jours libres :).

    C'est génial ton sujet de thèse, ça me botterait bcp de travailler dans ce genre de domaines. Tu as fait quoi comme études et où ça? Je fais des maths appliquées à l'UCL.

  • signaler à un administrateur
    Commentaire de Kirua le 04/08/2007 17:05:18

    Youp,

    je suis en train de lire le document http://irevues.inist.fr/bitstream/2042/2334/3/02.PDF+TEXTE.pdf, et à la page 5 ils proposent un truc intéressant: plutôt que de décider d'un seuil pour le filtre sobel et d'appliquer la TH aux points conservés (réputés points de contour), une idée est d'appliquer une TH directement après le sobel (sans seuil), mais avec une pondération, ie: on dessine les sinusoides de hough plus ou moins "fort" selon que le gradient au niveau du point considéré était lui-même plus ou moins fort.

    Tu as fait des essais dans ce sens? Je serais curieux de savoir ce que ça donne ^^.

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 06/08/2007 08:40:54

    Salut kirua
    J'avais réfléchi sur le fait de calculer une transformée de Hough sur une image en niveau de gris sans utiliser le filtre de Sobel mais j'avais vite arrêté car justement, je ne savais pas comment pondérer la TH.
    La c'est une excellente idée, merci Kirua, je vais coder cela et je reposterais le résultat obtenu. Je vais aussi essayer d'optimiser le seuillage de la TH par la même occasion. Je ne suis pas satisfait du résultat obtenu lors de la TH inverse.
    A+

  • signaler à un administrateur
    Commentaire de zolotaya le 06/08/2007 16:28:59

    Salut à vous,

    Bon voila, j'essai depuis un moment (mais je n'y arrive pas) d'implémenter la transformée de Hough en JAVA.
    Le truc est que je ne sais pas de ou viens mon problème. J'ai déjà chercher sur d'autres forum mais sans succés hélas.
    Actuellement je prend une image, je la binarise et j'éfféctue une détéction des contours dessus. Jusque la tout vas bien!
    voila mon image binarisée. [URL=http://imageshack.us][IMG]http://img511.imageshack.us/img511/7074/contourbwn0hs4.png[/IMG][/URL]
    une foie que j'obtiens cette image, je la parcours et quand je trouve un pixel non noir, je calcul la sinusoïde.
    (ca normalement ca marche!) voila le résultat :
    [URL=http://imageshack.us][IMG]http://img127.imageshack.us/img127/2691/houghom8.png[/IMG][/URL]
    Le graphique est tracé avec JFreeChart, c'est donc pour moi juste un indicateur visuel!
    Le problème survient quand je cherche les valeurs maximales dans mon accumulateur. J'obtiens ces valeurs la!

    maxi = 38 theta = 85 rho = 74
    maxi = 43 theta = 86 rho = 67
    maxi = 57 theta = 87 rho = 59
    maxi = 65 theta = 87 rho = 60

    maxi est mon nombre de pixel par case, theta l'angle en degré et rho la distance. Sauf qu'il y a rien à moin de 120 pixels de l'origine (laissé en haut à gauche).
    Voila un bout du code.

    for (int x = 0 ; x < bi.getWidth() ; x++) {
       for (int y = 0 ; y < bi.getHeight() ; y++){
       // Si le pixel n'appartient pas au fond (n'est pas noir)
       int rgb = bi.getRGB(x, y);
       rgb = rgb & 0xFF;
          if (rgb > 0){
          // Series pour tracher le graphique
          XYSeries series = new XYSeries("hough"+compt);
             for (int angle = 0 ; angle < 360 ; angle ++){
             double theta = Math.toRadians(angle);
             double rho = x*Math.cos(theta) + y*Math.sin(theta);
             int indexAngle = (int) (angle);
             int indexRho = (int) Math.abs(rho);
             accu[indexAngle][indexRho]++;
             series.add(theta, rho);
             }
          dataset.addSeries(series);
          // BufferdImage pour voir les pixels traités (tous)
          dst.setRGB(x, y, rgb);
          compt++;
          }
       }
    }

    Auriez vous une idée de ou peut venir ce problème? On m'a dit que la facon de faire étais bonne mais apparament ca suffit pas... A moin que je ne soit pas douer (ca c fort possible aussi).
    Sinon j'avais trouvé un site qui traite le calcul des maximums dans l'accumulateur par l'approche de gaussiennes. Si ca vous interesse dite le moi j'essairai de le retrouver ;)

    Cordialement,
    Zolotaya

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 07/08/2007 13:32:57

    Salut Zolotaya

    Pour mieux répondre à ton problème, j'aimerai avoir quelques infos supplémentaires.
    Comment tu effectues la détection des maxima locaux car apparemment c'est cette fonction qui ne va pas?
    Est ce que tu es sur que l'image d'accumulation dans le domaine de Hough est correcte: tu pourrais enregistrer cette image pour le vérifier.
    Et un autre conseil, pour le débuggage, il est toujours plus facile de créer sa propre image la plus simple possible. Ici tu peux mettre uniquement 2 points avant de calculer la transformée de Hough. Tu auras alors 2 sinusoïdes et uniquement 1 maxima. La tu pourras aussi débuguer ta fonction trouver les maxima.

    Voila, j'espère que comme commencement ça pourra d'aider.
    A+

  • signaler à un administrateur
    Commentaire de zolotaya le 07/08/2007 16:03:48

    Salut Pistol,

    Merci pour tes conseils, j'ai pu ciblé mon prroblème.
    Pour mes maximas, je parcours mon tableau une premiere foie à la recherche du maximum (la plus grande valeur). Pour les maximas suivant cherche le maxima strictement inférieur au dernier maxima trouvé. Je fait cela par rapport à un seuil fixé (10 droites par exemple, ca ca reste à faire).
    Sinon apparament, d'aprés quelques essais simple (1 petite droite horizontale et 1 verticale), je me suis appercu que mon accumulateur étais bon (mon theta et mon Rho sont correcte).
    Mon problème viens de ma transformée inverse! Elle est toute fausse!
    Ca serait possible d'avoir un petit algo sur la transformée inverse?

    Zolotaya.

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 07/08/2007 16:31:31

    C'est cool que tu aies pu voir tes erreurs. D'après ce que j'ai compris, pour la détection des maxima, tu parcours 10 fois toute ton image pour trouver les 10 points max.
    Ce n'est pas une méthode très économique en temps de calcul et en plus je ne pense pas que tu aies tous les points qui t'intéressent.
    Je pense qu'un simple seuillage sur la TH peut déjà faire l'affaire.

    Pour la transformée de Hough inverse, utilise la même méthode de débuguage. Met un unique point sue la TH et calcul la TH inverse. Tant que ça ne marche pas avec un point, ce n'est pas la peine de continuer.
    La TH inverse, je l'ai codé dans ce programme mais tu devras sûrement l'adapter car je n'es pas pris la même origine que toi.

    A+

  • signaler à un administrateur
    Commentaire de zolotaya le 07/08/2007 16:46:27

    J'ai du mal m'expliquer, c'est mon accumulateur que je parcours 10 foies (si je cherche 10 droites) et non mon images.
    En gros j'ai mon image de départ (avec 1 droite pour le moment).
    Je parcours cette image et des que je trouve un pixel, je trace toutes les droites possibles passant par ce point.
    D'un coter je trace un graphique (qui me sert juste pour voir le rendu des sinusoïde) et de l'autre, pour chaque Rho et theta trouvé j'incrémente de 1 la case d'un tableau d'entier corrsespondant (accu[rho][theta]++). C'est ce tableau que je parcours autant de foie que je cherche de droites.
    J'ai donc comme informations pour ma transformée inverse juste la distance (Rho) et theta (en degré).

    Sinon voila un liens si ca t'interesse sur la TH que je trouve pas mal (un peu complexe pour moi)sur la détéction des maximas.

    www.dmi.usherb.ca/~egli/ciro2005.pdf

    Bon courage à toi
    Zolotaya

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 07/08/2007 16:55:24

    Oui Zolotaya, j'avais bien compris, je parlais bien de ton accumulateur. Seulement pour moi l'accumulateur est aussi une image d'où la confusion...
    Donc toutes mes remarques restent valables.

    Merci pour le lien, il a l'air très intéressant, je vais le potasser.
    A+

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 08/08/2007 08:44:40

    Salut

    Voila Kirua, j'ai apporté les modifications que tu m'avais suggéré.
    Tu pourras te forger ta propre opinion mais je ne trouve pas que se soit une meilleure méthode. Elle est beaucoup plus longue et la modification de la TH est légère. Mais il semble quand même que cette méthode permet d'avoir des maxima plus nette. Elles semble donc de meilleur qualité.
    A+

  • signaler à un administrateur
    Commentaire de zolotaya le 08/08/2007 10:04:19

    Re Salut,

    Je tenais à remercier Pistol grace à qui j'ai reussi à trouver mes erreurs et donc à finir ma transformée de Hough en JAVA.
    Je ne detecte pour le moment qu'une droite mais c'est déja un bon début.
    Pour ceux que ca interesserais, ma source est ici. Il y a surment des optimisations à faire mais bon... On verras ca plus tard ;)

    http://www.javafr.com/codes/TRANSFORMEE-HOUGH_43704.aspx

    Bonne continuation à tous ;)
    Zolotaya

  • signaler à un administrateur
    Commentaire de Kirua le 09/08/2007 13:26:52

    Ca, les critères de qualité, c'est pas tout noir ou tout blanc dans ce genre de disciplines :). C'est cool que t'aies fait le test en tout cas!

    Quelqu'un aurait une idée élégante pour détecter les "bornes" des droites trouvées? Sur l'image de l'exemple, assez logiquement, les segments de droite sont considérés comme des droites qui traversent toute l'image. Ce serait vrmnt classe d'arriver à détecter les limites des segments.

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 09/08/2007 14:16:21

    Très bonne question kirua. J'y ai un petit peu réfléchi mais je n'arrive pas à trouver une méthode concluante.

    Ce que je pensais faire était une comparaison de la TH inverse avec l'image du gradient. Mais cela ne me semble pas très judicieux dans le sens où dans l'image du gradient, les points avec un fort gradient peut s'écarter de la droite tracée...

    Je suis aussi preneur de toutes les idées.

  • signaler à un administrateur
    Commentaire de Kirua le 09/08/2007 15:04:46

    Une idée comme ça: une fois qu'on a la droite, on peut retourner sur l'image qui a servi à calculer la TH et voir quels points de la droite sont "allumés" sur cette image. On prendrait alors les deux extrêmités. Mais ça ne serait pas très précis :/.

  • signaler à un administrateur
    Commentaire de Pistol_Pete le 09/08/2007 15:38:33

    J'ai du mal m'exprimer mais on a eu la même idée. C'est exactement ce que je voulais faire.

    J'aimerai bien savoir si quelqu'un a déjà réglé ce genre de problèmes.

  • signaler à un administrateur
    Commentaire de Kirua le 09/08/2007 15:51:39

    En fait, en relisant ton message, je vois mieux pourquoi on a eu la même idée ^^. Mais t'as raison, les points s'écarteront assez fort. Une idée, ce serait d'essayer de donner une "zone d'influence" aux points de fort gradient, ie: augmenter la valeur des pixels proches pour que de faibles écarts à la droite trouvée ne gênent pas trop.

    Une façon de le faire, mais ça prendrait énormément de mémoire, ce serait de retenir, pour chaque pixel de la TH, quels points du gradient ont contribué à augmenter son poids. De cette manière, on aurait la liste des points du segment de droite, et il suffirait de prendre les extrêmes. Mais la quantité de mémoire nécessaire serait de l'ordre de O(n^4) je pense :/. (avec n la largeur de l'image, considérant des images carrées).

  • signaler à un administrateur
    Commentaire de aquamanfx le 09/08/2007 15:54:35

    Très vite en passant.
    Pour les extrema, il suffit juste de créer une structure qui prend les extrema en même temps que l'accumulation se fait (Xmin, Ymin) et (Xmax, Ymax). Càd que chaque sinusoide "écrit" en plus de l'incrémentation de l'accumulateur une borne ou non par un simple test (au début Min=Max quand une droite passe par un seul point).
    Après pour les accumlutations avec des densités de probabilité (type cloche gaussienne discrétisée) ou pondération par valeur de niveau de gris, la démarche reste la même avec plus d'écriture.
    En gros on rajoute 2 dimensions supplémentaires (en plus de l'espace de vote).
    Pour le quid des droites de la forme x=k (je sens la question venir :)), il faut bien penser à traiter les cas des doites de la forme y=ax+b et x=cy+d différemment en fonction de rho et teta.

  • signaler à un administrateur
    Commentaire de Kirua le 09/08/2007 16:09:57

    Je ne comprends pas ta dernière remarque. Tant qu'on travaille en polaire, il n'y a pas de singularité du type "x=k".

  • signaler à un administrateur
    Commentaire de aquamanfx le 09/08/2007 16:17:39

    Exact^^ il y eu confusion (fausse anticipation) avec une question posée par un de mes étudiants à l'époque qui n'avait rien à voir ici!

  • signaler à un administrateur
    Commentaire de Kirua le 09/08/2007 16:21:36

    Ca serait une question tout à fait légitime ^^. Au premier abord, utiliser une forme polaire parait compliquer l'arithmétique, mais la répartition des droites dans l'espace des paramètres est bien plus homogène comme ça et on n'a pas de singularité à traiter. Que du bonheur quoi ^^.

  • signaler à un administrateur
    Commentaire de Arnaud16022 le 06/12/2007 13:58:03

    wow, c'est 'achement long quand même le traitement ... moi qui espérais faire ça en temps réel sur du 640*480 ...
    Bon par contre: pourquoi diable est-ce que des lignes diagonales apparaissent à partir d'un certain seuil ?

    Quand on regarde la transformée seuillée, on voit qu'il y a deux séries de pixels alignés verticalement, et qui produisent fort logiquement ces lignes diagonales.
    Et d'ailleurs, ça se voit dans la transformée non seuillée, ya quelques chtirs problèmes à ces mêmes endroits.
    Vu que les courbes sont dessinées par ce simple appel :
    ImgHough->DrawCosinus(R,Theta,1);
    J'en conclus que c'est DrawCosinus qui foire ...
    Le problème c'est que le code est bien trop simple pour pouvoir planter ... je sais vraiment pas quoi en penser.
    Qqun a une idée ? peut-être que c'est quand tu resample dans [0 255] ?

  • signaler à un administrateur
    Commentaire de Arnaud16022 le 06/12/2007 14:07:34

    Autre petit truc :
    Je ne veux détecter que les lignes verticales.
    Est-ce que ça vaut le coup de faire un vrai Sobel ? Pourquoi ne pas appliquer que la dérivée discrète partielle en y ?
    Après, je suppose qu'il y a bien moyen d'optimiser aussi l'écriture dans l'image de la transformée .. genre ne pas dessiner la sinosoide sur 200 px de large, mais seulement sur les bords et au milieu...idem pour tous les autres traitements.
    Vous en pensez quoi ?

  • signaler à un administrateur
    Commentaire de aquamanfx le 06/12/2007 14:25:37

    Rapidos!
    Pour la première partie, je n'ai pas regardé le code...dsl
    Pour ta 2nde question, en effet pour gagner du temps tu peux faire un filtre vertical directement-> tu auras moins de points selectionnés donc moins de calculs. Cependant, s'il y a des obliques (des lignes verticales imparfaites) avec des pas de discrétisations espacés tu risques de les rater parfois.
    Ensuite si tu cherches uniquement dans le plan vertical, pour optimiser tu peux en effet réduire ton espace discret selon Theta (au regard de la "verticalité" de ce que tu cherches)

  • signaler à un administrateur
    Commentaire de Kirua le 06/12/2007 17:06:33

    une dérivée par rapport à x plutôt non? pour les lignes verticales

  • signaler à un administrateur
    Commentaire de Arnaud16022 le 06/12/2007 18:31:15

    ... ben justement je me demandais, c'est la principale raison de mon post.
    Je veux garder x constant et dériver en fonction de y, donc c'est bien d_ronde pixels / d_ronde y , non ?

  • signaler à un administrateur
    Commentaire de Kirua le 07/12/2007 17:29:41

    ben, ça dépend. si tu cherches des lignes parfaitement horizontales, tu as des lignes dérivées en x nulles sur les dites lignes et des dérivées en y maximales sur les dites lignes. juste non?

  • signaler à un administrateur
    Commentaire de Arnaud16022 le 07/12/2007 23:25:19

    hum, c'est vrai en plus. grrr :p

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS