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

Téléchargez Discussion :

[image] Générer une image avec des pixels non rectangulaires


Sujet :

Téléchargez

  1. #1
    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 163
    Points
    53 163
    Par défaut [image] Générer une image avec des pixels non rectangulaires


    voici une fonction qui imite le fonctionnement de la fonction IMAGE de MATLAB mais qui produit des pixels non rectangulaires.

    pixshape 2.0

    Le premier argument X est le même que pour la fonction IMAGE.
    Cela peut être un tableau 2D MxN (image en couleurs indexées) ou 3D MxNx3 (image en couleurs vraies)

    Le second argument shape définit la forme des pixels :
    • 'cir' : disque
    • 'rhb' : losange
    • 'hex' : hexagone
    • 'oct' : octogone


    Un troisième argument pattern est utilisé avec les formes 'cir', 'rhb' et 'hex'.
    Ceci permet d'obtenir différentes répartitions des pixels pour une même forme.

    L'objet affiché n'est pas de type Image mais de type Patch.
    On peut récupérer son identifiant en utilisant l'appel suivant :

    L'affichage peut se faire dans un objet Axes en précisant son identifiant en quatrième argument d'entrée de la fonction.

    L'archive zip contient un script demo qui produit la figure attachée ci-dessous à ce message.

    N'hésitez pas à poster vos remarques ou commentaires à la suite de ce message.
    Images attachées Images attachées  
    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)

  2. #2
    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
    Salut Dut,

    dans les logiciels de traitement d'images qui utilisent des grilles hexagonales pour les pixels, en général (enfin ceux que je connais), c'est un pavage régulier qui ne possède pas de trous entre les hexagones. Ce qui implique que 2 lignes consécutives ne possèdent pas le même nombre de pixels.

    Mais bon, ton code donne tous les éléments pour créer ce type d'image.

    Bonne contribution
    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.

  3. #3
    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 163
    Points
    53 163
    Par défaut
    Citation Envoyé par magelan Voir le message
    dans les logiciels de traitement d'images qui utilisent des grilles hexagonales pour les pixels, en général (enfin ceux que je connais), c'est un pavage régulier qui ne possède pas de trous entre les hexagones. Ce qui implique que 2 lignes consécutives ne possèdent pas le même nombre de pixels.
    Je me doutais bien... c'est pour ça que j'ai une version 2 en cours... mais je n'ai pas fini de coder tous les pattern !

    Je fais ça au plus tôt
    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)

  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 163
    Points
    53 163
    Par défaut
    Voici une version 1.1 avec quelques patterns supplémentaires

    Si vous avez des suggestions... n'hésitez pas.

    J'avoue que personnellement, je n'ai jamais eu à utiliser de telles "images".
    Ce n'est pas du tout mon domaine.
    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
    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 163
    Points
    53 163
    Par défaut
    Voici une version 1.2 avec des patterns circulaires en plus

    Voir le premier message de cette discussion

    Si vous avez des suggestions pour de nouveaux pattern, n'hésitez pas.
    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)

  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 163
    Points
    53 163
    Par défaut
    Il y a un bug avec les patterns circulaires de la version 1.2

    Je corrige ça le plus vite possible
    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
    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 163
    Points
    53 163
    Par défaut
    Les patterns circulaires sont corrigés.

    J'en ai profité pour revoir l'algorithme, d'où une version 2.0 de pixshape.

    Voir le premier message de cette discussion
    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)

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Je viens donner mon maigre retour sur la fonction pixshape. Je l'ai testé sur des images 500x215. Avec les pixels hexagonaux cela a marché mais la figure était assez lourde, elle mettait longtemps à charger. J'ai ensuite tenté de l'utiliser avec les pixels circulaires et la command window m'a envoyé un message d'erreur de type out of memory. J'ai ensuite essayé de fermer la fenêtre figure et la command window m'a affiché des messages de type warning (très rapidement et en continu, difficile de lire le contenu) ce qui a eu pour conséquence le plantage de ma command window et l'obligation de fermer matlab par le gestionnaire des tâches.

    Attention si vous chargez des images de grande taille de sauvegarder votre travail avant!
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  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 163
    Points
    53 163
    Par défaut
    J'ai posté récemment une version améliorée sur le File Exchange : Image with non-square pixels

    Elle génère sans doute des "images" aussi lourdes mais devrait mieux gérer les avertissements et les erreurs.
    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
    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 163
    Points
    53 163
    Par défaut
    @Gooby :

    • pourrais-tu essayer à nouveau avec la version disponible sur le File Exchange ?
    • pour le cas des cercles, essaie en diminuant le nombre de points dans l'appel à linspace à la ligne 96 de imageWithNonSqrPix.m
    • si tu travailles sur Windows, pourrais-tu me montrer la configuration de ta machine : http://www.mathworks.fr/matlabcentra...thardwareinfos ?



    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)

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Hello

    Je viens faire mon retour au fur et à mesure, j'éditerai sur ce post si il n'y a pas de messages entre temps.

    Error using wmicGetHardwareInfos (line 32)
    wmicGetHardwareInfos needs wmicGet:
    
    Je vais donc également le récupérer sur le file exchange.


    Nouvelle tentative sur une image 500x215 avec (...,'dsk',5)

    Error using patch
    Out of memory. Type HELP MEMORY for your options.
    
    Error in imageWithNonSqrPix (line 191)
    h = patch(xshape, yshape, 'r', ...
    
    Mais pas de warning après ça et la figure se ferme correctement sans ralentissement intempestif.

    Un essai sur un une image 200*115 fonctionne correctement, mais pour info la figure met une dizaine de seconde à s'afficher.

    _________________________________________________________________________________________________________________________

    Citation Envoyé par Dut
    pour le cas des cercles, essaie en diminuant le nombre de points dans l'appel à linspace à la ligne 96 de imageWithNonSqrPix.m
    Passage de 150 à 100, même erreur.

    à 75:

    Error using get
    Error using patch
    Out of memory. Type HELP MEMORY for your options
    
    Error in axis>LocSetEqual (line 383)
    a = get(ax,'Position'); set(ax,'Units',units)
    
    Error in axis (line 131)
                    LocSetEqual(ax(j),pbarlimit);
    
    Error in imageWithNonSqrPix (line 198)
    axis equal ij tight
    
    PS: j'ai refait planté mon Matlab

    Spam de warning dans la commande window de cette forme (impossible de copier coller, je n'ai plus la main, les messages défilent en continu:

     In closereq at 18
    Warning: Too many objets created while deleting axes children;
    removing DeleteFcn of all descendants to prevent infinite loop
    

    Cela fonctionne avec 30 en nombre de points d'appel sur linspace.

    _________________________________________________________________________________________________________________________

    Enfin, voici la config de mon pc:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    ----------------------
    OS                   |
                    Name | Microsoft Windows XP Professionnel (Service Pack 3)
                 Version | 5.1.2600
            Architecture | 32 bits
    ----------------------
    CPU                  |
            Manufacturer | Intel
                    Name | Processeur Intel Pentium III Xeon
                  Socket | LGA775
                   Cores | 4
      Logical Processors | 4
          Hyperthreading | Off
            Architecture | 32 bits
                   Speed | 2999 MHz
    ----------------------
    GPU                  |
                    Name | NVIDIA GeForce 9800 GT  
                  Memory | 512 MB
                  Driver | 185.85 (2009/05/21)
    ----------------------
    RAM                  |
             Capacity #1 | 2048 MB
             Capacity #2 | 2048 MB
    ----------------------
    Disk #1              |
                   Model | TOSHIBA DT01ACA100
                    Size | 953867 MB
               Interface | IDE
                         |
                   Drive | D:
                    Size | 953867 MB
                    Free | 942162 MB (99%)
    Disk #2              |
                   Model | WDC WD1500HLFS-01G6U0
                    Size | 143087 MB
               Interface | IDE
                         |
                   Drive | C:
                    Size | 143079 MB
                    Free | 104276 MB (73%)
    Disk #3              |
                   Model | Lexar JD Secure II + USB Device
                    Size | 7640 MB
               Interface | USB
                         |
                   Drive | G:
                    Size | 7632 MB
                    Free | 2194 MB (29%)
    ----------------------
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  12. #12
    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 163
    Points
    53 163
    Par défaut
    Citation Envoyé par Gooby Voir le message
    Ne cherche pas plus loin. Le problème de mémoire vient du fait que tu as une version 32 bits de Windows.
    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)

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Je m'en doutais, mais je me demandais si tu avais eu des retours. Le plantage avec les warning est assez ennuyeux pour les petites config du coup.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Réponses: 6
    Dernier message: 16/10/2010, 14h23
  3. Comparer une image charge en axes avec des images du directoire
    Par mihaispr dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 22/04/2009, 10h20
  4. Réponses: 1
    Dernier message: 15/06/2008, 12h32

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