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 :

Export Figure en PNG avec transparence


Sujet :

Images

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Export Figure en PNG avec transparence
    Bonjour,
    je travaille sur un outil permettant l'étude de couverture radar.
    En utilisant des enregistrements de longues durées, j'obtiens une figure contenant une image de ce type:
    Nom : Capture.JPG
Affichages : 172
Taille : 112,4 Ko

    Je souhaite exporter cette figure au format PNG avec gestion de la transparence:
    les partie bleues foncées doivent être transparentes.

    Je pars de la matrice 2D appelée Vq obtenue avec la fonction hist3 et "améliorée" avec une interpolation et un filtrage.
    Sa taille dépend de la résolution que je veux.

    Voici la méthode que j'ai employée pour obtenir une image png avec transparence des zones "mortes":

    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
    %CREATION DU FICHIER PNG AVEC TRANSPARENCE DES ZONES MORTES
    %Miroir par rapport à l'axe des X
    Mi=flipud(Vq);
    %Normalisation des valeurs dans la matrice 2D à faire pour le imwrite 
    %(contrairement à imagesc qui le fait automatiquement
    VqScaled = uint8(64*Mi/max(Mi(:)));
    %Colormap
    cmp = colormap('Jet'); % 256 element colormap
    %Création de la matrice en RGB (indispensable pour imwrite)
    RGB = ind2rgb(VqScaled,cmp);
    %Création de l'alphamap qui gère la transparence
    AData=Mi;
    AData(AData<=0)=0;
    AData(AData>0)=1;
    %Création du fichier image
    imwrite(RGB,cmp,'myfile.png','Alpha', AData);
    Cela fonctionne très bien dans une certaine plage de résolution mais à partir d'une certaine résolution, j'ai un "OUT OF MEMORY" sur la dernière ligne...
    Par exemple, dans le cas de l'image en pièce jointe, l'affichage dans ma GUI fonctionne (en utilisant imagesc(x,x,Vq) ) mais l'export en png plante.
    La matrice RGB fait 5001x5001x3, et étant de type double, pas étonnant que ça rame...
    En la passant en single, ça passe, mais le temps de traitement n'est pas super...

    J'ai mis un peu de temps pour trouver une méthode qui fonctionne pour cet export...

    Existe-t-il un autre moyen pour arriver à mes fins?
    Peut être suis-je un peu trop gourmand sur la résolution de mon image?

    Merci d'avance pour votre aide...

  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 311
    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 311
    Points : 52 902
    Points
    52 902
    Par défaut
    La variable RGB utilise environ 570 Mo de stockage à elle seule.

    Utilises-tu une version 64 bits de MATLAB ? Quelle quantité de mémoire RAM est installée sur ta machine ?

    Au passage, tu devrais pouvoir facilement économiser de la mémoire en remplaçant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AData=Mi;
    AData(AData<=0)=0;
    AData(AData>0)=1;
    par

    D'autre part, la variable Mi consomme inutilement de la mémoire. Pourquoi ne pas travailler directement avec Vq ?


  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour, concernant mon PC, j'utilise exprès une config "minimale", car mon outil risque d'être utilisé avec le MCR sur des configs de ce type. C'est donc une version 32bits de matlab et j'ai 2Go de RAM...
    Mais c'est bien, ça fait réfléchir sur l'utilisation de la mémoire...

    Concernant AData, effectivement, ce sera mieux... Merci.

    Pour Mi, il faut que je modifie une autre séquence qui utilise Vq et je devrai pouvoir m'en passer...

    Concernant l'exportation de PNG avec transparence, tu en penses quoi?
    Y-a-t'il une méthode plus simple?

Discussions similaires

  1. [GD] Miniature en cache d'image PNG avec transparence
    Par a.brioit dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/01/2012, 23h42
  2. PNG avec transparence entre IE7 et FireFox2
    Par Daikyo dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 27/02/2008, 16h38
  3. Image PNG avec transparence
    Par BlackStorm dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/09/2007, 15h00
  4. [D5] Zoom d'image PNG avec transparence
    Par Thierry Laborde dans le forum Delphi
    Réponses: 9
    Dernier message: 12/06/2006, 15h41
  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