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

Graubild in RGB-Bild umwandeln

 

MRBBB
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 15.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2015, 12:00     Titel: Graubild in RGB-Bild umwandeln
  Antworten mit Zitat      
Hallo zusammen,

gibt es eine möglichkeit ein Graubild (.pgm) in ein RGB-Bild umzuwandeln?
Umgekehrt funktionierts ja ganz einfach..
Wenn ja, wie müsste der Code dazu aussehen?


Viele Grüße

MRBBB
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 18.02.2015, 12:09     Titel:
  Antworten mit Zitat      
welche ergebnisse hast du mit dem ersten anschlag bei google erzielt?
http://www.cs.huji.ac.il/~yweiss/Colorization/
oder auch der 2. anschlag
http://www.mathworks.com/matlabcent.....to-color-image-conversion nachträglich einfärben ist nicht so leicht.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
MRBBB
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 15.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2015, 13:38     Titel:
  Antworten mit Zitat      
Hallo Winkow,

danke für deine Hilfe! Ich habe schon mehrere Seiten durchforscht..
aber nicht wirklich was gefunden..Auch deine zwei links helfen mir leider nicht weiter (verstehe auch nicht wirklich mit dene was anzufangen..)..
Ich habe ein Graubild in .pgm Format, diese möchte ich in RGB umwandeln und mir die einzelnen Kanäle(R-G-B) danach angucken. Habe gedacht da gibt es vielleicht in Matlab eine Funktion wie rgb2gray..

Gruß MRBBB
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: 18.02.2015, 13:56     Titel:
  Antworten mit Zitat      
Moin MRBBB,

man kann natürlich ein Graustugfenbild (m*n) in eine Farbmatrix(m*n*3) wandelt. Das geht mit:

Code:
Color=cat(3,I,I,I);  % I = das Bild


oder:

Code:


Beide Verfahren zeigen bereits, dass ein SW-Bild 3x hintereinander gelegt wird. Dadurch wird natürlich keine Farbe gebildet!! Die Farbinformationen sind, mit Ausnahme einer m*n-Matrix + einer "Map" nicht vorhanden. Jeder Farbauszug enthält nur das SW-Bild.

Du hast nach der Umrechnung aber die Möglichkeit, Farbe in ausgesuchten Bereich zwangsweise zu erzeugen.

Grüße -Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
MRBBB
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 15.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2015, 14:10     Titel:
  Antworten mit Zitat      
Hallo Hubertus,

vielen vielen Dank! Nur zum Verständnis:
Wie du es bereits erwähnt hast, liegt das Bild nicht in Farbe vor.
Die Matrix ändert sich von (m*n) in (m*n*3).
Ich brauche aber die Werte der einzelnen Farbkanäle. Ich kann sie mir nicht einfach mit
Code:
R= rgb(:,:,1);                                                
G= rgb(:,:,2);
B= rgb(:,:,3);
 

anzeigen?
Ist es überhaupt möglich aus dem Graubild die Farbinformationen wieder zugewinnen? RGB Bild in Graubild wäre ja auch über
gray= 0.2989R + 0.5870G + 01140R möglich..


Gruß MRBBB
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: 18.02.2015, 14:28     Titel:
  Antworten mit Zitat      
Wenn du ein RGB-Bild in ein SW-Bild umrechnest, reduzierst du 3 Farbinformationen auf eine (1) Graustufe. Die Rückrechnung geht in diesem Verfahren nicht. Alle Farbinformationen sind verloren!!

Du kannst natürlich das "neue" Farbbild wieder in die einzelnen Farbkanäle wandeln, wie du bereits richtig beschrieben hast. Die "Farbkanäle" zeigen aber alle das gleiche Graustufenbild. Was neu ist, dass du einzelne Bereiceh mit Farben füllen kannst. Das ist aber auch alles. "Colorieren", wie z.B. alte SW-Filme in Farbe, funktioniert nur in äußerst aufwendigen Verfahren.

Bei der Umwandlung von einem Farbbild in ein SW-Bild hast du 3 Farbwerte, die mit deiner richtigen Formel zu Grau reduziert werden. Aber umgekehrt hast du 3x den gleichen Wert, der nur mit unterschiedlichen Muliplikatoren verrechnet wird. Ich kann mit vorstellen, dass das mit plakativen, monochromen Flächen funktioniert, aber nicht mit einem Bild, in dem sich der Wert von Pixel zu Pixel ändert.

Nachtrag:

Ein einfacher Versuch mit 3 Farbfeldern zeigt, dass zwar ein Farbbild entsteht, aber die Farben mit der bekannten, einfachen Umrechnung nicht übereinstimmen. Da muss wohl noch etwas korrigiert werden, ab von einem Bild von SW zu Color noch sehr weit entfernt.

Zuletzt bearbeitet von Hubertus am 18.02.2015, 14:39, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
MRBBB
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 15.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2015, 14:37     Titel:
  Antworten mit Zitat      
Hallo Hubertus,

vielen Dank für die lange und ausführliche Erläuterung!
Dann wird wohl das was ich mir vorstelle nicht funktionieren...Schade...
Aber es hat mir wirklich sehr geholfen. DANKE!


Gruß MRBBB
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: 18.02.2015, 16:47     Titel:
  Antworten mit Zitat      
Deine Frage ist interessanter als zuerst angenommen. Ich bin mir nicht mehr sicher, ob das nicht doch geht. Ich habe mich von der Vorstellung leiten lassen, ein tatsächlich vorhandenes SW-Bild, von dem es keine Umrechnung von RGB zu SW gibt (z.B. alte SW-Bilder),wieder in ein Farbbild umzurechnen. Das geht ohne die aufwendigen Colorierungs-verfahren nicht, da es eine phys. Umwandlung war. Es wird auch nicht gehen, wenn der Algo. nicht mit deinen Werten übereinstimmt. Photoshop mach z.B. aus Farbe zu Grau ein auffallend anderes Ergebnis. Während IrfanView ein fast identisches Ergebnis wie Matlab erzeugt.

Bei deinem Beispiel geht man aber von einem Farbbild aus, für das es einen festen Umrechnungsalgorithmus gibt. Mit dieser bekannten Variable müsste man durch inverse Rechnung wieder auf das Ursprungsbild kommen. Sofern Rundungsfehler nicht die Farben verändern! Stellt sich nur die Frage, was man damit erreichen will. Trotzdem eine wirklich interessante Frage. Vl. hat ein anderer User dazu eine Idee.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 18.02.2015, 17:01     Titel:
  Antworten mit Zitat      
die frage wäre doch ob dieser algorythmuss eineindeutig ist.
bei rgb2gray gibt es zwar zu jeder farbe einen grauwert
Code:
0.2989 * R + 0.5870 * G + 0.1140 * B
aber dieser grauwert wiederrugm kann doch durch recht viele farbkominationen von R G und B geliefert werden. oder sehe ich das falsch
_________________

richtig Fragen
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: 18.02.2015, 17:57     Titel:
  Antworten mit Zitat      
Hallo Winkow,

ich habe mir zunächst eine simple Colormatrix gemacht und diese dann umgerechnet:
Code:
R=[255 255 0 0 0 0;255 255 0 0 0 0];
G=[0 0 255 255 0 0;0 0 255 255 0 0];
B=[0 0 0 0 255 255;0 0 0 0 255 255];
x=cat(3,R,G,B);
y=.2989*x(:,:,1)+.5870*x(:,:,2)+.1140*x(:,:,3)  % Werte anzeigen lassen


y ist jetzt m*n. Um von y wieder auf eine farbrichtige Colormatrix zu kommen, müsste die inverse Rechnung erfolgen:

Code:
RGB(:,:,1)=y.......???
RGB(:,:,2)=y.......???
RGB(:,:,3)=y.....???
figure; imshow(RGB)


Es handelt sich hier um eine äußerst einfache Matrix ohne Zwischentöne. Zwischen den Zahlen gibt es also eine logische Beziehung. Aber wo ist der Denkfehler oder geht das doch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 18.02.2015, 18:31     Titel:
  Antworten mit Zitat      
es ist nicht möglich
ich hab das mal ausprogbiert
Code:
R=0:255;
G=R;
B=R;
grau=nan(256^3,1);
ind=1;
for k=1:256
    for l=1:256
        for m=1:256
            grau(ind)=0.2989 * R(k) + 0.5870 * G(l) + 0.1140 * B(m);
            ind=ind+1
        end
    end
end
size(unique(grau),1)==size(grau,1)

es gibt grauwerte dobbelt. also keine eindeutige rücktransformation
edit: hatte nen fehler
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
gast123456

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2020, 16:02     Titel: Rückfrage
  Antworten mit Zitat      
Hallo! Ich weiß, das Thema ist schon etwas alt aber ich hätte eine Frage dazu: ich soll ein Rgb in ein Graubild umwandeln mithilfe der 1-Norm, weiß jemand wie das geht?
 
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.