Скачиваний:
32
Добавлен:
01.05.2014
Размер:
385.54 Кб
Скачать

2.3. Описание реализации в Matlab:

EDGE

Выделение границ

Синтаксис:

BW=edge(l,method)BW=edge(l,method,thresh)BW=edge(l,method,thresh,P) [BW,thresh]=edge(l, method, ...)

Описание:

Для сегментации на изображениях часто необходимо обнаружить границы объектов - участки изображения, в которых есть перепад яркости.

Функция BW=edge(I, method)предназначена для выделения границ на исходном полутоновом изображении I. Данная функция возвращает бинарное изображение BW такого же размера, как исходное I. Пиксель BW(r, с) равен 1, если пиксель I(r, с) принадлежит границе. Для обнаружения границ может использоваться несколько методов. Применяемый метод задается в параметре method в виде одной из следующих строк: 'sobel', 'prewitt', 'roberts', 'log', 'zerocross', 'canny'. Если параметр method при вызове функции опущен, то по умолчанию он полагается равным 'sobel'.

Для каждого из методов определения границ можно задать дополнительные параметры. Для этого используется одна из функций BW=edge(I, method, thresh), BW=edge(I, method, thresh, P),где параметр thresh задает порог для определения того, принадлежит ли пиксель к границе, а в параметре Р передаются настройки, специфичные для каждого из методов.

Если при вызове функции параметр threshопущен, то значение порога выбирается автоматически. Получить значение порога можно, дополнительно определив выходной параметр thresh: [BW, thresh]=edge(I, method,...).

Рассмотрим использование функции edgeдля метода Собеля выделения границ.

Функция BW=edge(I, 'sobel', thresh)для определения границ использует фильтрацию исходного изображения I фильтром Собеля [1, 3]; пиксель считается относящимся к границе, если соответствующий ему пиксель результата фильтрации имеет значение, большее thresh. Для данного метода можно указать дополнительный параметр direction: BW=edge(I, 'sobel', thresh, direction), который определяет, какие границы будут обнаруживаться. Параметр direction может принимать значения:

  • 'horizontal' - выделение горизонтальных границ;

  • 'vertical' - выделение вертикальных границ;

  • 'both' - выделение границ во всех направлениях (данное значение используется по умолчанию, когда параметр direction не определен).

Параметр thresh может являться двухэлементным вектором. В этом случае первый элемент вектора задает значение нижнего порога, а второй элемент - значение верхнего порога. Если параметр thresh является скалярным значением, то thresh задает значение верхнего порога, а для нижнего порога используется значение 0.4*thresh. Если параметр thresh при вызове функции опущен или в качестве thresh передан пустой массив ([ ]), то значения порогов определяются автоматически.

Пример:

Рассмотрим выделение границ методом Собеля. Исходное изображение показано на рис. 2.3,а. Результирующее изображение, на котором отмечены границы, показано на рис. 2.3,б.

% Пример демонстрирует выделение границ методом Собеля. % Чтение исходного изображения и вывод его на экран. I=imread(‘lena.bmp’); imshow(l); % Выделение границ методом Собеля и вывод результата на экран. BW=edge(l, ‘sobel, 0.09); figure, imshow(BW);

а)

б)

Рис. 2.3.

Соседние файлы в папке Метод Собеля