В этом примере показано, как использовать блок For Each Subsystem для обработки данных подматрицы, когда соседние подматрицы перекрываются друг с другом. Чтобы продемонстрировать этот подход обработки данных, пример реализует обнаружение ребра изображения с помощью линейных фильтров, используя блок For Each Subsystem. Каждый блок For Each Subsystem имеет блок For Each, который необходимо сконфигурировать для секционирования и конкатенации.
Откройте пример модели slexForEachOverlapExample
. Эта модель использует ядро 3 на 3, чтобы реализовать приложение обнаружения ребер для заданного двумерного изображения. Из-за двумерного входного сигнала в этом примере используются вложенные подсистемы For Each.
Внешняя подсистема For Each разделяет сигнал по первой размерности. Внешний блок For Each сконфигурирован для разбиения входного сигнала по размерности 1. Блок задает ширину раздела 3 и смещение раздела -2. (Смещение раздела -2 указывает, что каждый срез перекрывает соседние срезы на 2 элемента.)
Внутренняя подсистема For Each разделяет сигнал по второму измерению. Внутренний блок For Each имеет те же настройки, что и внешний блок For Each, за исключением того, что внутренний блок установлен на разбиение и конкатенацию сигналов по размерности 2.
Порядок разбиения произвольный. Чтобы гарантировать правильность результата, порядок конкатенации выходов следует порядку разбиения.
Для простоты этот пример не обрабатывает заполнение данных. В результате размер выходного изображения немного меньше, чем у входа изображения.
Результат сравнения оригинального изображения и обработанного изображения показан ниже.
Фигура 1: Оригинальное изображение по сравнению с обработанным изображением