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

MATLAB Discussion :

Inpainting utilisant méthode de Efros & Leung


Sujet :

MATLAB

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut Inpainting utilisant méthode de Efros & Leung
    Bonjour,

    J'aimerai réaliser un remplissage de trou à partir de l'algorithme synth.m de: http://www.rubinsteyn.com/comp_photo/texture/

    Ce programme réalise une extension de texture (par MRF).

    Certaines parties du programme ne me paraissent pas clair. Notamment dans la fonction GetUnfilledNeighbors.
    Dans un premier temps pouvez vous m'éclaircir sur cette fonction.

    Par la suite, j'aimerai pouvoir remplir des trous tout en gardant cette méthode (MRF).

    Avez-vous des idées ?

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut
    Je ne vois vraiment pas comment utiliser cet algorithme pour remplir faire de l'inpainting.

    Est-ce que vous avez une idée pour une méthode naïve?

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    j'ai lu très rapidement l'algo, GetUnfilledNeighbors permet de récupérer les pixels à la frontière de ton image qui n'ont pas de couleur affectée (unfilled pixel)

    Pour l'adapter à une image, j'image qu'il faudra créer une texture et adapter le code pour remplir le trou dans ton image. Un exemple d'image que tu voudrais traiter serait plus parlant.

    Sinon, tu es obligé d'utiliser précisément cet algorithme?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut
    Oui c'est sa pour la fonction GetUnfilledNeighbors mais je ne comprend pas certains points:

    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
    %Contour du masque de remplissage filled <=> frontiere
    border = bwmorph(filled,'dilate')-filled;
    [pixelRows, pixelCols] = find(border);
    len = length(pixelRows); 
     
    %Pourquoi il permute aléatoirement ?
    randIdx = randperm(len); 
    pixelRows = pixelRows(randIdx); 
    pixelCols = pixelCols(randIdx); 
     
    % ça fait penser à une métrique: matrice de distance entre contour et  partie remplie
    %Mais pourquoi il fait sa?
    filledSums = colfilt(filled, [winsize winsize], 'sliding', @sum);
    %Et après il prélève juste les valeurs métriques des contours 
    numFilledNeighbors = filledSums( sub2ind(size(filled), pixelRows, pixelCols) );
    %Pourquoi il trie?
    [sorted, sortIndex] = sort(numFilledNeighbors, 1, 'descend');
    pixelRows = pixelRows(sortIndex); 
    pixelCols = pixelCols(sortIndex);
    En fait il faudra une image de texture

    En effet il faudra une texture en plus de l'image et le troup doit être assez simple (rectangle) pour que sa reste causal.

    En gros dans le code je pense qu'il y a pas beaucoup de chose à remplacer. Mais c'est vrai que je ne le comprend pas assez bien pour pouvoir le faire.


    Sinon, je suis obligé d'utiliser l'algorithme de Efros & Leung, la synthèse de texture par bloc. Par contre je ne suis pas obligé d'utiliser ce code là bien que en gros l'algorithme reste le même (enfin je crois ).

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut [Résolu]
    C'est bon sa fonctionne !
    Voici les résultat à partir d'une petite texture:


    Et merci pour on aide.
    Images attachées Images attachées    

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inpainting utilisant méthode de Efros & Leung
    Par Gakusei dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 22/01/2012, 14h49
  2. Utilisation méthode héritée
    Par jcaspar dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2007, 18h50
  3. Utilisation Méthode .getParent()
    Par PaowZ dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 01/03/2007, 15h54
  4. utilisation méthode setBorder ?
    Par Sakapatate dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 06/12/2006, 15h09
  5. utilisation méthodes DLL COM
    Par ep31 dans le forum MFC
    Réponses: 5
    Dernier message: 30/03/2006, 14h45

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