edge

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

Описание

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

пример

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

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

BW = edge(I,method,threshold,direction) задает ориентацию ребер для обнаружения. Методы Собеля и Предвитта могут обнаруживать ребра в вертикальном направлении, горизонтальном направлении или обоих. Метод Робертса может обнаруживать ребра под углами 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(___) также возвращает величины градиента направления. Для методов Собеля и Предвитта, Gv и Gh соответствуют вертикальным и горизонтальным градиентам. Для методов Робертса, Gv и Gh соответствуют градиенту под углами 45 ° и 135 ° от горизонтали, соответственно. Этот синтаксис действителен только при method является 'Sobel', 'Prewitt', или 'Roberts'.

Примеры

свернуть все

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

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

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

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

BW1 = edge(I,'Canny');

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

BW2 = edge(I,'Prewitt');

Отображение обоих результатов один за другим.

imshowpair(BW1,BW2,'montage')

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

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

свернуть все

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

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

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

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

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

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

'Prewitt'

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

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

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

'approxcanny'

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

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

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

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

  • The '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'. The direction аргумент действителен только тогда, когда method является 'Sobel', 'Prewitt', или 'Roberts'.

Примечание

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

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

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

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

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

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

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

'log' (Лапласиан Гауссов)

Скалярное значение, которое задает стандартное отклонение Лапласа Гауссова фильтра. Значение по умолчанию является 2. Размер фильтра n-by- 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 ° от горизонтали.

Алгоритмы

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

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

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

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

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

расширить все

Поведение изменено в R2011a

Ссылки

[1] Canny, John, «A Computational Approach to Edge Detection», IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. PAMI-8, No. 6, 1986, pp. 679-698.

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

[3] Parker, James R., Algorithms for Image Processing and Computer Vision, New York, John Wiley & Sons, Inc., 1997, pp. 23-29.

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

..

См. также

| |

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