exponenta event banner

край

Поиск ребер на изображении интенсивности

Описание

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.

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

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 является максимальным, используя приближение Превитта к производной.

'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'.

Примечание

Если выбрать Робертс 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.

Примечание

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

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

Примечание

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

Алгоритмы

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

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

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

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

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

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

В R2011a изменилось поведение

Ссылки

[1] Канни, Джон, «Вычислительный подход к обнаружению краев», IEEE Transactions on Pattern Analysis and Machine Intelligence, том PAMI-8, № 6, 1986, стр. 679-698.

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

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

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

..

См. также

| |

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