exponenta event banner

Выравнивание гистограммы

В этом примере показано, как использовать блок библиотеки Vision HDL Toolbox™ Histogram для выравнивания гистограммы.

В этом примере модели представлен аппаратно совместимый алгоритм. Вы можете сгенерировать код HDL из этого алгоритма и осуществить его на правлении, использующем справочный дизайн Xilinx™ Zynq™. См. раздел Выравнивание гистограммы с аппаратным обеспечением на основе Zynq (пакет поддержки панели инструментов Vision HDL для аппаратного обеспечения на основе Xilinx Zynq).

Введение

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

  • Video Partition разбивает большое изображение на четыре неперекрывающихся маленьких изображения для вычисления параллельной гистограммы.

  • HDLHistogram вычисляет накопленную гистограмму изображения.

  • Выравнивание применяет выровненную гистограмму к исходному изображению и генерирует изображение с улучшенной контрастностью.

Раздел видео

Существуют случаи использования, когда гистограмма вычисляется по всему изображению или по небольшим интересующим областям, представляющим разделы изображения. Вычисление гистограммы большого изображения занимает много времени. Компонент видеоделения в этом примере делит большое изображение на четыре неперекрывающихся маленьких изображения. Гистограмма вычисляется по четырем малым изображениям одновременно. Каждый входной кадр разделен на четыре 120 на 160 маленьких изображения. Каждое небольшое изображение соединено с блоком «от кадра до пикселей» для генерирования потоков пикселей и соответствующих управляющих сигналов.

HDLHistogram

HDLHistogram-подсистема оптимизирована для формирования кода HDL. Гистограмма потоков пикселей вычисляется с использованием блока гистограммы. Поскольку входное изображение имеет серый масштаб с типом данных uint8, входные пиксели группируются в 256 ячеек. Модель считывает вычисленные ячейки гистограммы последовательно, как только блок утверждает сигнал readRdy. Значения ячейки отправляются для расчета кумулятивной гистограммы. После считывания всех 256 значений ячеек модель устанавливает binReset для сброса всех ячеек на ноль. Собранная гистограмма каждого малого изображения затем складывается вместе для вычисления накопленной гистограммы большого изображения.

Временная диаграмма считывания и сброса ячеек гистограммы показана на следующем рисунке.

Уравнивание

Выравнивание гистограммы может быть применено к текущему кадру, где была вычислена накопленная гистограмма, или кадру после. При применении к текущему кадру необходимо сохранить входное видео. Этот пример задерживает входное видео на один кадр и выполняет равномерное выравнивание к исходному видео. Затем выравниваемое видео сравнивается с исходным видео.

Создание кода HDL

Код HDL, сгенерированный из гистограммы, синтезировали с использованием Xilinx ISE на Virtex6 (XC6VLX240T-1FFG1156) FPGA, и схема работала на частоте около 190 МГц, что достаточно для обработки данных в реальном времени.

Для проверки и генерации кода HDL в этом примере необходимо иметь лицензию HDL Coder™.

Можно использовать команды

makehdl('HistogramEqualizationHDL/HDLHistogram')

или

makehdltb('HistogramEqualizationHDL/HDLHistogram')

для формирования кода HDL и тестового стенда для подсистемы HDLHistogram. Примечание.Создание тестового стенда занимает много времени из-за большого размера данных. Перед созданием испытательного стенда рекомендуется сократить время моделирования.