220 likes | 376 Views
Restoration. With Image Restoration one tries to repair errors or distortions in an image, caused during the image creation process. In general our starting point is a degradation and noise model: g(x,y) = H ( f(x,y) ) + (x,y)
E N D
Restoration • With Image Restoration one tries to repair errors or distortions in an image, caused during the image creation process. • In general our starting point is a degradation and noise model: • g(x,y) = H ( f(x,y) ) + (x,y) • Determined by quality of equipment and image taking conditions: • image restoration is computationally complex • equipment as degradation free as possible • seen technical and financial limitations • medical: low radiation, little time in magnet-tube • lowest image quality to achieve medical goals • web-cams: cheap lens distortions corrected by CPU in cam Theo Schouten
Noise functions Theo Schouten
Only noise See also enhancement, mean and median filters Theo Schouten
Mars, mariner 6 Theo Schouten
Linear degradation When the degradation process is linear: H( k1f1 + k2f2 ) = k1 H( f1) + k2 H( f2 ) we can write (we temporarily leave the noise out of consideration): g(x,y) = H(f(x,y)) = H( f(,) (x- ,y- ) d d ) = f(,) H( (x- ,y- ) ) d d = f(,) h(x, ,y, ) d d h(x, ,y, )is the "impulse response" or "point spread function", the degraded image of an ideal light point. The integral is called the "superposition“ or "Fredholm” integral of the first kind. Theo Schouten
Position invariant, inverse filtering When H is a spatial invariant: Hf(x- ,y- )=g(x- ,y- ) then: h(x, ,y, ) = h(x- ,y- ) and g(x,y) = f(,) h(x- ,y- ) d d a convolution integral, and taking into account the noise: G(u,v) = H(u,v)F(u,v) + N(u,v) Inverse filtering: G(u,v)/H(u,v) = F(u,v) + N(u,v)/H(u,v) Problems: if H(u,v) = 0, or small: noise is blown up pseudo-inverse filter: use only parts of H(u,v) Theo Schouten
Degradation function by experiment Theo Schouten
by modelling H(u,v)= exp( -k(u2+v2)5/6 ) atmosferic turbulence model Theo Schouten
by calculation, linear motion Suppose a movement of the image during shutter opening: g(x,y) = 0T f(x-x0(t),y-y0(t)) dt G(u,v) = [0T f(x-x0(t),y-y0(t)) dt ] e -j2(ux+vy) dxdy = F(u,v) 0T e -j2[uxo(t)+vy0(t)] dt = F(u,v) H(u,v) With linear motion x0(t)=at/T and y0(t)=bt/T : H(u,v) = {T/[ (ua+vb)] } sin[ (ua+vb)] e -j[ua+vb] This has a lot of 0’s : (ua+vb) = n (any integer) pseudo-inverse filter is useless Theo Schouten
Linear motion blur Theo Schouten
Pseudo-inverse filter Theo Schouten
Gaussian movement A 1-D Gaussian kernel for distortions in the horizontal direction. The intensity of each pixel is spread out over the neighboring pixels according to this kernel. Power spectrum Inverse filter Theo Schouten
with noise Uniform noise [0,1] added (rounding floating point to unsigned byte) Movement lines disappear due to noise Inverse filter: nothing Pseudo-inverse filter, only when H(u,v) > T Theo Schouten
Wiener filtering minimum mean square error: e2 = E{ (f-fc)2} Fc(u,v) =[1/H(u,v)] [ |H(u,v|2 / (|H(u,v|2 +S(u,v)/Sf(u,v))] G(u,v) S(u,v) = |N(u,v)|2 power spectrum of noise Approximations of S(u,v)/Sf(u,v): K (constant) |P(u,v)|2 (power spectrum of Laplacian) found by iterative method to minimize e2 (constrained least squares filtering) Theo Schouten
Example Wiener filter Original Noise added Pseudo-inverse Wiener filter Theo Schouten
Linear motion Wiener filter Theo Schouten
Geometric distorsion Lenses often show a typical pincushion or barrel deviation.When the projection function x'=g(x) is known, for each measured pixel it can be determined from which parts of ideal pixels it is buit up. If the inverse function g-1 is known, then for each ideal pixel we can determine from which parts of the distorted pixels it is built up of. Theo Schouten
Corrections • More complex, slower: • bilinear interpolation • subsampling e.g. 5x5 Original Nearest neighbor Bilinear interpolation Theo Schouten
Calibration Calibration, e.g. x’ = a +b x +c y and y’ = r +s x +t y : affine transformations Also higher order terms like d x2 + e y2 + f xy Theo Schouten
Fish eye lens x' = x + x*(K1*r2 + K2*r4 + K3*r6) + P1*(r2 + 2*x2) + 2*P2*x*y y' = y + y*(K1*r2 + K2*r4 + K3*r6) + P2*(r2 + 2*y2) + 2*P1*x*y Theo Schouten