WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Images - Farbig mit Hilfe von colormap

 

SP-Tweek

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2008, 10:41     Titel: Images - Farbig mit Hilfe von colormap
  Antworten mit Zitat      
Hallo,

ich möchte gerne Bilder erzeugen, die mit Hilfe einer Matrix ein farbiges Bild erstellen. Hintergrund ist eine Fouriertransformation, die ich den Y-Kanal eines Bildes anwende.
Bisher schreibe ich die DFT-Matrix einfach so raus und bekomme deshalb natürlich ein Graustufenbild. Was ich aber möchte, ist, dass die Werte anhand ihrer Größe unterschiedliche Farben bekommen.

Es funktioniert, wenn ich folgendes mache:

Code:


und darauffolgend im PropertyEditor die colormap einstelle. Allerdings sollen die Bilder automatisch gespeichert werden, daher ist diese Vorgehensweise nicht das, was ich mir vorstelle.

Ich hab es schon folgendermaßen probiert, allerdings funktioniert diese Methode leider nicht:

Code:

rgb_out = ycrcb2rgb(channel_fft);
rgb_out = ind2rgb8(rgb_out, 'jet');
 


gefolgt von einem imwrite(). Die Matrix channel_fft stellt hierbei das fouriertransformierte Bild dar und jet ist die colormap, die verwendet werden soll.

Vielen Dank für eure Hilfe!
Sebastian


iPaul
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 07.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2008, 19:17     Titel:
  Antworten mit Zitat      
Hi!

Ich weiß jetzt nicht genau, ob ich Dein Problem richtig verstehe. Ich könnte mir vorstellen, dass Du so eine Art Campbell-Diagramm willst.
Wenn die Farbachse die Werte darstellt (also die Amplituden der FFT?), über was möchtest Du die Funktion plotten? Frequenz dürfte bei der FFT wohl das eine sein. Und dann noch? Zeit oder Raum?

Falls das Dein vorhaben ist, kuck Dir mal in der Hilfe den "pcolor" Befehl an, der erstellt Dir auf jeden Fall ein farbiges Bild und ist anwendbar, wenn Du Deine FFT schon gemacht hast.
Falls Du Deine Werte als Zeitsignal hast, ist Dir "specgram" eventuell eine Hilfe.

Falls das nicht Dein Vorhaben ist, erläuter doch bitte noch mal, was Du genau plotten willst, und aus welchen Werten sich die Matrix zusammensetzt.


Gruß,
iPaul
Private Nachricht senden Benutzer-Profile anzeigen
 
SP-Tweek

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2008, 11:53     Titel:
  Antworten mit Zitat      
Also, was ich genau machen möchte, ist Folgendes:

ich habe eine DFT von einem Y-Kanal gemacht, daraus ergibt sich eine Matrix mit den Dimensionen matrix[height][width] mit der Breite und Höhe des Bildes.
Diese Matrix schreib ich dann raus mit imwrite(matrix) und bekomm dann natürlich ein Graustufenbild. Was ich allerdings gern hätte, ist ein Bild, das man bekommt, wenn man folgendes macht:

Code:

colormap('jet');
imshow(matrix);
 


Dann werden die Werte nämlich entsprechend ihrer Größe in verschiedenen Farben dargestellt.

Ich denke, es müsste ein Kommando geben, dem ich die Graustufenmatrix und die Colormap mitgeben kann, damit ich eine 3-dimensionale RGB Matrix rausbekomme, die ich dann mittels imwrite() speichern kann und die dann ein farbiges Bild enthält, das exakt übereinstimmt mit dem oben beschriebenen Code.

Vielen Dank für eure Hilfe!
Sebastian
 
iPaul
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 07.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2008, 12:19     Titel:
  Antworten mit Zitat      
Mmh... ok, das ist nicht das, was ich vermutet hatte. Mit "Bildverarbeitung" in MATLAB kenn ich mich nicht wirklich aus.
Und wenn ich's jetzt kapiert hab willst Du später 3 Matrizen (bzw. ein Array [height; width; 3] in denen jeweils der R / G / B-Anteil Deines Bildes steht.

Wenn Du aber oben schreibst, dass es geht, wenn Du es mit "imshow(matrix)" ausgibst und anschließend die Colormap mit dem Editor änderst, dann würd ich mal vermuten, dass man die Colormap auch mit dem passenden Befehl ändern kann, nicht nur im Editor.

Leider weiß ich da auch nicht mehr Sad


viel Erfolg
iPaul
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 17.12.2008, 12:29     Titel:
  Antworten mit Zitat      
In der Tat kann man einige Colormaps definieren und nutzen. Hier zwei häufig benutzte Solutions

http://www.mathworks.com/support/solutions/data/1-1NRHG9.html
http://www.mathworks.com/support/solutions/data/1-2H5IF9.html
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Norbert

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 08:58     Titel: Ich habe exakt das gleiche Problem
  Antworten mit Zitat      
Hallo Matlab Community,

ich habe momentan genau das selbe Problem wie hier beschrieben wurde nur finde ich nicht das die geposteten links eine Lösung zu diesem Problem darstellen. Also wenn noch irgendwer eine bessere Lösung hat wäre ich sehr dankbar.

Ich versuche hier mein Problem nochmal genauer zu erläutern.


Hier erstmal mein Code
Code:

%% 1 D Elippse
clear all;

a=200;
b=200;
c=800;

versch1=256;
versch2=256;
versch3=256;

for m=1:512
    for n=1:512
        grau(m,n)=sqrt(-c^2*(((m-versch1)^2/a^2)+((n-versch2)^2/b^2)-1))+versch3;
        if(grau(m,n)~=conj(grau(m,n)))
        grau(m,n)=0;
        end
    end
end


%% Matrix erstellt jetzt Normieren und Formatieren

maxwert=max(max(grau));
minwert=min(min(grau));
 grau=256*grau/maxwert;
 grau=(-1*grau)-minwert;


%% clims grenzen Berechnen

maxwert=max(max(grau));
minwert=min(min(grau));


colormap(gray(256))
clims = [ minwert maxwert ];
imagesc(grau,clims)

imwrite(grau,'untitled.tiff','tiff')

%% 3D Ansicht

% mesh(grau);

 



So hier nun das Ergebnis von
Code:
colormap(gray(256))
clims = [ minwert maxwert ];
imagesc(grau,clims)
 


natürlich sollte das Bild ohne die Achsen gespeichert werden dazu würde ich gern den befehl imwrite verwenden.
Hier das Ergebnis vom imwrite Befehl:


wenn ich die gesamt Matrix anhebe um z.B. den Wert 150 sieh das ganze so aus

Das sieht zwar schon etwas besser aus ist aber immer noch meilenweit vom richtigem Ergebnis entfernt.
So nun hoffe ich dass ich mein Problem richtig erläutern konnte und hoffe auf etwas Hilfe von euch.
Vielen vielen Dank schon mal im Voraus für die Hilfe!


Gruß Norbert
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.