isp:gamma

# Differences

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 2019/05/09 00:12 Igor Yefmov 2019/05/08 17:10 Igor Yefmov created 2019/05/09 00:12 Igor Yefmov 2019/05/08 17:10 Igor Yefmov created 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' ​''​x2.2'' ​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$): // pseudo-code // pseudo-code void gamma(/​*array of pixels*/​image,​ double _gamma){ void gamma(/​*array of pixels*/​image,​ double _gamma){