Міністерство освіти і науки України Дніпровський національний університет імені Олеся Гончара Факультет фізики, електроніки та комп’ютерних систем Кафедра КНІТ Звіт до лабораторної роботи №3 з навчальної дисципліни «Методи обробки зображень та комп’ютерний зір» «Методи відновлення зображень» Виконав: студент групи КС-18-2 Яцик В.Б. перевірив: доц. Пляка С.М. Дніпро 2021 Мета. Вивчення лінійних методів відновлення зображень. Хід роботи Завдання 1. Відновлення розмитих зображень. 1)Беремо “розмите” цифрове зображення(файл). 2)Розробка коду програми із застосуванням інверсного, псевдоінверсного та параметричного фільтрів для відновлення розмитого зображення. Приклад коду в MATLAB: %Lab3 ---> Image Restoration by Inverse and PseudoInverse Filtrations clear all close all %------------------------------------------%read bad digital image from file image_bmp=imread(strcat('e:\','lab3_11bad_fixed.bmp')); %convert bad digital image from uint8 type to double type for the next processing g=double(image_bmp); %------------------------------------------%Adding noise (if necessary, write the next operator such as: if 1==1,) if 1==0, %do noise nois_im=imnoise(uint8(g),'sault&pepper',0.03); %show noise image figure(1);imshow(nois_im); %convert image to double type for processing g=double(nois_im); %processing by simple median filter g=medfilt2(g,[1 3]);%only by row g=medfilt2(g,[3 1]);%only by column % g=(g1+g2)./2;%average end; %------------------------------------------%show bad (degradated) image for processing figure(10);imshow(g,[0 255]); %------------------------------------------%evaluation of Point Spread Function (PSF) by image's point if 1==1, for x=1:128, for y=1:128, h(x,y)=0; if (x<25)&(y<25) h(x,y)=g(x,y); end end; end; %------------------------------------------%show PSF figure(20),mesh(h); %show spectra PSF HF=fftshift(abs(fft2(h))); HF=HF./max(max(HF)); figure(21),mesh(HF); end; %------------------------------------------%Restoration by Inverse Filtration %evaluate spectra of degradated image and shift it GF=fftshift(fft2(g)); %do inverse filtration FF_inv=GF./HF; %show spectra after inverse filtration figure(30),mesh(abs(FF_inv)); f_inv=real(ifft2(ifftshift(FF_inv))); %show image after inverse filtration figure(31);imshow(f_inv,[0 255]); %------------------------------------------%Restoration by PseudoInverse Filtration % alpha2=0.1;%you can try to use this value ... alpha2=1e-4;%you can try to use this value ... % but you must find the best (optimal) value !!! %evaluate spectra of degradated image and shift it GF=fftshift(fft2(g)); %do PseudoInverse filtration HF2=abs(HF'.*HF); HFW=HF'./(HF2+alpha2); %<---- PseudoInverse Filter figure(40);mesh(abs(HFW)); FF_pseudoinv=GF.*HFW; %show spectra after PseudoInverse filtration figure(41),mesh(abs(FF_pseudoinv)); f_pseudoinv=abs(real(ifft2(ifftshift(FF_pseudoinv)))); %show image after PseudoInverse filtration figure(42);imshow(f_pseudoinv,[0 258]); figure(43);imshow(f_pseudoinv,[0 max(max(f_pseudoinv))]); %convert image to uint8 type for saving amp=max(max(f_pseudoinv)); image_save=uint8(f_pseudoinv/amp*255); figure(50);imshow(image_save); 3) Використовуючи різні значення для значення alpha2 відновлюємо розмите зображення, результати зберігаємо до таблиці 1. Рисунок 1 – Варіант розмитого зображення Рисунок 2 – Зображено приклад виконання 1 завдання щодо відновлення зображення зі значенням alpha = 0.01 Рисунок 3 – Зображено приклад відновленого зображення зі значенням alpha = 0.0001 Завдання 2. Відновлення зображень, розмитих за рахунок відносного руху камери й об'єкта зйомки. 1)Беремо “розмите” цифрове зображення за рахунок руху камери або об’єкту(файл). 2)Приклад коду програми із фільтром для відновлення розмитого зображення: %Lab3_2 ---> Image restoration from smooth image %лабораторная работа 3 задание 2 %восстановление изображения, искаженного относительным движением объекта и камеры съемки % close all; clear all ;colormap(gray); from= 'lab3_2_11bad.bmp';%имя файла с искаженным полутоновым изображением high_s = 255; %Input Image from file image_bmp=imread(strcat(from));%чтение искаженного изображения из файла %convert image to double type for convenience of processing ... f=double(image_bmp); %show true image figure(1);imshow(f,[0 high_s]); %do image spectra and shift it to center for next processing (degradation) SF=fftshift(fft2(f)); %show true image spectra %figure(2),mesh(abs(SF)); %строим функцию рассеяния точки %Building of 2-D Impulse Response (Point Spread Function) %for the next degradation %betta_x=0.100;%параметр сдвига <--- необходимо подобрать его значение betta_y=0.125;%параметр сдвига <--- необходимо подобрать его значение for x=1:100, for y=1:300, % x1=(x-51)*betta_x; y1=(y-151)*betta_y; if (y1==0) HF(x,y)=1; else HF(x,y)=sin(y1)/y1; end; end; end; %show spectra PSF %figure(3),mesh(HF); %show PSF with shift to center h=real(ifft2(ifftshift(HF))); %figure(4),mesh(fftshift(h)); %строим псевдоинверсный фильтр alpha2=0.0001;%параметр псевдоинверсной фильтрации <--- необходимо подобрать его значение HF2=(abs(HF)).^2; HFW=((HF').')./(HF2+alpha2); %<---- PseudoInverse Filter %применяем псевдоинверсный фильтр RSF=SF.*HFW; %строим решение rsf=abs(ifft2(ifftshift(RSF))); %отображаем решение "как есть" figure(9),imshow(rsf,[0 high_s]); %отображаем решение с масштабированием на его максимальное значение max_value=max(max(rsf)); %figure(10),imshow(rsf/max_value*255,[0 255]); %------------------------------------------------------- 3) Використовуючи різні значення для значення alpha2 та betta_y відновлюємо розмите зображення, результати зберігаємо до таблиці 1. Рисунок 4 – Варіант розмитого зображення Рисунок 5 – Варіант відновленого зображення зі значеннями alpha2 = 0.0001 та betta_y = 0.176 Таблиця 1 Результуюча таблиця Фільтр Значення параметра 0 Псевдоінверсний фільтр Погано Суб'єктивна якість Погано відновлення Погано напівтонового зображення Площа області тексту на бінарному зображенні (кількість білих пікселів) поріг=128 поріг=254 поріг=384 Параметричний фільтр (3. 10) Q( x , y )=... Суб'єктивна якість відновлення напівтонового зображення Площа області тексту на бінарному зображенні (кількість білих пікселів) поріг=128 поріг=192 поріг=256 1.e-8 1.e-7 1.e-6 1.e-5 1.e-4 1.e-3 1.e-2 0.1 Погано Погано Погано Погано Погано задовільно задовільно Погано Погано Погано Погано задовільно добре задовільно Погано Погано Погано Погано Погано задовільно добре задовільно Погано Погано 2982 1747 1668 949 967 1164 1502 2313 2711 2975 1732 1652 946 956 1156 1491 2306 2708 2980 1744 1664 947 966 1162 1497 2309 2709 0.176 0.176 0.176 0.176 0.176 0.176 0.176 0.176 0.176 Погано Погано Погано Погано Погано Погано Погано Погано Погано Погано Погано Погано Задовільно Задові льно Задовільно Погано Погано Задовільно Погано Погано Погано Погано Погано Погано Добре Добре Добре 30000 19882 22525 27104 27944 28069 28694 29898 30000 29900 9570 11368 21502 25852 25938 26264 28448 29709 27530 2621 2564 6606 17559 18124 20886 24937 26215 Висновок: Під час виконання лабораторної роботи було вивчено та застосовано лінійні методи відновлення “розмитих” зображень.