Анализ двумерных изображений в Matlab. Выделение границ

Анализ изображений

Применяя технику анализа, можно говорить о структуре изображений. Рассмотрим некоторые функции, которые используются при анализе изображений, а также их текстуры.

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

Для определения границ объектов изображения можно использовать функцию «edge». В качестве одного из критериев для определения края используется резкий перепад интенсивностей пикселей изображения. Отметим, что некоторые методы выделения границ, в зависимости от своих особенностей, в большей степени выделяют вертикальные, горизонтальные или все границы одинаково.

Одним из наиболее эффективных методов выделения границ является метод Канни. Метод Канни отличается от других известных методов тем, что при определении границ использует два порога (для слабых и сильных границ). Слабые границы отмечаются в результирующем изображении только тогда, когда они соединены с сильными. Для зашумленных изображений данный метод обеспечивает наилучшее обнаружение границ по сравнению с остальными методами, но требует существенно большего времени.

Рассмотрим пример применения метода выделения границ Канни, а также сравним его с другим известным методом выделения границ:

Считаем и отобразим исходное изображение (рисунок 2.1).

I=imread('coins.png');

imshow(I)

Анализ двумерных изображений в Matlab. Выделение границ - student2.ru

Рисунок 2.1 – Исходное изображение

Далее это изображение будет обработано операторами выделения границ Собела и Канни с последующей визуализацией (рисунок 2.2).

BW1 = edge(I,'sobel');

BW2 = edge(I,'canny');

imshow(BWl)

figure, imshow(BW2)

Анализ двумерных изображений в Matlab. Выделение границ - student2.ru

Рисунок 2.2 – Результат применения фильтров Собела и Канни к изображению

Для интерактивной демонстрации работы операторов выделения границ в приложении используется функция «edgedemo».

Отслеживание границ

Приложение включает две функции, которые могут быть использованы для поиска границ объектов на бинарном изображении. Это функции «bwtraceboundary» и «bwboundaries».

Функция «bwtraceboundary» возвращает координаты строк и столбцов всех пикселей, которые принадлежат границе объектов изображения. Также необходимо описать начальную (стартовую) точку при отслеживании границ объектов изображения.

Функция «bwboundaries» также возвращает координаты сток и столбцов всех пикселей, которые принадлежат границе объектов изображений.

Для обеих функций ненулевые пиксели на бинарном изображении принадлежат объекту, а пиксели со значением 0 составляют фон.

Рассмотрим пример применения функции «bwtraceboundary» для отслеживания границ некоторого объекта бинарного изображения, а затем используем функцию «bwboundaries» для отслеживания границ всех объектов изображения (рисунок 2.3).

Считаем и визуализируем изображение.

I=imread('coins.png');

imshow(I)

Преобразуем это изображение в бинарное. Функции «bwtraceboundary» и «bwboundaries» работают только с бинарными изо­бражениями.

BW=im2bw(I); imshow(BW)

Определим координаты строки и столбца пикселя на границе объекта. Функция «bwboundary» использует эту точку в качестве начальной при отслеживании границ.

dim=size(BW)

col=round(dim(2)/2)-90;

row=min(find(BW(:,col)))

Функция «bwtraceboundary» выполняет отслеживание границ от начальной точки. В качестве обязательных аргументов необходимо ввести само бинарное изображение, координаты начальной точки и направление первого шага. В примере использовано северное направление («N»).

boundary=bwtraceboundary(BW,[row, col],'N');

Отобразим сначала исходное полутоновое изображение, а потом координаты, которые возвращаются функцией «bwtraceboundary».

imshow(I) hold on;

plot(boundary(:,2),boundary(:,1),'g','LineWidth',3);

Для отслеживания границ всех монет на изображении используется функция «bwboundaries». По умолчанию функция «bwboundaries» определяет границы всех объектов на изображении, включая вложенные объекты. В нашем примере на бинарном изображении некоторые монеты содержат темные области, которые функция «bwboundaries» интерпретирует как отдельные объекты. Для того чтобы функция «bwboundaries» отслеживала только границы монет, используется функция «imfill» для заполнения областей внутри каждой монеты.

BW filled=imfill(BW,'holes');

boundaries=bwboundaries(BW filled);

Функция«bwboundaries»возвращает массив значений, где каждая ячейка содержит координаты пикселей объекта изображения. Отобразим границы всех монет на исходном полутоновом изображении, используя координаты, возвращаемые функцией «bwboundaries».

for k=1:10

b=boundaries{k};

plot(b(:,2),b(:1),’g’,’LineWidth’,3);

end

Анализ двумерных изображений в Matlab. Выделение границ - student2.ru

Рисунок 2.3 – Выделение границ на изображении

Задание

Выделить границы в любом медицинском изображении, заданные преподавателем, аналогично рассмотренному в теории.

Контрольные вопросы

1. Какие особенности метода Канни?

2. Какие функции Matlab используются при поиске границ на изображении?

3. Для чего используется функция «bwboundarles»?

4. Каковы особенности функции «edge»?

Практическая работа №3

Вейвлет анализ

Наши рекомендации