В этом примере показано, как использовать библиотечный блок Гистограммы Vision HDL Toolbox™, чтобы реализовать эквализацию гистограммы.
Эта модель в качестве примера предоставляет аппаратно-совместимый алгоритм. Можно сгенерировать HDL-код из этого алгоритма и реализовать его на плате с помощью исходного проекта Xilinx™ Zynq™. Смотрите Эквализацию Гистограммы с Находящимся в Zynq Оборудованием (Пакет поддержки Vision HDL Toolbox для Xilinx Находящееся в Zynq Оборудование).
Модель показывает, как использовать библиотечный блок Гистограммы, чтобы улучшить контраст изображений путем применения эквализации гистограммы. Чтобы узнать больше, обратитесь к странице с описанием блока Histogram. В этом примере эквализации гистограммы существует три компонента.
Видео Раздел делит большое изображение в четыре неперекрывающихся маленьких изображения для параллельного расчета гистограммы.
HDLHistogram вычисляет накопленную гистограмму изображения.
Эквализация применяет компенсируемую гистограмму к оригинальному изображению и генерирует контрастное улучшенное изображение.
Существуют варианты использования, где гистограмма вычисляется по целому изображению, или по небольшим разделам представления необходимых областей изображения. Вычислительная гистограмма большого изображения является трудоемкой. Видео компонент раздела в этом примере делит большое изображение на четыре неперекрывающихся маленьких изображения. Гистограмма вычисляется по четырем маленьким изображениям одновременно. Каждый входной кадр разделен в четыре 120 160 маленькими изображениями. Каждое маленькое изображение соединяется с блоком Frame To Pixels, чтобы сгенерировать пиксельные потоки и соответствующие управляющие сигналы.
Подсистема HDLHistogram оптимизирована для генерации HDL-кода. Гистограмма пиксельных потоков вычисляется с помощью блока Histogram. Поскольку входное изображение является шкалой полутонов с типом данных uint8, входные пиксели сгруппированы в 256 интервалов. Модель читает расчетные интервалы гистограммы последовательно, если блок утверждает сигнал readRdy. Значения интервала отправляются за совокупным вычислением гистограммы. После того, как все 256 значений интервала читаются, модель утверждает binReset, чтобы сбросить все интервалы, чтобы обнулить. Собранная гистограмма каждого маленького изображения затем добавляется вместе, чтобы вычислить накопленную гистограмму большого изображения.
Схему синхронизации чтения и сброса интервалов гистограммы показывают в следующем рисунке.
Эквализация гистограммы может быть применена к текущей системе координат, где накопленная гистограмма была вычислена, или система координат после. При применении к текущей системе координат должно храниться входное видео. Этот пример задерживает входное видео одной системой координат и выполняет универсальную эквализацию к исходному видео. Компенсируемое видео затем по сравнению с исходным видео.
HDL-код, сгенерированный от Гистограммы, синтезировался с помощью Xilinx ISE на Virtex6 (XC6VLX240T-1FFG1156) FPGA, и схема запустилась на уровне приблизительно 190 МГц, который достаточен, чтобы обработать данные в режиме реального времени.
Чтобы проверять и сгенерировать HDL-код этого примера, у вас должна быть лицензия HDL Coder™.
Можно использовать команды
makehdl('HistogramEqualizationHDL/HDLHistogram')
или
makehdltb('HistogramEqualizationHDL/HDLHistogram')
сгенерировать HDL-код и испытательный стенд для подсистемы HDLHistogram. Примечание: генерация Испытательного стенда занимает много времени из-за большого размера данных. Рассмотрите сокращение времени симуляции прежде, чем сгенерировать испытательный стенд.