ex-6: Written about the RL algorithm and generated some plots
This commit is contained in:
parent
7b8c61e3e5
commit
16c2511289
@ -118,7 +118,6 @@
|
|||||||
publisher={Elsevier}
|
publisher={Elsevier}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@article{ridder17,
|
@article{ridder17,
|
||||||
title={Variance reduction},
|
title={Variance reduction},
|
||||||
author={Ridder, AAN and Botev, ZI},
|
author={Ridder, AAN and Botev, ZI},
|
||||||
@ -138,3 +137,20 @@
|
|||||||
year={1978},
|
year={1978},
|
||||||
publisher={Elsevier}
|
publisher={Elsevier}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@book{hecht02,
|
||||||
|
title={Optics},
|
||||||
|
year={2002},
|
||||||
|
publisher={Pearson},
|
||||||
|
author={Eugene Hecht}
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{lucy74,
|
||||||
|
title={An iterative technique for the rectification of observed
|
||||||
|
distributions},
|
||||||
|
author={Lucy, Leon B},
|
||||||
|
journal={The astronomical journal},
|
||||||
|
volume={79},
|
||||||
|
pages={745},
|
||||||
|
year={1974}
|
||||||
|
}
|
||||||
|
BIN
notes/images/nome.pdf
Normal file
BIN
notes/images/nome.pdf
Normal file
Binary file not shown.
BIN
notes/images/original.pdf
Normal file
BIN
notes/images/original.pdf
Normal file
Binary file not shown.
BIN
notes/images/prova.pdf
Normal file
BIN
notes/images/prova.pdf
Normal file
Binary file not shown.
BIN
notes/images/smoothed.pdf
Normal file
BIN
notes/images/smoothed.pdf
Normal file
Binary file not shown.
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
## Generating points according to Fraunhöfer diffraction
|
## Generating points according to Fraunhöfer diffraction
|
||||||
|
|
||||||
The diffraction of a plane wave through a round slit must be simulated by
|
The diffraction of a plane wave through a round slit is to be simulated by
|
||||||
generating $N =$ 50'000 points according to the intensity distribution
|
generating $N =$ 50'000 points according to the intensity distribution
|
||||||
$I(\theta)$ on a screen at a great distance $L$ from the slit itself:
|
$I(\theta)$ [@hecht02] on a screen at a great distance $L$ from the slit itself
|
||||||
|
(see @fig:slit):
|
||||||
$$
|
$$
|
||||||
I(\theta) = \frac{E^2}{2} \left( \frac{2 \pi a^2 \cos{\theta}}{L}
|
I(\theta) = \frac{E^2}{2} \left( \frac{2 \pi a^2 \cos{\theta}}{L}
|
||||||
\frac{J_1(x)}{x} \right)^2 \with x = k a \sin{\theta}
|
\frac{J_1(x)}{x} \right)^2 \with x = k a \sin{\theta}
|
||||||
@ -16,7 +16,7 @@ where:
|
|||||||
- $E$ is the electric field amplitude, default set $E = \SI{1e4}{V/m}$;
|
- $E$ is the electric field amplitude, default set $E = \SI{1e4}{V/m}$;
|
||||||
- $a$ is the radius of the slit aperture, default set $a = \SI{0.01}{m}$;
|
- $a$ is the radius of the slit aperture, default set $a = \SI{0.01}{m}$;
|
||||||
- $\theta$ is the angle specified in @fig:slit;
|
- $\theta$ is the angle specified in @fig:slit;
|
||||||
- $J_1$ is a Bessel function of first kind;
|
- $J_1$ is the Bessel function of first kind;
|
||||||
- $k$ is the wavenumber, default set $k = \SI{1e-4}{m^{-1}}$;
|
- $k$ is the wavenumber, default set $k = \SI{1e-4}{m^{-1}}$;
|
||||||
- $L$ default set $L = \SI{1}{m}$.
|
- $L$ default set $L = \SI{1}{m}$.
|
||||||
|
|
||||||
@ -51,9 +51,8 @@ where:
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Once again, the *try and catch* method described in @sec:3 was implemented and
|
Once again, the *try and catch* method described in @sec:3 was implemented and
|
||||||
the same procedure about the generation of $\theta$ was employed. This time,
|
the same procedure about the generation of $\theta$ was applied. This time,
|
||||||
though, $\theta$ must be evenly distributed on half sphere:
|
though, $\theta$ must be evenly distributed on half sphere, hence:
|
||||||
|
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\frac{d^2 P}{d\omega^2} = const = \frac{1}{2 \pi}
|
\frac{d^2 P}{d\omega^2} = const = \frac{1}{2 \pi}
|
||||||
&\thus d^2 P = \frac{1}{2 \pi} d\omega^2 =
|
&\thus d^2 P = \frac{1}{2 \pi} d\omega^2 =
|
||||||
@ -73,7 +72,6 @@ though, $\theta$ must be evenly distributed on half sphere:
|
|||||||
|
|
||||||
If $\theta$ is chosen to grew together with $x$, then the absolute value can be
|
If $\theta$ is chosen to grew together with $x$, then the absolute value can be
|
||||||
omitted:
|
omitted:
|
||||||
|
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\frac{d\theta}{dx} = \frac{1}{\sin{\theta}}
|
\frac{d\theta}{dx} = \frac{1}{\sin{\theta}}
|
||||||
&\thus d\theta \sin(\theta) = dx
|
&\thus d\theta \sin(\theta) = dx
|
||||||
@ -85,44 +83,50 @@ omitted:
|
|||||||
&\thus \theta = \text{acos} (1 -x)
|
&\thus \theta = \text{acos} (1 -x)
|
||||||
\end{align*}
|
\end{align*}
|
||||||
|
|
||||||
The sample was binned and stored in a histogram with a customizable number $n$
|
The so obtained sample was binned and stored in a histogram with a customizable
|
||||||
of bins default set $n = 150$. In @fig:original an example is shown.
|
number $n$ of bins (default set $n = 150$) ranging from $\theta = 0$ to $\theta
|
||||||
|
= \pi/2$ bacause of the system symmetry. In @fig:original an example is shown.
|
||||||
|
|
||||||
![Example of an intensity histogram.](images/fraun-original.pdf){#fig:original}
|
![Example of intensity histogram.](images/original.pdf){#fig:original}
|
||||||
|
|
||||||
|
|
||||||
## Gaussian convolution {#sec:convolution}
|
## Gaussian convolution {#sec:convolution}
|
||||||
|
|
||||||
The sample must then be smeared with a Gaussian function with the aim to recover
|
The sample has then to be smeared with a Gaussian function with the aim to
|
||||||
the original sample afterwards, implementing a deconvolution routine.
|
recover the original sample afterwards, implementing a deconvolution routine.
|
||||||
For this purpose, a 'kernel' histogram with a odd number $m$ of bins and the
|
For this purpose, a 'kernel' histogram with an even number $m$ of bins and the
|
||||||
same bin width of the previous one, but a smaller number of them ($m < n$), was
|
same bin width of the previous one, but a smaller number of them ($m \sim 6\%
|
||||||
filled with $m$ points according to a Gaussian distribution with mean $\mu$,
|
\, n$), was created according to a Gaussian distribution with mean $\mu$,
|
||||||
corresponding to the central bin, and variance $\sigma$.
|
and variance $\sigma$. The reason why the kernel was set this way will be
|
||||||
|
descussed lately.
|
||||||
Then, the original histogram was convolved with the kernel in order to obtain
|
Then, the original histogram was convolved with the kernel in order to obtain
|
||||||
the smeared signal. Some results in terms of various $\sigma$ are shown in
|
the smeared signal. As an example, the result obtained for $\sigma = \Delta
|
||||||
[@fig:results1; @fig:results2; @fig:results3].
|
\theta$, where $\Delta \theta$ is the bin width, is shown in @fig:convolved.
|
||||||
|
As expected, the smeared signal looks smoother with respect to the original
|
||||||
|
one.
|
||||||
|
|
||||||
|
![Convolved signal.](images/smoothed.pdf){#fig:convolved}
|
||||||
|
|
||||||
The convolution was implemented as follow. Consider the definition of
|
The convolution was implemented as follow. Consider the definition of
|
||||||
convolution of two functions $f(x)$ and $g(x)$:
|
convolution of two functions $f(x)$ and $g(x)$:
|
||||||
|
|
||||||
$$
|
$$
|
||||||
f \otimes g (x) = \int \limits_{- \infty}^{+ \infty} dy f(y) g(x - y)
|
f * g (x) = \int \limits_{- \infty}^{+ \infty} dy f(y) g(x - y)
|
||||||
$$
|
$$
|
||||||
|
|
||||||
Since a histogram is made of discrete values, a discrete convolution of the
|
Since a histogram is made of discrete values, a discrete convolution of the
|
||||||
signal $s$ and the kernel $k$ must be computed. Hence, the procedure boils
|
signal ($s$) and the kernel ($k$) must be computed. Hence, the procedure boils
|
||||||
down to an element wise product between $s$ and the reverse histogram of $k$
|
down to an element wise product between $s$ and the flipped histogram of $k$
|
||||||
for each relative position of the two histograms. Namely, if $c_i$ is the
|
(from the last bin to the first one) for each relative position of the two
|
||||||
$i^{\text{th}}$ bin of the convoluted histogram:
|
histograms. Namely, if $c_i$ is the $i^{\text{th}}$ bin of the convolved
|
||||||
|
histogram:
|
||||||
$$
|
$$
|
||||||
c_i = \sum_j k_j s_{i - j}
|
c_i = \sum_j k_j s_{i - j} = \sum_{j'} k_{m - j'} s_{i - m + j'}
|
||||||
|
\with j' = m - j
|
||||||
$$
|
$$
|
||||||
|
|
||||||
where $j$ runs over the bins of the kernel.
|
where $j$ runs over the bins of the kernel.
|
||||||
For a better understanding, see @fig:dot_conv. As can be seen, the third
|
For a better understanding, see @fig:dot_conv: the third histogram turns out
|
||||||
histogram was obtained with $n + m - 1$ bins, a number greater than the initial
|
with $n + m - 1$ bins, a number greater than the original one.
|
||||||
one.
|
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}
|
||||||
\hypertarget{fig:dot_conv}{%
|
\hypertarget{fig:dot_conv}{%
|
||||||
@ -195,27 +199,32 @@ one.
|
|||||||
## Unfolding with FFT
|
## Unfolding with FFT
|
||||||
|
|
||||||
Two different unfolding routines were implemented, one of which exploiting the
|
Two different unfolding routines were implemented, one of which exploiting the
|
||||||
Fast Fourier Transform. This method is based on the property of the Fourier
|
Fast Fourier Transform (FFT).
|
||||||
transform according to which, given two functions $f(x)$ and $g(x)$:
|
|
||||||
|
|
||||||
|
This method is based on the convolution theorem, according to which, given two
|
||||||
|
functions $f(x)$ and $g(x)$:
|
||||||
$$
|
$$
|
||||||
\hat{F}[f \otimes g] = \hat{F}[f] \cdot \hat{F}[g]
|
\hat{F}[f * g] = \hat{F}[f] \cdot \hat{F}[g]
|
||||||
$$
|
$$
|
||||||
|
|
||||||
where $\hat{F}[\quad]$ stands for the Fourier transform of its argument.
|
where $\hat{F}[\quad]$ stands for the Fourier transform of its argument.
|
||||||
Thus, the implementation of this tecnique lies in the computation of the Fourier
|
|
||||||
trasform of the smeared signal and the kernel, the ratio between their
|
|
||||||
transforms and the anti-transformation of the result:
|
|
||||||
|
|
||||||
$$
|
|
||||||
\hat{F}[s \otimes k] = \hat{F}[s] \cdot \hat{F}[k] \thus
|
|
||||||
\hat{F} [s] = \frac{\hat{F}[s \otimes k]}{\hat{F}[k]}
|
|
||||||
$$
|
|
||||||
|
|
||||||
Being the histogram a discrete set of data, the Discrete Fourier Transform (DFT)
|
Being the histogram a discrete set of data, the Discrete Fourier Transform (DFT)
|
||||||
was emploied. In particular, the FFT are efficient algorithms for calculating
|
was appied. When dealing with arrays of discrete values, the theorems still
|
||||||
the DFT. Given a set of $n$ values {$z_i$}, each one is transformed into:
|
holds if the two arrays have the same lenght and a cyclical convolution is
|
||||||
|
applied. For this reason the kernel was 0-padded in order to make it the same
|
||||||
|
lenght of the original signal. Besides, the 0-padding allows to avoid unpleasant
|
||||||
|
side effects due to the cyclical convolution.
|
||||||
|
In order to accomplish this procedure, every histogram was transformed into a
|
||||||
|
vector. The implementation lies in the computation of the Fourier trasform of
|
||||||
|
the smeared signal and the kernel, the ratio between their transforms and the
|
||||||
|
anti-transformation of the result:
|
||||||
|
$$
|
||||||
|
\hat{F}[s * k] = \hat{F}[s] \cdot \hat{F}[k] \thus
|
||||||
|
\hat{F} [s] = \frac{\hat{F}[s * k]}{\hat{F}[k]}
|
||||||
|
$$
|
||||||
|
|
||||||
|
The FFT are efficient algorithms for calculating the DFT. Given a set of $n$
|
||||||
|
values {$z_i$}, each one is transformed into:
|
||||||
$$
|
$$
|
||||||
x_j = \sum_{k=0}^{n-1} z_k \exp \left( - \frac{2 \pi i j k}{n} \right)
|
x_j = \sum_{k=0}^{n-1} z_k \exp \left( - \frac{2 \pi i j k}{n} \right)
|
||||||
$$
|
$$
|
||||||
@ -227,7 +236,6 @@ sub-matrices. If $n$ can be factorized into a product of integers $n_1$, $n_2
|
|||||||
\ldots n_m$, then the DFT can be computed in $O(n \sum n_i) < O(n^2)$
|
\ldots n_m$, then the DFT can be computed in $O(n \sum n_i) < O(n^2)$
|
||||||
operations, hence the name.
|
operations, hence the name.
|
||||||
The inverse Fourier transform is thereby defined as:
|
The inverse Fourier transform is thereby defined as:
|
||||||
|
|
||||||
$$
|
$$
|
||||||
z_j = \frac{1}{n}
|
z_j = \frac{1}{n}
|
||||||
\sum_{k=0}^{n-1} x_k \exp \left( \frac{2 \pi i j k}{n} \right)
|
\sum_{k=0}^{n-1} x_k \exp \left( \frac{2 \pi i j k}{n} \right)
|
||||||
@ -235,20 +243,12 @@ $$
|
|||||||
|
|
||||||
In GSL, `gsl_fft_complex_forward()` and `gsl_fft_complex_inverse()` are
|
In GSL, `gsl_fft_complex_forward()` and `gsl_fft_complex_inverse()` are
|
||||||
functions which allow to compute the foreward and inverse transform,
|
functions which allow to compute the foreward and inverse transform,
|
||||||
respectively.
|
respectively.
|
||||||
|
|
||||||
In order to accomplish this procedure, every histogram was transformed into a
|
|
||||||
vector. The kernel vector was 0-padded and centred in the middle to make its
|
|
||||||
length the same as that of the signal, making it feasable to implement the
|
|
||||||
division between the entries of the vectors one by one.
|
|
||||||
|
|
||||||
The inputs and outputs for the complex FFT routines are packed arrays of
|
The inputs and outputs for the complex FFT routines are packed arrays of
|
||||||
floating point numbers. In a packed array the real and imaginary parts of
|
floating point numbers. In a packed array the real and imaginary parts of
|
||||||
each complex number are placed in alternate neighboring elements.
|
each complex number are placed in alternate neighboring elements. In this
|
||||||
In this special case, the sequence of values which must be transformed is made
|
special case, the sequence of values to be transformed is made of real numbers,
|
||||||
of real numbers, but the Fourier transform is not real: it is a complex sequence
|
but the Fourier transform is not real: it is a complex sequence wich satisfies:
|
||||||
wich satisfies:
|
|
||||||
|
|
||||||
$$
|
$$
|
||||||
z_k = z^*_{n-k}
|
z_k = z^*_{n-k}
|
||||||
$$
|
$$
|
||||||
@ -258,14 +258,10 @@ where $z^*$ is the conjugate of $z$. A sequence with this symmetry is called
|
|||||||
forward transform (from real to half-complex) and inverse transform (from
|
forward transform (from real to half-complex) and inverse transform (from
|
||||||
half-complex to real). As a consequence, the routines are divided into two sets:
|
half-complex to real). As a consequence, the routines are divided into two sets:
|
||||||
`gsl_fft_real` and `gsl_fft_halfcomplex`. The symmetry of the half-complex
|
`gsl_fft_real` and `gsl_fft_halfcomplex`. The symmetry of the half-complex
|
||||||
sequence implies that only half of the complex numbers in the output need to be
|
sequence requires only half of the complex numbers in the output to be stored.
|
||||||
stored. This works for all lengths: when the length is even, the middle value
|
This works for all lengths: when the length is even, the middle value is real.
|
||||||
is real. Thus, only $n$ real numbers are required to store the half-complex
|
Thus, only $n$ real numbers are required to store the half-complex sequence
|
||||||
sequence (half for the real part and half for the imaginary).
|
(half for the real part and half for the imaginary).
|
||||||
If the bin width is $\Delta \theta$, then the DFT domain ranges from $-1 / (2
|
|
||||||
\Delta \theta)$ to $+1 / (2 \Delta \theta$). The aforementioned GSL functions
|
|
||||||
store the positive values from the beginning of the array up to the middle and
|
|
||||||
the negative backwards from the end of the array (see @fig:reorder).
|
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}
|
||||||
\hypertarget{fig:reorder}{%
|
\hypertarget{fig:reorder}{%
|
||||||
@ -273,7 +269,6 @@ the negative backwards from the end of the array (see @fig:reorder).
|
|||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
\definecolor{cyclamen}{RGB}{146, 24, 43}
|
\definecolor{cyclamen}{RGB}{146, 24, 43}
|
||||||
% standard histogram
|
% standard histogram
|
||||||
\begin{scope}[shift={(7,0)}]
|
|
||||||
\draw [thick, cyclamen] (0.5,0) -- (0.5,0.2);
|
\draw [thick, cyclamen] (0.5,0) -- (0.5,0.2);
|
||||||
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.0,0) rectangle (1.5,0.6);
|
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.0,0) rectangle (1.5,0.6);
|
||||||
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.5,0) rectangle (2.0,1.2);
|
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.5,0) rectangle (2.0,1.2);
|
||||||
@ -284,8 +279,8 @@ the negative backwards from the end of the array (see @fig:reorder).
|
|||||||
\draw [thick, cyclamen] (4.5,0) -- (4.5,0.2);
|
\draw [thick, cyclamen] (4.5,0) -- (4.5,0.2);
|
||||||
\draw [thick, ->] (0,0) -- (5,0);
|
\draw [thick, ->] (0,0) -- (5,0);
|
||||||
\draw [thick, ->] (2.5,0) -- (2.5,2);
|
\draw [thick, ->] (2.5,0) -- (2.5,2);
|
||||||
\end{scope}
|
|
||||||
% shifted histogram
|
% shifted histogram
|
||||||
|
\begin{scope}[shift={(7,0)}]
|
||||||
\draw [thick, cyclamen, fill=cyclamen!25!white] (0.5,0) rectangle (1.0,1.4);
|
\draw [thick, cyclamen, fill=cyclamen!25!white] (0.5,0) rectangle (1.0,1.4);
|
||||||
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.0,0) rectangle (1.5,1.2);
|
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.0,0) rectangle (1.5,1.2);
|
||||||
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.5,0) rectangle (2.0,0.6);
|
\draw [thick, cyclamen, fill=cyclamen!25!white] (1.5,0) rectangle (2.0,0.6);
|
||||||
@ -294,94 +289,126 @@ the negative backwards from the end of the array (see @fig:reorder).
|
|||||||
\draw [thick, cyclamen, fill=cyclamen!25!white] (4.0,0) rectangle (4.5,1.4);
|
\draw [thick, cyclamen, fill=cyclamen!25!white] (4.0,0) rectangle (4.5,1.4);
|
||||||
\draw [thick, ->] (0,0) -- (5,0);
|
\draw [thick, ->] (0,0) -- (5,0);
|
||||||
\draw [thick, ->] (2.5,0) -- (2.5,2);
|
\draw [thick, ->] (2.5,0) -- (2.5,2);
|
||||||
|
\end{scope}
|
||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
\caption{On the left, an example of the DFT as it is given by the gsl function
|
\caption{The histogram on the right shows how the real numbers histogram on the
|
||||||
and the same dataset, on the right, with the rearranged "intuitive"
|
left is handled by the dedicated GSL functions`.}\label{fig:reorder}
|
||||||
order of the sequence.}\label{fig:reorder}
|
|
||||||
}
|
}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
When $\hat{F}[s \otimes k]$ and $\hat{F}[k]$ are computed, their normal format
|
If the bin width is $\Delta \theta$, then the DFT domain ranges from $-1 / (2
|
||||||
must be restored in order to use them as standard complex numbers and compute
|
\Delta \theta)$ to $+1 / (2 \Delta \theta$). As regards the real values, the
|
||||||
the ratio between them. Then, the result must return in the half-complex format
|
aforementioned GSL functions store the positive values from the beginning of
|
||||||
for the inverse DFT application.
|
the array up to the middle and the negative backwards from the end of the array
|
||||||
GSL provides the function `gsl_fft_halfcomplex_unpack()` which passes the
|
(see @fig:reorder).
|
||||||
vectors from half-complex format to standard complex format. The inverse
|
Whilst do not matters if the convolved histogram has positive or negative
|
||||||
procedure, required to compute the inverse transformation of $\hat{F}[s]$, which
|
values, the kernel must be centered in zero in order to compute a correct
|
||||||
is not provided by GSL, was implemented in the code.
|
convolution. This requires the kernel to be made of an ever number of bins
|
||||||
The fact that the gaussian kernel is centerd in the middle of the vector and
|
in order to be possible to cut it into two same-lenght halves.
|
||||||
not in the $\text{zero}^{th}$ bin causes the final result to be shifted of half
|
|
||||||
the leght of the vector the same as it was produced by a DFT. This makes it
|
|
||||||
necessary to rearrange the two halfs of the final result.
|
|
||||||
|
|
||||||
At the end, the external bins which exceed with respect to the original signal
|
When $\hat{F}[s * k]$ and $\hat{F}[k]$ are computed, they are given in the
|
||||||
are cut away in order to restore the original number of bins $n$. Results are
|
half-complex GSL format and their normal format must be restored in order to
|
||||||
shown in [@fig:results1; @fig:results2; @fig:results3].
|
use them as standard complex numbers and compute the ratio between them. Then,
|
||||||
|
the result must return in the half-complex format for the inverse DFT
|
||||||
|
computation. GSL provides the function `gsl_fft_halfcomplex_unpack()` which
|
||||||
|
convert the vectors from half-complex format to standard complex format but the
|
||||||
|
inverse procedure is not provided by GSL and was hence implemented in the
|
||||||
|
code.
|
||||||
|
|
||||||
|
At the end, the external bins which exceed the original signal size are cut
|
||||||
|
away in order to restore the original number of bins $n$. Results will be
|
||||||
|
discussed in @sec:conv_Results.
|
||||||
|
|
||||||
|
|
||||||
## Unfolding with Richardson-Lucy
|
## Unfolding with Richardson-Lucy
|
||||||
|
|
||||||
The Richardson–Lucy (RL) deconvolution is an iterative procedure tipically used
|
The Richardson–Lucy (RL) deconvolution is an iterative procedure tipically used
|
||||||
for recovering an image that has been blurred by a known point spread function.
|
for recovering an image that has been blurred by a known 'point spread
|
||||||
|
function'.
|
||||||
It is based on the fact that an ideal point source does not appear as a point
|
|
||||||
but is spread out into the so-called point spread function, thus the observed
|
|
||||||
image can be represented in terms of a transition matrix
|
|
||||||
$P$ operating on an underlying image:
|
|
||||||
|
|
||||||
|
Consider the problem of estimating the frequeny distribution $f(\xi)$ of a
|
||||||
|
variable $\xi$ when the available measure is a sample {$x_i$} of points
|
||||||
|
dronwn not by $f(x)$ but by an other function $\phi(x)$ such that:
|
||||||
$$
|
$$
|
||||||
d_i = \sum_{j} u_j \, P_{i, j}
|
\phi(x) = \int d\xi \, f(\xi) P(x | \xi)
|
||||||
$$
|
$$
|
||||||
|
|
||||||
where $u_j$ is the intensity of the underlying image at pixel $j$ and $d_i$ is
|
where $P(x | \xi) \, d\xi$ is the probability (presumed known) that $x$ falls
|
||||||
the detected intensity at pixel $i$. Hence, the matrix describes the portion of
|
in the interval $(x, x + dx)$ when $\xi = \xi$. An example of this problem is
|
||||||
signal from the source pixel $j$ that is detected in pixel $i$.
|
precisely that of correcting an observed distribution $\phi(x)$ for the effect
|
||||||
In one dimension, the transfer function can be expressed in terms of the
|
of observational errors, which are represented by the function $P (x | \xi)$,
|
||||||
distance between the source pixel $j$ and the observed $i$:
|
called point spread function.
|
||||||
|
|
||||||
|
Let $Q(\xi | x) d\xi$ be the probability that $\xi$ comes from the interval
|
||||||
|
$(\xi, \xi + d\xi)$ when the measured quantity is $x = x$. The probability that
|
||||||
|
both $x \in (x, x + dx)$ and $(\xi, \xi + d\xi)$ is therefore given by $\phi(x)
|
||||||
|
dx \cdot Q(\xi | x) d\xi$ which is identical to $f(\xi) d\xi \cdot P(x | \xi)
|
||||||
|
dx$, hence:
|
||||||
|
|
||||||
$$
|
$$
|
||||||
P_{i, j} = \widetilde{P}(i-j) = P_{i - j}
|
\phi(x) dx \cdot Q(\xi | x) d\xi = f(\xi) d\xi \cdot P(x | \xi) dx
|
||||||
|
\thus Q(\xi | x) = \frac{f(\xi) \cdot P(x | \xi)}{\phi(x)}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
In order to estimate $u_j$ given {$d_i$} and $\widetilde{P}$, the following
|
|
||||||
iterative procedure can be applied for the estimate $\hat{u}^t_j$ of $u_j$,
|
|
||||||
where $t$ stands for the iteration number. The $t^{\text{th}}$ step is updated
|
|
||||||
as follows:
|
|
||||||
|
|
||||||
$$
|
$$
|
||||||
\hat{u}^{t+1}_j = \hat{u}^t_j \sum_i \frac{d_i}{c_i} \, P_{i - j}
|
\thus Q(\xi | x) = \frac{f(\xi) \cdot P(x | \xi)}
|
||||||
\with c_i = \sum_j \hat{u}^t_j \, P_{i - j}
|
{\int d\xi \, f(\xi) P(x | \xi)}
|
||||||
|
$$ {#eq:first}
|
||||||
|
|
||||||
|
which is the Bayes theorem for conditional probability. From the normalization
|
||||||
|
of $P(x | \xi)$, it follows also that:
|
||||||
|
$$
|
||||||
|
f(\xi) = \int dx \, \phi(x) Q(\xi | x)
|
||||||
|
$$ {#eq:second}
|
||||||
|
|
||||||
|
Since $Q (\xi | x)$ depends on $f(\xi)$, @eq:second suggests a reiterative
|
||||||
|
procedure for generating estimates of $f(\xi)$. With a guess for $f(\xi)$ and
|
||||||
|
a known $P(x | \xi)$, @eq:first can be used to calculate and estimate for
|
||||||
|
$Q (\xi | x)$. Then, taking the hint provided by @eq:second, an improved
|
||||||
|
estimate for $f (\xi)$ is generated, using the observed sample {$x_i$} to give
|
||||||
|
an approximation for $\phi$.
|
||||||
|
Thus, if $f^t$ is the $t^{\text{th}}$ estimate, the $t^{\text{th + 1}}$ is:
|
||||||
|
$$
|
||||||
|
f^{t + 1}(\xi) = \int dx \, \phi(x) Q^t(\xi | x)
|
||||||
|
\with
|
||||||
|
Q^t(\xi | x) = \frac{f^t(\xi) \cdot P(x | \xi)}
|
||||||
|
{\int d\xi \, f^t(\xi) P(x | \xi)}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
where $c_i$ is thereby an estimation of the blurred signal obtained with the
|
from which:
|
||||||
previous estimation of the clean signal.
|
|
||||||
It has been shown empirically that if this iteration converges, it converges to
|
|
||||||
the maximum likelihood solution for $u_j$. Writing it in terms of convolution,
|
|
||||||
it becomes:
|
|
||||||
|
|
||||||
$$
|
$$
|
||||||
\hat{u}^{t+1} = \hat {u}^{t} \cdot \left( \frac{d}{{\hat{u}^{t}} \otimes P}
|
f^{t + 1}(\xi) = f^t(\xi)
|
||||||
\otimes P^{\star} \right)
|
\int dx \, \frac{\phi(x)}{\int d\xi \, f^t(\xi) P(x | \xi)}
|
||||||
|
P(x | \xi)
|
||||||
|
$$ {#eq:solution}
|
||||||
|
|
||||||
|
If the spread function $P(x | \xi)$ follows a normal distribution with variance
|
||||||
|
$\sigma$, namely:
|
||||||
|
$$
|
||||||
|
P(x | \xi) = \frac{1}{\sqrt{2 \pi} \sigma}
|
||||||
|
\exp \left( - \frac{(x - \xi)^2}{2 \sigma^2} \right)
|
||||||
$$
|
$$
|
||||||
|
|
||||||
where the division and multiplication are element wise, and
|
then, @eq:solution can be rewritten in terms of convolutions:
|
||||||
$P^{\star}$ is the flipped point spread function.
|
$$
|
||||||
|
f^{t + 1} = f^{t}\left( \frac{\phi}{{f^{t}} * P} * P^{\star} \right)
|
||||||
|
$$
|
||||||
|
where $P^{\star}$ is the flipped point spread function [@lucy74].
|
||||||
|
|
||||||
|
In this special case, the Gaussian kernel stands for the point spread function
|
||||||
|
and, dealing with discrete values, the division and multiplication are element
|
||||||
|
wise and the convolution is to be carried out as described in @sec:convolution.
|
||||||
When implemented, this method results in an easy step-wise routine:
|
When implemented, this method results in an easy step-wise routine:
|
||||||
|
|
||||||
- create a flipped copy of the kernel;
|
- create a flipped copy of the kernel;
|
||||||
- choose a zero-order estimate for {$c_i$};
|
- choose a zero-order estimate for {$f(\xi)$};
|
||||||
- compute the convolutions with the method described in @sec:convolution, the
|
- compute the convolutions, the product and the division at each step;
|
||||||
product and the division at each step;
|
|
||||||
- proceed until a given number of reiterations is achieved.
|
- proceed until a given number of reiterations is achieved.
|
||||||
|
|
||||||
In this case, the zero-order was set $c_i = 0.5 \, \forall i$ and it was
|
In this case, the zero-order was set $f(\xi) = 0.5 \, \forall \, \xi$.
|
||||||
empirically shown that the better result is given with a number of three steps,
|
|
||||||
otherwise it starts returnig fanciful histograms. Results are shown in
|
|
||||||
[@fig:results1; @fig:results2; @fig:results3].
|
|
||||||
|
|
||||||
|
|
||||||
## Results comparison
|
## Results comparison {#sec:conv_Results}
|
||||||
|
|
||||||
In [@fig:results1; @fig:results2; @fig:results3] the results obtained for three
|
In [@fig:results1; @fig:results2; @fig:results3] the results obtained for three
|
||||||
different $\sigma$s are shown. The tested values are $\Delta \theta$, $0.5 \,
|
different $\sigma$s are shown. The tested values are $\Delta \theta$, $0.5 \,
|
||||||
@ -399,46 +426,14 @@ In the real world, it is unpratical, since signals are inevitably blurred by
|
|||||||
noise.
|
noise.
|
||||||
The same can't be said about the RL deconvolution, which, on the other hand,
|
The same can't be said about the RL deconvolution, which, on the other hand,
|
||||||
looks heavily influenced by the variance magnitude: the greater $\sigma$, the
|
looks heavily influenced by the variance magnitude: the greater $\sigma$, the
|
||||||
worse the deconvoluted result. In fact, given the same number of steps, the
|
worse the deconvolved result. In fact, given the same number of steps, the
|
||||||
deconvolved signal is always the same 'distance' far form the convolved one:
|
deconvolved signal is always the same 'distance' far form the convolved one:
|
||||||
if it very smooth, the deconvolved signal is very smooth too and if the
|
if it very smooth, the deconvolved signal is very smooth too and if the
|
||||||
convolved is less smooth, it is less smooth too.
|
convolved is less smooth, it is less smooth too.
|
||||||
|
|
||||||
The original signal is shown below for convenience.
|
The original signal is shown below for convenience.
|
||||||
|
|
||||||
![Example of an intensity histogram.](images/fraun-original.pdf)
|
|
||||||
|
|
||||||
<div id="fig:results1">
|
|
||||||
![Convolved signal.](images/fraun-conv-0.05.pdf){width=12cm}
|
|
||||||
|
|
||||||
![Deconvolved signal with FFT.](images/fraun-fft-0.05.pdf){width=12cm}
|
|
||||||
|
|
||||||
![Deconvolved signal with RL.](images/fraun-rl-0.05.pdf){width=12cm}
|
|
||||||
|
|
||||||
Results for $\sigma = 0.05 \Delta \theta$, where $\Delta \theta$ is the bin
|
|
||||||
width.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="fig:results2">
|
|
||||||
![Convolved signal.](images/fraun-conv-0.5.pdf){width=12cm}
|
|
||||||
|
|
||||||
![Deconvolved signal with FFT.](images/fraun-fft-0.5.pdf){width=12cm}
|
|
||||||
|
|
||||||
![Deconvolved signal with RL.](images/fraun-rl-0.5.pdf){width=12cm}
|
|
||||||
|
|
||||||
Results for $\sigma = 0.5 \Delta \theta$, where $\Delta \theta$ is the bin
|
|
||||||
width.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="fig:results3">
|
|
||||||
![Convolved signal.](images/fraun-conv-1.pdf){width=12cm}
|
|
||||||
|
|
||||||
![Deconvolved signal with FFT.](images/fraun-fft-1.pdf){width=12cm}
|
|
||||||
|
|
||||||
![Deconvolved signal with RL.](images/fraun-rl-1.pdf){width=12cm}
|
|
||||||
|
|
||||||
Results for $\sigma = \Delta \theta$, where $\Delta \theta$ is the bin width.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
It was also implemented the possibility to add a Poisson noise to the
|
It was also implemented the possibility to add a Poisson noise to the
|
||||||
convolved histogram to check weather the deconvolution is affected or not by
|
convolved histogram to check weather the deconvolution is affected or not by
|
||||||
@ -451,14 +446,6 @@ everywhere on the curve and it is particularly evident on the edges, where the
|
|||||||
expected data are very small. On the other hand, the Richardson-Lucy routine is
|
expected data are very small. On the other hand, the Richardson-Lucy routine is
|
||||||
less affected by this further complication.
|
less affected by this further complication.
|
||||||
|
|
||||||
<div id="fig:poisson">
|
|
||||||
![Deconvolved signal with FFT.](images/fraun-noise-fft.pdf){width=12cm}
|
|
||||||
|
|
||||||
![Deconvolved signal withh RL.](images/fraun-noise-rl.pdf){width=12cm}
|
|
||||||
|
|
||||||
Results for $\sigma = \Delta \theta$, with Poisson noise.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
In order to quantify the similarity of a deconvolution outcome with the original
|
In order to quantify the similarity of a deconvolution outcome with the original
|
||||||
signal, a null hypotesis test was made up.
|
signal, a null hypotesis test was made up.
|
||||||
Likewise in @sec:Landau, the original sample was treated as a population from
|
Likewise in @sec:Landau, the original sample was treated as a population from
|
||||||
@ -519,7 +506,7 @@ $$
|
|||||||
{\sum_{i = 1}^m \sum_{j=1}^n f_{ij}}
|
{\sum_{i = 1}^m \sum_{j=1}^n f_{ij}}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
In this case, where the EMD must be applied to two same-lenght histograms, the
|
In this case, where the EMD has to be applied to two same-lenght histograms, the
|
||||||
procedure simplifies a lot. By representing both histograms with two vectors $u$
|
procedure simplifies a lot. By representing both histograms with two vectors $u$
|
||||||
and $v$, the equation above boils down to [@ramdas17]:
|
and $v$, the equation above boils down to [@ramdas17]:
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
- cambiare simbolo convoluzione
|
|
||||||
- aggiungere citazioni e referenze
|
|
||||||
- leggere l'articolo di Lucy
|
|
Loading…
Reference in New Issue
Block a user