2015-06-22 3 views
0

Как мы все знаем, процесс декодирования JPEG показан в следующем:Какое влияние имеет тип JPEG в разных подпроцессах декодирования JPEG?

  • VLD - декодирования с переменной длиной,
  • ZZ - зигзаг сканирование,
  • DQ - Деквантование,
  • IDCT - Inverse дискретное косинусное преобразование,
  • Преобразование цвета (от YUV до RGB) и изменение порядка.

Мой вопрос: для разных символов разных изображений JPEG, какой из описанных выше процессов декодирования займет больше времени?

Например:

Для декодирования этого типа изображения с шумом, который из вышеперечисленных пять процесса займет сравнительно больше времени?

Другого примера:

Для двух одинаковых изображений остроумия различного качества, которое один из вышеуказанных пяти процессов займет больше времени, когда декодирование изображения с более высоким качеством?

+0

Для полностью оптимизированного по SIMD кодировщика или декодера JPEG энтропийное декодирование/кодирование является самой трудоемкой частью. Поиск таблиц и доступ кодовой переменной не могут быть векторизованы (оптимизированы с помощью SIMD) и заканчиваются тем, что они занимают больше всего времени. – BitBank

+0

Еще одна мысль - прогрессивные JPEG-изображения занимают больше времени, чтобы кодировать и декодировать, потому что MCU для всего изображения должны храниться в памяти до того, как окончательный вывод может быть сгенерирован. Это приводит к еще большему количеству недостатков кэша, чем исходные кодированные изображения. – BitBank

+0

В настоящее время я рассматриваю только базовый jpeg. Я просто хотел бы узнать, какой из процессов, шум в изображении будет иметь наибольшее влияние. – fluency03

ответ

0

JPEG имеет тенденцию к сжатию линейно с размером (по часовой стрелке). Основным фактором, влияющим на время декодирования, является использование последовательного или прогрессивного сканирования. В последовательном порядке каждый компонент обрабатывается один раз. В прогрессивном состоянии по крайней мере 2 и, возможно, до 500 (но это будет абсурдно) для каждого компонента.

Для ваших конкретных вопросов:

VLD - декодирования с переменной длиной,

Это зависит от того, делаете вы это один раз (последовательный) или несколько раз (прогрессивная)

ZZ - Зигзаговое сканирование

Легко сделать. Индексы массива.

DQ - Деквантование

В зависимости от того, сколько раз вы это делаете. Один раз для последовательного. Это можно сделать несколько раз для прогрессивного (но не обязательно, если вы не хотите постоянно обновлять на экране).

IDCT - Inverse дискретного косинусного преобразования,

Это во многом зависит от используемого алгоритма, делается ли это с помощью масштабируемых целых чисел или плавающей, и если это вниз несколько раз (как может (или не может быть) с прогрессивным JPEG)

Преобразование цвета (YUV в RGB) и изменение порядка.

Вам нужно только сделать это один раз. Однако, если есть выборка, она становится более сложной.

Другими словами, время декодирования одинаково независимо от того, что изображение. Однако время декодирования зависит от того, как кодируется это изображение.

Я квалифицирую это, говоря, что меньший файл имеет тенденцию расшифровываться быстрее, чем больший, просто из-за времени на чтение диска. Чем случайнее данные, тем больше файл имеет тенденцию быть. Часто требуется больше времени для чтения и отображения большого файла BMP, чем JPEG того же изображения из-за размера файла.