IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Traitement d'images: prédiction sans connaissance a priori


Sujet :

Traitement d'images

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut Traitement d'images: prédiction sans connaissance a priori
    Bonjour à tous !
    J'ai une question de traitement d'images...
    Supposons que l'on souhaite reconstruire un bout d'image légèrement "cassé"...
    J'explique mon cas, qui peut être généralisé je pense.
    J'élimine des lignes qui sont horizontales sur presque la totalité de l'image, et ce, en prenant les chrominances rouge et bleue.
    Le truc, c'est de pouvoir "parfaitement" reconstruire la ligne en luminance.
    En clair, je vais avoir, autour de mon résidu de ligne, des pixels ayant une valeur assez proches, et dedans, deux pixels ayant une valeur différente (plus grande), comme un contour en quelque sorte.
    Mais je ne peux pas considérer ça comme un contour et je souhaite donc l'éliminer "au mieux".
    Il me faut donc faire une interpolation, en utilisant les pixels valides. Pour ça, de base, je la fais avec les pixels situés au-dessus et en-dessus...

    Mais peut-être que ma ligne intervient au niveau d'un contour plutôt à 45°, je prédit mal, et c'est visible !

    Voilà, j'ai essayé de vous expliquer mon soucis...
    Merci d'avance !
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    s'il s'agit de ligne supprimées, tu peux faire comme ceci :
    - calculer la variance et l'écart type pour chaque pixel de l'image.
    - faire une transformée de hough pour les pixels ayant la plus grande variance.

    Ca devrait marcher pour des droites dans n'importe quelle direction...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    s'il s'agit de droite supprimées dans ton image, tu peux faire ceci :
    - Calculer la variance et l'écart type pour chaque pixel.
    - Appliquer une transformée de Hough sur les pixels ayant une variance importante.

    Ca doit être robuste pour n'importe quelle orientation de droite...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    (oups, mon navigateur a merdé... il m'avait affiché un echec pour la première réponse... désolé)
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Détecter la ou les lignes, ça fonctionne assez bien.
    Mon idée, c'est plutôt que j'ai des résidus de cette ligne dans ma composante luminance, et que pour prédire avec une assez bonne précision le pixel "original", il me faut déterminer si je suis sur un contour ou non, afin de prendre les valeurs diagonales ou horizontales/verticales...
    En clair, je fais ça (code matlab) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    for n=3:height-2
        for m=3:width-2
            if ((cr_thresh(n,m) == 0) || (cb_thresh(n,m) == 0))
                d135 = abs(x(n-2,m-2) - x(n+2,m+2)); %Estimation du gradient 135°
                d45  = abs(x(n+2,m-2) - x(n-2,m+2));
                d90  = abs(x(n-2, m)  - x(n+2, m ));
                d0   = abs(x(n, m-2)  - x(n, m+2 ));
                [dmin, ind_min] = min([d135, d45, d90, d0]);
                switch ind_min
                    case 1
                        x(n,m)     = x(n-1, m-1) + (2*dmin)/5; %Interpolation suivant la "ligne" 135°
    %                    x(n+1,m+1) = x(n+2, m+2) - dmin/3;
    %                     x(n+1, m)  = (x(n,m)+x(n+1,m-1)+x(n,m-1))/3;
    %                     x(n, m+1)  = (x(n,m)+x(n-1,m)+x(n-1,m+1))/3;
                        min_135 = min_135+1;
                        correct = correct+1;
                    case 2
                         x(n, m)    = x(n+1, m-1) + (2*dmin)/5;
    %                     x(n+1, m+1) = (x(n,m)+x(n+1,m)+x(n,m+1))/3;
                        min_45 = min_45+1;
                        correct = correct+1;
                    case 3
                        x(n,m)   = x(n-1,m) + (2*dmin)/5;
    %                    x(n+1,m) = x(n+2,m) - dmin/3;
    %                     x(n,m+1) = (x(n,m)+x(n-1,m)+x(n-1,m+1))/3;
    %                     x(n+1,m+1) = (x(n+1,m)+x(n,m)+x(n,m+1))/3;
                        min_90 = min_90+1;
                        correct = correct+1;
                    case 4
                        x(n,m)     = x(n, m-1) + (2*dmin)/5;
    %                    x(n,m+1)   = x(n, m+2) - dmin/3;
    %                     x(n+1,m)   = (x(n+1,m-1)+x(n,m-1)+x(n,m))/3;
    %                     x(n+1,m+1) = (x(n+1,m)+x(n,m)+x(n,m+1))/3;
                        min_0 = min_0+1;
                        correct = correct+1;
                end
            end
        end
    end
    Où cr/cb_thresh sont les composantes ayant 0 là où la ligne a été détectée, et 1 là où il n'y a rien à faire.

    J'estime un gradient suivant les angles, mais au lieu de le faire avec les points connexes au point considéré, je vais plus loin, car la ligne a très généralement une hauteur de 2 pixels.
    Je ne sais pas si je peux le faire comme ça, afin d'avoir une idée de la direction du contour, et je ne sais pas si l'interpolation réalisée est assez bonne.

    D'après les résultats obtenus (cf. pièce jointe), c'est pas mal, mais pas encore "super" .
    Sans le traitement, on a l'image nommée "nickel", et avec, "reconstructed"
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    pour ce qui est des contours, il est souvent bien de les approcher avec des morceaux d'ellipses ou des chainettes.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/11/2011, 15h02
  2. Traitement d'image avec Python sans modules
    Par kevgen dans le forum Général Python
    Réponses: 4
    Dernier message: 23/11/2010, 00h02
  3. [CR8.5] Image dynamique sans utiliser RDC ou Blob
    Par lrp dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/12/2005, 14h43
  4. Traitement d'images : quel langage?
    Par belasri dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 07/10/2005, 09h59
  5. Traitements d'image sur PNG avec transparence
    Par Ingham dans le forum Langage
    Réponses: 16
    Dernier message: 02/08/2004, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo