bug filtrage

bug filtrage

by Arnaud Joachim Wist -
Number of replies: 6

Bonsoir,

Mon programme marche très bien pour le seuillage. Également pour le filtrage avec les images carrées (exemple la maison). Mais dès que j'essaie avec des images rectangulaires, j'ai des images extrêmement étranges, une partie de l'image est décalée. J'ai pourtant bien vérifié si mes boucles et arguments n'étaient pas inversés et réécrit mon programme depuis le début mais le bug est toujours présent. Est ce qu'un assistant pourrait me contacter pour regarder mon code avant vendredi (ça fait déjà deux semaines que j'ai ce problème)? ou si quelqu'un a eu un problème similaire si il pouvait m'orienter sur la source du problème.

(je mets quatre images pour illustrer le problème. elles ont toutes un filtre à part pour celle de l'arbre qui fonctionne où il n'y a que le seuillage).

merci, bonne soirée.

Attachment screen_projet_1.JPG
Attachment screen_projet_2.JPG
Attachment screen_projet_3.JPG
Attachment screen_projet_4.JPG
In reply to Arnaud Joachim Wist

Re: bug filtrage

by Martin Simik -

Salut,

Je pense que tu as simplement inversé nbL et nbC => swap ces deux variables dans ton programme (! 2 endroits où il faut le changer) et normalement ça devraient régler ton problème.

Bonne soirée

In reply to Martin Simik

Re: bug filtrage

by Arnaud Joachim Wist -
Salut, merci de ta réponse mais crois moi c'est très loins d'être aussi simple que ça. Comme spécifié plus haut c'est la première choses que j'ai vérifier, en deux semaine j'ai eu le temps de faire de nombreux tests et de relire le code de nombreuses fois et je l'ai également réecris. Ce n'est pas à cause des colonnes et lignes inversées, ce n'est pas parce que les boucles parcours le mauvais nombre d'éléments. Le problème ne vient pas non plus de l'algorithme de filtrage, ça n'est pas non plus à cause de deux variables dont la portée se croise ce qui incrémenterait la mauvaise. Ce n'est pas non plus dû à la fonction d'affiche puisque celle là marche pour le seuillage.
In reply to Arnaud Joachim Wist

Re: bug filtrage

by Alexander Oliver Klukas -

Salut,

D’après ce que je voit sur les images ton code n’affiche pas correctement l’image Flag qui est sensé d’avoir 0 filtrage donc sauf si t’a changé le nbr de filtrage dans le fichier texte t’a fonction seuil pourrait aussi contenir des problèmes. En tous cas les images on l’aire correctement affiché en termes de taille (ligne, colonne). Peut-être il y a une mauvais stockage de donnés dans le filtrage (par exemple peut-être t’es entrain de sauvegarder les valeurs des pixels, après filtrage dans un tableau avec des indices inversé (colonne ligne, au lieu de ligne colonne)). En tous cas je te conseille de demander soit au professeur ou un assistant vendredi. Le problème a l’aire un peu compliqué s’il n’est pas liée à des petites fautes dans soit le stockage ou affichage.

In reply to Arnaud Joachim Wist

Re: bug filtrage

by Ronan Boulic -

Merci pour votre message documenté avec les fichiers images.

Je n'ai pas une solution toute faite à vous proposer ; j'ai seulement l'impression qu'il y a une périodicité (un modulo) qui apparait dans vos images ; peut-être des opérations incorrectes faites sur les indices de ligne et/ou colonne

je recommande de faire aussi des tests avec vos fichiers images les plus simples possibles jusqu'au moment où le bug peut être reproduit.

ce type de scénario simplifié est plus efficace pour:

- raisonner sur le problème,

- prévoir la solution attendue

- analyser la différence entre ce qui est attendu et ce qui est observé.

On a l'avantage d'utiliser des fichiers textes pour les tests, ce qui permet de les éditer avec geany. par exemple vous pouvez construire un fichier en éditant un fichier déjà fourni.


In reply to Arnaud Joachim Wist

Re: bug filtrage

by Pierre Pravin Oppliger -

Bonjour,

Ce problème est bien curieux et il n'est pas facile de pouvoir trouver la source du problème par manque d'informations.

Toutefois, j'ai déjà eu l'avantage d'observer ce symptôme par le passé. Il est induit par deux causes possibles:

- algorithmique: Tu as un mauvais algorithme qui est bien programmé.

- implémentationnel: Tu as mal programmé un bon algorithme.


Dans la mesure où tu as déjà longuemment cherché, je partirais plutôt pour la seconde. Si jamais, pour la première, ce serait juste un résultat abhérent comme une image unicolore, floue, avec une rotation de cent-huitante degrés, etc. ce qui n'est pas ton cas.

On sait que puisque c'est au moment du filtrage qu'il y a le problème, on devrait regarder dans la partie du filtrage. Toutefois, comme observé par le professeur, la trop grande périodicité et l'absence d'incohérences-types montre que ce problème non seulement ne fait pas planter, mais induit une perturbation "harmonique". On observe un décalage de 50% = 1/2 pour l'Union Jack qui de proportion 1:2...


Ainsi, si l'algorithme est correct peut-être que son implémentation ne l'est pas. Il est possible que tu fasses un overflow dans l'espace de ton programme. C'est-à-dire que tu débordes en mémoire mais pas trop de telle façon à ne pas planter puis ce débordement influence ton résultat.

Regarde donc à chaque fois que tu changes la taille d'un tableau et à chaque écriture en mémoire par ce tableau. Même au moment de la lecture ! (Donc aussi hors de la fonction de filtrage) En effet, écrire dans le septième élément d'un tableau de 3x2 ou de 6 ne plante que rarement même si on déborde et influence surement le résultat !


Cordialement

In reply to Arnaud Joachim Wist

Re: bug filtrage

by Maxime Vincent Théophile Leriche -

J'avais exactement le même  problème:

- seuillage ok.

- filtrage ok seulement pour image carrée.



et il s'est avéré que c'était dû a une mauvaise initialisation de tout mes vectors (inversion lignes/cases) et d'autre erreurs ligne/case dans les boucles for et dans l'ordre de  declaration  vectors ([ligne] [case]).