2016-07-19 9 views
2

Iam работает над реализацией FPGA MJPEG Encoder, который использует стандартные quantisation и huffman tables.Создание таблиц Huffman для Motion JPEG на FPGA

Вопрос:

Можно ли генерировать Хаффмана таблицы на лету?.

Я имею в виду, что после ввода кадра в качестве входного сигнала блок в FPGA должен генерировать соответствующий huffman tables для frame.

block может хоть немного расслабиться, потому что несколько предстоящих кадров будут похожи друг на друга.

Я уже прошел через vitter algorithm (динамическое кодирование huffman). Но я сомневаюсь, что это будет аппаратно эффективным.

Будет полезно, если я получу несколько идей от людей вокруг или от тех, кто уже реализовал такие вещи уже на FPGA.

Что-то вроде этого:

tables = huffmantables(frame) 
// wait for some frames 

Спасибо заранее !!

ответ

0

Мой совет: вы этого не делаете. Вместо этого используйте стандартную таблицу Хаффмана, они могут быть не оптимальными, но они не так уж плохи.

Building Huffman table - задача для процессора. Если для него не существует аппаратно-совместимого алгоритма, размещение микроконтроллера софт-core для построения таблиц Хаффмана может быть наиболее эффективной реализацией.

Я предлагаю вам провести некоторое тестирование, чтобы узнать, действительно ли это вам нужно. Сколько дБ PSNR вы получаете от использования оптимальных таблиц? Или сколько еще коэффициентов сжатия? Я обнаружил, что стандартная таблица достаточно хороша для общего MJPEG и выбрала для меньшего ядра сложную оптимальную.

+0

Я использую стандартные таблицы, и коэффициент сжатия хорош. Я прочитал некоторые исследовательские работы, они предлагают удвоить коэффициент сжатия с помощью динамических таблиц. Я еще не использовал оптимальные таблицы. В соответствии с вашим советом я сначала попробую «оптимизированные таблицы Хаффмана», а затем проверит коэффициент сжатия. Мне действительно не нравится жестко кодировать все 'Huffman ROM'' для' Cr' и 'Y'. Стандартные данные не обеспечивают вероятности, которые они назначили для каждого значения пикселя. Было бы очень полезно помочь, если вы разделите ресурс с вероятностью пикселя. Я их не найду. – vikram9866

+1

Это зависит от того, что вы кодируете, и от таблиц квантования. Если вы кодируете темные изображения, более низкие значения Y будут иметь более высокую вероятность. Если у вас есть фиксированное использование, просто пойдите с образцом видео для анализа. В противном случае я бы использовал стандартные таблицы из JPEG или другого видеостандарта, такого как MPEG2. В некоторых профессиональных видеоформатах фиксированная таблица Хаффмана (например, DNxHD), и они работают достаточно хорошо. Вы можете сделать лучше, но тогда более новый формат с адаптивным энтропийным кодированием лучше справляется с меньшей сложностью ... Просто убедитесь, что это действительно стоит, прежде чем делать это! Будь проще! –

 Смежные вопросы

  • Нет связанных вопросов^_^