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

Images Discussion :

Découpage d'une image


Sujet :

Images

  1. #1
    Membre habitué Avatar de kawther
    Inscrit en
    Avril 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 307
    Points : 143
    Points
    143
    Par défaut Découpage d'une image
    Bonjour;
    je veux découper mon image en petites images de taille 10*10 pixels.
    je sais que la fonction imcrop fait le découpage mais je sais pas comment l'utiliser dans ce cas.
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Tu peux nous expliquer ce que tu cherches à faire au final ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre habitué Avatar de kawther
    Inscrit en
    Avril 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 307
    Points : 143
    Points
    143
    Par défaut
    tout d'abord je tiens à te remercier Dut pour ton aide.
    je vous explique mon travail, je programme une application de reconnaissance de formules mathématiques, je veux utiliser cet algorithme pour faire la reconnaissance:
    1) squelettisation de l'image
    2) réduction de l'image en image frontière cad éliminer les parties inutiles et laisser uniquement le symbole.
    3) découpage de l'image en morceau de 10*10 pixels
    4) pour chaque morceau
    • remplacer les pixels noirs dans un morceau par une ligne contenu qui relie les deux pixels d'extrémités
    • les pixels d’extrémités en les coordonné successive (x,y) (x’,y’). remplir le tableau S avec S[i]=(x-x’)/(y’-y)
    • remplir un tableau L avec L[i]=sqrt((x’-x)²+(y’-y)²)
    • un troisième tableau va représenter les changements d’angle entre les segments
    par ces trois tableau je vais caractériser mon symbole
    et à chaque fois que j’entre une formule au système il va comparer chaque symbole dans cette formule avec ces tableaux pour reconnaitre le symbole.
    Donc ma question concerne l’étape 3 de mon algorithme.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Donc tu n'as pas besoin de découper l'image, il te suffit de travailler par morceaux.

    Maintenant, les dimensions de l'image sont-elles des multiples de 10.
    Obtiens-tu un nombre entier de bloc dans les deux dimensions de l'images.
    Si non, comment prends-tu en compte les blocs "incomplets"
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre habitué Avatar de kawther
    Inscrit en
    Avril 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 307
    Points : 143
    Points
    143
    Par défaut
    non les tailles des images ne sont pas obligatoirement des multiples de 10.
    dans ce cas je pense je vais considérer les blocs restant des bloc à part.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Voici l'idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    img = imread(...);
     
    S = size(img)
     
    nr = floor(S(1)/10);
    nc = floor(S(2)/10);
     
    for r = 1:nr
       for c = 1:nc
          subimg = img((r-1)*10+1:10*r,(c-1)*10+1:10*c,:);
        end
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Dut Voir le message
    Voici l'idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    img = imread(...);
     
    S = size(img)
     
    nr = floor(S(1)/10);
    nc = floor(S(2)/10);
     
    for r = 1:nr
       for c = 1:nc
          subimg = img((r-1)*10+1:10*r,(c-1)*10+1:10*c,:);
        end
    end
    Regarde la fonction blkproc. Je pense que ça correspond plus à ce que tu cherches...

  8. #8
    Membre habitué Avatar de kawther
    Inscrit en
    Avril 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 307
    Points : 143
    Points
    143
    Par défaut
    Bonsoir;
    Merci à tous ceux qui ont participé à cette discussion,
    Pour Dut, j'ai testé votre code avec une petite modification pour sauvegarder chaque portion de l'image dans une matrice. voici le code:
    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
     
    img = imread('c:\base_image\t.png');
     
    S = size(img)
     
    nr = floor(S(1)/10);
    nc = floor(S(2)/10);
    j=1; 
        for r = 1:nr
            for c = 1:nc
                subimg(1:10,1:10,:)= img((r-1)*10+1:10*r,(c-1)*10+1:10*c,:);
                im{j}=subimg;
                j=j+1;
            end
        end
    figure;
    imshow(im{2});
    mon problème c'est que j'attendrais que mon programme m'affiche une des portions mais il m'affiche la totalité de l'image comme si j'ai rien fait.

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Quelle est la taille initiale de ton image ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Membre habitué Avatar de kawther
    Inscrit en
    Avril 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 307
    Points : 143
    Points
    143
    Par défaut
    Bonjour;
    concernant la taille de mon image ce n'est pas important la taille puisque l'image est invariable, pour cet image de test sa taille est:
    S =

    38 50 3
    c'est bon j'ai arrivé à découper mon image en morceau, maintenant puisque la dimension de l'image n'est pas obligatoirement multiple de 10, il me reste un problème pour les blocs incomplets, voici ce que j'ai proposé mais j'ai une erreur:
    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
    img = imread('c:\base_image\test.png');
     
    S = size(img)
     
    nr = floor(S(1)/10);
    nc = floor(S(2)/10);
    j=1; 
        for r = 1:nr
            for c = 1:nc
                subimg(1:10,1:10,:)= img((r-1)*10+1:10*r,(c-1)*10+1:10*c,:);
                im{j}=subimg;
                j=j+1;
            end
        end
    for r=nr+1:S(1)
        for c=nc+1:S(2)
            subimg(1:10,1:10,:)=img((r-1)*10+1:10*r,(c-1)*10+1:10*c,:);
            im{j}=subimg;
            j=j+1;
        end
    end
    l'erreur est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Index exceeds matrix dimensions.
     
    Error in ==> test at 19
            subimg(1:10,1:10,:)=img((r-1)*10+1:10*r,(c-1)*10+1:10*c,:);

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    As-tu pris le temps de comprendre la technique d'indexage que je t'ai montrée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        for r = 1:nr
            for c = 1:nc
                (r-1)*10+1:10*r
                (c-1)*10+1:10*c
            end
        end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien d'essais
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien d'essais
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Peut on réutiliser ce programme ?
    Bonjour à tous,

    J'aimerais utiliser ce programme, déjà par curiosité du résultat, et par la suite pour de l'art.
    Peux t'on avec ce programme découper une image et mettre les morceaux dans une feuille Excel pour la reconstituer ?
    Ensuite ça permettrait de triturer l'image à des fins artistiques.
    Reste à savoir si ce programme peut âtre utilisé tel quel ou qu'il était uniquement prévu pour s'insérer dans un programme plus vaste de Hawther,
    et que tel quel il ne donne rien.
    Je me propose de le coller dans une macro Excel vide et de cibler une image quelconque sur mon bureau.

    Merci de votre réponse.

    Cordialement

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

Discussions similaires

  1. Découpage d'une image pour Insertion bloc
    Par Addict` dans le forum Mise en page CSS
    Réponses: 13
    Dernier message: 24/02/2009, 17h12
  2. Découpage d'une image en "zones"
    Par Mithandir dans le forum 2D
    Réponses: 2
    Dernier message: 11/02/2009, 22h51
  3. Découpage d'une image par JAVA
    Par salhi_m dans le forum 2D
    Réponses: 2
    Dernier message: 20/01/2009, 08h40
  4. Découpage d'une image
    Par jp_developpeur dans le forum Images
    Réponses: 2
    Dernier message: 16/10/2008, 11h52
  5. Découpage d'une image
    Par hello05 dans le forum Images
    Réponses: 5
    Dernier message: 23/04/2008, 22h54

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