MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

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

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

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

Распознавание объектов на основе вычисления их признаков

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

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

Сначала считаем исходное тестовое изображение в рабочее пространство Matlab

L=imread('test_image.bmp');

и визуализируем его

figure, imshow(L);

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

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

L=L(:,:,1);

Такого же результата можно достичь, используя функцию rgb2gray. Таким образом, матрица L представляет бинарное двумерное изображение.

Для дальнейших расчетов определим размеры этого изображения

 [N,M]=size(L);

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

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

Кроме того, в функции bwlabel указывается еще один параметр – значение связности.

Далее приступаем к вычислению признаков объектов, которые отмечены в матрице номеров объектов L. Рассмотрим этот вопрос более подробно. Значения признаков возвращаются в массиве структур feats. Как было отмечено ранее, при распознавании объектов могут использоваться любые наборы признаков.

В рамках этого примера применим наиболее наглядный статистический подход к классификации объектов на основе морфометрических признаков. К основным морфометрическим признакам относятся коэффициенты формы:

  1. ‘solidity’ – коэффициент выпуклости: равен отношению площади к выпуклой площади объекта. Представляется числом в диапазоне (0,1].
  2. ‘extent’ – коэффициент заполнения: равен отношению площади объекта к площади ограничивающего прямоугольника. Представляется числом в диапазоне (0,1].
  3. ‘eccentricity’ – эксцентриситет эллипса с главными моментами инерции, равными главным моментам инерции объекта. Представляется числом в диапазоне (0,1].

Поскольку в данном примере используется тестовое изображение объектов простой формы, то из перечисленных признаков в программной реализации будем использовать только коэффициент заполнения ‘extent’. Как было сказана ранее, параметр ‘extent’ определяется отношением площади объекта к площади ограничивающего прямоугольника. Для круга этот параметр будет равен , а для квадрата – 1. Но эти данные приведены для случая, когда круг и квадрат имеют идеальную форму. Если форма круга или квадрата искажена, то значения параметра ‘extent’ также могут отличаться от приведенных выше значений. Поэтому коэффициенты формы могут вычисляться с некоторой погрешностью. Таким образом, вводя некоторую погрешность в коэффициент формы, допускаются некоторые ее искажения. Причем значение погрешности пропорционально степени искажения. Однако слишком большое значение погрешности может привести к неправильному распознаванию объектов.

Дополнительно также будем определять центр масс объекта с помощью опции ‘centroid’.

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

Перепишем значения признаков из массива структур feats в отдельные массивы:

Extent=zeros(num);
CentX=zeros(num);
CentY=zeros(num);
for i=1:1:num;
    Extent(i)=feats(i).Extent;
    CentX(i)=feats(i).Centroid(1);
    CentY(i)=feats(i).Centroid(2);
end;

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

Krug=imread('krug.bmp');
Kvadrat=imread('kvadrat.bmp');
d=0.15;				% погрешность коэффициента формы
for i=1:num;
        L(round(CentY(i)):round(CentY(i))+1,round(CentX(i)):round(CentX(i))+1)=0;        
            if (abs(Extent(i)-0.7822)<d)==1;
                  L(round(CentY(i)):round(CentY(i))+24,round(CentX(i)):round(CentX(i))+44)=Krug;                   
            end;
            if ( abs(Extent(i)-1)<d)==1;
                   L(round(CentY(i)):round(CentY(i))+24,round(CentX(i)):round(CentX(i))+44)=Kvadrat;
            end;                
end;

Представим результат распознавания

figure, imshow(L);

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

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


Поиск по сайту:

Система Orphus

Яндекс.Метрика