|
![](/i/fill.gif) |
> If we now calculate abs(fft(k)), we get:
>
> kf = {4.0, 3.4, 2.0, 0.6, 0.0, 0.6, 2.0, 3.4}
>
> The key thing to notice here is that this contains a element which is
> zero. This means that the convolution kernel will "kill" certain
> frequencies in the source image.
OK that makes sense.
> As far as I'm aware in practice having a kernel like yours which happens
> to kill certain "unlucky" frequencies isn't really an issue. What can be
> an issue is that your kernel will suppress high frequencies to the point
> that they fall below the accuracy of your camera sensor (or even numerical
> precision).
Yes, this was my expectation of what would happen in a practical situation.
I would imagine a focal-blur kernel would suppress the high frequencies,
such that the information was either impossible to recover (due to noise
levels) or what was recoverable would be heavily aliased due to the limited
precision.
> This is why undoing a depth of field blur won't always be possible (even
> if everything is at the same depth),
This was my initial thought in response to Andrew's original statement that
you could get back the original signal because it was a convolution.
> Fortunately in the case of blur from camera shake the kernel is normally a
> bit more kind and doesn't destroy high frequencies quite so much. What is
> a much bigger issue is that you don't know what the blur kernel was, and
> getting it wrong can induce artifacts into the image.
Yes, often you can even see a bright light source in the resultant image and
how it has moved (maybe a zig-zag pattern due to camera shake) - you could
probably use this as a basis for the kernel, maybe optimising the kernel
until the resultant image had the light source as small as possible.
> Did this answer your questions?
Yes thanks!
Post a reply to this message
|
![](/i/fill.gif) |