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 :

Afficher une image format 24 bit


Sujet :

Images

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 77
    Points : 63
    Points
    63
    Par défaut Afficher une image format 24 bit
    Bonjour à tous,

    Je cherche à afficher en format RGB une image sous le format :

    MatriceDeImage : <360000x24 char>
    les 360000 représentent la taille de l'image (600 x 600).
    Les 24 char correspondent aux 3 couleurs RGB codées sous 8 bit

    Une solution qui fonctionne est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    r=uint8(reshape(bin2dec(MatriceDeImage(:,1:8)),600,600));
    g=uint8(reshape(bin2dec(MatriceDeImage(:,9:16)),600,600));
    b=uint8(reshape(bin2dec(MatriceDeImage(:,17:24)),600,600));
    Image(:,:,1)=r;
    Image(:,:,2)=g;
    Image(:,:,3)=b;
     
    imagesc(Image);
    Cependant ce code est très lent (une dizaine de secondes) à cause notamment de la fonction bin2dec
    Auriez vous une solution plus rapide ?

    Merci d'avance .

  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 166
    Points
    53 166
    Par défaut
    Essaie ceci :

    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
     
    clear all
    clc
    nRows = 600;
    nColumns = 600;
     
    MatriceDeImage = randi([48 49], nRows*nColumns, 24);
    MatriceDeImage = char(MatriceDeImage);
     
    tic
     
    r = uint8(reshape(bin2dec(MatriceDeImage(:,1:8)), nRows, nColumns));
    g = uint8(reshape(bin2dec(MatriceDeImage(:,9:16)), nRows, nColumns));
    b = uint8(reshape(bin2dec(MatriceDeImage(:,17:24)), nRows, nColumns));
    img1(:,:,1) = r;
    img1(:,:,2) = g;
    img1(:,:,3) = b;
     
    toc
     
     
    tic
     
    power2 = 2.^(7:-1:0).';
    img2 = zeros(nRows, nColumns, 3, 'uint8');
    img2(1:nRows*nColumns) = (MatriceDeImage(:,1:8)-48)*power2;
    img2(nRows*nColumns+1:2*nRows*nColumns) = (MatriceDeImage(:,9:16)-48)*power2;
    img2(2*nRows*nColumns+1:end) = (MatriceDeImage(:,17:24)-48)*power2;
     
    toc
     
    all(img1(:)==img2(:))
     
    figure(1)
    clf
    subplot(211)
    imagesc(img1);
    subplot(212)
    imagesc(img2);
    Sur mon portable équipé d'un Intel Core i5 à 2.40GHz :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Elapsed time is 5.947567 seconds.
    Elapsed time is 0.088605 seconds.
    Pour l'astuce de la valeur 48, voir la FAQ : Comment transformer un signal sous forme de chaine de caractères en valeurs numériques ?
    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 du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 77
    Points : 63
    Points
    63
    Par défaut
    Ca marche très bien, l'astuce 48 est très utile aussi.

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/05/2009, 09h47
  2. Comment afficher une image au format FITS ?
    Par fab13 dans le forum Images
    Réponses: 5
    Dernier message: 01/05/2009, 14h29
  3. Lire et afficher une image (format TIFF)
    Par nuans dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 30/04/2007, 15h33
  4. afficher une image au format postscript
    Par inra-tlse dans le forum Graphisme
    Réponses: 3
    Dernier message: 03/07/2006, 10h32
  5. Réponses: 7
    Dernier message: 21/10/2004, 09h13

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