Здавалка
Главная | Обратная связь

Аналіз ознак об'єкта.



Після отриманого зображення за допомогою захвату, необхідно виконати бінаризацію, так як захват можна виконати лише у трьох типах колірного простору: YCbCr, grayscale, rgb. Перетворення у бінарне зображення виконуються за допомогою функції im2bw.

 

Синтаксис:

bw=im2bw(i,threshold);

bw=~bw;

figure,imshow(bw);

 

Рис. 6.7. Результат виконання функції бінаризації

 

Група функцій imbw створює бінарне зображення, використовуючи відсікання по межі яскравості. Для цієї мети повноколірні і палітрові зображення конвертуються в напівтонові. Пікселі результуючого бінарного зображення bw приймають значення 0 (чорний колір), у випадку якщо яскравість відповідних пікселів зображення менше межі threshold, і значення 1 (білий колір), якщо яскравість відповідних пікселів зображення більше або дорівнює threshold. Поріг threshold повинен задаватися в діапазоні [0, 1]. Часто дану операцію називають бінаризацією по межі. Для цього використовують функціюgraythresh, яка обчислює значення глобальної межі, що використовується для перетворення яскравостей (інтенсивностей). Значення нормалізованих інтенсивностей знаходиться в діапазоні [0, 1].

 

Синтаксис:

threshold=graythresh(i);

 

Функція graythresh використовує метод Отсу, який вибирає межу шляхом мінімізації різних варіантів чорних і білих пікселів. Багатовимірний масив автоматично перетворюється в двовимірний з використанням функції reshape. Функція graythresh ігнорує всі ненульові уявні частини масиву i.

Після бінаризації, на фоні зображення із-за різних факторів (кута падіння світла, поверхні самого об'єкту, тощо) виникають білі утворення, які можуть заважати при аналізі ознак потрібного об'єкта. Для компенсації цих утворень застосовується функція bw=bwareaopen(bw,р), яка видаляє з бінарного зображення всі зв'язкові компоненти (об'єкти), площа яких менше р пікселів, і поміщає результат обробки у зображення bw. По замовчуванню, зв'язковими є 8 елементів для двох вимірів, 26 – для трьох вимірів і conndef (ndims(bw), 'maximal') – для великих вимірювань.

 

Синтаксис:

bw=bwareaopen(bw,10);

 

На самому ж об'єкті, із-за тих же самих факторів також можуть виникати чорні утворення. Непотрібні утворення необхідно компенсувати та залити тоном об'єкта за допомогою функції se=strel(shape,parameters), яка виконує об'єднання структурних елементів, створюючи структурний елемент se, тип якого описується в параметрі shape. В таблиці 6.3 перераховані всі типи підтримуваних форм структурних елементів. Залежно від параметра форми shape, структурний елемент strel може мати ряд додаткових параметрів. Синтаксис написання функції залежить від форми структурного елементу.

 

Синтаксис:

se=strel('disk',2);

 

Після завершення морфологічних перетворень використовується функція bw2=imclose(bw,se), яка виконує морфологічне закриття бінарного або півтонового зображення bw, повертаючи результат до масиву bw2. Структурний елемент se, на відміну від масиву об'єктів, повинен бути одиничним структурним елементом.

 

Таблиця 6.3

Типи форм структурних елементів, які підтримуються в Matlab

Плоскі структурні елементи
'arbitrary' 'pair'
'diamond' 'periodicline'
'disk' 'rectangle'
'line' 'square'
'octagon'  
Неплоскі структурні елементи
'arbitrary' 'ball'

 

Потім виконується заповнення областей зображення за допомогою функції bw2=imfill(bw,location), яка виконує операцію заливки фоновими пікселями вихідного зображення bw, починаючи з точок, визначених параметром location. Параметр location повинен бути вектором з розмірністю p1, в якому містяться лінійні індекси початкових точок. Параметр location може бути також матрицею Pndims(bw), в якій містяться масиви індексів початкових елементів. Функція bw2=imfill(bw,'holes') заповнює отвори (пусті пікселі) на вихідному бінарному зображенні.

Синтаксис:

bw2=imfill(bw,'holes');

 

Після бінаризації необхідно визначити різницю між різними типами зображень. Для цього спочатку необхідно виконати пошук об'єктів на зображенні і обчислення їхніх ознак, за допомогою функції bwlabel:

Синтаксис:

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

Функція L=bwlabel(bw,n) шукає на бінарному зображенні bw зв'язні області пікселів об'єктів і створює матрицю L, кожен елемент якої дорівнює номеру об'єкта, якому належить відповідний піксель зображення bw. Параметр n вказує критерій зв'язності, використовуваний для знаходження зв'язних областей – об'єктів. Параметр n може приймати значення 4 або 8 (значення за замовчуванням). Функція [L,num]=bwlabel(bw,n) додатково в параметр num повертає кількість об'єктів, знайдених на зображенні bw. Матриця L має формат представлення даних double.

Після визначення кількості об'єктів на зображенні, необхідно сформувати їх окремі зображення із використанням функції визначення ознак об'єкту imfeature.

Функція feats=imfeature(L,measurements,n) обчислює ознаки всіх об'єктів, зазначених у матриці номерів об'єктів L. Елементи матриці L, що мають значення 1, відносяться до першого об'єкту, що мають значення 2 відносяться до другого об'єкта і т.д. Розподілення порядку об'єктів визначається зверху-вниз, зліва-на-право. Якщо елемент в матриці L дорівнює 0, то він відноситься до фону. У випадку коли із безлічі об'єктів необхідно вибрати вручну, саме той, який необхідний досліднику, можна застосувати функцію кадрування зображення imcrop.

Синтаксис:

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

Рис. 6.8. Виділений об'єкт вимірювання

Якщо зображення містить велику кількість об'єктів, необхідно отримати список всіх пікселів потрібного досліднику об'єкта, зо допомогою функції PixelList, вказавши порядковий номер вибраного об'єкта.

 

Синтаксис:

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

Для того, щоб переконатися в тому, що обрані пікселі дійсно належать потрібному об'єкту, їх можна зафарбувати кольором із діапазону півтонової палітри.

 

Рис. 6.9. Перевірка відповідності об'єкта

 

Синтаксис:

[q w]=size(PixelList);for i=1:q; L(PixelList(i,2),PixelList(i,1))=0.5;end;figure, imshow(L);

 

Далі розглянемо набір опцій, які застосовуються при оцінюванні форми або при класифікації об'єктів. Одним з основних ознак у цьому випадку є площа. Оскільки метою нашого завдання є визначення площі поверхні плоского об'єкта, опишемо декілька способів:

1. Використання опції Area призводить до обчислення площі, числове значення якої дорівнює кількості пікселів об'єкта. В параметрі змінної feats вказуємо порядковий номер потрібного об'єкта.

 

Синтаксис:

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

Area =

 

2. У випадку, якщо об'єкт містить елементи виключення, що змінюють значення площі, в такому випадку для обчислення значення повної площі, числове значення якої відповідає загальній кількості пікселів об'єкта і пікселів дірок в об'єкті, що дорівнює також площі зображення FilledImage, використовується опція FilledArea.

Синтаксис:

feats=imfeature(L,'FilledArea',8);FilledArea=feats(2).FilledAreaFilledArea =

 

3. Існує також можливість обчислення опуклої площі. Під опуклою площею мається на увазі площа опуклого багатокутника, в який вписано об'єкт. Цій площі відповідає площі зображення ConvexImage. Для обчислення опуклої площі необхідно затерти (залити) включення, які знаходяться на поверхні об'єкта, та сформувати зображення залитого пікселями об'єкту випуклого багатокутника.

Формування зображення із залитими включеннями на поверхні об'єкта зображення:

Синтаксис:

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

FilledImage=feats(2).FilledImage;

figure, imshow(FilledImage);

 

Рис. 6.10. Залите зображення об’єкта, для визначення повної площі

 

Формування зображення опуклого багатокутника, в який включений об'єкт:

Синтаксис:

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

ConvexImage=feats(2).ConvexImage;

figure, imshow(ConvexImage);

 

Рис. 6.11. Зображення опуклого багатокутника

 

Синтаксис:

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

ConvexArea=feats(1).ConvexArea

ConvexArea = 5958





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.