Outline
- Sources of blur
- Deconvolution
- Blind deconvolution
Why are our images blurry?
Lens imperfections
- aberration
- chromatic aberration
- diffraction 衍射
- Camera shake
- Scene motion
- Depth defocus
Point spread function (PSF): The blur kernel of a lens
x ∗ c = b ⇒ F ( x ) ⋅ F ( c ) = F ( b ) ⇒ F ( x est ) = F ( b ) / F ( c ) ⇒ x est = F − 1 ( F ( b ) / F ( c ) ) \begin{aligned} & x * c = b \\ \Rightarrow & F(x) \cdot F(c) = F(b) \\ \Rightarrow & F(x_{\text{est}}) = F(b) / F(c) \\ \Rightarrow & x_{\text{est}} = F^{-1}(F(b)/F(c)) \\ \end{aligned} ⇒⇒⇒x∗c=bF(x)⋅F(c)=F(b)F(xest)=F(b)/F(c)xest=F−1(F(b)/F(c))
Problem with this approach:
Deconvolution
Wiener Deconvolution
x est = F − 1 ( ∣ F ( c ) ∣ 2 ∣ F ( c ) + 1 / SNR ( ω ) ∣ ⋅ F ( b ) F ( c ) ) x_\text{est} = F^{-1}\left( \frac{|F(c)|^2}{|F(c)+1 / \text{SNR}(\omega)|} \cdot \frac{F(b)}{F(c)} \right) xest=F−1(∣F(c)+1/SNR(ω)∣∣F(c)∣2⋅F(c)F(b))
recall that SNR ( w ) = signal variance at ω noise variance at ω \text{SNR}(w) = \dfrac{\text{signal variance at }\omega}{\text{noise variance at }\omega} SNR(w)=noise variance at ωsignal variance at ω
intuitively:
- when SNR is high (low noise), just devide by kernel
- shen SNR is low (high noise), just set to zero
ADMM Deconvoution
skipped
Blind deconvolution
There are multiple possible solutions, how do we detect which one is good?Use prior information!
Can we solve all of these problems using (blind) deconvolution?
- We can deal with (some) lens imperfections and camera shake, because their blur is shift invariant.
- We cannot deal with scene motion and depth defocus, because their blur is not shift invariant.
- See coded photography lecture.
reference:
- CMU 15-463: lecture 14