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' — Исключите дополнительную логику. Объект не устанавливает пиксели вне фрейма изображения ни к какому конкретному значению. Эта опция уменьшает аппаратные ресурсы, используемые объектом и очищением, требуемым между системами координат, но влияет на точность выходных пикселей в ребрах системы координат. Чтобы обеспечить пиксельную потоковую синхронизацию, выходная система координат одного размера с входным кадром. Однако избегать использования пикселей, вычисленных от неопределенных дополнительных значений, маски от KernelSize/2 пиксели вокруг ребра системы координат для нисходящих операций. Для получения дополнительной информации смотрите Пропускную способность Увеличения с Дополнением Ни одного.

Значение по умолчанию: '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'

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

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

Алгоритмы

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

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