ребро

Найдите ребра в изображении интенсивности

Синтаксис

BW = edge(I)
BW = edge(I,method)
BW = edge(I,method,threshold)
BW = edge(I,method,threshold,direction)
BW = edge(___,'nothinning')
BW = edge(I,method,threshold,sigma)
BW = edge(I,method,threshold,h)
[BW,threshOut] = edge(___)
[BW,threshOut,Gv,Gh] = edge(___)

Описание

BW = edge(I) возвращает двухуровневое изображение BW, содержащий 1 s, где функция находит, что ребра во входе отображают I и 0 s в другом месте. По умолчанию edge использует метод обнаружения ребра Sobel.

Опционально можно найти ребра с помощью графического процессора (требует Parallel Computing Toolbox™). Для получения дополнительной информации смотрите Обработку изображений на графическом процессоре.

пример

BW = edge(I,method) обнаруживает ребра в изображении I с помощью алгоритма обнаружения ребра, заданного method.

BW = edge(I,method,threshold) возвращает все ребра, которые более сильны, чем threshold.

BW = edge(I,method,threshold,direction) задает ориентацию ребер, чтобы обнаружить. Методы Sobel и Prewitt могут обнаружить ребра в вертикальном направлении, горизонтальном направлении или обоих. Метод Робертса может обнаружить ребра под углами 45 ° от горизонтали, 135 ° от горизонтали или обоих. Этот синтаксис допустим только, когда method является 'Sobel', 'Prewitt' или 'Roberts'.

BW = edge(___,'nothinning') пропускает разбавляющий ребро этап, который может улучшать производительность. Этот синтаксис допустим только, когда method является 'Sobel', 'Prewitt' или 'Roberts'.

BW = edge(I,method,threshold,sigma) задает sigma, стандартное отклонение фильтра. Этот синтаксис допустим только, когда method является 'log' или 'Canny'.

BW = edge(I,method,threshold,h) обнаруживает ребра с помощью метода 'zerocross' с фильтром, h, который вы задаете. Этот синтаксис допустим только, когда method является 'zerocross'.

[BW,threshOut] = edge(___) также возвращает пороговое значение.

[BW,threshOut,Gv,Gh] = edge(___) также возвращает направленные величины градиента. Для методов Sobel и Prewitt Gv и Gh соответствуют вертикальным и горизонтальным градиентам. Для методов Робертса Gv и Gh соответствуют градиенту под углами 45 ° и 135 ° от горизонтали, соответственно. Этот синтаксис допустим только, когда method является 'Sobel', 'Prewitt' или 'Roberts'.

Примеры

свернуть все

Считайте полутоновое изображение в рабочую область и отобразите ее.

I = imread('circuit.tif');
imshow(I)

Найдите ребра с помощью метода Кэнни.

BW1 = edge(I,'Canny');

Найдите ребра с помощью метода Prewitt.

BW2 = edge(I,'Prewitt');

Отобразите оба результата бок о бок.

imshowpair(BW1,BW2,'montage')

Входные параметры

свернуть все

Введите изображение, заданное как 2D полутоновое изображение или 2D двухуровневое изображение.

Для метода 'approxcanny' изображений типа данных single или double должны быть нормированы в области значений [0 1].

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Метод обнаружения ребра, заданный как одно из следующих.

МетодОписание
'Sobel'

Находит ребра в тех точках, где градиент изображения I максимален, с помощью приближения Sobel для производной.

'Prewitt'

Находит ребра в тех точках, где градиент I максимален, с помощью приближения Prewitt для производной.

'Roberts'Находит ребра в тех точках, где градиент I максимален, с помощью приближения Робертса для производной.
'log'Находит ребра путем поиска нулевых пересечений после фильтрации I с фильтром Лапласиана гауссовых (LoG).
'zerocross'Находит ребра путем поиска нулевых пересечений после фильтрации I с фильтром, который вы задаете, h
'Canny'

Находит ребра путем поиска локальных максимумов градиента I. Функция edge вычисляет градиент с помощью производной Гауссова фильтра. Этот метод использует два порога, чтобы обнаружить сильные и слабые ребра, включая слабые ребра в выводе, если они соединяются с сильными ребрами. При помощи двух порогов метод Кэнни менее вероятен, чем другие методы дурачиться шумом, и более вероятно обнаружить истинные слабые ребра.

'approxcanny'

Находит ребра с помощью аппроксимированной версии алгоритма обнаружения ребра Кэнни, который обеспечивает более быстрое время выполнения за счет менее точного обнаружения. Изображения с плавающей точкой, как ожидают, будут нормированы в области значений [0 1].

Примечание

'Canny' и методы 'approxcanny' не поддержаны на графическом процессоре.

Порог чувствительности, заданный в виде числа для любого method или вектора с 2 элементами для 'Canny' и методов 'approxcanny'. edge игнорирует все ребра, которые не более сильны, чем threshold. Для получения дополнительной информации об этом параметре, см. Алгоритм.

  • Если вы не задаете threshold, или если вы задаете пустой массив ([]), то edge выбирает значение или значения автоматически.

  • Для 'log' и методов 'zerocross', если вы задаете пороговое значение 0, затем выходное изображение имеет замкнутые контуры, потому что это включает все нулевые пересечения во входное изображение.

  • 'Canny' и методы 'approxcanny' используют два порога. edge игнорирует все ребра с контрастностью края ниже более низкого порога и сохраняет все ребра с контрастностью края выше более высокого порога. Можно задать threshold как вектор с 2 элементами формы [low high] с low и значениями high в области значений [0 1]. Можно также задать threshold в виде числа, которое edge присваивает более высокому порогу. В этом случае edge использует threshold*0.4 в качестве более низкого порога.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Направление ребер, чтобы обнаружить, заданный как 'horizontal', 'vertical' или 'both'. Аргумент direction только допустим, когда method является 'Sobel', 'Prewitt' или 'Roberts'.

Примечание

Если вы выбираете Roberts method, то направление 'horizontal' на самом деле обнаруживает ребра под углом 135 ° от горизонтали, и направление 'vertical' обнаруживает ребра под углом 45 ° от горизонтали.

Типы данных: char | string

Отфильтруйте, заданный как матрица. Аргумент h поддерживается методом 'zerocross' только.

Типы данных: double

Стандартное отклонение фильтра, заданного как скаляр. Аргумент sigma поддерживается 'Canny' и методами 'log' только.

МетодОписание
'Canny'

Скалярное значение, которое задает стандартное отклонение Гауссова фильтра. Значением по умолчанию является sqrt(2). edge выбирает размер фильтра автоматически, на основе sigma.

'log' (Лапласиан гауссовых)

Скалярное значение, которое задает стандартное отклонение Лапласиана Гауссова фильтра. Значением по умолчанию является 2. Размером фильтра является n-by-n, где n=ceil(sigma*3)*2+1.

Типы данных: double

Выходные аргументы

свернуть все

Выведите двухуровневое изображение, возвращенное как логический массив, одного размера как I, с 1 s, где функция находит ребра в I и 0 s в другом месте.

Пороговое значение используется в вычислении, возвращенном как вектор с 2 элементами для method 'Canny', пустой вектор ([]) для метода 'approxcanny' или числовой скаляр для всех других методов обнаружения ребра.

Вертикальный градиент, возвращенный как числовой массив, одного размера как I.

Примечание

Если вы выбираете Roberts method, то edge возвращает градиент, вычисленный под углом 45 ° от горизонтали.

Горизонтальный градиент, возвращенный как числовой массив, одного размера как I.

Примечание

Если вы выбираете Roberts method, то edge возвращает градиент, вычисленный под углом 135 ° от горизонтали.

Алгоритмы

  • Для методов обнаружения ребра величины градиента (Sobel, Prewitt, Робертс), edge использует threshold для порога расчетная величина градиента.

  • Для методов пересечения нулем, включая Лапласиан Гауссовых, edge использует threshold в качестве порога для нулевых пересечений. Другими словами, большой скачок через нуль является ребром, в то время как маленький скачок не.

  • Осторожный метод применяет два порога к градиенту: высокий порог для низкой чувствительности ребра и низкий порог для высокой чувствительности ребра. edge запускается с низкого результата чувствительности и затем выращивает его, чтобы включать соединенные краевые пиксели от высокого результата чувствительности. Это помогает заполнить разрывы в обнаруженных ребрах.

  • Во всех случаях edge выбирает порог по умолчанию эвристическим образом, в зависимости от входных данных. Лучший способ отличаться порог состоит в том, чтобы запустить edge однажды, получив расчетный порог как второй выходной аргумент. Затем при запуске со значения, вычисленного edge, настройте порог выше, чтобы обнаружить меньше краевых пикселей или понизиться, чтобы обнаружить больше краевых пикселей.

Вопросы совместимости

развернуть все

Поведение изменяется в R2011a

Ссылки

[1] Осторожный, Джон, "Вычислительный Подход к Обнаружению Ребра", Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту, Изданию PAMI-8, № 6, 1986, стр 679-698.

[2] Лим, Джэ С., Двумерная Обработка сигналов и Обработка изображений, Englewood Cliffs, NJ, Prentice Hall, 1990, стр 478-488.

[3] Паркер, Джеймс Р., Алгоритмы для Обработки изображений и Компьютер-Визайон, Нью-Йорк, John Wiley & Sons, Inc., 1997, стр 23-29.

Расширенные возможности

Смотрите также

| |

Представлено до R2006a