#include #include /* * яркость (b) зависит от входного напряжения (v) по следующему * закону: * b = k*v^g * * где "g" - это гамма. Будем выражать яркость в процентах (0-100), * а напряжение - в значениях пикселя (0-255). Для максимальной яркости мы имеем: * 100 = k*255^g * * или... * k = 100/(255^g) * * подставив это значение "k" в исходное уравнение, получаем следующее: * b = (100/(255^g)) * v^g * * или... * v = [b / (100/(255^g))] ^ (1/g) * * или... * v = 255 * ((b/100) ^ (1/g)) * */ int pv(double g, double b) { /* вход: * g гамма * b яркость (в процентах) * результат: * значение пикселя (0-255) */ return 255 * pow(b/100, 1/g) + 0.5; } int main() { double g, b; int v; b = 50; /* половина пикселей белая, половина черная */ for (g = 1.6; g < 2.81; g += .1) { v = pv(g, b); printf("gamma = %.2f, value = %d (%02x)\n", g, v, v); } return 0; }