- •Міністерство освіти і науки україни
- •Лабораторна робота №1
- •Теоретична частина
- •Imread Зчитування зображення із файлу
- •Iptsetpref Установка глобальних змінних ipt
- •Imshow Висновок зображення на екран
- •Im2bw Бінаризація відсіканням по порогу яскравості
- •Imhist Побудова гістограми
- •Imadjust Контрастування з гамма - корекцією
- •Лабораторна робота №2
- •Лабораторна робота № 3
- •Теоретична частина
- •Imnoise Додавання шуму
- •Лабораторна робота № 4
- •Теоретичне введення
- •Im2bw Бінаризація відсіченням по порогу яскравості
- •Лабораторна робота № 5
- •Теоретичне введення
- •Imfeature Обчислення ознак об'єктів
- •Перелік літератури
Лабораторна робота № 4
Тема: Морфологічні операції над бінарним зображенням
Мета: Ознайомитись з поняттям бінарного зображення, та придбати навики роботи з ним.
Теоретичне введення
Im2bw Бінаризація відсіченням по порогу яскравості
Синтаксис:
BW = im2bw (S, threshold)
BW = im2bw (X, map, threshold)
Опис:
Група функцій im2bw створює бінарне зображення, використовуючи відсікання за порогом яскравості. Для цієї мети повноколірні і палітрові зображення конвертуються в напівтонові. Пікселі результуючого бінарного зображення BW приймають значення 0 (чорний колір), якщо яскравість відповідних пікселів вихідного зображення менше порога threshold, і значення 1 (білий колір), якщо яскравість відповідних пікселів вихідного зображення більше або дорівнює threshold. Поріг threshold повинен задаватися в діапазоні [0,1]. Часто дану операцію називають бінаризацією за порогом.
Функція BW = im2bw (S. threshold) використовується для перетворення напівтонового або повнокольорового зображення S в бінарне BW.
Функція BW = im2bw (X. map, threshold) використовується для перетворення палітрових зображень X з палітрою mар в бінарне BW.
Початкове зображення може мати формат представлення даних double або uint8. Результуюче зображення має формат uint8.
Приклад:
Розглянемо приклад виділення на зображенні чорних круглих об'єктів напівтонового зображення з рис. 2.11, а. Якщо встановити поріг рівним 0.1, то утворюється бінарне зображення BW, показане па рис. 1.11, б. Далі на цьому зображенні можна, наприклад, підрахувати кількість об'єктів інтересу за допомогою функції bwlabel ( ~ BW )
% ехаmp10.m
% Приклад демонструє бінаризацію напівтонового зображення
% за порогом яскравості.
% Читання зображення і виведення його на екран.
I = imread ( ' rs.tif ' );
imshow ( I );
% бінаризація за порогом 0.1
% і виведення отриманого бінарного зображення на екран.
BW = im2bw ( I, 0.1 );
figure, imshow ( BW );
BWMOKPH Морфологічні операції над бінарним зображенням
Синтаксис:
BWD = bwmorph ( BWS, operation )
BWD = bwmorph ( BWS, operation, n )
Опис:
Функція BWD = bwmorph ( BWs, operation ) створює бінарне зображення BWD, піддаючи обробці морфологічним фільтром вихідне бінарне зображення BWS. Тип використаного морфологічного фільтра визначається параметром operation. Морфологічні операції ( їх також називають морфологічними фільтрами) представляють собою нелінійний спосіб обробки зображень. Їх застосовують з метою зміни форми об'єктів. Розглядаючи морфологічні операції, будемо називати зв'язні області, значення пікселів яких дорівнюють одиниці, об'єктами, а області зображення, значення пікселів яких дорівнюють нулю, фоном.
Параметр operation може приймати одне з наступних значень:
'erode' |
Ерозія об'єкта. Приводить до заміни значень граничних пікселів об'єкта на 0. Одноразове застосування ерозії приводить до видалення шару границі товщиною в 1 піксель (рис. 2.33, б) |
'dilate' |
Нарощення об'єкта. Приводить до заміни значень пікселів фону, що межують з об'єктом, на 1. Одноразове застосування нарощення призводить до додавання до об'єкта шару завтовшки в 1 піксель (рис. 2.33, в) |
'open' |
Відкриття. Являє собою послідовне застосування ерозії і нарощення. Приводить до з'єднання областей фону, раніше роз'єднаних вузькими ділянками пікселів об'єктів (рис. 2.33, г) |
'close' |
Закриття. Являє собою послідовне застосування нарощення та ерозії. Приводить до видалення невеликих за площею фрагментів фону всередині об'єктів, наприклад "дірок" (замкнутих областей фону всередині об'єкта) (рис. 2.33, д) |
'tophat' |
Перетворення типу "верх капелюха". Відповідає вирахуванню з вихідного зображення результату його відкриття (рис. 2.33, е) |
'bothat' |
Перетворення типу "низ капелюха". Відповідає вирахуванню вихідного зображення з результату його закриття (рис. 2.33, ж) |
'clean' |
Видалення ізольованих пікселів об'єктів. Пікселі рівні 1, всі 8 сусідів яких рівні 0, замінюються на 0 |
'fill' |
Заповнення ізольованих пікселів фону. Піксели, рівні 0, всі 8 сусідів яких рівні 1, замінюються на 1 |
'diag' |
Знищення 8- зв'язності фону. Здійснюється додаванням необхідної кількості одиниць у фрагменти об'єктів, пов'язаних тільки по діагоналі. Наприклад, фрагмент зображення замінюється на |
'bridge' |
З'єднання пікселів об'єкта, роз'єднаних фрагментом фону товщиною в 1 піксель. Наприклад, фрагмент зображення замінюється на |
'hbreak' |
Видалення центрального пікселя в конфігураціях схожих на букву « Н »: замінюється відповідно на |
'remove' |
Видалення внутрішніх пікселів об'єктів. Для цього в 0 встановлюються пікселі об'єкта, у яких 4 сусідніх по горизонталі й вертикалі пікселя були рівні 1, тобто теж були пікселями об'єкта. У результаті застосування цього морфологічного фільтру не скинутими залишаться тільки пікселі межі об'єкта ( рис. 2.34, б ) |
'majority' |
Ерозія і нарощення за перевагою в околиці пікселів фону або об'єкта. Здійснюється такий спосіб: якщо в околиці пікселя розміру 3x3 знаходиться 5 або більше пікселів об'єкта, то аналізований піксель встановлюється в 1, в іншому випадку - в 0 |
'skel'
|
Побудова кістяка ( скелета ) об'єкта. Операція виконує ерозію об'єкта з урахуванням низки умов для збереження 8 - зв'язності кістяка. У результаті послідовного застосування даної операції можна побудувати кістяк, що представляє собою зв'язкову лінію товщиною в 1 піксель, що проходить посередині об'єкта ( рис. 2.34, в ) |
'shrink'
|
Стиснення об'єкта. Операція виконує ерозію об'єкта з урахуванням низки умов для збереження 8 - зв'язності замкнутих ділянок кістяка. У результаті послідовного застосування даної операції об'єкти, що не містять дір, перетворюються в точку, а об'єкти з дірками " стискаються " у 8 - зв'язкові замкнуті ділянки кістяка, що проходять посередині між кордонами дір і зовнішнім кордоном об'єкта ( рис. 2.34, г ) |
'thin' |
Утоньшення об'єкта. Операція виконує ерозію об'єкта з урахуванням низки умов для збереження 8 - зв'язності ділянок кістяка. У результаті послідовного застосування даної операції об'єкти, що не містять дір, перетворюються в одну або кілька зв'язкових ліній з мінімальною кількістю розгалужень кістяка в порівнянні з кістяком, одержаного за допомогою оператора ' skel ', а об'єкти з дірками стискаються в 8 - зв'язкові замкнуті ділянки кістяка, проходять посередині між кордонами дір і зовнішньою межею об'єкта ( рис. 2.34, д ) |
'thicken' |
Потовщення об'єкта. Операція виконує нарощення об'єкта з урахуванням низки умов для збереження 4 - зв'язності ділянок тла. Дана операція може розглядатися як побудова кістяка фону і є за змістом зворотньою операції ' thin ' Результат даної операції буде незначно відрізнятися від результатів застосування оператора ' thin ' до конвертованого зображення ( рис. 2.34, е ) |
'spur' |
Видалення у відгалуженні об'єкта товщиною в 1 піксель, тобто видалення пікселів, у яких тільки один з сусідніх пікселів встановлений в 1, а інші - в 0. Наприклад, фрагмент зображення замінюється на У результаті послідовного застосування даної операції до зображення кістяка об'єкта на зображенні залишаються тільки замкнуті ділянки кістяка |
На рис. 2.33, 6- ж показані результати застосування однієї ітерації ерозії, нарощення, відкриття, закриття, операцій ' tophat ' і ' bolhat 'відповідно до бінарного об'єкта, зображеного на рис. 2.33, а. Необхідно відзначити, що зображення показані в інверсних кольорах щодо того, як вони відтворюються в MATLAB.
Функція BWd = bwmorph ( BWs. operation. n ) створює бінарне зображення BWD, піддаючи BWS морфологічної фільтрації n разів. Параметр n може дорівнювати Inf, в цьому випадку обробка продовжується до тих пір, поки результати двох послідовних ітерацій не співпадуть.
Параметр n = Inf має сенс використовувати для операцій побудови кістяка: ' shrink ', ' skel ', ' thicken ', ' thin ', видалення відгалужень ' spur '. Зауважимо, що в результаті застосування даних операцій для побудови кістяка для зображення не змінюється число Ейлера.
На рис. 2.34,6 - е показані результати застосування операцій ' shrink ', ' skel ', ' thicken ', ' thin ', ' remove ' при n = Inf до бінарного зображення, наведеного на рис. 2.34, а. Необхідно відзначити, що зображення показані в інверсних кольорах щодо того, як вони відтворюються в MATLAB.
Результуюче зображення BWD має формат представлення даних uint8.
Алгоритми:
Ерозія і нарощення є базовими операціями морфологічної обробки. Розглянемо алгоритми їх виконання. Для обох операцій задається структурний елемент, який також називають маскою морфологічного фільтра. Ненульові значення в масці визначають, які з сусідніх пікселів слід враховувати при здійсненні операції [ 1, 2, 3 ].
При ерозії бінарного зображення піксель вихідного зображення скидається в 0, якщо хоча б один з пікселів околиці, відповідний ненульовому елементу маски, дорівнює 0. При нарощенні бінарного зображення піксель вихідного зображення встановлюється в 1, якщо хоча б один з пікселів околиці, відповідний ненульовому елементу маски, дорівнює 1.
У функції bwmorph в операціях ерозії і нарощування, а також у похідних від них операціях (відкриття, закриття і т. д.) використовується структурний елемент 3x3 виду
Ці правила застосовуються нерекурсивно до всіх пікселів зображення. Для здійснення ряду морфологічних операцій у функції bwmorph використовується функція applylut з зумовленими таблицями перекодування.
Приклад:
Розглянемо підхід до роз'єднання злиплих об'єктів круглої форми з допомогою морфологічних операцій. Початкове півтонове зображення I читається з файлу ( мал. 235, а ). Пікселі об'єктів мають значення яскравості менше 150, тому для виділення об'єктів можна скористатися бінаризацією за порогу 150: BW1 = I < 150. Однак на бінарному зображенні BW1 об'єкти злипаються ( рис. 2.35, б). Для поділу об'єктів можна використовувати наступний підхід. Спочатку зображення піддають ерозії до тих пір, поки не зникне злипання об'єктів. При цьому об'єкти не повинні в результаті ерозії зовсім зникнути. У даному випадку необхідно 6 ітерацій ерозії. Результат ерозії вставляється на зображення BW2 ( рис. 2.35, в).
Потім для BW2 " товщають " об'єкти (будується кістяк фону ) ( рис. 2.35, г). Результат логічного І зображень BW1 & BW2 дає зображення з пікселями фону в місцях злипання об'єктів ( рис. 2.35, д ). Таким чином об'єкти вдалося розділити. Далі для виділення об'єктів і підрахунку їх числа можна скористатися функцією bwlabel.
% examp32.m
% Приклад поділу злиплих об'єктів за допомогою
% морфологічних операцій.
% Читання вихідного зображення і виведення його на екран.
I = imread ( ' split.bmp ' );
imshow ( I );
% бінаризація за порогом яскравості.
BW1 = I < 150;
figure, imshow ( BW1 );
% Ерозія бінарного зображення.
BW2 = bwmorph ( BW1, ' erode ', 6);
figure, imshow ( BW2 );
% Потовщення об'єктів.
BW2 = bwmorph ( BW2, ' thicken ', Inf );
figure, imshow ( BW2 );
% Логічне І зображень результату потовщення
% і вихідного бінарного.
BW1 = BW1 &BW2.
figure, imshow ( BW1 );
Завдання:
1. Більш чітко виділити великі об'єкти, видалити дрібні дефекти на них і розмитість, а також видалити дрібні об'єкти зберігши форму.
2. Провести бінаризацію об'єкта, прибрати результати « балончика з фарбою ».
3. Провести бінаризацію, залишивши тільки кістки. Склеїти в один об'єкт всі суглоби, залишивши форму ноги. Прибрати все крім кісток.
4. Провести бінаризацію об'єкта, відокремивши клітки одну від одної, прибрати лінію.
5. Провести бінаризацію, видаливши клітини фону і результат роботи « балончика з фарбою », залишивши форму головних клітин.
6. Залишити тільки контури об'єктів. Продемонструвати можливості інших операцій.
Контрольні питання: