LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Кстати, зря ты считаешь что такой подход с упаковкой чисел не нужен. Я нашел ему очень хорошее применение. Речь идет о сжатии изображений и видео. Тут только надо как следует подумать над алгоритмом. Взять например какое-нибудь примитивное greyscale изображение 8 бит на один пиксель. Плавное изменение так легко закодировать в меньше чем 8 бит, если считать разность значений пикселей с соседними по определенным правилам. Например простенький градиентик:

char arr[5][5] =
{
  {0x00, 0x02, 0x04, 0x06, 0x07},
  {0x01, 0x03, 0x05, 0x07, 0x08},
  {0x02, 0x04, 0x06, 0x08, 0x09},
  {0x03, 0x05, 0x07, 0x09, 0x0A},
  {0x04, 0x06, 0x08, 0x0A, 0x0C},
}
вот примитивный алгоритм для нахождения как бы производной https://ideone.com/KGSgV8

В том примере используется такое правило

0<<<<<...
^^^^^^...
^^^^^^...
.........

хотя можно сделать нечто вроде

.......
.vvvv<.
.>vv<<.
.>>0<<.
.>>^^<.
.>^^^^.
.......
итп. Подобная фигня например в png используется https://www.artlebedev.ru/tools/technogrette/img/png-1/

Исправление SZT, :

Кстати, зря ты считаешь что такой подход с упаковкой чисел не нужен. Я нашел ему очень хорошее применение. Речь идет о сжатии изображений и видео. Тут только надо как следует подумать над алгоритмом. Взять например какое-нибудь примитивное greyscale изображение 8 бит на один пиксель. Плавное изменение так легко закодировать в меньше чем 8 бит, если считать разность значений пикселей с соседними по определенным правилам. Например простенький градиентик:

char arr[5][5] =
{
  {0x00, 0x02, 0x04, 0x06, 0x07},
  {0x01, 0x03, 0x05, 0x07, 0x08},
  {0x02, 0x04, 0x06, 0x08, 0x09},
  {0x03, 0x05, 0x07, 0x09, 0x0A},
  {0x04, 0x06, 0x08, 0x0A, 0x0C},
}
вот примитивный алгоритм для нахождения как бы производной https://ideone.com/KGSgV8

В том примере используется такое правило

0<<<<<...
^^^^^^...
^^^^^^...
.........

хотя можно сделать нечто вроде

..vvv..
.>vv<<.
.>>0<<.
.>>^^<.
..^^^..
итп. Подобная фигня например в png используется https://www.artlebedev.ru/tools/technogrette/img/png-1/

Исходная версия SZT, :

Кстати, зря ты считаешь что такой подход с упаковкой чисел не нужен. Я нашел ему очень хорошее применение. Речь идет о сжатии изображений и видео. Тут только надо как следует подумать над алгоритмом. Взять например какое-нибудь примитивное greyscale изображение 8 бит на один пиксель. Плавное изменение так легко закодировать в меньше чем 8 бит, если считать разность значений пикселей с соседними по определенным правилам. Например простенький градиентик:

char arr[5][5] =
{
  {0x00, 0x02, 0x04, 0x06, 0x07},
  {0x01, 0x03, 0x05, 0x07, 0x08},
  {0x02, 0x04, 0x06, 0x08, 0x09},
  {0x03, 0x05, 0x07, 0x09, 0x0A},
  {0x04, 0x06, 0x08, 0x0A, 0x0C},
}
вот примитивный алгоритм для нахождения как бы производной https://ideone.com/KGSgV8

В том примере используется такое правило

0<<<<<...
^^^^^^...
^^^^^^...
.........

хотя можно сделать нечто вроде

......
......
......