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

Pixel eines GW-Bildes einfärben

 

mark_e

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2010, 13:40     Titel: Pixel eines GW-Bildes einfärben
  Antworten mit Zitat      
Hallo Zusammen,

ich habe ein GW-Bild und würde gerne bestimmte Pixel z.B. rot einfärben - unter anderem damit diese Pixel in der Bildanzeige farbig erscheinen.
Geht das in Matlab? wenn ja, wie?

Herzlichen Dank vorab für eure Ratschläge!
Gruß


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 27.10.2010, 14:10     Titel:
  Antworten mit Zitat      
Moin,

gehe ich richtig in der Annahme, dass Du unter GW ein Graubild verstehst?
In diesem Fall muß Du daraus erst einmal in ein m*n*3 Bild wandeln und das selektierte Pixel auf einen Farbwert setzen. Ich erhalte allerdings nach:
I(30,35,2)=255; immer nur die Farbe Grün und nicht Rot - weiß im Moment nicht, was ich umstellen muß. Werde mich dann aber wieder melden.

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
mark_e

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2010, 15:03     Titel:
  Antworten mit Zitat      
korrekt, als GW-Bild bezeichne ich ein Grauwertbild (2dimensional mit (reihe,spalte) ).

gruß und vielen dank vorab für deine erneute rückmeldung!
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 27.10.2010, 15:26     Titel:
  Antworten mit Zitat      
So, das scheint wie folgt zu gehen:

Code:
I=imread('cameraman.tif');  
I2=repmat(I,[1 1 3]);
R=I2(:,:,1);
G=I2(:,:,2);
B=I2(:,:,3);
I3=cat(3,R,G,B);
I3(30,30,1)=255;    % Lage des Pixels (30,30) und 1. Farbe
I3(30,30,3)=255;    % Lage des Pixels (30,30) und 2. Farbe = Rot
figure; imshow(I3)



Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
mark_e

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2010, 07:50     Titel:
  Antworten mit Zitat      
Herzlichen Dank, das klappt!
 
prassor

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.11.2010, 12:52     Titel:
  Antworten mit Zitat      
das ist wirklich schon mal wirklich gut und hilfreich! Smile

aber wie macht man es nun, dass bei einem binär-bild zb. alles schwarzen pixel in einem bild nun rot dargestellt werden?!


grüße
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 30.11.2010, 07:53     Titel:
  Antworten mit Zitat      
Moin, Moin,

eine "schöne Lösung" habe ich noch nicht. Es kommt sehr auf Dein Bildinhalt an (trotz Binärbild können evtl. kleine Farbstörungen auftreten), aber Du kannst mal folgendes versuchen:

Code:
[L,n]=bwlabel(X);   % X = Binärbild
RGB=label2rgb(L,'gray','r','shuffle');  
figure; imshow(RGB)


Man könnte größere Graubereiche, die stören, durch Veränderung der Bildhelligkeiten und/oder Kontrastveränderungen angleichen.

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 30.11.2010, 12:43     Titel:
  Antworten mit Zitat      
Hallo,

Danny hat gestern dafuer die Loesung gepostet, vielleicht war es ja auch der selbe Threadopener...

http://www.gomatlab.de/viewtopic,p,56690.html#56690

MFG

Sco
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: 30.11.2010, 14:10     Titel:
  Antworten mit Zitat      
Moin Sco,

damit färbst du das ganze Bild rot ein. Es sollen aber nur die schwarzen Pixel
rot eingefärbt werden. Ich frage mich schon die ganze Zeit, warum das so schwer ist. 0 ist gleich schwarz und bei einem Binärbild gibt es keine Zwischenwerte. Eine Erweiterung zum Farbbild bringt nichts, da in allen Fabrkanälen der absolut gleiche Inhalt vorhanden ist. Ich denke, dieser Weg führt nicht zum Ziel. Ich meine, dass der Bereich Segmentation näher liegt.
Komme aber auch nicht weiter. Interessiert mich trotzdem.

Hubertus

edit.

Ich habe gerade festgestellt, dass eine Variable nicht aus dem Workspace gelöscht wurde. Dadurch das rote Bild. Dein Vorschlag führt zu einem roten und hellgrünen Bild (so'n vermantsches Cyan) - wenn das so richtig ist !?
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 30.11.2010, 17:15     Titel:
  Antworten mit Zitat      
Hallo,


Zitat:

Dein Vorschlag führt zu einem roten und hellgrünen Bild (so'n vermantsches Cyan) - wenn das so richtig ist !?

Ja das macht sein Beispiel.

Ich bin mir sicher, dass es mit dannys Beispiel auch geht. Habe aber gerade keine Zeit es auszuprobieren. Deswegen diese schnelle Loesung:
Code:

load trees
BW = im2bw(X,map,0.4);
cmap = repmat([0 0 0],2,1);
cmap(1,:) = [1 0 0];
figure,imshow(BW);
figure,imshow(BW,cmap);
 


MFG

Sco
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: 30.11.2010, 18:21     Titel:
  Antworten mit Zitat      
Prima Lösung -

"nehme alles zurück und behaupte das Gegenteil" Wink

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 01.12.2010, 00:00     Titel:
  Antworten mit Zitat      
Hallo,

so jetzt hatte ich nochmal Zeit. So würde es mit Dannys Ansatz gehen:
Code:

BW = imread('circbw.tif');
imshow(BW);
pause(1);
R = ones(size(BW));
G = double(BW);
B = G;
RGB(:,:,1)=R;
RGB(:,:,2)=G;
RGB(:,:,3)=B;
figure,imshow(RGB);
 


In meinen obigen Beispiel habe ich in der Eile noch einen kleinen Fehler gemacht, da ich aus den ursprünglich weißen Pixeln schwarze mache. Es muss

Code:

cmap = repmat([0 0 0],2,1);
durch
cmap = repmat([1 1 1],2,1);
 

ersetzt werden.

MFG

Sco
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 - 2024 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.