Added proper gamma correction tables.

This commit is contained in:
Piotr Esden-Tempski 2010-02-22 12:59:15 +01:00
parent 18097d9ed0
commit 002ec200ad

View File

@ -21,7 +21,16 @@
#include <libopenstm32/gpio.h> #include <libopenstm32/gpio.h>
#include <libopenstm32/timer.h> #include <libopenstm32/timer.h>
#define GAMMA_3_0
/*
* Gamma correction table
*
* The nonlinear tables are calculating with the function:
* Iout = Iin ** gamma
*/
static const uint16_t gamma_table[] = { static const uint16_t gamma_table[] = {
#ifdef GAMMA_LINEAR
1, 4, 9, 17, 26, 37, 51, 67, 1, 4, 9, 17, 26, 37, 51, 67,
84, 104, 126, 149, 175, 203, 233, 265, 84, 104, 126, 149, 175, 203, 233, 265,
299, 334, 372, 412, 454, 499, 545, 593, 299, 334, 372, 412, 454, 499, 545, 593,
@ -54,6 +63,79 @@ static const uint16_t gamma_table[] = {
54351, 54816, 55282, 55751, 56222, 56694, 57169, 57645, 54351, 54816, 55282, 55751, 56222, 56694, 57169, 57645,
58123, 58604, 59086, 59570, 60057, 60545, 61035, 61527, 58123, 58604, 59086, 59570, 60057, 60545, 61035, 61527,
62021, 62517, 63016, 63516, 64018, 64521, 65027, 65535 62021, 62517, 63016, 63516, 64018, 64521, 65027, 65535
#else
#ifdef GAMMA_1_3
// Gamma 1.3
0, 1, 2, 4, 6, 8, 10, 13,
15, 17, 20, 23, 25, 28, 31, 34,
37, 40, 43, 46, 49, 52, 56, 59,
62, 66, 69, 73, 76, 80, 83, 87,
91, 94, 98, 102, 105, 109, 113, 117,
121, 125, 129, 133, 137, 141, 145, 149,
153, 157, 162, 166, 170, 174, 179, 183,
187, 192, 196, 200, 205, 209, 214, 218,
223, 227, 232, 237, 241, 246, 250, 255,
260, 264, 269, 274, 279, 283, 288, 293,
298, 303, 308, 312, 317, 322, 327, 332,
337, 342, 347, 352, 357, 362, 367, 372,
378, 383, 388, 393, 398, 403, 408, 414,
419, 424, 429, 435, 440, 445, 451, 456,
461, 467, 472, 477, 483, 488, 494, 499,
505, 510, 516, 521, 527, 532, 538, 543,
549, 554, 560, 566, 571, 577, 582, 588,
594, 599, 605, 611, 617, 622, 628, 634,
640, 645, 651, 657, 663, 669, 674, 680,
686, 692, 698, 704, 710, 716, 722, 727,
733, 739, 745, 751, 757, 763, 769, 775,
781, 788, 794, 800, 806, 812, 818, 824,
830, 836, 842, 849, 855, 861, 867, 873,
880, 886, 892, 898, 904, 911, 917, 923,
930, 936, 942, 949, 955, 961, 968, 974,
980, 987, 993, 999, 1006, 1012, 1019, 1025,
1032, 1038, 1044, 1051, 1057, 1064, 1070, 1077,
1083, 1090, 1096, 1103, 1110, 1116, 1123, 1129,
1136, 1142, 1149, 1156, 1162, 1169, 1176, 1182,
1189, 1196, 1202, 1209, 1216, 1222, 1229, 1236,
1242, 1249, 1256, 1263, 1269, 1276, 1283, 1290,
1297, 1303, 1310, 1317, 1324, 1331, 1337, 1344
#else
#ifdef GAMMA_3_0
// gamma = 3.0014
0, 1, 4, 9, 16, 25, 36, 49,
64, 81, 100, 121, 145, 170, 197, 226,
257, 290, 325, 362, 402, 443, 486, 531,
579, 628, 679, 732, 788, 845, 904, 966,
1029, 1094, 1162, 1231, 1303, 1376, 1451, 1529,
1608, 1690, 1773, 1859, 1946, 2036, 2127, 2221,
2317, 2414, 2514, 2615, 2719, 2825, 2932, 3042,
3154, 3267, 3383, 3501, 3621, 3742, 3866, 3992,
4120, 4250, 4382, 4516, 4651, 4789, 4929, 5071,
5215, 5361, 5509, 5659, 5811, 5965, 6121, 6279,
6439, 6601, 6766, 6932, 7100, 7270, 7442, 7616,
7793, 7971, 8151, 8333, 8518, 8704, 8892, 9083,
9275, 9469, 9666, 9864, 10065, 10267, 10472, 10678,
10887, 11097, 11310, 11524, 11741, 11959, 12180, 12403,
12627, 12854, 13082, 13313, 13546, 13781, 14017, 14256,
14497, 14740, 14984, 15231, 15480, 15731, 15984, 16239,
16496, 16755, 17016, 17279, 17544, 17811, 18080, 18351,
18624, 18899, 19176, 19455, 19736, 20019, 20304, 20592,
20881, 21172, 21465, 21761, 22058, 22357, 22658, 22962,
23267, 23574, 23884, 24195, 24509, 24824, 25142, 25461,
25783, 26106, 26432, 26759, 27089, 27420, 27754, 28090,
28427, 28767, 29109, 29452, 29798, 30146, 30495, 30847,
31201, 31557, 31915, 32275, 32636, 33000, 33366, 33734,
34104, 34476, 34850, 35226, 35604, 35984, 36366, 36750,
37136, 37524, 37915, 38307, 38701, 39097, 39495, 39896,
40298, 40702, 41108, 41517, 41927, 42339, 42754, 43170,
43589, 44009, 44431, 44856, 45282, 45711, 46141, 46574,
47008, 47445, 47884, 48324, 48767, 49212, 49658, 50107,
50558, 51010, 51465, 51922, 52381, 52841, 53304, 53769,
54236, 54705, 55176, 55649, 56124, 56601, 57080, 57561,
58044, 58529, 59016, 59505, 59996, 60489, 60984, 61481,
61981, 62482, 62985, 63490, 63998, 64507, 65018, 65531
#endif
#endif
#endif
}; };
/* Set STM32 to 72 MHz. */ /* Set STM32 to 72 MHz. */