Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСИ / АСУ_Меркулова_Обработка изображений_метод_лаб.doc
Скачиваний:
26
Добавлен:
03.03.2016
Размер:
3.07 Mб
Скачать

Лабораторна робота № 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. Залишити тільки контури об'єктів. Продемонструвати можливості інших операцій.

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