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

Werten bestimmte Farben zuordnen

 

Seb85
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 15.03.11
Wohnort: ---
Version: 7.11.0 (R2010b)
     Beitrag Verfasst am: 11.04.2011, 12:36     Titel: Werten bestimmte Farben zuordnen
  Antworten mit Zitat      
Hi,
hab ne Matrix gegeben mit Werten von 0 bis 12. Jedem Wert würde ich nun gerne eine einzelne Farbe zuordnen.
Z.b.:
0=weiß
1=gelb
2=rot
3=blau
4=grün
etc.
ginge das mit ner colorbar ?
und am besten mit find() die einzelnen Werte einfärben ?

thx
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 11.04.2011, 13:40     Titel:
  Antworten mit Zitat      
Moin,

hilft Dir das weiter?

http://www.gomatlab.de/colorbar-ein.....g-farbverlauf-t10746.html

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Seb85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 15.03.11
Wohnort: ---
Version: 7.11.0 (R2010b)
     Beitrag Verfasst am: 11.04.2011, 14:30     Titel:
  Antworten mit Zitat      
jaein,
geht das net "direkter", das man halt wie oben beschrieben den einzelnen Werten direkt ne Farbe zuordnet.
Handelt sich halt um ne Klassifizierung von einem Bild und da ich durch sequentielles vorgehen immer neue Bilder ausgegeben kriege möchte ich net immer rumschrauben müssen an jedem einzelnen Pic Smile
D.h. z.B. das ich gerne Wasserflächen direkt blau angezeigt haben möchte, n Wald grün, n Maisfeld gelb usw.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 11.04.2011, 14:48     Titel:
  Antworten mit Zitat      
Jo, das habe ich mir irgendwie gedacht. Ich sitzte hier vor einem Phänomen.
Um Bereiche farbig zu machen, benötigt man eine m*n*3 Matrix. Da könnte man Bereiche in einem Kanal indizieren. Das funktioniert auch, wenn mein Bild mit reinen Graustufen als RGB-Bild aus Photoshop kommt. Wenn ich das gleiche Bild in Matlab von m*n auf m*n*3 setze (I2=cat(3,I,I,I) oder auch
mit: repmat(I,[ 1 1 3]) zum Colorbild ändere, funktioniert das nicht. Das hat auch nichts mit im2double oder double zu tun. Das geht einfach nicht!! Was ist an einem 3-dimensionalen Matlab-Bild anders als an einen Photshop-Bild?
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 11.04.2011, 15:06     Titel:
  Antworten mit Zitat      
Warum das trotz absetzen des gleichen Codes mehrmals nicht funktionierte ist mir völlig unklar. Irgendwas geht hier eigene Wege. Versuche mal folgendes:

Code:
I=imrad('cameraman.tif');   % m*n
figure; imshow(I)
I2=repmat(I,[1 1 3]);   %m*n*3
R=I2(:,:,1);   % Rotkanal
ind=(R>60) & (R<170);    % Bereich von bis
Y=R;
Y(ind)=55;   % auf diesen oder anderen Wert indizieren.Ändern sich Farben
G=I2(:,:,2);
B=I2(:,:,3);
RGB=cat(3,Y,G,B);
figure; imshow(RGB)


Ich hoffe, das funktioniert bei Dir, sonst bitte melden. Du müßtest dann in den anderen Kanälen die FArben zuordnen. Ein bischen aufwendig. Vielleicht postet einer noch eine schnellere Lösung.

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.04.2011, 00:24     Titel: Re: Werten bestimmte Farben zuordnen
  Antworten mit Zitat      
Hallo Seb85,

IND2RGB mach das für Dich:
Code:

C = uint8(floor(rand(20, 20) * 5);
M = [1, 1, 1; ...
   1, 1, 0; ...
   1, 0, 0; ...
   0, 0, 1; ...
   0, 1, 0];
RGB = ind2rgb(C, M);
image(RGB);

Oder direkt:
Code:
sizeC = size(C);
RGB = reshape(M(C + 1, :), sizeC(1), sizeC(2), 3);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Seb85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 15.03.11
Wohnort: ---
Version: 7.11.0 (R2010b)
     Beitrag Verfasst am: 12.04.2011, 12:36     Titel:
  Antworten mit Zitat      
das sieht schonmal gut aus, nur bräuchte ich nun vielmehr Farben..wie wäre da die Matrix
ich bräuchte:
0=weiß
1=grün
2=orange
3=gras grün
4=braun
5=schwarz
6=sonnen gelb
7=türkis
8=blau
9=rot
10=dunkelgrün
11=dunkleres gelb (n schmutziges)
12=grau

wäre das möglich ? wenn ja wie sieht die dazugehörige "Farbmatrix" aus Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Seb85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 15.03.11
Wohnort: ---
Version: 7.11.0 (R2010b)
     Beitrag Verfasst am: 15.04.2011, 10:39     Titel:
  Antworten mit Zitat      
hmm, keiner ne Idee ? Schade..
mit den normalen colormaps isset alles so "eintönig" Smile
sollte sich schon mehr voneinander abheben alles..
ist halt für ne Klassifizierung
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 15.04.2011, 11:06     Titel:
  Antworten mit Zitat      
Mit den Ideen ist das so ein Sache. Wir haben Dir 2 Wege beschrieben, die sehr unterschiedlich sind. Ich weiß nicht, was Du vorhast. Es gibt ja die Möglichkeit, bestimmten Grauwerten, bestimmte Farben zuzuordnen. Ob das Sinn macht, gleiche Grauwwerte mit unterschiedlichen Farben darzustellen, mußt Du beantworten. An ind2rgb habe ich natürlich auch gedacht. Das ist naheliegend. Wenngleich ich noch nicht herausgefunden habe, wie die Farbwerte zu den Grautönen zugeordnet werden. Bei der Übergabe der Beispiel an unterschiedliche Graubilder habe ich leider nichts brauchbares gefunden. das zeigt aber nur, dass in den Graubildern bestimmte Differenzen vorhanden sein müssen, damit dasd Verfahren gelingt. Das große Problem ist immer, Verfahren auf unterschiedliche Bilder zu übertragen. Ganz schlecht ist es, wenn man die Bilder nicht kennt.

Die Matrix dazu kannst Du natürlich mit Deinen Farbvorgaben anpassen. Nimm Dir einfach die dazugehörigen RGB-Werte aus einer Farbtabelle (die hat nichts mit Matlab zu tun) und rechne die Werte auf den Bereich zwischen 0 und 1 um.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2011, 11:07     Titel:
  Antworten mit Zitat      
Hallo,

Wenn ich das richtig verstehe, hast du ne Matrix mit Werten von 0 bis 12.

Dann könnte du das wie folgt machen


Code:

%eigene Colormap
C =[
    1.0000    1.0000    1.0000
         0    0.3922         0
    1.0000    0.2706         0
    0.4863    0.9882         0
    0.5451    0.2706    0.0745
         0         0         0
    1.0000    1.0000         0
         0    1.0000    1.0000
    1.0000         0         0
    0.3333    0.4196    0.1843
    0.9333    0.8667    0.5098
    0.5000    0.5000    0.5000]
M=randi(13,100)-1; %100x100 Matrix mit Werten von 0 bis 12
imshow(M+1,C);
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 15.04.2011, 11:22     Titel:
  Antworten mit Zitat      
Ja, genau. Das ist wäre der Weg. Aber fliegen die Farben einfach so im Bild herum oder kann ich den Farben bestimmte Grauwerte zuordnen? Wahrscheinlich sollen die Farben, ähnlich in der Kartografie, bestimmte Aussagen machen - oder soll das einfach nur bunt aussehen???
Private Nachricht senden Benutzer-Profile anzeigen
 
Seb85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 15.03.11
Wohnort: ---
Version: 7.11.0 (R2010b)
     Beitrag Verfasst am: 15.04.2011, 11:40     Titel:
  Antworten mit Zitat      
soll wie gesagt ne Klassifikation sein von nem Luftbild.
speziell: Ich hab nen Random Forest Algorithmus gegeben, den wende ich zunächst als Training an, und später aufs gesamte bild dann nochmal.
dann sollte man ja ein Bild vorher haben (ohne classification) und nacher mit, so dasset bisschen aussieht wie Malen nach Zahlen.
Z.b. werden dann alle Waldregionen grün angezeigt, nen See blau, n Maisfeld gelb usw. Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Seb85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 15.03.11
Wohnort: ---
Version: 7.11.0 (R2010b)
     Beitrag Verfasst am: 15.04.2011, 11:45     Titel:
  Antworten mit Zitat      
sieht schonmal super aus, danke hierfür..
damit ihr euch das bisschen vorstellen könnt hier mal das Bild was dabei rumkommt

RFclassification.jpg
 Beschreibung:

Download
 Dateiname:  RFclassification.jpg
 Dateigröße:  143.62 KB
 Heruntergeladen:  2079 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 15.04.2011, 12:47     Titel:
  Antworten mit Zitat      
Noch ein kleiner Hinweis:

http://www.mathworks.com/matlabcent...../28943/3/cptcmapImage.png
Private Nachricht senden Benutzer-Profile anzeigen
 
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.