visionhdl.EdgeDetector

Найдите ребра объектов

Описание

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

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

Примечание

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

Конструкция

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

ED = visionhdl.EdgeDetector(Name,Value) возвращает Системный объект, ED, с дополнительными опциями, заданными одним или несколькими NameЗначение парные аргументы. 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

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

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

Значение по умолчанию: Floor

OverflowAction

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

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

Значение по умолчанию: Wrap

GradientDataType

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

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

  • 'custom' — Используйте тип данных, заданный в theCustomGradientDataType свойство.

CustomGradientDataType

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

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

Методы

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

Позвольте изменения значения свойства Системного объекта

Примеры

свернуть все

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

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

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

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

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