Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб №2

.pdf
Скачиваний:
31
Добавлен:
23.02.2016
Размер:
578.47 Кб
Скачать

Лабораторна робота №2 Фільтрація й придушення шумів

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

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

1. Зашумлення зображення

Для зашумлення зображень використовується команда imnoise, що має наступний синтаксис:

J = imnoise(I,type)

J = imnoise(I,type,parameters)

де строкова змінна type може приймати одне зі значень:

'gaussian' - для гаусівського білого шуму;

'localvar' - для гаусівського білого шуму з нульовим

математичним очікуванням і локальною потужністю, що залежить від яскравості поточної ділянки зображення;

'poisson' – пуасонівський шум;

'salt & pepper' – для шуму у вигляді чорних і білих пікселів (шум

називається - «сіль і перець»);

Крім цього J = imnoise(I,type,parameters) – додатково задаються параметри відповідного типу шуму.

Наприклад:

J = imnoise(I,'gaussian',m,v) – додавання до зображення I

гаусівського білого шуму із середнім m і дисперсією v. За замовчуванням

m=0, v=0.01.

J = imnoise(I,'poisson') – генерує пуасонівський шум з даних, замість того, щоб додавати до даних штучний шум.

J = imnoise(I,'salt & pepper',d), де параметр d - щільність

шуму. У результаті генерується приблизно d*prod(size(I)) пікселів шуму. За замовчуванням d=0.05.

Зображення I може належати до класу uint8 або uint16. Результуюче зображення J належить до того ж класу, що й I, та має той самий розмір.

Приклад 1:

clear; close all;

I = imread('eight.tif');

J = imnoise(I,'salt & pepper',0.02); imshow(I)

title('Вихідне зображення');

figure, imshow(J) title('Зашумлене зображення');

Результат операції додавання шуму типу 'salt & pepper' до зображення

– його “зашумлення” показаний нижче:

Приклад 2:

I = imread('eight.tif'); J = imnoise(I,'gaussian'); imshow(I)

title('Вихідне зображення'); figure, imshow(J) title('Зашумлене зображення');

У цьому прикладі в якості шуму використаний нормальний (гаусівський) білий шум

2. Методи фільтрації зображень.

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

так і автоматичну обробку в ЕОМ.

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

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

Що може слугувати основою для розрізнення сигналів і перешкод на зображенні? Зображення являє собою двовимірну функцію просторових координат, яка зазвичай змінюється за цими координатами повільніше (іноді значно повільніше), ніж перешкода. Це дозволяє при оцінці корисного сигналу в кожній точці кадру прийняти до уваги подібність множини сусідніх точок корисного зображення, тобто скористатися певною подібністю сигналу в цих точках.

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

Таким чином, ідеологія фільтрації ґрунтується на раціональному використанні даних як точки, яка фільтрується, так і її околиці.

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

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

Лінійна фільтрація

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

Нехай (x1, x2, x3, x4, … xi xn-1, xn) – дискретна послідовність на вході лінійного фільтра, (y1, y2, y3, y4, … yi, … yn-1, yn) – послідовність на виході фільтра, і (h0, h1, …. , hm) – імпульсна перехідна характеристика фільтра.

Тоді сигнал на виході фільтра yi при подачі на його вхід сигналу xi визначається в такий спосіб:

m

 

yi xi k hk

(1)

k 0

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

Якщо розкрити суму в цьому виразі, одержимо:

yi = xi h0 + xi-1 h1 + xi-2 h2 + xi-3 h3 + …

(2)

Цей вираз можна пояснити так. Сигнал на виході фільтра в i-ий момент є сигналом на його вході в цей самий момент, помножений на h0, плюс сигнал на вході в попередній момент часу i-1, помножений на h1 плюс сигнал на вході в момент часу i-2, помножений на h2 і так далі. Іншими словами, поточне значення сигналу на виході фільтра є сумою вхідних значень із ваговими коефіцієнтами, що залежать від виду імпульсної характеристики фільтра. Можна дати ще одну інтерпретацію роботи фільтра – лінійний фільтр на своєму виході усереднює значення вхідного сигналу з ваговими коефіцієнтами, обумовленими виглядом виду імпульсної характеристики цього фільтра.

Аналогічно виконується фільтрація двовимірних дискретних сигналів – зображень. Відмінність полягає в тому, що вхідний сигнал фільтра, вихідний сигнал фільтра й імпульсна характеристика є двовимірними функціями xij, yij і hkl відповідно, і дискретна згортка також має двовимірний характер

yij xi k , j l hkl

(3)

k l

 

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

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

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

Процедура лінійної фільтрації зображення в MATLAB виконується з використанням команди

imfilter(I,h);

де параметр h визначає вигляд вікна фільтра.

Наприклад, якщо фільтр має прямокутне вікно розміром 3х3 точки з однаковими значеннями hkl у межах вікна, то

h = ones(3,3) / 9;

Фільтрація зображення може переслідувати різні цілі.

Наприклад, якщо зображення зашумлене білим шумом (а білий шум має широкий спектр), то для зменшення ступеня зашумленості зображення можна піддати низькочастотній фільтрації.

Нижче наведено три різновиди вікон для низькочастотної фільтрації, що найбільш часто використовуються на практиці фільтрів – шумоподавляючі маски:

 

 

 

1

1

1

 

 

 

 

1

1

1

 

 

 

 

 

1

2

1

 

 

 

 

1

 

 

 

 

 

1

 

 

 

 

 

1

 

 

 

 

H

 

 

 

 

H

 

 

 

 

H

 

 

 

 

 

 

(4)

 

 

1

1

1

 

 

 

1

2

1

 

 

 

 

2

4

2

 

 

 

 

 

 

 

 

9

 

 

 

 

 

10

 

 

 

 

 

16

 

2

 

 

 

 

1 1

1

 

 

1 1

1

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

0

1

0

1

1

1

1

2

1

 

H 1

5

1

H 1

9

1

H 2

5

2

(5)

 

0

1

0

 

 

1

 

 

1

2

1

 

 

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Визначити довільну маску фільтра можна в такий спосіб:

>> h = [1, 2, 3; 3, 4, 5; 6, 7, 8]

Нижче наведений приклад низькочастотної фільтрації зашумленного зображення “віконним” фільтром із прямокутним вікном розміром 3х3 елемента.

Приклад:

clear; close all;

I = imread('eight.tif'); J = imnoise(I,'gaussian'); figure, imshow(J)

title('Зашумлене зображення');

h = ones(3,3) / 9; J2 = imfilter(J,h);

figure, imshow(J2), title('Зображення на виході фільтра')

Адаптивна вінерівська фільтрація

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

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

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

Прикладом такої фільтрації є адаптивна вінерівська фільтрація. Фільтрація в MATLAB виконується з використанням наступних команд:

K_gaus = wiener2(J_g,[m n],noise) [K_gaus,noise] = wiener2(J_g,[m n])

Команда

[K_gaus,noise]

=

wiener2(J_g,[m

n])

дозволяє

розрахувати потужність шуму в околиці матриці mхn пікселів.

 

 

Команда

K_gaus = wiener2(J_g,[m n],noise) реалізує

власне

вінерівську фільтрацію.

 

 

 

 

Приклад:

I = imread('eight.tif');

J_g = imnoise(I,'gaussian',0,0.005); K_gaus = wiener2(J_g,[5 5]); figure, imshow(J_g)

title('Зашумлене зображення (гаус.перешкода)'); figure, imshow(K_gaus)

title('Фільтроване зображення (гаус.перешкода)');

Медіанна фільтрація.

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

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

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

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

вибірки (у даному випадку - це x4).

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

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

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

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

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

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

Процедура медіанної фільтрації в Image Processing Toolbox середовища MATLAB виконується з використанням команди

B = medfilt2(A,[m n]),

або B = medfilt2(A).

 

Найпростіша

команда B = medfilt2(A)

означає

застосування

до

зображення двовимірного медіанного фільтра розміром 3х3.

 

 

Команда B

=

medfilt2(A,[m

n])

означає

застосування

до

зображення двовимірного медіанного фільтра довільного розміру mхn.

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

Приклад:

I = imread('eight.tif');

J = imnoise(I,'salt & pepper',0.02); imshow(I)

title('Вихідне зображення');

figure, imshow(J) title('Зашумлене зображення'); K_med = medfilt2(J);

figure, imshow(K_med) title('Фільтроване зображення');

Видно, що медіанний фільтр дуже ефективно придушує імпульсні перешкоди з явно негаусівським розподілом.

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

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

Завдання на самостійну роботу.

1.Завантажити з бібліотеки MATLAB кілька тестових зображень.

2.Відобразити вихідні зображення на екрані ПК.

3.Здійснити процедуру зашумлення зображення нормальним білим шумом і імпульсною перешкодою з різною щільністю.

4.Відобразити зашумлені зображення.

5.Виконати фільтрацію вихідних зображень лінійними фільтрами з

використанням віконних фільтрів низьких і високих частот, і процедури

imfilter(I,h);

6.Відобразити зображення після фільтрації. Пояснити отриманий результат (зміна характеру зображення в результаті фільтрації).

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

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

9.Здійснити фільтрацію зашумлених зображень нелінійним медіанним фільтром. Відобразити отриманий результат. Пояснити дію медіанного фільтра на гаусівську й імпульсну перешкоду на зображенні.

10.Відповісти на наступні запитання:

-поясніть процедуру лінійної фільтрації зображення віконним фільтром.

-чому відрізняються “вікна фільтрів” для низькочастотної і високочастотної фільтрації?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]