RGB in HSV-Spektrum

M--G

Lieutenant
Registriert
Dez. 2006
Beiträge
762
Guten Morgen!
Auch nach nochmaligen Lesen werde ich aus Wikipedia nicht schlau.
http://de.wikipedia.org/wiki/HSV-Farbraum

Wie kann man aus dem RGB-Spektrum rechnerisch ins HSV?
(kartesisch versus polar)

Brauche für eine Auswertung von thermochromatischen Flüssigkristallbildern den Farbwert in Polarkoordinaten.
Was wäre z.B. R124 G231 B78 in HSV und wie?
Das ganze muss ich automatisieren, eine Antwort wie "in gimp den RGB-Wert eingeben und dann die HSV Werte auslesen" hilft mir also wenig ^^

DANKE schonmal für alle Tipps!
 
In LabView ^^
Deswegen wäre mir eine normale mathematische Rohlösung ohne sprachespezifischen Funktionen am liebsten.
Danke ;)

Vielleicht irgendwer, der versteht, was es mit den max.... auf sich hat?
Meinen die damit 255?
 
Max ist der maximale Wert der gegebenen RGB Farbe. Also wenn du R:124 G:231 B:78 hast, dann ist Max von RGB = 231, bzw. der G-Wert. Das selbe Spiel bei Min.
 
ok danke!
Nun verstehe ich es :-)
Bin zwar etwas verwirrt, dass es egal ist, welche Farbe max bzw min ist....
Aber nun bekomme ich es hin!
Danke :-)
 
Zuletzt bearbeitet:
Also egal ist das ja nicht. Je nach dem welcher Wert maximal ist, musst du ja für die Berechnung von H unterschiedliche Funktion benutzen. Guck doch nochmal in deinen Wiki Link.
 
Ja je nachdem was Max ist. Aber es gibt kein If für min ^^
 
Übrigen, fallst du wirklich bei RGB sowas hast wie R:124 G:231 B:78, musst du das erst umrechnen. Die Funktionen aus Wiki setzen voraus, dass die RGB Farben im Intervall zwischen 0 und 1 sind.
 
Danke :)
Hätte ich jetzt fast übersehen ;)
also einfach R/255
 
Bei deinem Wiki Artikel hast du ja wahrscheinlich den Abschnitt
http://de.wikipedia.org/wiki/HSV-Farbraum#Umrechnung_RGB_in_HSV
gefunden.
Besonders interessant sind auch die kleinen Fußnoten - dort wird nämlich bereits fertiger Code verlinkt.
zB hier:
http://www5.informatik.tu-muenchen.de/lehre/vorlesungen/graphik/info/csc/COL_25.htm#topic24

Code:
RGB to HSV (Foley and VanDam)

  max = maximum of RGB
  min = minimum of RGB

  V = max
  S = (max - min) / max

  if S = 0, H is undefined, else
    delta = max-min

    if R = max, H = (G-b)/delta
    if G = max, H = 2 + (B-R)/delta
    if B = max, H = 4 + (R-G)/delta

    H = H*60
    if H < 0, H = H + 360

edit:
Es gibt natürlich auch fertige Bildverarbeitungs-Bibliotheken die sowas können. zB hier:
http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html (cv::cvtColor)
oder auch
http://hci.iwr.uni-heidelberg.de/vigra/doc/vigra/group__ColorConversions.html (bzw http://hci.iwr.uni-heidelberg.de/vigra/doc/vigra/group__PolarColors.html)
oder auch
http://imagejdocu.tudor.lu/
Aber wenn du nich viel mehr brauchst würd ichs selbst programmieren anstatt sowas einzubinden - das geht sicher schneller ;-)
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
13
Aufrufe
1.390
Antworten
0
Aufrufe
927
Zurück
Oben