isp:gamma

This shows you the differences between two versions of the page.

isp:gamma [2019/05/08 17:10] Igor Yefmov created |
isp:gamma [2019/05/09 00:12] (current) Igor Yefmov |
||
---|---|---|---|

Line 1: | Line 1: | ||

====== Gamma ====== | ====== Gamma ====== | ||

- | More precisely - this is a "gamma encoding" that is originally used to correct for the old-school %%CRT%%-type monitors' ''x<sup>2.2</sup>'' voltage correction. | + | More precisely - this is a "gamma encoding" that is originally used to correct for the old-school %%CRT%%-type monitors' \(x^{2.2}\) voltage correction. |

- | Gamma encoding is calculated as a power function, where each pixel's ''L'' component (in HSL color space) is corrected. | + | Gamma encoding is calculated as a power function, where each pixel's \(L\) component (in HSL color space) is corrected. |

- | For now we are using a simplified single-curve method which will eventually be replaced with a more sophisticated multi-point curve that would allow a user to specify a curve using up to ''N'' knee points (at which point it will no longer be proper to call this "gamma" but rather something else). | + | For now we are using a simplified single-curve method which will eventually be replaced with a more sophisticated multi-point curve that would allow a user to specify a curve using up to \(N\) knee points (at which point it will no longer be proper to call this "gamma" but rather something else). |

- | Implementation-wise there's nothing special about this (assuming ''L'' is in range ''[0..1]'' and ''_gamma'' is ''≥1''): | + | Implementation-wise there's nothing special about this (assuming \(L \in [0..1]\) and \(\_gamma \leq 1\)): |

<code c++>// pseudo-code | <code c++>// pseudo-code | ||

void gamma(/*array of pixels*/image, double _gamma){ | void gamma(/*array of pixels*/image, double _gamma){ |

/home/adminsub2r/public_html/dokuwiki/data/pages/isp/gamma.txt · Last modified: 2019/05/09 00:12 by Igor Yefmov