Uploaded by Владислав Яцык

Лабораторная робота 3

advertisement
Міністерство освіти і науки України
Дніпровський національний університет імені Олеся Гончара
Факультет фізики, електроніки та комп’ютерних систем
Кафедра КНІТ
Звіт
до лабораторної роботи №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
Висновок: Під час виконання лабораторної роботи було вивчено та застосовано
лінійні методи відновлення “розмитих” зображень.
Download