# wieneruv filtr

obr=double(imread("fiat.jpg")); # musim pretypovat, jinak by obr byl int8!!!

sizex=size(obr)(2)
sizey=size(obr)(1)

noise=20*rand(sizey,sizex);
#obr=obr+40*noise;

imshow(obr,[0,255]);
max(max(obr))
min(min(obr))


#odezvova fce
odezva=zeros(sizey,sizex);
odezva(1,1:25)=ones(1,25);
odezva=fftshift(odezva);
#odezvax=(odezvax<=25);
#odezvax=shift(odezvax,sizex/2,2);
#odezva=ones(sizey,1)*odezvax;
imshow(odezva,[]) 



#prenosova fce
prenos=ifftshift(fft2(fftshift(odezva)));
prenos=prenos./max(max(abs(prenos)));
imshow(abs(prenos),[])


#rozmazani
spektrum=ifftshift(fft2(fftshift(obr)));
imshow(abs(spektrum),[0,100000])
rozmazf=prenos.*spektrum;
rozmaz=ifftshift(ifft2(fftshift(rozmazf)))+0.1*noise;
rozmazf=ifftshift(fft2(fftshift(rozmaz)));  #zasumene spektrum
imshow(real(rozmaz),[])


figure(1)

dekonv1=rozmazf./prenos;
obr2=ifftshift(ifft2(fftshift(dekonv1)));
imshow(abs(obr2),[])


figure(2)


dekonv2=rozmazf.*conj(prenos)./(abs(prenos).^2+0.0001);
obr3=ifftshift(ifft2(fftshift(dekonv2)));
imshow(abs(obr3),[])






