visionhdl.EdgeDetector

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

Описание

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

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

Примечание

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

Конструкция

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

ED = visionhdl.EdgeDetector(Name,Value) возвращает Системный объект, 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);

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

edgeDetectSobel = visionhdl.EdgeDetector();

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

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