Both sides previous revisionPrevious revision | Next revisionBoth sides next revision |
isp:hsl-_rgb [2021/07/24 13:53] – [Step-by-step algorithm (10x3 bit channel, 30-bit RGB)] Igor Yefmov | isp:hsl-_rgb [2021/07/24 14:37] – [Step-by-step algorithm (10x3 bit channel, 30-bit RGB)] Igor Yefmov |
---|
| 2 | \[S\] | \[sat(pixel)\] | ''9'' | \[0..511\] | <code>S = pixel.sat();</code> | \[^1/_2\] | | | 2 | \[S\] | \[sat(pixel)\] | ''9'' | \[0..511\] | <code>S = pixel.sat();</code> | \[^1/_2\] | |
| 3 | \[L\] | \[luma(pixel)\] | ''12'' | \[0..4095\] mapped into \(0..255\) | <code>L = pixel.luma();</code> | \[\frac{1}{2^4}\] | | | 3 | \[L\] | \[luma(pixel)\] | ''12'' | \[0..4095\] mapped into \(0..255\) | <code>L = pixel.luma();</code> | \[\frac{1}{2^4}\] | |
| 4 | \[h\] | \[(H+360^\circ) \bmod 360^\circ\] | ''14'' | \[0..16383\] mapped into \(0^\circ..+360^\circ\) | <code>h = (H > 0 ? H : H + 16383);</code> | \[\frac{180}{2^{13}}\] | | | 4 | \[h\] | \[(H+360^\circ) \bmod 360^\circ\] | ''14'' | \[0..16383\] mapped into \(0^\circ..+360^\circ\) | <code>h = (H > 0 ? H : H + 16383);</code> | \[\frac{360}{2^{14}}\] | |
| 5 | \[L^\prime\] | \[1-|2L-1|\] | ''12'' | \[0..510\] | <code>L_prime = 2^12 - abs(2 * L - 2^12);</code> | \[\frac{1}{2^12}\] | | | 5 | \[L^\prime\] | \[1-|2L-1|\] | ''12'' | | <code>L_prime = 2^12 - abs(2 * L - 2^12);</code> | \[\frac{1}{2^{12}}\] | |
| 6 | \[C\] | \[L^\prime \times S\] | ''21'' | \[0..2^21-1\] | <code>C = L_prime * s;</code> | \[\frac{1}{2^21}\] | | | 6 | \[C\] | \[L^\prime \times S\] | ''21'' | | <code>C = L_prime * s;</code> | \[\frac{1}{2^{21}}\] | |
| 7 | \[H^\prime\] | \[\frac{H}{60^\circ}\] | ''23'' | \[0..2^23-1\] mapped into \(0..6\) | <code>Hp = H * 273;</code> | \[\frac{180}{2^{27}}\] | | | 7 | \[H^\prime\] | \[\frac{H}{60^\circ}\] | ''23'' | \[0..2^23-1\] mapped into \(0..6\) | <code>Hp = H * 273;</code> | \[\frac{180}{2^{27}}\] | |
| 8 | \[H^\prime_2\] | \[H^\prime \bmod 2\] | ''10'' | \[0..727\] | <code>Hp2 = Hp - (91 * 2^3) * ((Hp * 90) >> 16)</code>((optimized from <code>Hp2 = Hp % (2^3 * 273 / 3);</code>)) | \[\frac{45}{2^{14}}\] | | | 8 | \[H^\prime_2\] | \[H^\prime \bmod 2\] | ''21'' | | <code>Hp2 = Hp - (91 * 2^14) * (Hp * 90) >> 27)</code>((optimized from <code>Hp2 = Hp % (2^14 * 273 / 3);</code>)) | \[\frac{180}{2^{27}}\] | |
| 9 | \[H^\prime_{2-1}\] | \[H^\prime \bmod 2 - 1\] | ''10''\\ signed | \[-364..+363\] | <code>Hp2m1 = Hp2 - 2^2 * 91;</code> | \[\frac{45}{2^{14}}\] | | | 9 | \[H^\prime_{2-1}\] | \[H^\prime \bmod 2 - 1\] | ''10''\\ signed | | <code>Hp2m1 = Hp2 - 2^2 * 91;</code> | \[\frac{180}{2^{27}}\] | |
| 11 | \[H^\prime_{final}\] | \[1-|H^\prime \bmod 2 - 1|\] | ''9'' | \[0..364\] mapped into \(0..1\) | <code>Hpf = 91 * 2^2 - abs(Hp2m1);</code> | \[\frac{45}{2^{14}}\] | | | 11 | \[H^\prime_{final}\] | \[1-|H^\prime \bmod 2 - 1|\] | ''9'' | \[0..364\] mapped into \(0..1\) | <code>Hpf = 91 * 2^2 - abs(Hp2m1);</code> | \[\frac{45}{2^{14}}\] | |
| 12 | \[X\] | \[C \times H^\prime_{final}\] | ''9'' | \[0..510\] | <code>X = ((C * Hpf * 180) >> 16);</code> | \[\frac{1}{2^9}\] | | | 12 | \[X\] | \[C \times H^\prime_{final}\] | ''9'' | \[0..510\] | <code>X = ((C * Hpf * 180) >> 16);</code> | \[\frac{1}{2^9}\] | |