Найдите ребра объектов в полутоновом пиксельном потоке
Vision HDL Toolbox / Analysis & Enhancement
Блок Edge Detector находит ребра в полутоновом пиксельном потоке при помощи Sobel, Прюитта или метода Робертса. Блок применяет операцию свертки к входным пикселям с производными матрицами приближения, чтобы найти градиент пиксельной величины вдоль двух ортогональных направлений. Это затем сравнивает сумму квадратов градиентов к квадрату настраиваемого порога, чтобы определить, представляют ли градиенты ребро.
По умолчанию блок возвращает двухуровневое изображение как поток пиксельных значений. Пиксельное значение 1 указывает, что пиксель является ребром. Можно отключить ребро выход. Можно также включить выход значений градиента в двух ортогональных направлениях на уровне каждого пикселя.
Этот блок использует пиксельный интерфейс потоковой передачи с шиной для сигналов управления кадром. Этот интерфейс позволяет блоку действовать независимо от размера изображения и формата. pixel, Edge и порты градиента на этом блоке поддерживают одну пиксельную потоковую передачу или мультипиксельную потоковую передачу. Одна пиксельная потоковая передача принимает и возвращает одно пиксельное значение каждый такт. Мультипиксельная потоковая передача принимает и возвращает вектор 4 или 8 пикселей за такт, чтобы поддержать высокую частоту кадров или форматы с высоким разрешением. Наряду с пикселем, блок принимает и возвращает pixelcontrol
соедините шиной содержащий пять управляющих сигналов. Управляющие сигналы указывают на валидность каждого пикселя и их местоположения в системе координат. Для мультипиксельной потоковой передачи один набор управляющих сигналов применяется ко всем четырем или восьми пикселям в векторе. Чтобы преобразовать систему координат (пиксельная матрица) в последовательный пиксельный поток и управляющие сигналы, используйте блок Frame To Pixels. Для полного описания интерфейса смотрите Пиксельный Интерфейс Потоковой передачи.
pixel
— Входной пиксель или мультипиксельный векторЭтот блок поддерживает одну пиксельную потоковую передачу или мультипиксельную потоковую передачу. Для одной пиксельной потоковой передачи задайте один входной пиксель как скалярное значение интенсивности. Для мультипиксельной потоковой передачи задайте вектор четырех или восьми значений интенсивности пикселей. Для получения дополнительной информации того, как настроить вашу модель для мультипиксельной потоковой передачи, смотрите Мультипиксельные Видеопотоки Фильтра.
double
и single
типы данных поддерживаются для симуляции, но не для генерации HDL-кода.
Типы данных: uint8
| uint16
| uint32
| int8
| int16
| int32
| fixed point
| Boolean
| double
| single
ctrl
— Управляющие сигналы сопоставлены с пиксельным потокомpixelcontrol
шинаУправляющие сигналы сопоставлены с пиксельным потоком в виде pixelcontrol
соедините шиной, который содержит пять сигналов. Сигналы описывают валидность пикселя и его местоположения в системе координат. Для получения дополнительной информации смотрите Пиксельную Шину управления.
Для мультипиксельной потоковой передачи каждый вектор пиксельных значений имеет один набор управляющих сигналов. Поскольку вектор имеет только один valid
сигнал, пиксели в векторе должны быть или всеми допустимыми или всеми недопустимыми. hStart
и vStart
сигналы применяются к пикселю с самым низким индексом в векторе. hEnd
и vEnd
сигналы применяются к пикселю с самым высоким индексом в векторе.
Типы данных: bus
Th
— Пороговое значениеПороговое значение, которое задает ребро в виде скаляра. Блок сравнивает квадрат этого значения к сумме квадратов градиентов.
double
и single
типы данных поддерживаются для симуляции, но не для генерации HDL-кода.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
Edge
— Пиксельное значение, указывая, является ли пиксель ребромДля одной пиксельной потоковой передачи Edge является булевым скаляром. Для мультипиксельной потоковой передачи Edge является вектором NumberOfPixels-by-1 булевы значения. NumberOfPixels может быть четыре или восемь. Каждое пиксельное значение указывает, является ли пиксель ребром.
Типы данных: Boolean
Gv,Gh
— Вертикальный и горизонтальный градиентВертикальные и горизонтальные значения градиента, вычисленные по ядру, сосредоточенному в пиксельном местоположении.
Для одной пиксельной потоковой передачи блок возвращает Gv и Gh как скалярные значения. Для мультипиксельной потоковой передачи блок возвращает Gv и Gh как векторы NumberOfPixels-by-1 значения. NumberOfPixels может быть четыре или восемь.
double
и single
типы данных поддерживаются для симуляции, но не для генерации HDL-кода.
Эти порты отображаются, когда вы устанавливаете Method на Sobel
или Prewitt
.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
G45,G135
— Ортогональный градиент Ортогональные значения градиента, вычисленные по ядру, сосредоточенному в пиксельном местоположении.
Для одной пиксельной потоковой передачи блок возвращает G45 и G135 как скалярные значения. Для мультипиксельной потоковой передачи блок возвращает G45 и G135 как векторы NumberOfPixels-by-1 значения. NumberOfPixels может быть четыре или восемь.
double
и single
типы данных поддерживаются для симуляции, но не для генерации HDL-кода.
Эти порты отображаются, когда вы устанавливаете Method на Roberts
.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
ctrl
— Управляющие сигналы сопоставлены с пиксельным потокомpixelcontrol
шинаУправляющие сигналы сопоставлены с пиксельным потоком в виде pixelcontrol
соедините шиной, который содержит пять сигналов. Сигналы описывают валидность пикселя и его местоположения в системе координат. Для получения дополнительной информации смотрите Пиксельную Шину управления.
Для мультипиксельной потоковой передачи каждый вектор пиксельных значений имеет один набор управляющих сигналов. Поскольку вектор имеет только один valid
сигнал, пиксели в векторе - или все допустимые или все недопустимые. hStart
и vStart
сигналы применяются к пикселю с самым низким индексом в векторе. hEnd
и vEnd
сигналы применяются к пикселю с самым высоким индексом в векторе.
Типы данных: bus
Method
— Алгоритм обнаружения ребраSobel
(значение по умолчанию) | Prewitt
| Roberts
Когда вы выбираете Sobel
или Prewitt
, блок вычисляет горизонтальные и вертикальные градиенты, Gv
и Gh
. Когда вы выбираете Roberts
, блок вычисляет ортогональные градиенты, G45
и G135
. Для получения дополнительной информации каждого метода, см. Алгоритмы.
Если вы выбираете Prewitt
, полная точность внутренний тип данных является большой из-за 1/6 коэффициента. Рассмотрите Output the gradient components выбора, так, чтобы можно было настроить тип данных к меньшему размеру.
Output the binary image
— Включите выходной порт ребраКогда этот параметр выбран, блок возвращает поток бинарных пикселей, представляющих ребра, обнаруженные во входном кадре.
Необходимо выбрать по крайней мере один из Output the binary image и Output the gradient components.
Output the gradient components
— Включите выходные порты градиентаКогда этот параметр выбран, блок возвращает поток значений, представляющих градиенты, вычисленные в двух ортогональных направлениях на уровне каждого пикселя. Когда вы устанавливаете Method на Sobel
или Prewitt
, выходные порты Gv и Gh появляются на блоке. Когда вы устанавливаете Method на Roberts
, выходные порты G45 и G135 появляются на блоке.
Необходимо выбрать по крайней мере один из Output the binary image и Output the gradient components.
Source of threshold value
— Источник для порога градиента, который указывает на реброProperty
(значение по умолчанию) | Input port
Можно установить порог от входного порта или от диалогового окна. Значением по умолчанию является Property
. Выбор Input port
включает порт Th.
Threshold value
— Пороговое значение градиента, которое указывает на ребро
(значение по умолчанию) | скалярБлок сравнивает квадрат этого значения к сумме квадратов градиентов. Блок бросает это значение к типу данных градиентов.
Эта опция отображается, когда вы устанавливаете Source of threshold value на Property
.
Line buffer size
— Размер буфера памяти линии
(значение по умолчанию) | целое числоЗадайте степень двойки, которая размещает количество активных пикселей в одной горизонтальной линии.
Если вы задаете значение, которое не является степенью двойки, блок использует следующую самую большую степень двойки. Блок выделяет (N – 1)-by-Line buffer size ячейки памяти, чтобы сохранить пиксели, где N является количеством линий в дифференциальной матрице приближения. Если вы устанавливаете Method на Sobel
или Prewitt
, затем N равняется 3. Если вы устанавливаете Method на Roberts
, затем N равняется 2.
Padding method
— Метод для дополненияSymmetric
(значение по умолчанию) | None
Выберите один из этих методов для дополнения контура входного изображения. Для получения дополнительной информации об этих методах, смотрите, что Ребро Дополняет.
Symmetric
— Установите значение дополнительных пикселей, чтобы зеркально отразить ребро изображения. Эта опция препятствует тому, чтобы ребра были обнаружены на контурах активной системы координат.
None
— Исключите дополнительную логику. Блок не устанавливает пиксели вне фрейма изображения ни к какому конкретному значению. Эта опция уменьшает аппаратные ресурсы, используемые блоком и очищением, требуемым между системами координат, но влияет на точность выходных пикселей в ребрах системы координат. Чтобы обеспечить пиксельную потоковую синхронизацию, выходная система координат одного размера с входным кадром. Однако избегать использования пикселей, вычисленных от неопределенных дополнительных значений, маски от KernelSize/2 пиксели вокруг ребра системы координат для нисходящих операций. Для получения дополнительной информации смотрите Пропускную способность Увеличения с Дополнением Ни одного.
Rounding mode
— Округление метода для внутренних вычислений фиксированной точкиFloor
(значение по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Zero
Задайте метод округления для внутренних вычислений фиксированной точки.
Saturate on integer overflow
— Действие переполнения для внутренних вычислений фиксированной точкиoff
(значение по умолчанию) | on
Когда вы очищаете этот параметр, фиксированная точка и целочисленные значения повторяются, чтобы обнулить, когда значение переполняет того, что является представимым с тем типом данных. Когда вы выбираете этот параметр, значение насыщает в максимальном представимом значении.
Gradient Data Type
— Тип данных для выходных портов градиентаInherit via internal rule
(значение по умолчанию) | выражение типа данныхТип данных для двух выходных портов градиента. По умолчанию блок автоматически выбирает типы данных полной точности.
Чтобы включить этот параметр, на вкладке Main, выбирают Output the gradient components.
Блок Edge Detector предоставляет три метода для обнаружения ребер во входном изображении. Методы используют различные производные матрицы приближения, чтобы найти два ортогональных градиента. Методы Sobel и Prewitt вычисляют градиент в горизонтальных и вертикальных направлениях. Метод Робертса вычисляет градиенты в 45 градусах и 135 градусах. Блок использует те же матрицы в качестве блока Edge Detection в Computer Vision Toolbox™.
Когда вы используете мультипиксельную потоковую передачу, блок использует однострочную память и реализует фильтры NumberOfPixels параллельно. Это увеличение аппаратных ресурсов является компромиссом для увеличения пропускной способности по сравнению с потоковой передачей одно пикселя.
Метод | Направление 1 | Направление 2 |
---|---|---|
Sobel | ||
Prewitt | ||
Робертс |
Коэффициенты Prewitt требуют дополнительных битов точности, потому что они не степени двойки. Блок использует 16 битов, чтобы представлять коэффициенты Prewitt. Для 8-битного входа размер по умолчанию градиентов полной точности составляет 27 битов. При использовании метода Prewitt хорошая практика должна уменьшать размер слова, используемый в вычислении градиента. Установите флажок Output the gradient components, и затем на вкладке Data Types, задайте меньший размер слова с помощью Gradient Data Type.
Блок применяет операцию свертки к окружению входного пикселя с производными матрицами, D1 и D2. Это затем сравнивает сумму квадратов градиентов к квадрату порога. Вычисление квадрата порога старается не создавать схему квадратного корня. Блок бросает градиенты к типу, который вы задали на вкладке Data Types. Преобразование типов на квадрате порога совпадает с типом суммы квадратов градиентов.
Задержка блока является буферной задержкой линии плюс задержка вычисления ядра. Буферная задержка линии включает ребро, дополняющее по умолчанию. Задержка дополнительной операции зависит от размера ядра. Если дополнение ребра не необходимо для вашего проекта, можно уменьшать задержку путем установки параметра Padding method на None
. Когда вы используете эту опцию, задержка блока не зависит от вашего размера ядра. Чтобы определить точную задержку для любой настройки блока, измерьте количество временных шагов между управляющими сигналами ввода и вывода.
Когда вы будете использовать дополнение ребра, используйте горизонтальный интервал гашения больших, чем дважды ширина ядра. Этот интервал позволяет блоку закончить обрабатывать одну линию, прежде чем это начнет обрабатывать следующее, включая добавление дополнительных пикселей до и после активных пикселей в линии. Стандартные форматы потокового видео используют горизонтальный интервал гашения приблизительно 25% ширины системы координат. Этот интервал намного больше, чем фильтры применились к каждой системе координат. Когда вы отключаете дополнение ребра, горизонтальный интервал гашения должен быть по крайней мере 12 циклами и независим от размера ядра. Если вы используете пользовательский формат видео, установите горизонтальный интервал гашения при помощи параметров блоков Frame To Pixels. Горизонтальный интервал гашения равен Total pixels per line – Active pixels per line или, эквивалентно, Front porch + Back porch.
Этот блок поддерживает генерацию кода C/C++ для акселератора Simulink® и быстрых режимов Accelerator и для генерации компонента DPI.
HDL Coder™ обеспечивает дополнительные параметры конфигурации, которые влияют на реализацию HDL и синтезируемую логику.
Этот блок имеет одну, архитектуру HDL по умолчанию.
ConstrainedOutputPipeline | Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. |
InputPipeline | Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
OutputPipeline | Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
Вы не можете сгенерировать HDL для этого блока в Resettable Synchronous Subsystem.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.