Digital Signal Processing Reference
In-Depth Information
12 Farbbilder
static int HSVtoRGB (float h, float s, float v) {
1
// h, s, v ∈ [0 , 1]
Programm 12.7
HSV-RGB Konvertierung zur Um-
rechnung eines einzelnen Farbtupels
(Java-Methode). Die Methode ent-
spricht bzgl. Parametern, Ruckgabe-
wert und Ergebnissen der Standard-
Java-Methode Color.HSBtoRGB() .
2
float rr = 0, gg = 0, bb = 0;
3
// h (6 · h )mod6
float hh = (6 * h) % 6;
4
// c 1 ←h
int
c1 = (int) hh;
5
float c2 = hh - c1;
6
float x = (1 - s) * v;
7
float y = (1 - (s * c2)) * v;
8
float z = (1 - (s * (1 - c2))) * v;
9
switch (c1) {
10
case 0: rr=v; gg=z; bb=x; break;
11
case 1: rr=y; gg=v; bb=x; break;
12
case 2: rr=x; gg=v; bb=z; break;
13
case 3: rr=x; gg=y; bb=v; break;
14
case 4: rr=z; gg=x; bb=v; break;
15
case 5: rr=v; gg=x; bb=y; break;
16
}
17
int N = 256;
18
int r = Math.min(Math.round(rr*N),N-1);
19
int g = Math.min(Math.round(gg*N),N-1);
20
int b = Math.min(Math.round(bb*N),N-1);
21
// create int -packed RGB-color:
22
int rgb = ((r&0xff)<<16) | ((g&0xff)<<8) | b&0xff;
23
return rgb;
24
}
25
Abbildung 12.13
HSV-Komponenten fur das
Testbild aus Abb. 12.2. Die
dunklen Bereiche in h HSV ent-
sprechen roten und gelben Far-
ben mit Hue -Winkel nahe null.
h HSV
s HSV
v HSV
RGB
HLS
Die Berechnung des Hue -Werts H HLS fur das HLS-Modell ist identisch
zu HSV (Gl. 12.13-12.15), d. h.
H HLS = H HSV .
(12.20)
Die ubrigen Werte fur L HLS und S HLS werden wie folgt berechnet (fur
C high , C low , C rng siehe Gl. 12.12):
Search WWH ::




Custom Search