Digital Signal Processing Reference
In-Depth Information
Alle drei Komponenten
H
HSV
,S
HSV
,V
HSV
liegen damit im Intervall
[0
,
1]. Der Wert des Farbtons
H
HSV
ist bei Bedarf naturlich einfach in
ein anderes Winkelintervall umzurechnen, z. B. in das 0
...
360
◦
-Intervall
durch
H
HSV
←
12.2
Farbr aume und
Farbkonversion
360.
Durch diese Definition wird der Einheitswurfel im RGB-Raum auf
einen
Zylinder
mit Hohe und Radius der Lange 1 abgebildet (Abb.
12.12). Im Unterschied zur traditionellen Darstellung in Abb. 12.11 sind
alle HSB-Punkte innerhalb des gesamten Zylinders auch zulassige Farb-
punkte im RGB-Raum. Die Abbildung vom RGB- in den HSV-Raum ist
nichtlinear, wobei sich interessanterweise der Schwarzpunkt auf die ge-
samte Grundflache des Zylinders ausdehnt. Abbildung 12.12 beschreibt
auch die Lage einiger markanter Farbpunkte im Vergleich zum RGB-
Raum (siehe auch Abb. 12.1). In Abb. 12.13 sind fur das Testbild aus
Abb. 12.2 die einzelnen HSV-Komponenten als Grauwertbilder darge-
stellt.
H
HSV
·
Abbildung 12.12
HSV-Farbraum. Die Grafik zeigt den
HSV-Farbraum als Zylinder mit den
Koordinaten
H
(
hue
)alsWinkel,
S
(
saturation
) als Radius und
V
(
brightness value
)alsDistanzent-
lang der vertikalen Achse, die zwi-
schen dem Schwarzpunkt
S
und dem
Weißpunkt
W
verlauft. Die Tabelle
listet die (
R, G, B
)- und (
H, S, V
)-
Werte der in der Grafik markierten
Farbpunkte auf.
”
Reine“ Farben (zu-
sammengesetzt aus nur einer oder
zwei Farbkomponenten) liegen an der
Außenwand des Zylinders (
S
=1),
wie das Beispiel der graduell gesattig-
ten Rotpunkte (
R
25
,
R
50
,
R
75
,
R
)
zeigt.
RGB-/HSV-Werte
Pkt. Farbe
R G B H S V
S
Schwarz 0.00 0.00 0.00 — 0.00 0.00
R
Rot 1.00 0.00 0.00 0 1.00 1.00
Y
Gelb 1.00 1.00 0.00 1
/
6 1.00 1.00
G
Grun 0.00 1.00 0.00 2
/
6 1.00 1.00
C
Cyan 0.00 1.00 1.00 3
/
6 1.00 1.00
B
Blau 0.00 0.00 1.00 4
/
6 1.00 1.00
M
Magenta 1.00 0.00 1.00 5
/
6 1.00 1.00
W
Weiß
V
G
Y
P
W
C
R
B M
R
75
R
50
R
25
1.00 1.00 1.00
— 0.00 1.00
R
75
75% Rot 0.75 0.00 0.00
0
1.00 0.75
H
S
R
50
50% Rot 0.50 0.00 0.00
0
1.00 0.50
S
R
25
25% Rot 0.25 0.00 0.00
0
1.00 0.25
P
Pink
1.00 0.50 0.50
0
0.5 1.00
Java-Implementierung
In Java ist die RGB-HSV-Konvertierung in der Klasse
java.awt.Color
durch die Klassenmethode
float[] RGBtoHSB (int
r
, int
g
, int
b
, float[]
hsv
)
implementiert (HSV und HSB bezeichnen denselben Farbraum). Die
Methode erzeugt aus den
int
-Argumenten
r
,
g
,
b
(jeweils im Bereich
[0
...
255]) ein
float
-Array mit den Ergebnissen fur
H, S, V
im Intervall
[0
,
1]. Falls das Argument
hsv
ein
float
-Array ist, werden die Ergeb-
niswerte darin abgelegt, ansonsten (wenn
hsv
=
null
) wird ein neues
Array erzeugt. Hier ein einfaches Anwendungsbeispiel: