В версии 2 формата WHI (первые 2 байта таких файлов будут содержать W2) надо будет поднять битность нулевого отсчёта до 18, чтобы сохранять размеры до 4096x4096, плюс знак, чтобы можно было сохранять цветоразностные поля (там будут отрицательные значения наряду с положительными). Ну или сразу 20 со знаком (что даст 8192x8192 для 6-битных изображений или 2048x2048 для 8-битных), причём битность "выскочек" надо будет тоже поднять т.к. сейчас оно кодируется 4 битами, т.е. от 0 до 15, можно конечно использовать 0 заместо 16, но в версии 2 наверное надо использовать сдвинутые значения - скажем сдвинутые на 8:Shaos wrote:А по яркости-тёмности картинки можно сделать вывод поглядев на отсчёт спектра [0][0] - у средне-серых картинок он около 2000. У высветленных картинок он может достигать 3900, а у затемнённых уходить ниже 1000 - я видел значения 789 и даже 245. И как я писал на предыдущей странице, тот алгоритм ошибки, что я использую, занижает ошибку у высветленных изображений и завышает у затемнённых, поэтому полагаться чисто на ошибку наверное не стоит.
Можно теоретически прикинуть значение [0][0] у картинки полностью залитой средней яркостью (32) в квадрате 64х64 - сначала складываем 64 яркости 32 и затем делим на 8 (корень из 64), что даёт 256, затем проходимся в перпендикулярном направлении - в этом случае складываем 64 отсчёта по 256 и снова делим на 8, что даёт 2048 - вот это и есть теоретическая величина отсчёта спектра [0][0] для средне-серого изображения (что вполне соотносится с наблюдениями изложенными выше). Для ярко-белой заливки (63 это максимум) таким же способом получается 4032, а для совсем чёрного (0) очевидно получится 0.
Если мы считаем двухмерного Уолша не в 64х64, а в 16х16, то там цифры будут 512 для средне-серого изображения (в 4 раза меньше, чем в 64х64) и 1008 для ярко-белой заливки (опять же в 4 раза меньше, чем для 64х64) - соответственно если мы будем делать "прогрессивное" восстановление картинки, двигаясь от низких разрешений к высоким, пропуская нечётные степени двойки, то надо будет корректировать отсчёты от предыдущего разрешения умножая их на 4.
P.S. Так как в текущем формате WHT под сохранение отсчёта [0][0] отведено 16 бит, то теоретический предел по размерам получается 1024x1024, которое даст 64512 в [0][0] для ярко-белой картинки. По-идее, если картинка тёмная, то можно и 2048х2048 попробовать сохранять (так то оно хранит log2N в 4 битах, т.е. вплоть до 15, но со стороной 2^15 у нас не полетит 100%).
Code: Select all
0000 -> 8 битов плюс знак
0001 -> 9 битов плюс знак
0010 -> 10 битов плюс знак
0011 -> 11 битов плюс знак
0100 -> 12 битов плюс знак
0101 -> 13 битов плюс знак
0110 -> 14 битов плюс знак
0111 -> 15 битов плюс знак
1000 -> 16 битов плюс знак
1001 -> 17 битов плюс знак
1010 -> 18 битов плюс знак
1011 -> 19 битов плюс знак
1100 -> 20 битов плюс знак
1101 -> 21 бит плюс знак
1110 -> 22 бита плюс знак
1111 -> 23 бита плюс знак