В этом примере показано, как разделить кадр на области, представляющие интерес (ROI), и использовать эти области для конфигурирования блока выбора ROI для вертикального повторного использования.
Вертикальное повторное использование означает разделение каждого кадра на выровненные по вертикали области, где каждый столбец областей совместно использует поток пикселей. Эта компоновка обеспечивает параллельную обработку каждого столбца и повторное использование логики обработки нисходящего потока для каждой области в столбце.
Задайте размер кадра.
frmActiveLines = 240; frmActivePixels = 320;
Разделите рамку на выровненные по вертикали области или фрагменты одинакового размера. visionhdlframetoregions функция возвращает массив таких областей, где каждая область определяется четырьмя координатами и имеет вид [hPos vPos hSize vSize]. Эти подсчеты плиток равномерно делятся на размеры кадра, поэтому остальные пикселы отсутствуют. Области вывода охватывают весь кадр.
numHorTiles = 2; numVerTiles = 2; regions = visionhdlframetoregions(frmActivePixels,frmActiveLines,numHorTiles,numVerTiles)
regions =
1 1 160 120
161 1 160 120
1 121 160 120
161 121 160 120
Для блока выбора ROI в модели Simulink выбран параметр Reuse output ports for vertical aligned regions и используется параметр regions для определения выходных потоков. Блок имеет один выходной поток пикселей на столбец областей.
open_system('TiledROIHDL')

Сигналы начала и конца определяют каждую область в потоке пикселей. При запуске модели можно увидеть изменение выходных областей мозаики в окнах Левый просмотр (Left Viewer) и Правый просмотр (Right Viewer). Пример выполняет противоположные операции гамма-коррекции на левой и правой плитках, а затем повторно собирает четыре плитки в полный кадр, манипулируя pixelcontrol сигналы.
Интервал гашения, требуемый алгоритмом обработки нисходящего потока, должен быть меньше интервала между фрагментами. Интервал гашения после каждой области меньше одной строки пикселей, поэтому операции, требующие интервала вертикального гашения, как и те, которые используют буфер строк, не работают. Операция гамма-коррекции использует таблицу поиска, которая не требует интервала гашения.
sim('TiledROIHDL')


