JPEG имеет тенденцию к сжатию линейно с размером (по часовой стрелке). Основным фактором, влияющим на время декодирования, является использование последовательного или прогрессивного сканирования. В последовательном порядке каждый компонент обрабатывается один раз. В прогрессивном состоянии по крайней мере 2 и, возможно, до 500 (но это будет абсурдно) для каждого компонента.
Для ваших конкретных вопросов:
VLD - декодирования с переменной длиной,
Это зависит от того, делаете вы это один раз (последовательный) или несколько раз (прогрессивная)
ZZ - Зигзаговое сканирование
Легко сделать. Индексы массива.
DQ - Деквантование
В зависимости от того, сколько раз вы это делаете. Один раз для последовательного. Это можно сделать несколько раз для прогрессивного (но не обязательно, если вы не хотите постоянно обновлять на экране).
IDCT - Inverse дискретного косинусного преобразования,
Это во многом зависит от используемого алгоритма, делается ли это с помощью масштабируемых целых чисел или плавающей, и если это вниз несколько раз (как может (или не может быть) с прогрессивным JPEG)
Преобразование цвета (YUV в RGB) и изменение порядка.
Вам нужно только сделать это один раз. Однако, если есть выборка, она становится более сложной.
Другими словами, время декодирования одинаково независимо от того, что изображение. Однако время декодирования зависит от того, как кодируется это изображение.
Я квалифицирую это, говоря, что меньший файл имеет тенденцию расшифровываться быстрее, чем больший, просто из-за времени на чтение диска. Чем случайнее данные, тем больше файл имеет тенденцию быть. Часто требуется больше времени для чтения и отображения большого файла BMP, чем JPEG того же изображения из-за размера файла.
Для полностью оптимизированного по SIMD кодировщика или декодера JPEG энтропийное декодирование/кодирование является самой трудоемкой частью. Поиск таблиц и доступ кодовой переменной не могут быть векторизованы (оптимизированы с помощью SIMD) и заканчиваются тем, что они занимают больше всего времени. – BitBank
Еще одна мысль - прогрессивные JPEG-изображения занимают больше времени, чтобы кодировать и декодировать, потому что MCU для всего изображения должны храниться в памяти до того, как окончательный вывод может быть сгенерирован. Это приводит к еще большему количеству недостатков кэша, чем исходные кодированные изображения. – BitBank
В настоящее время я рассматриваю только базовый jpeg. Я просто хотел бы узнать, какой из процессов, шум в изображении будет иметь наибольшее влияние. – fluency03