exponenta event banner

visionhdl. EdgeDetector

Поиск краев объектов

Описание

visionhdl.EdgeDetector находит края в потоке пикселов в градациях серого с помощью метода Собеля, Превитта или Робертса. Объект свертывает входные пиксели матрицами аппроксимации производных, чтобы найти градиент величины пикселя вдоль двух ортогональных направлений. Затем он сравнивает сумму квадратов градиентов с настраиваемым порогом, чтобы определить, представляют ли градиенты ребро. Методы Собеля и Превитта рассчитывают градиент в горизонтальном и вертикальном направлениях. Метод Робертса вычисляет градиенты 45 и 135 градусов.

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

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной системным object™, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

ED = visionhdl.EdgeDetector возвращает объект System, ED, который обнаруживает края с помощью метода Собеля.

ED = visionhdl.EdgeDetector(Name,Value) возвращает объект System, ED, с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары. Name является именем свойства и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN. Не указанные свойства сохраняют значения по умолчанию.

Свойства

Method

Алгоритм обнаружения границ.

Определить 'Sobel', 'Prewitt', или 'Roberts' способ.

По умолчанию: 'Sobel'

BinaryImageOutputPort

Включить Edge выходные данные step способ.

Когда это свойство true, step возвращает двоичное значение пикселя, представляющее, обнаружил ли объект край в каждом местоположении в кадре.

По умолчанию: true

GradientComponentOutputPorts

Включить G1 и G2 выходных данных step способ.

Когда это свойство true, step метод возвращает два значения, представляющие градиенты, вычисленные в двух ортогональных направлениях в каждом пикселе. Задайте тип данных для этого аргумента в GradientDataType собственность.

По умолчанию: false

ThresholdSource

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

Установить для этого свойства значение 'Input port'установка порога в качестве входного аргумента для step способ. Если для этого свойства установлено значение 'Property', установите порог в Threshold собственность.

По умолчанию: 'Property'

Threshold

Пороговое значение градиента, указывающее край, указанное как числовое скалярное значение.

Объект сравнивает квадрат с суммой квадратов градиентов. Объект приводит это значение к типу данных градиентов. Это свойство применяется при установке ThresholdSource кому 'Property'.

По умолчанию: 20

LineBufferSize

Укажите степень два, которая соответствует количеству активных пикселов в одной горизонтальной строке.

Выберите степень два, которая соответствует количеству активных пикселов в горизонтальной линии. Если задано значение, которое не является степенью два, объект использует следующую наибольшую степень два. Объект распределяет (N - 1) -by-LineBufferSize ячейки памяти для хранения пикселей, где N - количество строк в матрице дифференциального приближения. Если установить Method свойство для 'Sobel'или 'Prewitt', то N равно 3. Если установить Method свойство для 'Roberts', то N равно 2.

По умолчанию: 2048

PaddingMethod

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

  • 'Symmetric' - Задайте значение пикселов заполнения для отражения края изображения. Эта опция предотвращает обнаружение кромок на границах активного кадра.

  • 'None' - Исключить логику заполнения. Объект не устанавливает для пикселов вне кадра изображения какое-либо конкретное значение. Эта опция уменьшает аппаратные ресурсы, используемые объектом, и блокирование, требуемое между кадрами, но влияет на точность выходных пикселей на краях кадра. Для поддержания синхронизации потока пикселей выходной кадр имеет тот же размер, что и входной кадр. Однако, чтобы избежать использования пикселей, вычисленных из неопределенных значений заполнения, маскируйте n/2 пикселей вокруг края кадра для нисходящих операций, где n - размер ядра операций. Дополнительные сведения см. в разделе Увеличение пропускной способности при отсутствии заполнения.

По умолчанию: 'Symmetric'

RoundingMethod

Режим округления, используемый для операций с фиксированной точкой.

Объект использует арифметику с фиксированной точкой для внутренних вычислений, если входные данные являются целыми или фиксированными. Этот параметр не применяется, если типом входных данных является single или double.

По умолчанию: Floor

OverflowAction

Действие переполнения, используемое для операций с фиксированной точкой.

Объект использует арифметику с фиксированной точкой для внутренних вычислений, если входные данные являются целыми или фиксированными. Этот параметр не применяется, если типом входных данных является single или double.

По умолчанию: Wrap

GradientDataType

Тип данных для выходных значений градиента, указанный как numerictype(signed,WL,FL)где WL - длина слова, а FL - длина дроби в битах.

  • 'Full precision' (по умолчанию) - использование правил полной точности на основе типа данных pixelIn аргумент step и коэффициенты матриц аппроксимации производной.

  • 'custom' - Использовать тип данных, определенный вCustomGradientDataType собственность.

CustomGradientDataType

Тип данных для выходных значений градиента, указанный как numerictype(signed,WL,FL)где WL - длина слова, а FL - длина дроби в битах.

По умолчанию: numerictype(1,8,0)

Методы

шагОбнаружение краев в пикселе изображения
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

Обнаружение ребер в миниатюре с помощью метода Собеля.

Импорт тестового изображения.

frmInput = imread('rice.png');
[frmActivePixels,frmActiveLines] = size(frmInput);
figure
imshow(frmInput)
title 'Input Image'

Figure contains an axes. The axes with title Input Image contains an object of type image.

Создайте сериализатор и укажите размер неактивных пиксельных областей.

frm2pix = visionhdl.FrameToPixels(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines,...
      'TotalPixelsPerLine',frmActivePixels+10,...
      'TotalVideoLines',frmActiveLines+10,...
      'StartingActiveLine',6,...     
      'FrontPorch',5);

Создайте объект обнаружения кромок со значениями свойств по умолчанию. Метод обнаружения по умолчанию - Собел.

edgeDetectSobel = visionhdl.EdgeDetector();

Ускорьте моделирование, включив режим моделирования, использующий генерацию кода для объекта System.

edgeDetectSobel.simulateUsing('Code generation');

Сериализируйте тестовый образ с помощью созданного объекта. pixIn - вектор значений интенсивности. ctrlIn - вектор структур управляющих сигналов. Предварительно распределить векторы для выходных сигналов.

Примечание.Этот синтаксис работает только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).

[pixIn,ctrlIn] = frm2pix(frmInput);

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
ctrlOut = repmat(pixelcontrolstruct,numPixelsPerFrame,1);
edgeOut = false(numPixelsPerFrame,1);

Для каждого пикселя в потоке вычислите, представляет ли он край.

for p = 1:numPixelsPerFrame  
   [edgeOut(p),ctrlOut(p)] = edgeDetectSobel(pixIn(p),ctrlIn(p));
end

Создайте десериализатор с форматом, соответствующим формату сериализатора. Используйте десериализатор для преобразования выходного потока пикселей в кадр изображения.

pix2frm = visionhdl.PixelsToFrame(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines);
  
[frmOutput,frmValid] = pix2frm(edgeOut,ctrlOut);
if frmValid
    figure
    imshow(frmOutput)
    title 'Output Image'
end

Figure contains an axes. The axes with title Output Image contains an object of type image.

Алгоритмы

Этот объект реализует алгоритмы, описанные на странице ссылок блока Edge Detector.

Представлен в R2015a