Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

pmi432 / LR07 / 2read / из Журавеля / 13. Анализ признаков объектов

.pdf
Скачиваний:
75
Добавлен:
18.03.2015
Размер:
254.71 Кб
Скачать

Image Processing Toolbox. . . .

. 1

MATLAB.Exponenta

 

Семинары

Тренинги

Лицензирование

Материалы

 

Подписка

 

Форум

Регистрация

Matlab

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Toolboxes

 

 

 

 

Запрос цены

 

Пробная версия

 

Запрос демонстрации

 

Simulink

 

 

 

 

 

 

 

 

 

 

 

Blocksets

 

 

 

 

 

 

 

 

 

Вход

 

 

 

 

 

 

 

 

 

 

Полезное

 

 

 

 

 

 

 

 

 

 

 

 

Обработка сигналов и изображений\ Image Processing Toolbox

И.М.Журавель "Краткий курс теории обработки изображений"

В оглавление книги \ К предыдущему разделу \ К следующему разделу

Анализ признаков объектов

Ранее уже отмечалось, что каждый объект изображения можно охарактеризовать набором признаков, которые могут служить основой для их анализа и распознавания. В приложении Image Processing Toolbox для вычисления признаков объектов используется функция imfeature.

В данном материале рассмотрим все типы признаков объектов, которые вычисляются с помощью функции imfeature. Условно их можно разбить на пять групп:

1.признаки типов изображений объекта;

2.признаки размеров объекта;

3.признаки определения площади объекта;

4.признаки формы объекта;

5.другие признаки.

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

L=imread('test_image.bmp'); figure, imshow(L);

Исходное изображение

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

[L num]=bwlabel(L,8);

Сформируем изображение самого объекта

feats=imfeature(L,'Image',8); Image=feats(1).Image; figure, imshow(Image);

Изображение самого объекта

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 2

Сформируем изображение с “залитыми” дырами

feats=imfeature(L,'FilledImage',8); FilledImage=feats(1).FilledImage; figure, imshow(FilledImage);

Изображение с “залитыми” дырами

Сформируем изображение “залитого” пикселями объекта выпуклого многоугольника, в который вписан объект:

feats=imfeature(L,'ConvexImage',8); ConvexImage=feats(1).ConvexImage; figure, imshow(ConvexImage);

Изображение “залитого” пикселями объекта выпуклого многоугольника, в который вписан объект

Довольно часто возникает необходимость описания габаритных размеров объекта различными способами. Для этого используются следующие опции – “BoundingBox”, ”ConvexHull”, ”Extrema”,”PixelList”. Рассмотрим использование этих опций на примере нашего исходного изображения.

1.Получение координат прямоугольника, ограничивающего объект. feats=imfeature(L,'BoundingBox',8);

feats =

BoundingBox: [31.5000 37.5000 205 181]

Результат представлен в виде массива [x y width height] , где (x,y) – координаты левого верхнего угла прямоугольника, width – ширина, height – высота прямоугольника.

Используя код

line([BoundingBox (1) BoundingBox (1)+ BoundingBox (3) BoundingBox (1)+ BoundingBox (3) BoundingBox (1) BoundingBox (1)],[ BoundingBox (2) BoundingBox (2)

BoundingBox (2)+ BoundingBox (4) BoundingBox (2)+ BoundingBox (4) BoundingBox (2)]);

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

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 3

Прямоугольник, ограничивающий объект

2.Получение координат выпуклого многоугольника, в который вписан объект. Для этого используется опция “ConvexHull”.

feats=imfeature(L,'ConvexHull',8);

ConvexHull=feats.ConvexHull;

Результат представляется в виде матрицы, каждая строка которой содержит (x,y) координаты вершин описанного выше многоугольника.

Для наглядности визуализируем этот многоугольник на основании полученных координат. line(ConvexHull(:,1),ConvexHull(:,2))

Выпуклый многоугольник, в который вписан объект

3.Опция “Extrema” позволяет получить экстремальные координаты объекта. Результат представлен матрицей, которая содержит все экстремальные координаты объекта.

feats=imfeature(L,'Extrema',8);

Для наглядности отметим эти точки на изображении.

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 4

4.Для получения списка всех пикселей объекта используется опция “PixelList”.

feats=imfeature(L,'PixelList',8);

PixelList=feats.PixelList;

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

[q w]=size(PixelList); for i=1:q;

L(PixelList(i,2),PixelList(i,1))=0.5;

end;

figure, imshow(L);

Отметим, что у всех перечисленных выше признаков, координаты приведены в пространственной системе координат. Далее рассмотрим набор опций, которые применяются при оценивании формы или при классификации объектов. Одним из основных признаков в этом случае является площадь. Рассмотрим несколько способов вычисления площади.

1.Использование опции “Area” приводит к вычислению площади, числовое значение которой равно количеству пикселей объекта

feats=imfeature(L,'Area',8);

Area=feats.Area Area =

17959

2.Для вычисления полной площади, числовое значение которой соответствует общему количеству пикселей объекта и пикселей дыр в объекте, что равно также площади изображения FilledImage, используется опция “FilledArea”.

feats=imfeature(L,'FilledArea',8);

FilledArea=feats.FilledArea

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 5

FilledArea =

20670

3.Существует возможность вычисления выпуклой площади. Под выпуклой площадью имеется ввиду площадь выпуклого многоугольника, в который вписан объект.

feats=imfeature(L,'ConvexArea',8);

ConvexArea=feats.ConvexArea ConvexArea =

25278

Эта площадь соответствует площади изображения ConvexImage.

Среди основных морфометрических признаков следует выделить также:

1.Центр масс объекта, который определяется с помощью опции “Centroid”. Результат представляется двухэлементным массивом, который содержит координаты центра масс в пространственной системе координат.

feats=imfeature(L,'Centroid',8);

Centroid=feats.Centroid Centroid =

128.4878 128.8137

2.Эквивалентный диаметр, который определяется с помощью опции “EquivDiameter”.

feats=imfeature(L,'EquivDiameter',8);

EquivDiameter=feats.EquivDiameter EquivDiameter =

151.2154

3.Длина максимальной оси инерции объекта определяется с помощью опции “MajorAxisLength”.

feats=imfeature(L,'MajorAxisLength',8);

MajorAxisLength=feats.MajorAxisLength MajorAxisLength =

223.9145

4.Минимальной оси инерции объекта определяется с помощью опции “MinorAxisLength”.

feats=imfeature(L,'MinorAxisLength',8);

MinorAxisLength=feats.MinorAxisLength MinorAxisLength =

145.7130

5.Для определения ориентации объекта, которая определяется углом (в градусах) между максимальной осью инерции и осью Х, используется опция “Orientation”.

feats=imfeature(L,'Orientation',8);

Orientation=feats.Orientation Orientation =

46.1221

6.Для вычисления числа Эйлера, которое определяется разницей между числом объектов и числом дыр в них, используется опция “EulerNumber”.

feats=imfeature(L,'EulerNumber',8);

EulerNumber=feats.EulerNumber

EulerNumber =

–2

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

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

L1=imread('krug.bmp'); figure, imshow(L1);

L2=imread('kv.bmp'); figure, imshow(L2);

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 6

Код для вычисления соответствующих коэффициентов формы выглядит следующим образом –

1.для вычисления коэффициента выпуклости, который равен отношению площади к выпуклой площади объекта

feats=imfeature(L,'Solidity ',8); Solidity=feats.Solidity

2.для вычисления коэффициента заполнения, который равен отношению площади объекта к площади ограничивающего прямоугольника

feats=imfeature(L,'Extent ',8); Extent=feats.Extent

3.для вычисления эксцентриситета эллипса с главными моментами инерции, равными главным моментам инерции объекта

feats=imfeature(L,'Eccentricity',8);

Eccentricity=feats.Eccentricity

Результаты вычисления различных коэффициентов формы для двух изображений представлены в таблице.

Коэффициенты формы Изображение круга Изображение квадрата

‘Solidity’

0.9806

1

 

 

 

 

 

 

‘Extent’

0.7800

1

 

 

 

 

 

 

‘Eccentricity’

0.0042

0.03323

 

 

 

Проанализируем представленные выше результаты более детально.

Коэффициент выпуклости (‘Solidity’), который как было сказано выше, равен отношению площади к выпуклой площади объекта. Если объект представлены кругом или квадратом, то значение этого коэффициента принимает значение, которое равно единице. При вычислениях эти значения могут несколько отличаться от единицы, что объясняется ошибками дискретизации при представлении объектов.

Второй параметр (‘Extent’) – коэффициент заполнения – определяется отношением площади объекта к площади ограничивающего прямоугольника. Естественно, что для квадрата этот коэффициент будет равен единице. Для круга

этот коэффициент определяется отношением площади круга к площади ограничивающего прямоугольника (2R)2, что равно

.

Как уже отмечалось ранее, при вычислениях коэффициента заполнения для реальных или симулированных объектов (в данном случае круга), его значения могут отличаться от расчетных. Это объясняется ошибками дискретизации, искажениями формы и т.п.

Третий коэффициент формы – эксцентриситет (‘Eccentricity’) – характеризует степень сплюснутости объекта. Определяется он выражением

где a – большая полуось орбиты, b – малая полуось орбиты.

Для окружности эксцентриситет равен нулю, для параболы он равен единице.

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

Пример.

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

clear;

L=imread('medimage.jpg'); figure, imshow(L);

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 7

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

L=L(:,:,1); L=double(L)./255; figure, imshow(L);

Это можно сделать также и другим способом – для преобразования полноцветных изображений в полутоновые в системе Matlab существует функция rgb2gray.

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

imhist(L)

Из гистограммы полутонового изображения видно, что областей с низким уровнем яркости на изображении сравнительно немного и они соответствуют нашим объектам интереса. Поэтому пороговое значение можно выбрать на уровне 0,5 .

BW=roicolor(L,0,.5); figure, imshow(BW);

Результат бинаризации представлен на изображении внизу.

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 8

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

[BW1 num]=bwlabel(BW,8); feats=imfeature(BW1,'Area',8); Areas=zeros(num);

for i=1:num; Areas(i)=feats(i).Area; end;

При дальнейшем анализе будем учитывать только эти объекты, площадь которых больше некоторого порогового уровня.

idx=find(Areas>10);

BW=ismember(BW1,idx); figure, imshow(BW);

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

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

[BW1 num]=bwlabel(BW,8);

Далее необходимо вычислить площади объектов

feats=imfeature(BW1,'Area',8);

и построить гистограмму распределения числовых значений площадей объектов.

figure,hist([feats.Area]);

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22

Image Processing Toolbox. . . .

. 9

Вданном материале рассмотрены возможности системы Matlab по вычислению признаков объектов, которые служат основой для решения задач анализа и распознавания.

Воглавление книги \ К предыдущему разделу \ К следующему разделу

I Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2002 г.) II Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2004 г.)

III Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (октябрь 2007 г.) IV Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2009 г.)

V Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2011 г.)

На первую страницу \ Сотрудничество \ MathWorks \ Softline \ Контакты \ Вакансии

Информация на сайте была обновлена 21.04.12

Copyright 2001–2012 Softline Co

Наши баннеры

 

подарки – подарочные сертификаты

http://matlab.exponenta.ru/imageprocess/book2/60.php

08.11.2012 23:35:22