Технология -сканирования файла в Libjpeg
Пожалуйста, объясните, как работает технология -scans в libjpeg?
1 ответ
В прогрессивном кодировании JPEG существует практически неограниченное количество возможностей того, как изображение может быть закодировано. Степень сложности настолько велика, что она не поддается передаче параметров или аргументам командной строки. LibJpeg позволяет вам указать файл, чтобы указать, как это делается.
В последовательном формате JPEG каждый компонент кодируется в одном сканировании. Сканирование может содержать несколько компонентов, в этом случае оно "чередуется".
В прогрессивном JPEG каждый компонент кодируется в 2 или более сканов. Как и в последовательном JPEG, сканирование может или не может быть чередоваться.
DCT производит 64 коэффициента. Первый называется коэффициентом "DC". Остальные являются коэффициентами "AC".
Прогрессивное сканирование может разделить данные DCT на две зарплаты. 1. По диапазону коэффициентов (он же спектральный отбор). Это может быть либо коэффициент постоянного тока, либо диапазон смежных коэффициентов переменного тока. (Вы должны отправить некоторые данные DC перед отправкой любого AC). 2. Отправка битов коэффициентов при разных сканированиях (вызывает последовательное приближение)
В этом случае вы выбираете при сканировании: 1. Какие компоненты 2. Выбор спектра (0 или диапазон в пределах 1 .. 63) 3. Последовательное приближение (диапазон в пределах 0 .. 13)
Есть и семантические правила. У вас должно быть сканирование постоянного тока для каждого компонента перед сканированием переменного тока. Вы не можете отправить какие-либо данные дважды.
Если у вас есть изображение в градациях серого (один компонент), вы можете отправить изображение в 64*14 =896 отдельных сканов или всего в два.
Есть так много вариантов, что Libjpeg использует файл для их указания.