Remove byte reversal in RGB565 tables

This commit is contained in:
Kwabena W. Agyeman 2020-10-21 06:41:10 -07:00
parent 76bb394453
commit 2528eb6355
8 changed files with 32846 additions and 32848 deletions

View File

@ -1,5 +1,4 @@
#include <stdint.h>
#ifdef IMLIB_ENABLE_INVARIANT_TABLE
const uint16_t invariant_table[65536] = {
0xAA52, 0x483C, 0xE51D, 0xA316, 0x220F, 0x610F, 0xA107, 0xAA52, 0x6B5A, 0x083C, 0xA525, 0x8316, 0x020F, 0x610F, 0xA107, 0xAA52,
0x2B5A, 0xC943, 0x8525, 0x6316, 0x020F, 0x610F, 0xA107, 0xAA52, 0xEB61, 0x8943, 0x462D, 0x441E, 0xE20E, 0x420F, 0x8107, 0xAA52,
@ -4098,4 +4097,3 @@ const uint16_t invariant_table[65536] = {
0x2BA0, 0x4C90, 0x8C88, 0xEC78, 0x6C71, 0xEB61, 0x6B5A, 0xEA52, 0x2BA0, 0x4C90, 0x8C88, 0xEC80, 0x4C71, 0xCB69, 0x4B5A, 0xCA52,
0x2BA0, 0x4B90, 0x8C88, 0xEC80, 0x4C71, 0xCB69, 0x4B5A, 0xCA52, 0x2BA0, 0x4B98, 0x8C88, 0xCC80, 0x4C71, 0xAC69, 0x2B62, 0xAA52
};
#endif //IMLIB_ENABLE_INVARIANT_TABLE

File diff suppressed because it is too large Load Diff

View File

@ -1,69 +1,69 @@
#include <stdint.h>
const uint16_t rainbow_table[256] = {
0x3F06, 0x3F06, 0x5F06, 0x7F06, 0x9F06, 0xBF06, 0xBF06, 0xDF06,
0xFF06, 0x1F07, 0x3F07, 0x3F07, 0x5F07, 0x7F07, 0x9F07, 0xBF07,
0xBF07, 0xDF07, 0xFF07, 0xFF07, 0xFE07, 0xFE07, 0xFD07, 0xFD07,
0xFD07, 0xFC07, 0xFC07, 0xFB07, 0xFB07, 0xFB07, 0xFA07, 0xFA07,
0xFA07, 0xF907, 0xF907, 0xF807, 0xF807, 0xF807, 0xF707, 0xF707,
0xF607, 0xF607, 0xF607, 0xF507, 0xF507, 0xF407, 0xF407, 0xF407,
0xF307, 0xF307, 0xF207, 0xF207, 0xF207, 0xF107, 0xF107, 0xF107,
0xF007, 0xF007, 0xEF07, 0xEF07, 0xEF07, 0xEE07, 0xEE07, 0xED07,
0xED07, 0xED07, 0xEC07, 0xEC07, 0xEB07, 0xEB07, 0xEB07, 0xEA07,
0xEA07, 0xEA07, 0xE907, 0xE907, 0xE807, 0xE807, 0xE807, 0xE707,
0xE707, 0xE607, 0xE607, 0xE607, 0xE507, 0xE507, 0xE407, 0xE407,
0xE407, 0xE307, 0xE307, 0xE207, 0xE207, 0xE207, 0xE107, 0xE107,
0xE107, 0xE007, 0xE007, 0xE00F, 0xE00F, 0xE00F, 0xE017, 0xE017,
0xE01F, 0xE01F, 0xE01F, 0xE027, 0xE027, 0xE02F, 0xE02F, 0xE02F,
0xE037, 0xE037, 0xE03F, 0xE03F, 0xE03F, 0xE047, 0xE047, 0xE047,
0xE04F, 0xE04F, 0xE057, 0xE057, 0xE057, 0xE05F, 0xE05F, 0xE067,
0xE067, 0xE067, 0xE06F, 0xE06F, 0xE077, 0xE077, 0xE077, 0xE07F,
0xE07F, 0xE087, 0xE087, 0xE087, 0xE08F, 0xE08F, 0xE08F, 0xE097,
0xE097, 0xE09F, 0xE09F, 0xE09F, 0xE0A7, 0xE0A7, 0xE0AF, 0xE0AF,
0xE0AF, 0xE0B7, 0xE0B7, 0xE0BF, 0xE0BF, 0xE0BF, 0xE0C7, 0xE0C7,
0xE0C7, 0xE0CF, 0xE0CF, 0xE0D7, 0xE0D7, 0xE0D7, 0xE0DF, 0xE0DF,
0xE0E7, 0xE0E7, 0xE0E7, 0xE0EF, 0xE0EF, 0xE0F7, 0xE0F7, 0xE0F7,
0xE0FF, 0xE0FF, 0xC0FF, 0xA0FF, 0x80FF, 0x80FF, 0x60FF, 0x40FF,
0x20FF, 0x00FF, 0x00FF, 0xE0FE, 0xC0FE, 0xA0FE, 0x80FE, 0x80FE,
0x60FE, 0x40FE, 0x20FE, 0x00FE, 0x00FE, 0xE0FD, 0xC0FD, 0xA0FD,
0x80FD, 0x80FD, 0x60FD, 0x40FD, 0x20FD, 0x00FD, 0x00FD, 0xE0FC,
0xC0FC, 0xA0FC, 0xA0FC, 0x80FC, 0x60FC, 0x40FC, 0x20FC, 0x20FC,
0x00FC, 0xE0FB, 0xC0FB, 0xA0FB, 0xA0FB, 0x80FB, 0x60FB, 0x40FB,
0x20FB, 0x20FB, 0x00FB, 0xE0FA, 0xC0FA, 0xA0FA, 0xA0FA, 0x80FA,
0x60FA, 0x40FA, 0x20FA, 0x20FA, 0x00FA, 0xE0F9, 0xC0F9, 0xA0F9,
0xA0F9, 0x80F9, 0x60F9, 0x40F9, 0x40F9, 0x20F9, 0x00F9, 0xE0F8,
0xC0F8, 0xC0F8, 0xA0F8, 0x80F8, 0x60F8, 0x40F8, 0x40F8, 0x20F8
0x063F, 0x063F, 0x065F, 0x067F, 0x069F, 0x06BF, 0x06BF, 0x06DF,
0x06FF, 0x071F, 0x073F, 0x073F, 0x075F, 0x077F, 0x079F, 0x07BF,
0x07BF, 0x07DF, 0x07FF, 0x07FF, 0x07FE, 0x07FE, 0x07FD, 0x07FD,
0x07FD, 0x07FC, 0x07FC, 0x07FB, 0x07FB, 0x07FB, 0x07FA, 0x07FA,
0x07FA, 0x07F9, 0x07F9, 0x07F8, 0x07F8, 0x07F8, 0x07F7, 0x07F7,
0x07F6, 0x07F6, 0x07F6, 0x07F5, 0x07F5, 0x07F4, 0x07F4, 0x07F4,
0x07F3, 0x07F3, 0x07F2, 0x07F2, 0x07F2, 0x07F1, 0x07F1, 0x07F1,
0x07F0, 0x07F0, 0x07EF, 0x07EF, 0x07EF, 0x07EE, 0x07EE, 0x07ED,
0x07ED, 0x07ED, 0x07EC, 0x07EC, 0x07EB, 0x07EB, 0x07EB, 0x07EA,
0x07EA, 0x07EA, 0x07E9, 0x07E9, 0x07E8, 0x07E8, 0x07E8, 0x07E7,
0x07E7, 0x07E6, 0x07E6, 0x07E6, 0x07E5, 0x07E5, 0x07E4, 0x07E4,
0x07E4, 0x07E3, 0x07E3, 0x07E2, 0x07E2, 0x07E2, 0x07E1, 0x07E1,
0x07E1, 0x07E0, 0x07E0, 0x0FE0, 0x0FE0, 0x0FE0, 0x17E0, 0x17E0,
0x1FE0, 0x1FE0, 0x1FE0, 0x27E0, 0x27E0, 0x2FE0, 0x2FE0, 0x2FE0,
0x37E0, 0x37E0, 0x3FE0, 0x3FE0, 0x3FE0, 0x47E0, 0x47E0, 0x47E0,
0x4FE0, 0x4FE0, 0x57E0, 0x57E0, 0x57E0, 0x5FE0, 0x5FE0, 0x67E0,
0x67E0, 0x67E0, 0x6FE0, 0x6FE0, 0x77E0, 0x77E0, 0x77E0, 0x7FE0,
0x7FE0, 0x87E0, 0x87E0, 0x87E0, 0x8FE0, 0x8FE0, 0x8FE0, 0x97E0,
0x97E0, 0x9FE0, 0x9FE0, 0x9FE0, 0xA7E0, 0xA7E0, 0xAFE0, 0xAFE0,
0xAFE0, 0xB7E0, 0xB7E0, 0xBFE0, 0xBFE0, 0xBFE0, 0xC7E0, 0xC7E0,
0xC7E0, 0xCFE0, 0xCFE0, 0xD7E0, 0xD7E0, 0xD7E0, 0xDFE0, 0xDFE0,
0xE7E0, 0xE7E0, 0xE7E0, 0xEFE0, 0xEFE0, 0xF7E0, 0xF7E0, 0xF7E0,
0xFFE0, 0xFFE0, 0xFFC0, 0xFFA0, 0xFF80, 0xFF80, 0xFF60, 0xFF40,
0xFF20, 0xFF00, 0xFF00, 0xFEE0, 0xFEC0, 0xFEA0, 0xFE80, 0xFE80,
0xFE60, 0xFE40, 0xFE20, 0xFE00, 0xFE00, 0xFDE0, 0xFDC0, 0xFDA0,
0xFD80, 0xFD80, 0xFD60, 0xFD40, 0xFD20, 0xFD00, 0xFD00, 0xFCE0,
0xFCC0, 0xFCA0, 0xFCA0, 0xFC80, 0xFC60, 0xFC40, 0xFC20, 0xFC20,
0xFC00, 0xFBE0, 0xFBC0, 0xFBA0, 0xFBA0, 0xFB80, 0xFB60, 0xFB40,
0xFB20, 0xFB20, 0xFB00, 0xFAE0, 0xFAC0, 0xFAA0, 0xFAA0, 0xFA80,
0xFA60, 0xFA40, 0xFA20, 0xFA20, 0xFA00, 0xF9E0, 0xF9C0, 0xF9A0,
0xF9A0, 0xF980, 0xF960, 0xF940, 0xF940, 0xF920, 0xF900, 0xF8E0,
0xF8C0, 0xF8C0, 0xF8A0, 0xF880, 0xF860, 0xF840, 0xF840, 0xF820
};
const uint16_t ironbow_table[256] = {
0xFFFF, 0xFFFF, 0xDFFF, 0xDEF7, 0xBEF7, 0xBEF7, 0x9EF7, 0x9DEF,
0x7DEF, 0x7DEF, 0x5DEF, 0x5CE7, 0x3CE7, 0x3CE7, 0x1CE7, 0x1BDF,
0xFBDE, 0xFBDE, 0xDBDE, 0xDAD6, 0xBAD6, 0xBAD6, 0x9AD6, 0x99CE,
0x79CE, 0x79CE, 0x59CE, 0x58C6, 0x38C6, 0x38C6, 0x18C6, 0x17BE,
0xF7BD, 0xF7BD, 0xD7BD, 0xD6B5, 0xB6B5, 0xB6B5, 0x96B5, 0x96B5,
0x75AD, 0x75AD, 0x55AD, 0x55AD, 0x34A5, 0x34A5, 0x14A5, 0x14A5,
0xF39C, 0xF39C, 0xD39C, 0xD39C, 0xB294, 0xB294, 0x9294, 0x9294,
0x718C, 0x718C, 0x518C, 0x518C, 0x3084, 0x3084, 0x1084, 0x1084,
0xEF7B, 0xEF7B, 0xCF7B, 0xCF7B, 0xAE73, 0xAE73, 0x8E73, 0x8E73,
0x6D6B, 0x6D6B, 0x4D6B, 0x4D6B, 0x2C63, 0x2C63, 0x0C63, 0x0C63,
0xEB5A, 0xEB5A, 0xCB5A, 0xCB5A, 0xAA52, 0xAA52, 0x8A52, 0x8A52,
0x694A, 0x694A, 0x494A, 0x494A, 0x294A, 0x2842, 0x0842, 0x0842,
0xE841, 0xE739, 0xC739, 0xC739, 0xA739, 0xA631, 0x8631, 0x8631,
0x6631, 0x6529, 0x4529, 0x4529, 0x2529, 0x2421, 0x0421, 0x0421,
0xE420, 0xE318, 0xC318, 0xC318, 0xA318, 0xA210, 0x8210, 0x8210,
0x6210, 0x6108, 0x4108, 0x4108, 0x2108, 0x2000, 0x0000, 0x0000,
0x0100, 0x0200, 0x0300, 0x0408, 0x0508, 0x0508, 0x0608, 0x0710,
0x0810, 0x0910, 0x0A18, 0x0B18, 0x0C18, 0x0D18, 0x0D20, 0x0E20,
0x0F20, 0x0F28, 0x0F30, 0x0F30, 0x0F38, 0x0F38, 0x0F40, 0x0F48,
0x1048, 0x1050, 0x1050, 0x1058, 0x1060, 0x1060, 0x1068, 0x1068,
0x1170, 0x1178, 0x1178, 0x1180, 0x3180, 0x3188, 0x3190, 0x3190,
0x3198, 0x3198, 0x31A0, 0x31A0, 0x31A8, 0x31B0, 0x51B0, 0x51B8,
0x51B8, 0x70B8, 0x8FC0, 0xAFC0, 0xAEC0, 0xCDC0, 0xEDC8, 0x0CC9,
0x0CC9, 0x2BC9, 0x4AD1, 0x6AD1, 0x69D1, 0x88D9, 0xA8D9, 0xC7D9,
0xC6D9, 0xE6D9, 0x05DA, 0x25E2, 0x45E2, 0x44E2, 0x64E2, 0x84E2,
0xA4E2, 0xC3E2, 0xE3E2, 0xE3E2, 0x02EB, 0x22EB, 0x42EB, 0x61EB,
0x81EB, 0xA1EB, 0xA1EB, 0xC1EB, 0xE1EB, 0x01EC, 0x21EC, 0x41F4,
0x62F4, 0x82F4, 0xA2F4, 0xC2F4, 0xE2F4, 0x02F5, 0x02F5, 0x22F5,
0x42F5, 0x62F5, 0x82F5, 0xA2F5, 0xC2F5, 0xE2F5, 0xE2F5, 0x03FE,
0x23FE, 0x43FE, 0x63FE, 0x83FE, 0xA3FE, 0xC3FE, 0xC4FE, 0xE4FE,
0x05FF, 0x26FF, 0x28FF, 0x4AFF, 0x4CFF, 0x4DFF, 0x6FFF, 0x71FF,
0x92FF, 0x94FF, 0xB6FF, 0xB7FF, 0xD9FF, 0xDBFF, 0xFDFF, 0xE3FF
0xFFFF, 0xFFFF, 0xFFDF, 0xF7DE, 0xF7BE, 0xF7BE, 0xF79E, 0xEF9D,
0xEF7D, 0xEF7D, 0xEF5D, 0xE75C, 0xE73C, 0xE73C, 0xE71C, 0xDF1B,
0xDEFB, 0xDEFB, 0xDEDB, 0xD6DA, 0xD6BA, 0xD6BA, 0xD69A, 0xCE99,
0xCE79, 0xCE79, 0xCE59, 0xC658, 0xC638, 0xC638, 0xC618, 0xBE17,
0xBDF7, 0xBDF7, 0xBDD7, 0xB5D6, 0xB5B6, 0xB5B6, 0xB596, 0xB596,
0xAD75, 0xAD75, 0xAD55, 0xAD55, 0xA534, 0xA534, 0xA514, 0xA514,
0x9CF3, 0x9CF3, 0x9CD3, 0x9CD3, 0x94B2, 0x94B2, 0x9492, 0x9492,
0x8C71, 0x8C71, 0x8C51, 0x8C51, 0x8430, 0x8430, 0x8410, 0x8410,
0x7BEF, 0x7BEF, 0x7BCF, 0x7BCF, 0x73AE, 0x73AE, 0x738E, 0x738E,
0x6B6D, 0x6B6D, 0x6B4D, 0x6B4D, 0x632C, 0x632C, 0x630C, 0x630C,
0x5AEB, 0x5AEB, 0x5ACB, 0x5ACB, 0x52AA, 0x52AA, 0x528A, 0x528A,
0x4A69, 0x4A69, 0x4A49, 0x4A49, 0x4A29, 0x4228, 0x4208, 0x4208,
0x41E8, 0x39E7, 0x39C7, 0x39C7, 0x39A7, 0x31A6, 0x3186, 0x3186,
0x3166, 0x2965, 0x2945, 0x2945, 0x2925, 0x2124, 0x2104, 0x2104,
0x20E4, 0x18E3, 0x18C3, 0x18C3, 0x18A3, 0x10A2, 0x1082, 0x1082,
0x1062, 0x0861, 0x0841, 0x0841, 0x0821, 0x0020, 0x0000, 0x0000,
0x0001, 0x0002, 0x0003, 0x0804, 0x0805, 0x0805, 0x0806, 0x1007,
0x1008, 0x1009, 0x180A, 0x180B, 0x180C, 0x180D, 0x200D, 0x200E,
0x200F, 0x280F, 0x300F, 0x300F, 0x380F, 0x380F, 0x400F, 0x480F,
0x4810, 0x5010, 0x5010, 0x5810, 0x6010, 0x6010, 0x6810, 0x6810,
0x7011, 0x7811, 0x7811, 0x8011, 0x8031, 0x8831, 0x9031, 0x9031,
0x9831, 0x9831, 0xA031, 0xA031, 0xA831, 0xB031, 0xB051, 0xB851,
0xB851, 0xB870, 0xC08F, 0xC0AF, 0xC0AE, 0xC0CD, 0xC8ED, 0xC90C,
0xC90C, 0xC92B, 0xD14A, 0xD16A, 0xD169, 0xD988, 0xD9A8, 0xD9C7,
0xD9C6, 0xD9E6, 0xDA05, 0xE225, 0xE245, 0xE244, 0xE264, 0xE284,
0xE2A4, 0xE2C3, 0xE2E3, 0xE2E3, 0xEB02, 0xEB22, 0xEB42, 0xEB61,
0xEB81, 0xEBA1, 0xEBA1, 0xEBC1, 0xEBE1, 0xEC01, 0xEC21, 0xF441,
0xF462, 0xF482, 0xF4A2, 0xF4C2, 0xF4E2, 0xF502, 0xF502, 0xF522,
0xF542, 0xF562, 0xF582, 0xF5A2, 0xF5C2, 0xF5E2, 0xF5E2, 0xFE03,
0xFE23, 0xFE43, 0xFE63, 0xFE83, 0xFEA3, 0xFEC3, 0xFEC4, 0xFEE4,
0xFF05, 0xFF26, 0xFF28, 0xFF4A, 0xFF4C, 0xFF4D, 0xFF6F, 0xFF71,
0xFF92, 0xFF94, 0xFFB6, 0xFFB7, 0xFFD9, 0xFFDB, 0xFFFD, 0xFFE3
};

File diff suppressed because it is too large Load Diff

View File

@ -20,9 +20,9 @@ if False: # 1D illumination invariant image
sys.stdout.write("const uint8_t invariant_table[65536] = {\n") # 65536 * 1
for i in range(65536):
r = ((((i >> 3) & 31) * 255) + 15.5) // 31
g = (((((i & 7) << 3) | (i >> 13)) * 255) + 31.5) // 63
b = ((((i >> 8) & 31) * 255) + 15.5) // 31
r = ((((i >> 11) & 31) * 255) + 15.5) // 31
g = ((((i >> 5) & 63) * 255) + 31.5) // 63
b = (((i & 31) * 255) + 15.5) // 31
# http://ai.stanford.edu/~alireza/publication/cic15.pdf
@ -111,10 +111,10 @@ if True: # 2D illumination invariant image
p_th_01 = e_t_x * e_t_y
p_th_10 = e_t_y * e_t_x
p_th_11 = e_t_y * e_t_y
x_th_x = (p_th_00 * chi_x) + (p_th_01 * chi_y)
x_th_y = (p_th_10 * chi_x) + (p_th_11 * chi_y)
r_chi = (x_th_x * 0.7071) + (x_th_y * 0.4082)
g_chi = (x_th_x * -0.7071) + (x_th_y * 0.4082)
b_chi = (x_th_x * 0.0000) + (x_th_y * -0.8164)
@ -124,7 +124,7 @@ if True: # 2D illumination invariant image
b_chi_invariant = math.exp(b_chi)
chi_invariant_sum = r_chi_invariant + g_chi_invariant + b_chi_invariant
r_chi_invariant_m = 0.0
g_chi_invariant_m = 0.0
b_chi_invariant_m = 0.0

View File

@ -26,7 +26,7 @@ sys.stdout.write("const uint16_t rainbow_table[%d] = {\n" % NUM_COL)
for i in range(NUM_COL):
if not (i % 8):
sys.stdout.write(" ")
sys.stdout.write("0x%04X" % (((col[i]&0x00ff)<<8)|((col[i]&0xff00)>>8)))
sys.stdout.write("0x%04X" % col[i])
if (i + 1) % 8:
sys.stdout.write(", ")
elif i != (NUM_COL-1):
@ -302,7 +302,7 @@ sys.stdout.write("const uint16_t ironbow_table[%d] = {\n" % NUM_COL)
for i in range(NUM_COL):
if not (i % 8):
sys.stdout.write(" ")
sys.stdout.write("0x%04X" % (((col[i]&0x00ff)<<8)|((col[i]&0xff00)>>8)))
sys.stdout.write("0x%04X" % col[i])
if (i + 1) % 8:
sys.stdout.write(", ")
elif i != (NUM_COL-1):

View File

@ -19,9 +19,9 @@ sys.stdout.write("#include <stdint.h>\n")
sys.stdout.write("const int8_t lab_table[196608] = {\n") # 65536 * 3
for i in range(65536):
r = ((((i >> 3) & 31) * 255) + 15.5) // 31
g = (((((i & 7) << 3) | (i >> 13)) * 255) + 31.5) // 63
b = ((((i >> 8) & 31) * 255) + 15.5) // 31
r = ((((i >> 11) & 31) * 255) + 15.5) // 31
g = ((((i >> 5) & 63) * 255) + 31.5) // 63
b = (((i & 31) * 255) + 15.5) // 31
# https://en.wikipedia.org/wiki/SRGB (The reverse transformation)

View File

@ -15,9 +15,9 @@ sys.stdout.write("#include <stdint.h>\n")
sys.stdout.write("const int8_t yuv_table[196608] = {\n") # 65536 * 3
for i in range(65536):
r = ((((i >> 3) & 31) * 255) + 15.5) // 31
g = (((((i & 7) << 3) | (i >> 13)) * 255) + 31.5) // 63
b = ((((i >> 8) & 31) * 255) + 15.5) // 31
r = ((((i >> 11) & 31) * 255) + 15.5) // 31
g = ((((i >> 5) & 63) * 255) + 31.5) // 63
b = (((i & 31) * 255) + 15.5) // 31
# https://en.wikipedia.org/wiki/YCbCr (ITU-R BT.601 conversion)
y = int((r * +0.299000) + (g * +0.587000) + (b * +0.114000)) - 128;