Алгоритми цифрової фільтрації над 2-мірними сигналами в спеціалізованих програмних пакетах

 

Міністерство освіти і науки України

Полтавський національний технічний університет імені Юрія Кондратюка

Кафедра компютерної інженерії












Розрахунково-графічна робота

з навчальної дисципліни: «Цифрова обробка сигналів та зображень»

На тему: «Алгоритми цифрової фільтрації над 2-мірними сигналами в спеціалізованих програмних пакетах»




Виконав:

студент 302-ТТ групи

Казидуб О.О.





Полтава 2013

Зміст


Завдання на розрахунково-графічну роботу

Вступ

. Геометричні перетворення зображення

2. Аналіз зображення

3. Поліпшення зображення

. Фільтрація зображення

. Сегментація зображення

6. Усунення розмитості зображення за допомогою алгоритму сліпої деконволюції

. Моделювання Blur

. Відновлення розмитого зображення

. Усунення розмитості зображення з допомогою фільтру Вінера

. Імітація (Motion Blur) розмитості рухом

. Відновлення розмитого зображення

Висновок

Список використаної літератури

Додаток


Завдання на розрахунково-графічну роботу


. Ознайомитись з основними можливостями пакету Image Processing Toolbox для дослідження методів перетворення цифрових зображень в середовищі Matlab.

. Отримати у викладача завдання зображення для обробки.

. Завантажити зображення в середовище Matlab.

. Виконати геометричні перетворення зображення.

. Проаналізувати зображення та вивести його гістограму.

.Вивести та записати значення для будь-яких точок позначених на зображенні.

. Поліпшити зображення.

. Виконати фільтрацію зображення.

. Виконати сегментацію зображення.

. Виконати морфологічні операції над зображенням.

. Зашумити зображення шумом Blur.

. Відновити розмите зображення за допомогою команди deconvblind.

. Зашумити зображення функцією motion.

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

. Зробити висновки.


Таблиця 1. Вихідні дані

Назва зображенняКут поворотуКількість точок на зображенніМаска фільтруПараметр сегментаціїМетод виділенняЗашумлення функцією motion, LEN та THETAПараметр NSRPicture49.jpg13530log, hsize=4 sigma=0,850,38log36; 50,01

Вступ


Система MATLAB, розроблена програмістом Молером, як середовище програмування високого рівня для технічних обчислень, з кінця 70-х років широко використовували на великих ЕОМ. На початку 80-х років Дж. Літл з фірми Math Works, Inc. розробив першу версію системи PC MATLAB для комп'ютерів класу IBM PC та Macintosh, з якої і почалася еволюція версій системи для персональних комп'ютерів.

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

Можливості системи MATLAB практично необмежені, а за швидкістю обчислень вона нерідко перевершує своїх конкурентів. Система пристосована для розрахунків у будь-якій галузі науки та техніки і широко використовується при математичному моделюванні фізичних пристроїв та систем. Система MATLAB є однією з найбільш відомих і популярних систем комп'ютерної математики, яка призначена для рішення широкого класу задач, пов'язаних з тим чи іншим розділом теоретичної або прикладної математики. Цьому сприяє не тільки розширений набір матричних та інших операцій і функцій, але й наявність пакета розширення Image Processing Toolbox.Processing Toolbox надає широкий спектр засобів для цифрової обробки та аналізу зображень. Будучи тісно пов'язаним з середовищем розробки додатків MATLAB, пакет Image Processing Toolbox звільняє Вас від виконання тривалих операцій кодування і налагодження алгоритмів, дозволяючи зосередити зусилля на вирішенні основної наукової або практичної задачі. MATLAB і пакет Image Processing максимально пристосований для розвитку, впровадження нових ідей і методів користувача. Для цього є набір сполучених пакетів, спрямованих на вирішення всіляких специфічних завдань і завдань в нетрадиційній постановці.

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

·просторові перетворення зображень;

·морфологічні операції;

·ковзаючу і блокову обробку;

·лінійну фільтрацію різними фільтрами;

·аналіз і поліпшення зображень;

·відновлення зображень;

·видалення розмитостей;

·обробка області інтересу.


1. Геометричні перетворення зображення


До найбільш поширених функцій геометричних перетворень відноситься кодування зображень (imcrop), зміна розмірів (imresize) і поворот зображення (imrotate).

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

Синтаксис:

=imread('c:\images\Picture49.jpg');(P);;

figure,



Рис. 1. Оригінальне та кадрове зображення


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

Синтаксис:

=imread('c:\images\Picture49.jpg');=imresize(P,0.5);(P1);


Рис. 2. Оригінальне та в два рази зменшене зображення


В пакеті Image Processing Toolbox існує функція imporate, яка дозволяє здійснювати поворот зображення на заданий в градусах кут. Значення кута повороту можна задавати як цілими так і десятковими дробами, тобто частини кута (хвилини та секунди).

Синтаксис:


P=imrotate (P, 135, 'bicubic');

figure(P)



Рис. 3. Оригінальне та повернене на 135° зображення


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

2. Аналіз зображення


Для роботи з окремими елементами зображень використовуються такі функції як imhist, impixel, mean2, corr2 та інші.

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

Синтаксис:


P=imread('c:\images\Picture49.jpg');,(P);, (P);



Рис. 4. Оригінальне зображення та його гістограма


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

Синтаксис:

P=imread('c:\images\Picture49.jpg');, (P);

ans =

117 117

253 253

98 98

188 188

89 89

42 42

73 73

66 66

167 167

149 149

94 94

105 105

167 167

127 127

30 30

66 66

109 109

130 130

152 152

113 113

125 125

143 143

116 116

101 101

123 123

135 135

63 63

53 53

96 96

103 103 103



Рис. 5. Зображення із позначеними на ньому крапками інтенсивності


. Поліпшення зображення


Серед вбудованих функцій, які реалізуються найбільш відомими методами поліпшення зображень, є наступні - histeq, imadjust та imfilter (fspecial).

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

Синтаксис:

P=imread('c:\images\Picture49.jpg');,(P);=histeq(P);

figure,(P1);



Рис. 6. Перерозподіл яскравостей


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

Синтаксис:

=imread('c:\images\Picture49.jpg');,(P);=imadjust(P);,(P1);, (P);, (P1);



Рис. 7. Гама-корегування за гістограмою


Також під час вирішення завдань поліпшення зображень використовується функція imfilter в парі з функцією fspecial. Функція fspecial дозволяє задавати різні типи масок фільтру, що підвищує різкість зображення.


. Фільтрація зображення


Пакет Image Processing Toolbox володіє потужним інструментарієм з фільтрації зображень. Серед вбудованих функцій, які вирішують задачі фільтрації зображень, особливу увагу необхідно приділити функціям fspecial, ordfilt2(рангова фільтрація), medfilt2(медіанна фільтрація),є функцією завдання маски зумовленого фільтра. Ця функція дозволяє формувати маски:

Фільтру, аналогічного послідовному застосуванню фільтрів Гауса і Лапласа:

h= fspecial(log, hsize, sigma).

Синтаксис:=imread('c:\images\Picture49.jpg');,(P);=fspecial('log', 4, 0.85);=imfilter(P, h, 'replicate');,(P1);



Рис. 8. Фільтр Лапласа-Гауса


. Сегментація зображення


Серед вбудованих функцій пакету Image Processing Toolbox, які застосовуються при вирішенні завдань сегментації зображень, розглянемо наступні: qtdecomp, edge iroicolor.

Функція qtdecomp виконує сегментацію зображення методом розділення та аналізу однорідності блоків зображення, які не перекриваються.

Синтаксис:

=imread('c:\images\Picture49.jpg');=P(1:256, 1:256);,(P);=qtdecomp(P, .38);=repmat(uint8(0), size(S));dim=[512 256 128 64 32 16 8 4 2 1 0];=length(find(S==dim));(numblocks > 0)=repmat(uint8(1), [dim dim numblocks]);(2:dim, 2:dim, :)=0=qtsetblk(blocks, S, dim, values);(end, 1:end)=1;(1:end, end)=1;(P),,(blocks, [])



Рис. 9. Сегментація зображення


Однією з найбільш часто використовуваних є функція виділення меж edge, яка реалізує такі вбудовані методи - Собела, Прево, Робертса, Лапласа-Гауса, Канні та ін.

Розглянемо реалізацію функції edge з використанням фільтру log.

Синтаксис:

=imread('c:\images\Picture49.jpg');=edge(P,'log');,

imshow(BW);('log');



Рис. 10. Виділення меж


. Усунення розмитості зображення за допомогою алгоритму сліпої деконволюції


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

В загальному випадку метою деконволюції є пошук рішення рівняння згортки, заданого у вигляді:


f*g=h


Де h - записаний сигнал, а f - сигнал, який потрібно відновити, причому відомо. Що перший сигнал отриманий шляхом згортки другого з деяким відомим сигналом - g (наприклад, з імпульсною характеристикою кінцевого імпульсного фільтру). Якщо сигнал g невідомий заздалегідь, його потрібно оцінити. Зазвичай це робиться за допомогою методів статистичного оцінювання.

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

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

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

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

Для наглядного прикладу функціонування даного алгоритму візьмемо зображення і виконаємо такі операції перетворення:

Зчитування;

Моделювання Blur;

Відновлення розмитого зображення (використання PSF різних розмірів);

Аналіз PSF-відтвореного зображення;

Поліпшення відновлення;

Використання додаткових обмежень на відновлення PSF.

7. Моделювання blur


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

Синтаксис:

=imread('c:\images\Picture49.jpg');=fspecial('gaussian',7,10);=imfilter(I,PSF,'symmetric','conv');;(Blurred);('Blurred image');



Рис. 11. Розмите зображення


. Відновлення розмитого зображення


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

В реставрації, J3 і P3, використовується одиничний масив, INITPSF, для початкової PSF, що має такий же розмір як справжня PSF.

Синтаксис:

=imread('c:\images\Picture49.jpg');=fspecial('gaussian',7,10);=imfilter(P,PSF,'symmetric','conv');;(Blurred);('Blurred image');=padarray(PSF,[22],'replicate','both');

[J3 P3]=deconvblind(Blurred,INITPSF);;(J3); ('Dedluring with INITPSF');



Рис. 12. Реставрація по маломірному масиву INITPSF


9. Усунення розмитості зображення з допомогою фільтру Вінера


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

Виконаємо такі операції перетворення:

Завантаження зображення;

Імітація Blur ефекту (розмитості);

Відновлення розмитого зображення.

Завантажимо зображення із подвійною точністю, за допомогою функції im2double:

Функція im2double дозволяє представити всі пікселі матриці зображення у вигляді дійсних чисел подвійної точності. При реалізації цієї функції, на відміну від функції double, здійснюється приведення значень пікселів до необхідного діапазону. Для бінарних, на півтонових і повнокольорних зображень - це діапазон [0, 1], а для па літрових зображень - [1, N], де N - кількість кольорів у палітрі.

Синтаксис:


Р=im2double(imread('c:\images\Picture49.jpg'));,(Р);('Original Image (courtesy of MIT)');



Рис. 13. Оригінальне зображення (помякшений МІТ)


10. Імітація (motion blur) розмитості рухом


Моделювання розмитого зображення, яке може бути отримане від руху камери. Створимо точку розповсюдження функції, PSF, яка буде відповідною лінійному руху в 36пікселів (LEN=36), під кутом 5 градусів (THETA=5). Для імітації розмиття, необхідно виконати згортку фільтра з зображення за допомогою функції: imfilter.

h = fspecial(motion, len, theta)

Синтаксис:

=im2double(imread('c:\images\Picture49.jpg'));(P);=36;=5;=fspecial('motion',LEN,THETA);=imfilter(P,PSF,'conv','circular');(blurred);('Blurred image');



Рис. 14. Розмите зображення


11. Відновлення розмитого зображення


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

У функції J=deconvwnr(I,PSF,NSR) параметр NSR вказує на співвідношення сигнал/шум. Величина NSR є скаляром або масивом, розмірність якого така ж як І. За замовчуванням це значення дорівнює 0.

Найпростіший синтаксис функції deconvwnr записується таким чином:


deconvwnr(А,PSF,NSR),


де А - змінна, під якою збережено розмите зображення, PSF - точки розповсюдження функції, і NSR - величина співвідношення потужності шуму до потужності сигналу. Оскільки дане розмите зображення формується у 2 кроки без створення шуму, тому ми будемо використовувати 0,01 для NSR.

Синтаксис:

=im2double(imread('c:\images\Picture49.jpg'));(P);=36;=5;=fspecial('motion',LEN,THETA);=imfilter(P,PSF,'conv','circular');(blurred);('Blurred image');=deconvwnr(blurred,PSF,0.01);(wnr1);('Restored Image');



Рис. 15. Відновлене зображення

цифровий зображення фільтр деконволюція


Висновок


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

Виконавши розрахунково-графічну роботу були отримані практичні навички роботи обробки зображень в системі Matlab, до яких відносяться геометричні перетворення зображення (кадрування, зменшення, поворот зображення), аналіз зображення (побудова гістограм зображення, нанесення крапок інтенсивності на зображення), поліпшення зображення (перерозподіл яскравостей, корегування зображення), фільтрація та сегментація зображення (з використанням фільтру Лапласа-Гауса), розмитнення зображення з використанням фільтру Гауса і розмитість супроводжена рухом камери, відновлення зображення фільтром Вінера та відновлення по маломірному масиву INITPSF. Відновлення зображення, як показало виконання роботи відбулося краще фільтром Вінера, ніж відновлення зображення при реставрації по маломірному масиву INITPSF. Що ж до відновлення розмитості зображення супроводжене рухом камери, то зображення ідеально не відновилося через те, що співвідношення потужності шуму до потужності сигналу дорівнювало 0,01. Якби цей показник дорівнював 0, то зображення відновилося б ідеально.


Список використаної літератури


1. Бондарев В.Н., Трёстер Г., Чернеча В.С. Цифровая обработка сигналов: методы и средства: Учеб. Пособие для вузов. - Севастополь: СевГТУ, 1999. - 398с.:ил.

. Антонью А. Цифровые фильтры: Анализ и проектирование: Пер с англ. - М.: Радио и связь, 1983.

. Обробка сигналів: Підручник / Бабак В.П., Хандецький В.С., Шрюфер Е. - К.: Либідь, 1996. - 392 с.

. Дьяконов В.П., MATLAB 6.5 SP1/7/7 SP1/ Работа с изображениями и видеопотоками. - М.: СОЛОН-Пресс, 2010. - 400 с.


Додаток


Лістинг програми:

=imread('c:\images\Picture49.jpg'); // Завантаження зображення(P); // Виведення зображення на екран; // Кадрове зображення, // Виведення кадрового зображення в окремому вікні=imread('c:\images\Picture49.jpg'); // Завантаження зображення=imresize(P,0.5); // Вдвічі зменшене зображення(P1); // Виведення вдвічі зменшеного зображення в окремому вікні=imrotate(P,135,'bicubic'); // Поворот зображення на заданий кут, // Виведення поверненого зображення в окремому вікні(P1) // Виведення поверненого зображення на екран=imread('c:\images\Picture49.jpg'); // Завантаження зображення, // Виведення зображення в окремому вікні(P); // Виведення зображення на екран, // Виведення діаграми в окремому вікні(P); // Побудова гістограми зображення=imread('c:\images\Picture49.jpg'); // Завантаження зображення, // Виведення зображення в окремому вікні(P); // Виведення зображення на екран// Визначення інтенсивності пікселів=imread('c:\images\Picture49.jpg'); // Завантаження зображення, // Виведення зображення в окремому вікні(P); // Виведення зображення на екран=histeq(P); // Поліпшення зображення, // Виведення поліпшеного зображення в окремому вікні(P1); // Виведення поліпшеного зображення на екран=imread('c:\images\Picture49.jpg'); // Завантаження зображення, // Виведення зображення в окремому вікні(P); // Виведення зображення на екран=imadjust(P); // Контрастування гістограми, // Виведення гістограми з гамма-корегуванням в окремому вікні(P1); // Виведення гістограми з гамма-корегуванням на екран, // Виведення гістограми зображення в окремому вікні(P); // Побудова гістограми зображення, // Виведення гістограми з гамма-корегуванням в окремому вікні(P1); // Побудова гістограми з гамма-корегуванням=imread('c:\images\Picture49.jpg'); // Завантаження зображення, // Виведення зображення в окремому вікні(P); // Виведення зображення на екран=fspecial('log', 4, 0.85); // Введення маски фільтру=imfilter(P, h, 'replicate'); // Фільтрація зображення, // Виведення відфільтрованого зображення в окремому вікні(P1); // Виведення відфільтрованого зображення на екран=imread('c:\images\Picture49.jpg'); // Завантаження зображення=P(1:256, 1:256); // Зменшення розміру зображення, // Виведення зображення в окремому вікні(P); // Виведення зображення на екран=qtdecomp(P, .38); // Сегментація зображення методом розділення та аналізу однорідності блоків зображення, що не перекриваються=repmat(uint8(0), size(S)); // формування блокуdim=[512 256 128 64 32 16 8 4 2 1 0]; // присвоєння умови (для) numblocks=length(find(S==dim)); // формування нового блоку(numblocks > 0) // умова (якщо)=repmat(uint8(1), [dim dim numblocks]); // присвоєння значень (2:dim, 2:dim, :)=0// присвоєння значень =qtsetblk(blocks, S, dim, values); // створення нового напівтонового зображення// закінчення умови (якщо)// закінчення умови (для)(end, 1:end)=1; // значення блоку(1:end, end)=1; // значення блоку(P), // Виведення зображення на екран, // Виведення зображення в окремому вікні(blocks, []) // Виведення сегментованого зображення на екран=imread('c:\images\Picture49.jpg'); // Завантаження зображення=edge(P,'log'); // Виділення меж зображення за фільтром Лапласа-Гауса, // Виведення зображення з виділенням меж в окремому вікні(BW); // Виведення зображення з виділенням меж на екран('log'); // Виведення назви на зображенні=imread('c:\images\Picture49.jpg'); // Завантаження зображення=fspecial('gaussian',7,10); // Розмиття зображення=imfilter(P,PSF,'symmetric','conv'); // Зашумлення зображення; // Виведення зашумленого зображення в окремому вікні(Blurred); // Виведення зашумленого зображення на екран('Blurred image'); // Виведення назви на зображенні=padarray(PSF,[22],'replicate','both'); // Використання одиничного масиву для реставрації

[J3 P3]=deconvblind(Blurred,INITPSF); // Відновлення зображення з використанням зворотнього алгоритму згортки; // Виведення відновленого зображення в окремому вікні(J3); // Виведення відновленого зображення на екран('Dedluring with INITPSF'); // Виведення назви на зображенні=im2double(imread('c:\images\Picture49.jpg')); // Завантаження зображення з подвійною точністю, // Виведення зображення в окремому вікні(P); // Виведення зображення на екран('Original Image (courtesy of MIT)'); // Виведення назви на зображенні=im2double(imread('c:\images\Picture49.jpg')); // Завантаження зображення з подвійною точністю(P); // Виведення зображення на екран=36; // Точка розповсюдження функції =5; // Кут розповсюдження функції=fspecial('motion',LEN,THETA); // Розмиття зображення=imfilter(P,PSF,'conv','circular'); // Фільтрація зображення(blurred); // Виведення відфільтрованого зображення на екран('Blurred image'); // Виведення назви на зображенні=deconvwnr(blurred,PSF,0.01); // Відновлення зображення зіпсованого згорткою з доповненнямм шуму(wnr1); // Виведення відновленого зображення на екран('Restored Image'); // Виведення назви на зображенні


Міністерство освіти і науки України Полтавський національний технічний університет імені Юрія Кондратюка Кафедра компютерної інженерії

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ