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

Збереження та обробка захопленого зображення.



Виберемо в якості вихідного наступний фрагмент зображення (рис. 8.1).

 

Рис. 8.1. Вихідне зображення

 

Після захоплення даного фрагменту, завантажимо його до області змінних середовища Matlab (img_a) та для зручності роботи збережемо у вигляді малюнка у форматі растровому форматі .png (файл za_img.png), який працює за алгоритмом адаптивної компресії. (В більшості випадків рекомендовано користуватись багаторівневими растровими форматами без компресії, такими як .tiff). Збереження зображення у потрібно форматі виконується за допомогою функції imwrite(image,’file_name.png’), з обов’язковим вказуванням графічного формату.

 

Приклад:

img_a=za_img;

frames=size(img_a,4);

for p=1:frames

imwrite(img_a(:,:,:,p),'za_img.png');

end;

 

Бінаризація зображення.Після завантаження зображення до області змінних середовища Matlab, виконуємо його бінаризацію відповідно до межі півтонової палітри (рис. 8.2.a). А також повертаємо значення елементів матриці, для зручності подальшою обробки (рис. 8.2.б).

Рис. 8.2.а Бінаризоване вихідне зображення

 

Приклад:

threshold=graythresh(L);

L=im2bw(L,threshold);

L=~L;

 

Рис. 8.2.б Обернене бінаризоване зображення

 

Зауваження. При бінаризації зображень часто цілісність елементів може бути спотворена із-за нечіткої межі між чорними і білими пікселями. Таке явище залишається навіть при використанні алгоритму розподілення межі півтонової палітри, який виконується за допомогою функції graythresh. Тому, при подальшій обробці бінарних зображень, за допомогою функції bwareaopen, завжди потрібно виконувати перевірку зображення на елементи спотворення і по можливості видаляти їх, вказавши поріг чутливості.

Аналіз елементів зображення. На наступному етапі обробки зображення, за допомогою функції bwlabel, із зображення слід відокремити елементи для розпізнавання та записати їх до багаторівневої структури збереження даних. В загальному випадку, у системі Matlab є можливість реалізації трьох багаторівневих структур даних:

– структурний масив (struct);

– комірковий масив (cell);

– багаторівневі масиви (cat).

Кожна із наведених структур має свої особливості. Головна особливість типу структурного масиву заклечається у збереженні масивів будь-якого формату та розміру, може поєднувати в одній структурі логічні та чисельні масиви. Але обробка даних, що зберігаються у такій структурі потребує великої кількості прямих та зворотних операцій для перетворень типів даних. Комірковий масив володіє фактично тими ж перевагами, що і попередній тип, але масиви, які записуються у комірки повинні бути єдиного формату, хоча можуть мати різний розмір. Багаторівневий масив у відповідності до двох попередніх типів є найпростішим при виконанні операцій над масивами даних та не потребує перетворень типів, але масиви, що зберігаються у багаторівневій структурі повинні мати однаковий розмір. Але слід зауважити, що для швидкої та якісної обробки даних слід використовувати всі три типи багаторівневих структур.

Таким чином, відокремлені елементи вихідного зображення, за допомогою функції imfeature, запишемо у структурний масив морфологічних елементів. У даному структурному масиві будуть зберігатись початкові значення елементів зображення. З цього структурного масиву створимо комірковий масив, з яким і будемо далі працювати. Після чого, відповідно до завдання, задамо еталонний елемент зображення (рис. 8.3).

 

Приклад:

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

L=struct2cell(feats);

Le=cell2mat(L(1))

 

Рис. 8.3. Еталонне зображення

 

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

Щоб вирішити дану задачу існує декілька шляхів. Однин з них – розширення масивів елементів зображень до розмірності найбільшого з елементів.

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

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

 

1. Знаходження рядків максимальної розмірності:

 

Приклад:

for i=1:n

s(:,:,i)=size(cell2mat(L(i)));

s(:,:,n+1)=size(Le);

end;

i=1:n+1;

s1max=max(s(:,1,i));

Структура запису s(a,b,c) дозволяє створити багатомірний масив значень змінної (a – рядок масиву, b – стовпець масиву c – розмірність масиву). За допомогою функції size(Le) визначається розмірність масиву.

 

2. Формування матриці недостачі розмірності рядків:

 

Приклад:

for i=1:n+1

if s(:,1,i)<=s1max

a1(i)=s1max-s(:,1,i);

m1(i)=cell({zeros(a1(i),s(:,2,i))});

end;

end;

 

За допомогою цієї частини коду ми розраховуємо різницю між максимальним і номінальним значеннями кількості рядків масиву. Почергово отримані результати порівняння та обрахунку записуємо до окремого коміркового масиву. Запис відбувається до коміркового масиву тому, що кількість стовпців вихідних масивів є різними.

Наступною дією – є добавлення недостачі рядків до основних масивів зображень.

 

3. Оновлення рядків матриць зображень елементів:

Приклад:

Le=[cell2mat(m1(:,n+1));Le];

for i=1:n

L(:,i,:)=cell({[cell2mat(m1(:,i));cell2mat(L(:,i,:))]});

end;

 

За допомогою цієї частини коду ми почергово вилучаємо елементи коміркового масиву зображень і добавляємо до нього недостаючу кількість рядків. Після чого записуємо цей елемент назад.

Таким чином, ми отримуємо оновлений масив зображень з рівною кількістю рядків.

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

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

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

 

Синтаксис:

k=corr2(A,B);

 

Функція k=corr2(A,B) обчислює коефіцієнт кореляції між двома масивами (матрицями) А та В, які мають однаковий розмір. Алгоритм роботи даної вбудованої функції обчислюється за допомогою наступного співвідношення:

 

 

де Am=mean2(A), Bm=mean2(B).

 

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

 

Приклад:

for i=1:n

L1(:,:,i)=[cell2mat(L(i))];

k(i)=corr2(Le,L1(:,:,i));

end;

 

k =

1.0000 0.0538

 

Значення коефіцієнта кореляції вказує на відповідність зображення еталонному. Якщо коефіцієнт кореляції наближається, або дорівнює 1 – це означає більше наближену або повну відповідність зображення до еталонного зразка. Якщо коефіцієнт кореляції наближається, або фактично дорівнює 0 – це означає невідповідність еталону.

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

 

Завдання

 

Відповідно до свого спискового номера, журналу академгрупи, із таблиці 8.1 вибрати свій варіант завдання.

Для виконання даного практичного завдання, з використанням функцій Image Acquisition Toolbox та Image Processing Toolbox, виконати розпізнавання одного із сукупності заданих друкованих символів (літер латинського алфавіту). Для спрощення виконання завдання, в якості еталонного зображення символу, вибрати перший символ, із заданої у варіанті сукупності.

Зробити відповідні висновки та оформити звіт.

 

Таблиця 8.1

Параметри завдання для практичного виконання

Варіант Варіант Варіант
1-А 2-Д 4-Г
1-Б 3-А 4-Д
1-В 3-Б 5-А
1-Г 3-В 5-Б
1-Д 3-Г 5-В
2-А 3-Д 5-Г
2-Б 4-А 5-Д
2-В 4-Б -  
2-Г 4-В -  

Контрольні запитання

1. Що називають класом образів?

2. Поясність навіщо при розпізнаванню образів виділяють поняття числа класів?

3. Назвіть та охарактеризуйте основні методи розпізнавання образів.

4. Поміркуйте та назвіть переваги та недоліки кореляційного методу розпізнавання образів.

5. Назвіть сфери застосування систем розпізнавання образів.

6. Назвіть та поясніть особливості коміркового масиву.

7. Назвіть та поясніть особливості багатовимірного масиву.

8. Поміркуйте та коротко поясніть інші можливі варіанти рішення поставленої у практичному завданні задачі.

9. Які можливості Image Processing Toolbox використовуються для вирішення задачі даного практичного заняття.

10. Чому для вирішення задачі зведення масивів зображень до одного розміру неможна використовувати метод зменшення масиву до найменшого?


Додатки

 







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