edge

Найдите ребра в полутоновом изображении

Описание

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

пример

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)

Figure contains an axes object. The axes object contains an object of type image.

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

BW1 = edge(I,'Canny');

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

BW2 = edge(I,'Prewitt');

Отобразите оба результата рядом друг с другом.

imshowpair(BW1,BW2,'montage')

Figure contains an axes object. The axes object contains an object of type image.

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

свернуть все

Введите изображение в виде 2D полутонового изображения или 2D бинарного изображения.

Для 'approxcanny' метод, изображения типа данных single или double должен быть нормирован к области значений [0, 1]. Если I имеет значения вне области значений [0, 1], затем можно использовать rescale функция, чтобы перемасштабировать значения к ожидаемой области значений.

Типы данных: 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].

Порог чувствительности в виде числового скаляра для любого 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- n, где n=ceil(sigma*3)*2+1.

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

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

свернуть все

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

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

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

Примечание

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

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

Примечание

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

Алгоритмы

  • Для методов обнаружения ребра величины градиента (Sobel, Прюитт и Робертс), 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