bjunolulz
Mislim da ti fali zero padding i definiranje podrucja za koje je H jednaka nuli kod pseudoinverznog filtra.
To bi otprilike ovako trebalo ici:
def restore( imgd, psf, filter = ‘inverse’):
1) spremi redove, stupce od imgd i psf u zasebne varijable(img.shape funkcija)
2) definiraj velicinu rekonstruirane slike(zbog konvolucije, dimenzije su imgd+psf-1)… do te dimenzije napuni nulama imgd i psf, kako bi cirkularna konvolucija(mnozenje u spektru) bila jednaka linearnoj konvoluciji
3) napravi fft2 od imgd i psf
4) if za inverzni filtar (samo iskoristi formulu), pomnozis spektar slike i inverzni filtar da dobijes spektar rekonstruirane, onda ifft
5) if za pseudo filtar, s tim da je kod pseudofiltra jedina razlika reci za koje je podrucje fja jednaka nuli (npr. H[np.abs(H) < K] = 0,K odaberi proizvoljno), zatim pomnozis spektar slike i pseudo filtar, napravis ifft
7) izrezes samo dio slike koji ti treba (smanjis dimenzije slike za dimenzije imgd + psf - 1, jer smo ih za toliko povećali na pocetku zbog zero paddinga)