From: Bjørn Rustad Date: Sat, 31 Jan 2015 16:13:09 +0000 (+0100) Subject: LOL X-Git-Url: http://git.rustad.me/?a=commitdiff_plain;h=0aed486162f0f7546e961e7bd87c4df4db5f1704;p=master LOL --- diff --git a/appendix.tex b/appendix.tex index 25e12d4..a47b6df 100644 --- a/appendix.tex +++ b/appendix.tex @@ -1,4 +1,46 @@ \chapter{\cpp{} implementation} -\inputminted[fontsize=\scriptsize]{c++}{../image-restoration/graph.cpp} +\fixme{well, code is at daim also, mention that?} + +My \cpp{} implementation can be found online at \cite{github}. It uses +the open computer vision library OpenCV \cite{opencv_library} to load +and save image files. The implementation has been tested on a Ubuntu +Linux distribution, but it should in theory be portable to other +platforms supported by OpenCV. A rudimentary graphics interface has also +been made, shown in Figure~\ref{fig:fiddle}, to make it easier to play +with the parameters of the algorithm. + +Both the push-relabel and the Boykov--Kolmogorov algorithms have been +implemented. Although an effort has been made to improve the performance +of both implementations, they are not ment to beat the fastest. The +focus has rather been on clarity. + +Note that when implementing maximum flow algorithms it is not a good +idea, memory- and performance-wise, to actually construct the residual +graph $G_f$. Instead, every time we update the flow $f(u,v)$ we set +the flow in the opposite direction to its negative value $f(v,u) = +-f(u,v)$. Then we can at any time, consider the value $c(u,v) - f(u,v)$ +in the place of the residual capacity $c_f(u,v)$. + +For the gap relabeling heuristic of the push-relabel algorithm, we need +to have a easy way of finding when a gap occurs. This is done by keeping +track of how many vertices exist with each label. + +When the capacities have been updated in the Boykov--Kolmogorov +algorithm, flow is sent along all two-edge paths such that they do not +have to be considered by the main loop of the algorithm. + +\begin{figure} + \centering + \includegraphics[width=\textwidth]{fig/fiddle.png} + \caption[Graphical user interface]{Simple graphical user interface to play with the algorithm + parameters.} + \label{fig:fiddle} +\end{figure} + +%\section{Performance comparison} + +%Maybe. + +%\inputminted[fontsize=\scriptsize]{c++}{../image-restoration/graph.cpp} diff --git a/bib.bib b/bib.bib index 07b195a..253f7f0 100644 --- a/bib.bib +++ b/bib.bib @@ -19,6 +19,12 @@ URL = {http://dx.doi.org/10.1007/978-1-4612-1015-3}, } +@misc{github, + AUTHOR={Bjørn Rustad}, + TITLE={\cpp{} implementation}, + HOWPUBLISHED={\url{https://github.com/burk/image-restoration}} +} + @article{acar1994analysis, AUTHOR = {Acar, R. and Vogel, C. R.}, TITLE = {Analysis of bounded variation penalty methods for ill-posed diff --git a/continuous.tex b/continuous.tex index 39fb95d..ff44c6e 100644 --- a/continuous.tex +++ b/continuous.tex @@ -153,7 +153,7 @@ structures we want our anisotropy tensor to be sensitive to. \begin{figure} \centering{} \includegraphics[width=0.4\textwidth]{fig/edges.png} - \caption{% + \caption[The edge detector $\abs{\nabla f_\sigma(x)}$]{% The largest eigenvalue of the structure tensor is $\abs{\nabla f_\sigma(x)}^2$ and can as we see function as an edge detector. } @@ -255,7 +255,7 @@ fingerprint analysis. The theory of existence and uniqueness for these kinds of variational methods is a minefield of more or less subtle problems. Even if we -restrict ourself to a nice space such as $L^2(\Omega)$ we will at some +restrict ourselves to a nice space such as $L^2(\Omega)$ we will at some point run into problems. The discussion here is not meant to give the most rigorous background, but rather an overview of what needs to be shown. Some problems will be worked around, while others will be skipped @@ -266,7 +266,7 @@ The basic things we ask of our functional F(u) = \int_\Omega (u - f)^2 + \beta \, \TVA(u) \end{equation} to have a \emph{well-posed} problem are lower semicontinuity -and coercivity for existence, convexity for uniqueness and stability. We restrict +and coercivity for existence, and convexity for uniqueness. We restrict ourself to $L^2(\Omega)$ which makes sense with our fidelity term, assuming that $f \in L^2(\Omega)$ initially. @@ -439,80 +439,80 @@ coercivity and sequential lower semi-continuity in the weak topology we can conclude that we have existence from \cite[Theorem 5.1]{scherzer2008variational}. -\subsection{Stability} - -The last property normally required for well-posedness is stability. -Thus the question is how the solutions behave when we perturb the -problem. We stick to $L^2(\Omega)$ and adopt a proof given by Acar and -Vogel in \cite{acar1994analysis}. - -\begin{proposition} - Consider a sequence of perturbed problems - \begin{equation} - \min_{u \in L^2(\Omega)} F_n(u). - \end{equation} - Assume that each of the functionals $F_n$ is weakly sequentially - lower-semicontinuous, has a unique minimizer $u_n$, and in addition that they are - uniformly coercive in the sense that for any sequence $v_n \in - L^2(\Omega)$ - \begin{equation} - \lim_{n \to \infty} F_n(v_n) = \infty \quad \text{whenever } \, \lim_{n \to - \infty} \norm{v_n}_{L^2} = \infty. - \label{eq:fn_coercive} - \end{equation} - Assume also that the problems are consistent in the sense that $F_n \to - F$ uniformly, i.e.\ given an $R > 0$ and $\epsilon > 0$ there exists an - $N$ such that - \begin{equation} - \abs{F_n(u) - F(u)} < \epsilon \quad \text{whenever } \, n \geq N \text{ and - } \norm{u}_{L^2} \leq R. - \label{eq:fn_concistent} - \end{equation} - The problem is then stable with respect to the perturbations $F_n$ in - the sense that if $u^*$ is a minimizer of $F$ we have - \begin{equation} - u_n \rightharpoonup u^*. - \label{eq:un_u_weak} - \end{equation} -\end{proposition} -\begin{proof} - As $u_n$ is a minimizer of $F_n$ we have - \begin{equation} - F_n(u_n) \leq F_n(u^*) - \end{equation} - and using \eqref{eq:fn_concistent} we get - \begin{equation} - %\lim F_n(u_n) \leq \limsup F_n(u_n) \leq \limsup F_n(u^*) - %= F(u^*) < \infty. - \lim_{n \to \infty} F_n(u_n) \leq \lim_{n \to \infty} F_n(u^*) = - F(u^*) < \infty. - \end{equation} - From the coercivity in \eqref{eq:fn_coercive} we obtain that - the sequence $u_n$ is bounded in $L^2(\Omega)$ and thus contains a - weakly convergent subsequence. - - Assume that the convergence in \eqref{eq:un_u_weak} does not hold, - and denote the weakly convergent subsequence by $u_{n_j} - \rightharpoonup \bar{u} \neq u^*$. By the weak sequential lower - semicontinuity we have - \begin{equation} - \begin{aligned} - F(\bar{u}) &\leq \liminf_{j \to \infty} F\left(u_{n_j}\right) \\ - &= \liminf_{j \to \infty} \left(F\left(u_{n_j}\right) - - F_{n_j}\left(u_{n_j}\right)\right) + \liminf_{j \to \infty} - F_{n_j}\left(u_{n_j}\right) \\ - &= \liminf_{j \to \infty} F_{n_j}\left(u_{n_j}\right) \\ - &\leq F(u^*) - \end{aligned} - \end{equation} - which contradicts the uniqueness of $u^*$ and thus we can conclude - that the solutions of the perturbed problems converge $u_n - \rightharpoonup \bar{u} = u^*$. -\end{proof} - -Note that these are properties of the continuous problem, and that the -discretizations and numerical methods used for approximating a solution -can have its own issues with consistency, convergence and stability. +%\subsection{Stability} +% +%The last property normally required for well-posedness is stability. +%Thus the question is how the solutions behave when we perturb the +%problem. We stick to $L^2(\Omega)$ and adopt a proof given by Acar and +%Vogel in \cite{acar1994analysis}. +% +%\begin{proposition} +% Consider a sequence of perturbed problems +% \begin{equation} +% \min_{u \in L^2(\Omega)} F_n(u). +% \end{equation} +% Assume that each of the functionals $F_n$ is weakly sequentially +% lower-semicontinuous, has a unique minimizer $u_n$, and in addition that they are +% uniformly coercive in the sense that for any sequence $v_n \in +% L^2(\Omega)$ +% \begin{equation} +% \lim_{n \to \infty} F_n(v_n) = \infty \quad \text{whenever } \, \lim_{n \to +% \infty} \norm{v_n}_{L^2} = \infty. +% \label{eq:fn_coercive} +% \end{equation} +% Assume also that the problems are consistent in the sense that $F_n \to +% F$ uniformly, i.e.\ given an $R > 0$ and $\epsilon > 0$ there exists an +% $N$ such that +% \begin{equation} +% \abs{F_n(u) - F(u)} < \epsilon \quad \text{whenever } \, n \geq N \text{ and +% } \norm{u}_{L^2} \leq R. +% \label{eq:fn_concistent} +% \end{equation} +% The problem is then stable with respect to the perturbations $F_n$ in +% the sense that if $u^*$ is a minimizer of $F$ we have +% \begin{equation} +% u_n \rightharpoonup u^*. +% \label{eq:un_u_weak} +% \end{equation} +%\end{proposition} +%\begin{proof} +% As $u_n$ is a minimizer of $F_n$ we have +% \begin{equation} +% F_n(u_n) \leq F_n(u^*) +% \end{equation} +% and using \eqref{eq:fn_concistent} we get +% \begin{equation} +% %\lim F_n(u_n) \leq \limsup F_n(u_n) \leq \limsup F_n(u^*) +% %= F(u^*) < \infty. +% \lim_{n \to \infty} F_n(u_n) \leq \lim_{n \to \infty} F_n(u^*) = +% F(u^*) < \infty. +% \end{equation} +% From the coercivity in \eqref{eq:fn_coercive} we obtain that +% the sequence $u_n$ is bounded in $L^2(\Omega)$ and thus contains a +% weakly convergent subsequence. +% +% Assume that the convergence in \eqref{eq:un_u_weak} does not hold, +% and denote the weakly convergent subsequence by $u_{n_j} +% \rightharpoonup \bar{u} \neq u^*$. By the weak sequential lower +% semicontinuity we have +% \begin{equation} +% \begin{aligned} +% F(\bar{u}) &\leq \liminf_{j \to \infty} F\left(u_{n_j}\right) \\ +% &= \liminf_{j \to \infty} \left(F\left(u_{n_j}\right) - +% F_{n_j}\left(u_{n_j}\right)\right) + \liminf_{j \to \infty} +% F_{n_j}\left(u_{n_j}\right) \\ +% &= \liminf_{j \to \infty} F_{n_j}\left(u_{n_j}\right) \\ +% &\leq F(u^*) +% \end{aligned} +% \end{equation} +% which contradicts the uniqueness of $u^*$ and thus we can conclude +% that the solutions of the perturbed problems converge $u_n +% \rightharpoonup \bar{u} = u^*$. +%\end{proof} +% +%Note that these are properties of the continuous problem, and that the +%discretizations and numerical methods used for approximating a solution +%can have its own issues with consistency, convergence and stability. \section{Anisotropic coarea formula} @@ -1212,10 +1212,10 @@ a continuous real-valued function on a nonempty compact space is bounded above. Thus the eigenvalues $s_1 \geq s_2$ of $S_\rho(x)$ are bounded above and by the construction in \eqref{eq:sigma_construction}, there exists uniform bound $k$ such that -the smallest eigenvalue of the anisotropy tensor $A(x)$ is bounded away +the smallest eigenvalue $\sigma_2$ of the anisotropy tensor $A(x)$ is bounded away from zero, as \begin{equation} - \lambda_2 = \left(1 + \sigma_2 = \left(1 + \frac{(s_1 - s_2)^2}{\omega^2}\right)^{-1} \geq \left(1 + \frac{s_1^2}{\omega^2}\right)^{-1} \geq k > 0. \end{equation} diff --git a/discrete.tex b/discrete.tex index ee35cb3..fd98fbf 100644 --- a/discrete.tex +++ b/discrete.tex @@ -586,6 +586,7 @@ their argument and then ignore all pixels except the ones they actually depend on. \subsection{Graph construction} +\label{sec:graph_construction} \begin{figure}[t] \input{fig/norm_subgraph} @@ -606,7 +607,8 @@ term coming from our aim to minimize the total variation. \begin{table}[b] \centering - \caption{Each row represents one of the two possible values of + \caption[Different combinations for the term + $F_\lambda^x(u^\lambda_x)$]{Each row represents one of the two possible values of $u^\lambda_x \in \{0,1\}$. The functional $F_\lambda^x(u^\lambda_x)$ and minimum cut obtaining this configuration is shown. The last two columns show the capacities of the cut for each of the two @@ -684,7 +686,8 @@ of $u^\lambda_x$ corresponds to cuts in the graph. \begin{table}[t] \centering - \caption{An overview of the possible configurations of the variables + \caption[Different combinations for the term $F^{x,y}(u^\lambda_x, + u^\lambda_y)$]{An overview of the possible configurations of the variables in the term $F^{x,y}(u^\lambda_x, u^\lambda_y)$. For each configuration the corresponding functional value and the cut yielding this configuration is shown. The last two columns show the capacities diff --git a/fig/circ_rule.tex b/fig/circ_rule.tex index 2c01ca7..9d41fa7 100644 --- a/fig/circ_rule.tex +++ b/fig/circ_rule.tex @@ -33,11 +33,10 @@ \end{tikzpicture} \caption[Consistency argument for the angle discretization]{% - \fixme{noooo} - We showed that the angular difference between subsequent angle - parameters goes to zero. The discretization in the $\phi$ dimension + We showed that the maximal angle difference $\Delta \phi_k$ goes to + zero. The discretization in the $\phi$ dimension can be viewed as a rectangle approximation rule of the integral, as - the summand is evaluated in one end of the interval $[\phi_k, - \phi_{k+1}]$. + the summand is evaluated at $\phi_k$, somewhere inside the interval $\Delta + \phi_k$. } \label{fig:circ_rule} diff --git a/fig/factory/contrast.m b/fig/factory/contrast.m index 5f56138..1204f55 100644 --- a/fig/factory/contrast.m +++ b/fig/factory/contrast.m @@ -1,6 +1,6 @@ tv = imread('finger/r_p2_n32_b15000_g1000000000000_r10_s3.pgm'); atv1 = imread('finger/r_p2_n32_b15000_g150_r10_s3.pgm'); -atv2 = imread('finger/r_p2_n32_b21450_g150_r10_s3.pgm'); +atv2 = imread('finger/r_p2_n32_b20970_g150_r10_s3.pgm'); close all; hold on; @@ -23,7 +23,7 @@ plot(atv2(100,:), 'g'); plot(tv(100,:), 'b'); box("off"); axis([0 256 50 220]); -h = legend('Anisotropic TV, $\beta$ = 15000 ', 'Anisotropic TV, $\beta$ = 21450', 'Isotropic TV'); +h = legend('Anisotropic TV, $\beta$ = 15000 ', 'Anisotropic TV, $\beta$ = 20970', 'Isotropic TV'); set (h, 'fontsize', 9); legend('boxoff'); print -dtikz "-S400,200" contrast.tex diff --git a/fig/factory/contrast.tex b/fig/factory/contrast.tex index 97f20bb..7a6daae 100644 --- a/fig/factory/contrast.tex +++ b/fig/factory/contrast.tex @@ -1,7 +1,7 @@ % Title: glps_renderer figure % Creator: GL2PS 1.3.8, (C) 1999-2012 C. Geuzaine % For: Octave -% CreationDate: Wed Jan 28 18:12:01 2015 +% CreationDate: Fri Jan 30 17:04:57 2015 \begin{pgfpicture} \pgfsetlinewidth{0.01pt} \color[rgb]{1.000000,1.000000,1.000000} @@ -875,38 +875,38 @@ \pgflineto{\pgfpoint{360.789062pt}{42.135284pt}} \pgfusepath{stroke} \color[rgb]{0.000000,1.000000,0.000000} -\pgfpathmoveto{\pgfpoint{54.421875pt}{73.776466pt}} -\pgflineto{\pgfpoint{53.210938pt}{73.776466pt}} +\pgfpathmoveto{\pgfpoint{54.421875pt}{72.817642pt}} +\pgflineto{\pgfpoint{53.210938pt}{72.817642pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{55.632812pt}{73.776466pt}} -\pgflineto{\pgfpoint{54.421875pt}{73.776466pt}} +\pgfpathmoveto{\pgfpoint{55.632812pt}{72.817642pt}} +\pgflineto{\pgfpoint{54.421875pt}{72.817642pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{56.843750pt}{73.776466pt}} -\pgflineto{\pgfpoint{55.632812pt}{73.776466pt}} +\pgfpathmoveto{\pgfpoint{56.843750pt}{72.817642pt}} +\pgflineto{\pgfpoint{55.632812pt}{72.817642pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{58.054688pt}{73.776466pt}} -\pgflineto{\pgfpoint{56.843750pt}{73.776466pt}} +\pgfpathmoveto{\pgfpoint{58.054688pt}{72.817642pt}} +\pgflineto{\pgfpoint{56.843750pt}{72.817642pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{59.265625pt}{73.776466pt}} -\pgflineto{\pgfpoint{58.054688pt}{73.776466pt}} +\pgfpathmoveto{\pgfpoint{59.265625pt}{72.817642pt}} +\pgflineto{\pgfpoint{58.054688pt}{72.817642pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{60.476562pt}{102.541176pt}} -\pgflineto{\pgfpoint{59.265625pt}{73.776466pt}} +\pgfpathmoveto{\pgfpoint{60.476562pt}{104.458824pt}} +\pgflineto{\pgfpoint{59.265625pt}{72.817642pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{61.687500pt}{102.541176pt}} -\pgflineto{\pgfpoint{60.476562pt}{102.541176pt}} +\pgfpathmoveto{\pgfpoint{61.687500pt}{104.458824pt}} +\pgflineto{\pgfpoint{60.476562pt}{104.458824pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{62.898438pt}{102.541176pt}} -\pgflineto{\pgfpoint{61.687500pt}{102.541176pt}} +\pgfpathmoveto{\pgfpoint{62.898438pt}{104.458824pt}} +\pgflineto{\pgfpoint{61.687500pt}{104.458824pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{64.109375pt}{102.541176pt}} -\pgflineto{\pgfpoint{62.898438pt}{102.541176pt}} +\pgfpathmoveto{\pgfpoint{64.109375pt}{104.458824pt}} +\pgflineto{\pgfpoint{62.898438pt}{104.458824pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{65.320312pt}{102.541176pt}} -\pgflineto{\pgfpoint{64.109375pt}{102.541176pt}} +\pgfpathmoveto{\pgfpoint{65.320312pt}{104.458824pt}} +\pgflineto{\pgfpoint{64.109375pt}{104.458824pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{66.531250pt}{78.570580pt}} -\pgflineto{\pgfpoint{65.320312pt}{102.541176pt}} +\pgflineto{\pgfpoint{65.320312pt}{104.458824pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{67.742188pt}{78.570580pt}} \pgflineto{\pgfpoint{66.531250pt}{78.570580pt}} @@ -929,218 +929,218 @@ \pgfpathmoveto{\pgfpoint{75.007805pt}{78.570580pt}} \pgflineto{\pgfpoint{73.796867pt}{78.570580pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{76.218750pt}{79.529404pt}} +\pgfpathmoveto{\pgfpoint{76.218750pt}{80.488228pt}} \pgflineto{\pgfpoint{75.007805pt}{78.570580pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{77.429688pt}{79.529404pt}} -\pgflineto{\pgfpoint{76.218750pt}{79.529404pt}} +\pgfpathmoveto{\pgfpoint{77.429688pt}{80.488228pt}} +\pgflineto{\pgfpoint{76.218750pt}{80.488228pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{78.640625pt}{79.529404pt}} -\pgflineto{\pgfpoint{77.429688pt}{79.529404pt}} +\pgfpathmoveto{\pgfpoint{78.640625pt}{80.488228pt}} +\pgflineto{\pgfpoint{77.429688pt}{80.488228pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{79.851555pt}{79.529404pt}} -\pgflineto{\pgfpoint{78.640625pt}{79.529404pt}} +\pgfpathmoveto{\pgfpoint{79.851555pt}{80.488228pt}} +\pgflineto{\pgfpoint{78.640625pt}{80.488228pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{81.062492pt}{75.694107pt}} -\pgflineto{\pgfpoint{79.851555pt}{79.529404pt}} +\pgfpathmoveto{\pgfpoint{81.062492pt}{74.735283pt}} +\pgflineto{\pgfpoint{79.851555pt}{80.488228pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{82.273438pt}{75.694107pt}} -\pgflineto{\pgfpoint{81.062492pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{82.273438pt}{74.735283pt}} +\pgflineto{\pgfpoint{81.062492pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{83.484375pt}{75.694107pt}} -\pgflineto{\pgfpoint{82.273438pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{83.484375pt}{74.735283pt}} +\pgflineto{\pgfpoint{82.273438pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{84.695312pt}{75.694107pt}} -\pgflineto{\pgfpoint{83.484375pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{84.695312pt}{74.735283pt}} +\pgflineto{\pgfpoint{83.484375pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{85.906242pt}{75.694107pt}} -\pgflineto{\pgfpoint{84.695312pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{85.906242pt}{74.735283pt}} +\pgflineto{\pgfpoint{84.695312pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{87.117180pt}{75.694107pt}} -\pgflineto{\pgfpoint{85.906242pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{87.117180pt}{74.735283pt}} +\pgflineto{\pgfpoint{85.906242pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{88.328125pt}{75.694107pt}} -\pgflineto{\pgfpoint{87.117180pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{88.328125pt}{74.735283pt}} +\pgflineto{\pgfpoint{87.117180pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{89.539062pt}{75.694107pt}} -\pgflineto{\pgfpoint{88.328125pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{89.539062pt}{74.735283pt}} +\pgflineto{\pgfpoint{88.328125pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{90.750000pt}{75.694107pt}} -\pgflineto{\pgfpoint{89.539062pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{90.750000pt}{74.735283pt}} +\pgflineto{\pgfpoint{89.539062pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{91.960930pt}{75.694107pt}} -\pgflineto{\pgfpoint{90.750000pt}{75.694107pt}} +\pgfpathmoveto{\pgfpoint{91.960930pt}{74.735283pt}} +\pgflineto{\pgfpoint{90.750000pt}{74.735283pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{93.171867pt}{79.529404pt}} -\pgflineto{\pgfpoint{91.960930pt}{75.694107pt}} +\pgflineto{\pgfpoint{91.960930pt}{74.735283pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{94.382812pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{94.382812pt}{89.117630pt}} \pgflineto{\pgfpoint{93.171867pt}{79.529404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{95.593750pt}{88.158813pt}} -\pgflineto{\pgfpoint{94.382812pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{95.593750pt}{89.117630pt}} +\pgflineto{\pgfpoint{94.382812pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{96.804688pt}{88.158813pt}} -\pgflineto{\pgfpoint{95.593750pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{96.804688pt}{89.117630pt}} +\pgflineto{\pgfpoint{95.593750pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{98.015617pt}{88.158813pt}} -\pgflineto{\pgfpoint{96.804688pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{98.015617pt}{89.117630pt}} +\pgflineto{\pgfpoint{96.804688pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{99.226555pt}{88.158813pt}} -\pgflineto{\pgfpoint{98.015617pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{99.226555pt}{89.117630pt}} +\pgflineto{\pgfpoint{98.015617pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{100.437500pt}{88.158813pt}} -\pgflineto{\pgfpoint{99.226555pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{100.437500pt}{89.117630pt}} +\pgflineto{\pgfpoint{99.226555pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{101.648438pt}{88.158813pt}} -\pgflineto{\pgfpoint{100.437500pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{101.648438pt}{89.117630pt}} +\pgflineto{\pgfpoint{100.437500pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{102.859375pt}{88.158813pt}} -\pgflineto{\pgfpoint{101.648438pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{102.859375pt}{89.117630pt}} +\pgflineto{\pgfpoint{101.648438pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{104.070312pt}{88.158813pt}} -\pgflineto{\pgfpoint{102.859375pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{104.070312pt}{89.117630pt}} +\pgflineto{\pgfpoint{102.859375pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{105.281242pt}{88.158813pt}} -\pgflineto{\pgfpoint{104.070312pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{105.281242pt}{89.117630pt}} +\pgflineto{\pgfpoint{104.070312pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{106.492188pt}{88.158813pt}} -\pgflineto{\pgfpoint{105.281242pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{106.492188pt}{89.117630pt}} +\pgflineto{\pgfpoint{105.281242pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{107.703117pt}{82.405876pt}} -\pgflineto{\pgfpoint{106.492188pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{107.703117pt}{81.447052pt}} +\pgflineto{\pgfpoint{106.492188pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{108.914062pt}{82.405876pt}} -\pgflineto{\pgfpoint{107.703117pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{108.914062pt}{81.447052pt}} +\pgflineto{\pgfpoint{107.703117pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{110.124992pt}{82.405876pt}} -\pgflineto{\pgfpoint{108.914062pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{110.124992pt}{81.447052pt}} +\pgflineto{\pgfpoint{108.914062pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{111.335930pt}{88.158813pt}} -\pgflineto{\pgfpoint{110.124992pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{111.335930pt}{89.117630pt}} +\pgflineto{\pgfpoint{110.124992pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{112.546875pt}{88.158813pt}} -\pgflineto{\pgfpoint{111.335930pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{112.546875pt}{89.117630pt}} +\pgflineto{\pgfpoint{111.335930pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{113.757805pt}{88.158813pt}} -\pgflineto{\pgfpoint{112.546875pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{113.757805pt}{89.117630pt}} +\pgflineto{\pgfpoint{112.546875pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{114.968750pt}{88.158813pt}} -\pgflineto{\pgfpoint{113.757805pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{114.968750pt}{89.117630pt}} +\pgflineto{\pgfpoint{113.757805pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{116.179680pt}{82.405876pt}} -\pgflineto{\pgfpoint{114.968750pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{116.179680pt}{81.447052pt}} +\pgflineto{\pgfpoint{114.968750pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{117.390617pt}{82.405876pt}} -\pgflineto{\pgfpoint{116.179680pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{117.390617pt}{81.447052pt}} +\pgflineto{\pgfpoint{116.179680pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{118.601562pt}{82.405876pt}} -\pgflineto{\pgfpoint{117.390617pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{118.601562pt}{81.447052pt}} +\pgflineto{\pgfpoint{117.390617pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{119.812492pt}{82.405876pt}} -\pgflineto{\pgfpoint{118.601562pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{119.812492pt}{81.447052pt}} +\pgflineto{\pgfpoint{118.601562pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{121.023438pt}{88.158813pt}} -\pgflineto{\pgfpoint{119.812492pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{121.023438pt}{89.117630pt}} +\pgflineto{\pgfpoint{119.812492pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{122.234367pt}{82.405876pt}} -\pgflineto{\pgfpoint{121.023438pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{122.234367pt}{81.447052pt}} +\pgflineto{\pgfpoint{121.023438pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{123.445305pt}{109.252930pt}} -\pgflineto{\pgfpoint{122.234367pt}{82.405876pt}} +\pgfpathmoveto{\pgfpoint{123.445305pt}{110.211754pt}} +\pgflineto{\pgfpoint{122.234367pt}{81.447052pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{124.656250pt}{109.252930pt}} -\pgflineto{\pgfpoint{123.445305pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{124.656250pt}{110.211754pt}} +\pgflineto{\pgfpoint{123.445305pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{125.867180pt}{109.252930pt}} -\pgflineto{\pgfpoint{124.656250pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{125.867180pt}{110.211754pt}} +\pgflineto{\pgfpoint{124.656250pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{127.078125pt}{109.252930pt}} -\pgflineto{\pgfpoint{125.867180pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{127.078125pt}{110.211754pt}} +\pgflineto{\pgfpoint{125.867180pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{128.289062pt}{109.252930pt}} -\pgflineto{\pgfpoint{127.078125pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{128.289062pt}{110.211754pt}} +\pgflineto{\pgfpoint{127.078125pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{129.500000pt}{109.252930pt}} -\pgflineto{\pgfpoint{128.289062pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{129.500000pt}{110.211754pt}} +\pgflineto{\pgfpoint{128.289062pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{130.710938pt}{109.252930pt}} -\pgflineto{\pgfpoint{129.500000pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{130.710938pt}{110.211754pt}} +\pgflineto{\pgfpoint{129.500000pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{131.921875pt}{109.252930pt}} -\pgflineto{\pgfpoint{130.710938pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{131.921875pt}{110.211754pt}} +\pgflineto{\pgfpoint{130.710938pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{133.132812pt}{109.252930pt}} -\pgflineto{\pgfpoint{131.921875pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{133.132812pt}{110.211754pt}} +\pgflineto{\pgfpoint{131.921875pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{134.343750pt}{109.252930pt}} -\pgflineto{\pgfpoint{133.132812pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{134.343750pt}{110.211754pt}} +\pgflineto{\pgfpoint{133.132812pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{135.554688pt}{109.252930pt}} -\pgflineto{\pgfpoint{134.343750pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{135.554688pt}{110.211754pt}} +\pgflineto{\pgfpoint{134.343750pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{136.765625pt}{109.252930pt}} -\pgflineto{\pgfpoint{135.554688pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{136.765625pt}{110.211754pt}} +\pgflineto{\pgfpoint{135.554688pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{137.976562pt}{109.252930pt}} -\pgflineto{\pgfpoint{136.765625pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{137.976562pt}{110.211754pt}} +\pgflineto{\pgfpoint{136.765625pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{139.187500pt}{90.076462pt}} -\pgflineto{\pgfpoint{137.976562pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{139.187500pt}{89.117630pt}} +\pgflineto{\pgfpoint{137.976562pt}{110.211754pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{140.398438pt}{90.076462pt}} -\pgflineto{\pgfpoint{139.187500pt}{90.076462pt}} +\pgfpathmoveto{\pgfpoint{140.398438pt}{89.117630pt}} +\pgflineto{\pgfpoint{139.187500pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{141.609375pt}{65.147049pt}} -\pgflineto{\pgfpoint{140.398438pt}{90.076462pt}} +\pgfpathmoveto{\pgfpoint{141.609375pt}{64.188232pt}} +\pgflineto{\pgfpoint{140.398438pt}{89.117630pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{142.820312pt}{86.241173pt}} -\pgflineto{\pgfpoint{141.609375pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{142.820312pt}{88.158813pt}} +\pgflineto{\pgfpoint{141.609375pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{144.031250pt}{65.147049pt}} -\pgflineto{\pgfpoint{142.820312pt}{86.241173pt}} +\pgfpathmoveto{\pgfpoint{144.031250pt}{64.188232pt}} +\pgflineto{\pgfpoint{142.820312pt}{88.158813pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{145.242188pt}{65.147049pt}} -\pgflineto{\pgfpoint{144.031250pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{145.242188pt}{64.188232pt}} +\pgflineto{\pgfpoint{144.031250pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{146.453125pt}{65.147049pt}} -\pgflineto{\pgfpoint{145.242188pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{146.453125pt}{64.188232pt}} +\pgflineto{\pgfpoint{145.242188pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{147.664062pt}{65.147049pt}} -\pgflineto{\pgfpoint{146.453125pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{147.664062pt}{64.188232pt}} +\pgflineto{\pgfpoint{146.453125pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{148.875000pt}{125.552933pt}} -\pgflineto{\pgfpoint{147.664062pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{148.875000pt}{127.470581pt}} +\pgflineto{\pgfpoint{147.664062pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{150.085938pt}{127.470581pt}} -\pgflineto{\pgfpoint{148.875000pt}{125.552933pt}} +\pgfpathmoveto{\pgfpoint{150.085938pt}{128.429398pt}} +\pgflineto{\pgfpoint{148.875000pt}{127.470581pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{151.296875pt}{127.470581pt}} -\pgflineto{\pgfpoint{150.085938pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{151.296875pt}{128.429398pt}} +\pgflineto{\pgfpoint{150.085938pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{152.507812pt}{127.470581pt}} -\pgflineto{\pgfpoint{151.296875pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{152.507812pt}{128.429398pt}} +\pgflineto{\pgfpoint{151.296875pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{153.718750pt}{127.470581pt}} -\pgflineto{\pgfpoint{152.507812pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{153.718750pt}{128.429398pt}} +\pgflineto{\pgfpoint{152.507812pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{154.929688pt}{127.470581pt}} -\pgflineto{\pgfpoint{153.718750pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{154.929688pt}{128.429398pt}} +\pgflineto{\pgfpoint{153.718750pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{156.140625pt}{127.470581pt}} -\pgflineto{\pgfpoint{154.929688pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{156.140625pt}{128.429398pt}} +\pgflineto{\pgfpoint{154.929688pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{157.351562pt}{127.470581pt}} -\pgflineto{\pgfpoint{156.140625pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{157.351562pt}{128.429398pt}} +\pgflineto{\pgfpoint{156.140625pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{158.562500pt}{127.470581pt}} -\pgflineto{\pgfpoint{157.351562pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{158.562500pt}{128.429398pt}} +\pgflineto{\pgfpoint{157.351562pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{159.773438pt}{127.470581pt}} -\pgflineto{\pgfpoint{158.562500pt}{127.470581pt}} +\pgfpathmoveto{\pgfpoint{159.773438pt}{128.429398pt}} +\pgflineto{\pgfpoint{158.562500pt}{128.429398pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{160.984375pt}{73.776466pt}} -\pgflineto{\pgfpoint{159.773438pt}{127.470581pt}} +\pgflineto{\pgfpoint{159.773438pt}{128.429398pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{162.195312pt}{73.776466pt}} \pgflineto{\pgfpoint{160.984375pt}{73.776466pt}} @@ -1157,65 +1157,65 @@ \pgfpathmoveto{\pgfpoint{167.039062pt}{66.105881pt}} \pgflineto{\pgfpoint{165.828125pt}{73.776466pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{168.249985pt}{87.199997pt}} +\pgfpathmoveto{\pgfpoint{168.249985pt}{86.241173pt}} \pgflineto{\pgfpoint{167.039062pt}{66.105881pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{169.460922pt}{116.923523pt}} -\pgflineto{\pgfpoint{168.249985pt}{87.199997pt}} +\pgfpathmoveto{\pgfpoint{169.460922pt}{117.882347pt}} +\pgflineto{\pgfpoint{168.249985pt}{86.241173pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{170.671875pt}{116.923523pt}} -\pgflineto{\pgfpoint{169.460922pt}{116.923523pt}} +\pgfpathmoveto{\pgfpoint{170.671875pt}{117.882347pt}} +\pgflineto{\pgfpoint{169.460922pt}{117.882347pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{171.882812pt}{116.923523pt}} -\pgflineto{\pgfpoint{170.671875pt}{116.923523pt}} +\pgfpathmoveto{\pgfpoint{171.882812pt}{117.882347pt}} +\pgflineto{\pgfpoint{170.671875pt}{117.882347pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{173.093750pt}{116.923523pt}} -\pgflineto{\pgfpoint{171.882812pt}{116.923523pt}} +\pgfpathmoveto{\pgfpoint{173.093750pt}{117.882347pt}} +\pgflineto{\pgfpoint{171.882812pt}{117.882347pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{174.304672pt}{116.923523pt}} -\pgflineto{\pgfpoint{173.093750pt}{116.923523pt}} +\pgfpathmoveto{\pgfpoint{174.304672pt}{117.882347pt}} +\pgflineto{\pgfpoint{173.093750pt}{117.882347pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{175.515610pt}{116.923523pt}} -\pgflineto{\pgfpoint{174.304672pt}{116.923523pt}} +\pgfpathmoveto{\pgfpoint{175.515610pt}{117.882347pt}} +\pgflineto{\pgfpoint{174.304672pt}{117.882347pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{176.726562pt}{122.676468pt}} -\pgflineto{\pgfpoint{175.515610pt}{116.923523pt}} +\pgfpathmoveto{\pgfpoint{176.726562pt}{123.635284pt}} +\pgflineto{\pgfpoint{175.515610pt}{117.882347pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{177.937500pt}{103.500000pt}} -\pgflineto{\pgfpoint{176.726562pt}{122.676468pt}} +\pgfpathmoveto{\pgfpoint{177.937500pt}{102.541176pt}} +\pgflineto{\pgfpoint{176.726562pt}{123.635284pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{179.148438pt}{99.664703pt}} -\pgflineto{\pgfpoint{177.937500pt}{103.500000pt}} +\pgfpathmoveto{\pgfpoint{179.148438pt}{98.705879pt}} +\pgflineto{\pgfpoint{177.937500pt}{102.541176pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{180.359360pt}{109.252930pt}} -\pgflineto{\pgfpoint{179.148438pt}{99.664703pt}} +\pgfpathmoveto{\pgfpoint{180.359360pt}{111.170578pt}} +\pgflineto{\pgfpoint{179.148438pt}{98.705879pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{181.570297pt}{109.252930pt}} -\pgflineto{\pgfpoint{180.359360pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{181.570297pt}{111.170578pt}} +\pgflineto{\pgfpoint{180.359360pt}{111.170578pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{182.781250pt}{109.252930pt}} -\pgflineto{\pgfpoint{181.570297pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{182.781250pt}{111.170578pt}} +\pgflineto{\pgfpoint{181.570297pt}{111.170578pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{183.992188pt}{109.252930pt}} -\pgflineto{\pgfpoint{182.781250pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{183.992188pt}{111.170578pt}} +\pgflineto{\pgfpoint{182.781250pt}{111.170578pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{185.203125pt}{109.252930pt}} -\pgflineto{\pgfpoint{183.992188pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{185.203125pt}{111.170578pt}} +\pgflineto{\pgfpoint{183.992188pt}{111.170578pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{186.414047pt}{90.076462pt}} -\pgflineto{\pgfpoint{185.203125pt}{109.252930pt}} +\pgflineto{\pgfpoint{185.203125pt}{111.170578pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{187.624985pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{187.624985pt}{111.170578pt}} \pgflineto{\pgfpoint{186.414047pt}{90.076462pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{188.835938pt}{88.158813pt}} -\pgflineto{\pgfpoint{187.624985pt}{109.252930pt}} +\pgfpathmoveto{\pgfpoint{188.835938pt}{89.117630pt}} +\pgflineto{\pgfpoint{187.624985pt}{111.170578pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{190.046875pt}{88.158813pt}} -\pgflineto{\pgfpoint{188.835938pt}{88.158813pt}} +\pgfpathmoveto{\pgfpoint{190.046875pt}{89.117630pt}} +\pgflineto{\pgfpoint{188.835938pt}{89.117630pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{191.257812pt}{77.611755pt}} -\pgflineto{\pgfpoint{190.046875pt}{88.158813pt}} +\pgflineto{\pgfpoint{190.046875pt}{89.117630pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{192.468735pt}{77.611755pt}} \pgflineto{\pgfpoint{191.257812pt}{77.611755pt}} @@ -1262,29 +1262,29 @@ \pgfpathmoveto{\pgfpoint{209.421875pt}{124.594101pt}} \pgflineto{\pgfpoint{208.210938pt}{124.594101pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{210.632797pt}{57.476460pt}} +\pgfpathmoveto{\pgfpoint{210.632797pt}{56.517643pt}} \pgflineto{\pgfpoint{209.421875pt}{124.594101pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{211.843735pt}{57.476460pt}} -\pgflineto{\pgfpoint{210.632797pt}{57.476460pt}} +\pgfpathmoveto{\pgfpoint{211.843735pt}{56.517643pt}} +\pgflineto{\pgfpoint{210.632797pt}{56.517643pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{213.054688pt}{57.476460pt}} -\pgflineto{\pgfpoint{211.843735pt}{57.476460pt}} +\pgfpathmoveto{\pgfpoint{213.054688pt}{56.517643pt}} +\pgflineto{\pgfpoint{211.843735pt}{56.517643pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{214.265625pt}{57.476460pt}} -\pgflineto{\pgfpoint{213.054688pt}{57.476460pt}} +\pgfpathmoveto{\pgfpoint{214.265625pt}{56.517643pt}} +\pgflineto{\pgfpoint{213.054688pt}{56.517643pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{215.476562pt}{57.476460pt}} -\pgflineto{\pgfpoint{214.265625pt}{57.476460pt}} +\pgfpathmoveto{\pgfpoint{215.476562pt}{56.517643pt}} +\pgflineto{\pgfpoint{214.265625pt}{56.517643pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{216.687485pt}{57.476460pt}} -\pgflineto{\pgfpoint{215.476562pt}{57.476460pt}} +\pgfpathmoveto{\pgfpoint{216.687485pt}{56.517643pt}} +\pgflineto{\pgfpoint{215.476562pt}{56.517643pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{217.898422pt}{57.476460pt}} -\pgflineto{\pgfpoint{216.687485pt}{57.476460pt}} +\pgfpathmoveto{\pgfpoint{217.898422pt}{56.517643pt}} +\pgflineto{\pgfpoint{216.687485pt}{56.517643pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{219.109375pt}{71.858818pt}} -\pgflineto{\pgfpoint{217.898422pt}{57.476460pt}} +\pgflineto{\pgfpoint{217.898422pt}{56.517643pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{220.320312pt}{71.858818pt}} \pgflineto{\pgfpoint{219.109375pt}{71.858818pt}} @@ -1292,32 +1292,32 @@ \pgfpathmoveto{\pgfpoint{221.531250pt}{131.305878pt}} \pgflineto{\pgfpoint{220.320312pt}{71.858818pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{222.742172pt}{131.305878pt}} +\pgfpathmoveto{\pgfpoint{222.742172pt}{132.264694pt}} \pgflineto{\pgfpoint{221.531250pt}{131.305878pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{223.953110pt}{131.305878pt}} -\pgflineto{\pgfpoint{222.742172pt}{131.305878pt}} +\pgfpathmoveto{\pgfpoint{223.953110pt}{132.264694pt}} +\pgflineto{\pgfpoint{222.742172pt}{132.264694pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{225.164062pt}{131.305878pt}} -\pgflineto{\pgfpoint{223.953110pt}{131.305878pt}} +\pgfpathmoveto{\pgfpoint{225.164062pt}{132.264694pt}} +\pgflineto{\pgfpoint{223.953110pt}{132.264694pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{226.375000pt}{131.305878pt}} -\pgflineto{\pgfpoint{225.164062pt}{131.305878pt}} +\pgfpathmoveto{\pgfpoint{226.375000pt}{132.264694pt}} +\pgflineto{\pgfpoint{225.164062pt}{132.264694pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{227.585938pt}{131.305878pt}} -\pgflineto{\pgfpoint{226.375000pt}{131.305878pt}} +\pgfpathmoveto{\pgfpoint{227.585938pt}{132.264694pt}} +\pgflineto{\pgfpoint{226.375000pt}{132.264694pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{228.796860pt}{131.305878pt}} -\pgflineto{\pgfpoint{227.585938pt}{131.305878pt}} +\pgfpathmoveto{\pgfpoint{228.796860pt}{132.264694pt}} +\pgflineto{\pgfpoint{227.585938pt}{132.264694pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{230.007797pt}{110.211754pt}} -\pgflineto{\pgfpoint{228.796860pt}{131.305878pt}} +\pgfpathmoveto{\pgfpoint{230.007797pt}{111.170578pt}} +\pgflineto{\pgfpoint{228.796860pt}{132.264694pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{231.218750pt}{67.064697pt}} -\pgflineto{\pgfpoint{230.007797pt}{110.211754pt}} +\pgfpathmoveto{\pgfpoint{231.218750pt}{66.105881pt}} +\pgflineto{\pgfpoint{230.007797pt}{111.170578pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{232.429688pt}{63.229404pt}} -\pgflineto{\pgfpoint{231.218750pt}{67.064697pt}} +\pgflineto{\pgfpoint{231.218750pt}{66.105881pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{233.640625pt}{63.229404pt}} \pgflineto{\pgfpoint{232.429688pt}{63.229404pt}} @@ -1331,11 +1331,11 @@ \pgfpathmoveto{\pgfpoint{237.273438pt}{63.229404pt}} \pgflineto{\pgfpoint{236.062500pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{238.484375pt}{70.899994pt}} +\pgfpathmoveto{\pgfpoint{238.484375pt}{69.941170pt}} \pgflineto{\pgfpoint{237.273438pt}{63.229404pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{239.695312pt}{72.817642pt}} -\pgflineto{\pgfpoint{238.484375pt}{70.899994pt}} +\pgflineto{\pgfpoint{238.484375pt}{69.941170pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{240.906235pt}{72.817642pt}} \pgflineto{\pgfpoint{239.695312pt}{72.817642pt}} @@ -1349,227 +1349,227 @@ \pgfpathmoveto{\pgfpoint{244.539062pt}{130.347046pt}} \pgflineto{\pgfpoint{243.328125pt}{130.347046pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{245.750000pt}{137.058823pt}} +\pgfpathmoveto{\pgfpoint{245.750000pt}{138.976471pt}} \pgflineto{\pgfpoint{244.539062pt}{130.347046pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{246.960922pt}{137.058823pt}} -\pgflineto{\pgfpoint{245.750000pt}{137.058823pt}} +\pgfpathmoveto{\pgfpoint{246.960922pt}{138.976471pt}} +\pgflineto{\pgfpoint{245.750000pt}{138.976471pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{248.171875pt}{137.058823pt}} -\pgflineto{\pgfpoint{246.960922pt}{137.058823pt}} +\pgfpathmoveto{\pgfpoint{248.171875pt}{138.976471pt}} +\pgflineto{\pgfpoint{246.960922pt}{138.976471pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{249.382812pt}{137.058823pt}} -\pgflineto{\pgfpoint{248.171875pt}{137.058823pt}} +\pgfpathmoveto{\pgfpoint{249.382812pt}{138.976471pt}} +\pgflineto{\pgfpoint{248.171875pt}{138.976471pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{250.593750pt}{137.058823pt}} -\pgflineto{\pgfpoint{249.382812pt}{137.058823pt}} +\pgfpathmoveto{\pgfpoint{250.593750pt}{138.976471pt}} +\pgflineto{\pgfpoint{249.382812pt}{138.976471pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{251.804672pt}{137.058823pt}} -\pgflineto{\pgfpoint{250.593750pt}{137.058823pt}} +\pgfpathmoveto{\pgfpoint{251.804672pt}{138.976471pt}} +\pgflineto{\pgfpoint{250.593750pt}{138.976471pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{253.015610pt}{118.841171pt}} -\pgflineto{\pgfpoint{251.804672pt}{137.058823pt}} +\pgflineto{\pgfpoint{251.804672pt}{138.976471pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{254.226562pt}{85.282349pt}} +\pgfpathmoveto{\pgfpoint{254.226562pt}{88.158813pt}} \pgflineto{\pgfpoint{253.015610pt}{118.841171pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{255.437500pt}{69.941170pt}} -\pgflineto{\pgfpoint{254.226562pt}{85.282349pt}} +\pgfpathmoveto{\pgfpoint{255.437500pt}{68.982346pt}} +\pgflineto{\pgfpoint{254.226562pt}{88.158813pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{256.648438pt}{69.941170pt}} -\pgflineto{\pgfpoint{255.437500pt}{69.941170pt}} +\pgfpathmoveto{\pgfpoint{256.648438pt}{68.982346pt}} +\pgflineto{\pgfpoint{255.437500pt}{68.982346pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{257.859375pt}{69.941170pt}} -\pgflineto{\pgfpoint{256.648438pt}{69.941170pt}} +\pgfpathmoveto{\pgfpoint{257.859375pt}{68.982346pt}} +\pgflineto{\pgfpoint{256.648438pt}{68.982346pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{259.070312pt}{69.941170pt}} -\pgflineto{\pgfpoint{257.859375pt}{69.941170pt}} +\pgfpathmoveto{\pgfpoint{259.070312pt}{68.982346pt}} +\pgflineto{\pgfpoint{257.859375pt}{68.982346pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{260.281250pt}{69.941170pt}} -\pgflineto{\pgfpoint{259.070312pt}{69.941170pt}} +\pgfpathmoveto{\pgfpoint{260.281250pt}{68.982346pt}} +\pgflineto{\pgfpoint{259.070312pt}{68.982346pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{261.492188pt}{69.941170pt}} -\pgflineto{\pgfpoint{260.281250pt}{69.941170pt}} +\pgfpathmoveto{\pgfpoint{261.492188pt}{68.982346pt}} +\pgflineto{\pgfpoint{260.281250pt}{68.982346pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{262.703125pt}{69.941170pt}} -\pgflineto{\pgfpoint{261.492188pt}{69.941170pt}} +\pgfpathmoveto{\pgfpoint{262.703125pt}{68.982346pt}} +\pgflineto{\pgfpoint{261.492188pt}{68.982346pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{263.914062pt}{120.758820pt}} -\pgflineto{\pgfpoint{262.703125pt}{69.941170pt}} +\pgfpathmoveto{\pgfpoint{263.914062pt}{119.799995pt}} +\pgflineto{\pgfpoint{262.703125pt}{68.982346pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{265.125000pt}{126.511749pt}} -\pgflineto{\pgfpoint{263.914062pt}{120.758820pt}} +\pgflineto{\pgfpoint{263.914062pt}{119.799995pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{266.335938pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{266.335938pt}{128.429398pt}} \pgflineto{\pgfpoint{265.125000pt}{126.511749pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{267.546875pt}{126.511749pt}} -\pgflineto{\pgfpoint{266.335938pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{267.546875pt}{128.429398pt}} +\pgflineto{\pgfpoint{266.335938pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{268.757812pt}{126.511749pt}} -\pgflineto{\pgfpoint{267.546875pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{268.757812pt}{128.429398pt}} +\pgflineto{\pgfpoint{267.546875pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{269.968750pt}{126.511749pt}} -\pgflineto{\pgfpoint{268.757812pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{269.968750pt}{128.429398pt}} +\pgflineto{\pgfpoint{268.757812pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{271.179688pt}{126.511749pt}} -\pgflineto{\pgfpoint{269.968750pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{271.179688pt}{128.429398pt}} +\pgflineto{\pgfpoint{269.968750pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{272.390625pt}{126.511749pt}} -\pgflineto{\pgfpoint{271.179688pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{272.390625pt}{128.429398pt}} +\pgflineto{\pgfpoint{271.179688pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{273.601562pt}{126.511749pt}} -\pgflineto{\pgfpoint{272.390625pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{273.601562pt}{128.429398pt}} +\pgflineto{\pgfpoint{272.390625pt}{128.429398pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{274.812500pt}{109.252930pt}} -\pgflineto{\pgfpoint{273.601562pt}{126.511749pt}} +\pgfpathmoveto{\pgfpoint{274.812500pt}{112.129402pt}} +\pgflineto{\pgfpoint{273.601562pt}{128.429398pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{276.023438pt}{100.623528pt}} -\pgflineto{\pgfpoint{274.812500pt}{109.252930pt}} +\pgflineto{\pgfpoint{274.812500pt}{112.129402pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{277.234375pt}{100.623528pt}} \pgflineto{\pgfpoint{276.023438pt}{100.623528pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{278.445312pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{278.445312pt}{64.188232pt}} \pgflineto{\pgfpoint{277.234375pt}{100.623528pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{279.656250pt}{65.147049pt}} -\pgflineto{\pgfpoint{278.445312pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{279.656250pt}{64.188232pt}} +\pgflineto{\pgfpoint{278.445312pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{280.867188pt}{65.147049pt}} -\pgflineto{\pgfpoint{279.656250pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{280.867188pt}{64.188232pt}} +\pgflineto{\pgfpoint{279.656250pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{282.078125pt}{65.147049pt}} -\pgflineto{\pgfpoint{280.867188pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{282.078125pt}{64.188232pt}} +\pgflineto{\pgfpoint{280.867188pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{283.289062pt}{65.147049pt}} -\pgflineto{\pgfpoint{282.078125pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{283.289062pt}{64.188232pt}} +\pgflineto{\pgfpoint{282.078125pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{284.499969pt}{65.147049pt}} -\pgflineto{\pgfpoint{283.289062pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{284.499969pt}{64.188232pt}} +\pgflineto{\pgfpoint{283.289062pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{285.710938pt}{134.182343pt}} -\pgflineto{\pgfpoint{284.499969pt}{65.147049pt}} +\pgfpathmoveto{\pgfpoint{285.710938pt}{135.141174pt}} +\pgflineto{\pgfpoint{284.499969pt}{64.188232pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{286.921875pt}{134.182343pt}} -\pgflineto{\pgfpoint{285.710938pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{286.921875pt}{135.141174pt}} +\pgflineto{\pgfpoint{285.710938pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{288.132812pt}{134.182343pt}} -\pgflineto{\pgfpoint{286.921875pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{288.132812pt}{135.141174pt}} +\pgflineto{\pgfpoint{286.921875pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{289.343750pt}{134.182343pt}} -\pgflineto{\pgfpoint{288.132812pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{289.343750pt}{135.141174pt}} +\pgflineto{\pgfpoint{288.132812pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{290.554657pt}{134.182343pt}} -\pgflineto{\pgfpoint{289.343750pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{290.554657pt}{135.141174pt}} +\pgflineto{\pgfpoint{289.343750pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{291.765625pt}{134.182343pt}} -\pgflineto{\pgfpoint{290.554657pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{291.765625pt}{135.141174pt}} +\pgflineto{\pgfpoint{290.554657pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{292.976562pt}{134.182343pt}} -\pgflineto{\pgfpoint{291.765625pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{292.976562pt}{135.141174pt}} +\pgflineto{\pgfpoint{291.765625pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{294.187500pt}{134.182343pt}} -\pgflineto{\pgfpoint{292.976562pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{294.187500pt}{135.141174pt}} +\pgflineto{\pgfpoint{292.976562pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{295.398438pt}{55.558819pt}} -\pgflineto{\pgfpoint{294.187500pt}{134.182343pt}} +\pgfpathmoveto{\pgfpoint{295.398438pt}{54.599995pt}} +\pgflineto{\pgfpoint{294.187500pt}{135.141174pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{296.609344pt}{55.558819pt}} -\pgflineto{\pgfpoint{295.398438pt}{55.558819pt}} +\pgfpathmoveto{\pgfpoint{296.609344pt}{54.599995pt}} +\pgflineto{\pgfpoint{295.398438pt}{54.599995pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{297.820312pt}{55.558819pt}} -\pgflineto{\pgfpoint{296.609344pt}{55.558819pt}} +\pgfpathmoveto{\pgfpoint{297.820312pt}{54.599995pt}} +\pgflineto{\pgfpoint{296.609344pt}{54.599995pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{299.031250pt}{55.558819pt}} -\pgflineto{\pgfpoint{297.820312pt}{55.558819pt}} +\pgfpathmoveto{\pgfpoint{299.031250pt}{54.599995pt}} +\pgflineto{\pgfpoint{297.820312pt}{54.599995pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{300.242188pt}{55.558819pt}} -\pgflineto{\pgfpoint{299.031250pt}{55.558819pt}} +\pgfpathmoveto{\pgfpoint{300.242188pt}{54.599995pt}} +\pgflineto{\pgfpoint{299.031250pt}{54.599995pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{301.453125pt}{55.558819pt}} -\pgflineto{\pgfpoint{300.242188pt}{55.558819pt}} +\pgfpathmoveto{\pgfpoint{301.453125pt}{54.599995pt}} +\pgflineto{\pgfpoint{300.242188pt}{54.599995pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{302.664032pt}{57.476460pt}} -\pgflineto{\pgfpoint{301.453125pt}{55.558819pt}} +\pgflineto{\pgfpoint{301.453125pt}{54.599995pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{303.875000pt}{55.558819pt}} +\pgfpathmoveto{\pgfpoint{303.875000pt}{54.599995pt}} \pgflineto{\pgfpoint{302.664032pt}{57.476460pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{305.085938pt}{83.364700pt}} -\pgflineto{\pgfpoint{303.875000pt}{55.558819pt}} +\pgfpathmoveto{\pgfpoint{305.085938pt}{82.405876pt}} +\pgflineto{\pgfpoint{303.875000pt}{54.599995pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{306.296875pt}{83.364700pt}} -\pgflineto{\pgfpoint{305.085938pt}{83.364700pt}} +\pgfpathmoveto{\pgfpoint{306.296875pt}{82.405876pt}} +\pgflineto{\pgfpoint{305.085938pt}{82.405876pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{307.507812pt}{120.758820pt}} -\pgflineto{\pgfpoint{306.296875pt}{83.364700pt}} +\pgfpathmoveto{\pgfpoint{307.507812pt}{121.717644pt}} +\pgflineto{\pgfpoint{306.296875pt}{82.405876pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{308.718719pt}{120.758820pt}} -\pgflineto{\pgfpoint{307.507812pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{308.718719pt}{121.717644pt}} +\pgflineto{\pgfpoint{307.507812pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{309.929688pt}{120.758820pt}} -\pgflineto{\pgfpoint{308.718719pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{309.929688pt}{121.717644pt}} +\pgflineto{\pgfpoint{308.718719pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{311.140625pt}{120.758820pt}} -\pgflineto{\pgfpoint{309.929688pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{311.140625pt}{121.717644pt}} +\pgflineto{\pgfpoint{309.929688pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{312.351562pt}{110.211754pt}} -\pgflineto{\pgfpoint{311.140625pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{312.351562pt}{111.170578pt}} +\pgflineto{\pgfpoint{311.140625pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{313.562500pt}{110.211754pt}} -\pgflineto{\pgfpoint{312.351562pt}{110.211754pt}} +\pgfpathmoveto{\pgfpoint{313.562500pt}{111.170578pt}} +\pgflineto{\pgfpoint{312.351562pt}{111.170578pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{314.773407pt}{64.188232pt}} -\pgflineto{\pgfpoint{313.562500pt}{110.211754pt}} +\pgfpathmoveto{\pgfpoint{314.773407pt}{63.229404pt}} +\pgflineto{\pgfpoint{313.562500pt}{111.170578pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{315.984375pt}{64.188232pt}} -\pgflineto{\pgfpoint{314.773407pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{315.984375pt}{63.229404pt}} +\pgflineto{\pgfpoint{314.773407pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{317.195312pt}{64.188232pt}} -\pgflineto{\pgfpoint{315.984375pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{317.195312pt}{63.229404pt}} +\pgflineto{\pgfpoint{315.984375pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{318.406250pt}{64.188232pt}} -\pgflineto{\pgfpoint{317.195312pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{318.406250pt}{63.229404pt}} +\pgflineto{\pgfpoint{317.195312pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{319.617188pt}{64.188232pt}} -\pgflineto{\pgfpoint{318.406250pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{319.617188pt}{63.229404pt}} +\pgflineto{\pgfpoint{318.406250pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{320.828094pt}{64.188232pt}} -\pgflineto{\pgfpoint{319.617188pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{320.828094pt}{63.229404pt}} +\pgflineto{\pgfpoint{319.617188pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{322.039062pt}{64.188232pt}} -\pgflineto{\pgfpoint{320.828094pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{322.039062pt}{63.229404pt}} +\pgflineto{\pgfpoint{320.828094pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{323.250000pt}{64.188232pt}} -\pgflineto{\pgfpoint{322.039062pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{323.250000pt}{63.229404pt}} +\pgflineto{\pgfpoint{322.039062pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{324.460938pt}{64.188232pt}} -\pgflineto{\pgfpoint{323.250000pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{324.460938pt}{63.229404pt}} +\pgflineto{\pgfpoint{323.250000pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{325.671875pt}{94.870583pt}} -\pgflineto{\pgfpoint{324.460938pt}{64.188232pt}} +\pgfpathmoveto{\pgfpoint{325.671875pt}{95.829407pt}} +\pgflineto{\pgfpoint{324.460938pt}{63.229404pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{326.882782pt}{94.870583pt}} -\pgflineto{\pgfpoint{325.671875pt}{94.870583pt}} +\pgfpathmoveto{\pgfpoint{326.882782pt}{95.829407pt}} +\pgflineto{\pgfpoint{325.671875pt}{95.829407pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{328.093750pt}{94.870583pt}} -\pgflineto{\pgfpoint{326.882782pt}{94.870583pt}} +\pgfpathmoveto{\pgfpoint{328.093750pt}{95.829407pt}} +\pgflineto{\pgfpoint{326.882782pt}{95.829407pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{329.304688pt}{94.870583pt}} -\pgflineto{\pgfpoint{328.093750pt}{94.870583pt}} +\pgfpathmoveto{\pgfpoint{329.304688pt}{95.829407pt}} +\pgflineto{\pgfpoint{328.093750pt}{95.829407pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{330.515625pt}{94.870583pt}} -\pgflineto{\pgfpoint{329.304688pt}{94.870583pt}} +\pgfpathmoveto{\pgfpoint{330.515625pt}{95.829407pt}} +\pgflineto{\pgfpoint{329.304688pt}{95.829407pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{331.726562pt}{94.870583pt}} -\pgflineto{\pgfpoint{330.515625pt}{94.870583pt}} +\pgfpathmoveto{\pgfpoint{331.726562pt}{95.829407pt}} +\pgflineto{\pgfpoint{330.515625pt}{95.829407pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{332.937500pt}{94.870583pt}} -\pgflineto{\pgfpoint{331.726562pt}{94.870583pt}} +\pgfpathmoveto{\pgfpoint{332.937500pt}{95.829407pt}} +\pgflineto{\pgfpoint{331.726562pt}{95.829407pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{334.148438pt}{73.776466pt}} -\pgflineto{\pgfpoint{332.937500pt}{94.870583pt}} +\pgflineto{\pgfpoint{332.937500pt}{95.829407pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{335.359375pt}{73.776466pt}} \pgflineto{\pgfpoint{334.148438pt}{73.776466pt}} @@ -1586,59 +1586,59 @@ \pgfpathmoveto{\pgfpoint{340.203125pt}{73.776466pt}} \pgflineto{\pgfpoint{338.992188pt}{73.776466pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{341.414062pt}{105.417648pt}} +\pgfpathmoveto{\pgfpoint{341.414062pt}{107.335281pt}} \pgflineto{\pgfpoint{340.203125pt}{73.776466pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{342.625000pt}{73.776466pt}} -\pgflineto{\pgfpoint{341.414062pt}{105.417648pt}} +\pgflineto{\pgfpoint{341.414062pt}{107.335281pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{343.835938pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{343.835938pt}{121.717644pt}} \pgflineto{\pgfpoint{342.625000pt}{73.776466pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{345.046875pt}{120.758820pt}} -\pgflineto{\pgfpoint{343.835938pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{345.046875pt}{121.717644pt}} +\pgflineto{\pgfpoint{343.835938pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{346.257812pt}{120.758820pt}} -\pgflineto{\pgfpoint{345.046875pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{346.257812pt}{121.717644pt}} +\pgflineto{\pgfpoint{345.046875pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{347.468750pt}{120.758820pt}} -\pgflineto{\pgfpoint{346.257812pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{347.468750pt}{121.717644pt}} +\pgflineto{\pgfpoint{346.257812pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{348.679688pt}{120.758820pt}} -\pgflineto{\pgfpoint{347.468750pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{348.679688pt}{121.717644pt}} +\pgflineto{\pgfpoint{347.468750pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{349.890625pt}{120.758820pt}} -\pgflineto{\pgfpoint{348.679688pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{349.890625pt}{121.717644pt}} +\pgflineto{\pgfpoint{348.679688pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{351.101562pt}{103.500000pt}} -\pgflineto{\pgfpoint{349.890625pt}{120.758820pt}} +\pgfpathmoveto{\pgfpoint{351.101562pt}{104.458824pt}} +\pgflineto{\pgfpoint{349.890625pt}{121.717644pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{352.312500pt}{59.394108pt}} -\pgflineto{\pgfpoint{351.101562pt}{103.500000pt}} +\pgfpathmoveto{\pgfpoint{352.312500pt}{58.435284pt}} +\pgflineto{\pgfpoint{351.101562pt}{104.458824pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{353.523438pt}{59.394108pt}} -\pgflineto{\pgfpoint{352.312500pt}{59.394108pt}} +\pgfpathmoveto{\pgfpoint{353.523438pt}{58.435284pt}} +\pgflineto{\pgfpoint{352.312500pt}{58.435284pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{354.734375pt}{59.394108pt}} -\pgflineto{\pgfpoint{353.523438pt}{59.394108pt}} +\pgfpathmoveto{\pgfpoint{354.734375pt}{58.435284pt}} +\pgflineto{\pgfpoint{353.523438pt}{58.435284pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{355.945312pt}{59.394108pt}} -\pgflineto{\pgfpoint{354.734375pt}{59.394108pt}} +\pgfpathmoveto{\pgfpoint{355.945312pt}{58.435284pt}} +\pgflineto{\pgfpoint{354.734375pt}{58.435284pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{357.156250pt}{59.394108pt}} -\pgflineto{\pgfpoint{355.945312pt}{59.394108pt}} +\pgfpathmoveto{\pgfpoint{357.156250pt}{58.435284pt}} +\pgflineto{\pgfpoint{355.945312pt}{58.435284pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{358.367188pt}{59.394108pt}} -\pgflineto{\pgfpoint{357.156250pt}{59.394108pt}} +\pgfpathmoveto{\pgfpoint{358.367188pt}{58.435284pt}} +\pgflineto{\pgfpoint{357.156250pt}{58.435284pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{359.578125pt}{59.394108pt}} -\pgflineto{\pgfpoint{358.367188pt}{59.394108pt}} +\pgfpathmoveto{\pgfpoint{359.578125pt}{58.435284pt}} +\pgflineto{\pgfpoint{358.367188pt}{58.435284pt}} \pgfusepath{stroke} -\pgfpathmoveto{\pgfpoint{360.789062pt}{59.394108pt}} -\pgflineto{\pgfpoint{359.578125pt}{59.394108pt}} +\pgfpathmoveto{\pgfpoint{360.789062pt}{58.435284pt}} +\pgflineto{\pgfpoint{359.578125pt}{58.435284pt}} \pgfusepath{stroke} \pgfpathmoveto{\pgfpoint{362.000000pt}{67.064697pt}} -\pgflineto{\pgfpoint{360.789062pt}{59.394108pt}} +\pgflineto{\pgfpoint{360.789062pt}{58.435284pt}} \pgfusepath{stroke} \color[rgb]{0.000000,0.000000,1.000000} \pgfpathmoveto{\pgfpoint{54.421875pt}{71.858818pt}} @@ -2411,7 +2411,7 @@ \pgfnode{rectangle}{west}{\fontsize{9}{0}\selectfont\textcolor[rgb]{0,0,0}{{Anisotropic TV, $\beta$ = 15000 }}}{}{\pgfusepath{discard}}} { \pgftransformshift{\pgfpoint{234.619247pt}{173.254150pt}} -\pgfnode{rectangle}{west}{\fontsize{9}{0}\selectfont\textcolor[rgb]{0,0,0}{{Anisotropic TV, $\beta$ = 21450}}}{}{\pgfusepath{discard}}} +\pgfnode{rectangle}{west}{\fontsize{9}{0}\selectfont\textcolor[rgb]{0,0,0}{{Anisotropic TV, $\beta$ = 20970}}}{}{\pgfusepath{discard}}} { \pgftransformshift{\pgfpoint{234.619247pt}{166.270111pt}} \pgfnode{rectangle}{west}{\fontsize{9}{0}\selectfont\textcolor[rgb]{0,0,0}{{Isotropic TV}}}{}{\pgfusepath{discard}}} diff --git a/fig/factory/pmake.py b/fig/factory/pmake.py index f13456b..41ef3cd 100644 --- a/fig/factory/pmake.py +++ b/fig/factory/pmake.py @@ -22,7 +22,7 @@ files = { 's': [3], 'r': [10, 20], 'n': [32], - 'b': [15000, 21450], + 'b': [15000, 20970], 'g': [150, 1000000000000] }, #time ./sobel -p 2 -n 32 -r 10 -s 3 -b 15000 -g 100000000000 @@ -35,7 +35,7 @@ files = { 's': [0.2, 2], 'r': [4, 15], 'n': [8], - 'b': [5000], + 'b': [10000], 'g': [100] }, @@ -202,12 +202,14 @@ def main(): # Restore rfiles = [] mfiles = [] + pngs = [] for of, nf in nfiles: for p, n, b, g, r, s in itertools.product(files[of]['p'], files[of]['n'], files[of]['b'], files[of]['g'], files[of]['r'], files[of]['s']): rf, rlist = restoreRule(f, nf, p, n, b, g, r, s) rfiles.append(rf) + pngs.extend(rlist) print # Method noise mf = methodRule(f, nf, rf, 127, 30) @@ -215,13 +217,13 @@ def main(): print alle.extend(rfiles) - alle.extend(rlist) alle.extend(mfiles) nameRule(f, toPNG( [f + "/" + files[f]['orig']] + rfiles + mfiles + + pngs + map(lambda x: x[1], nfiles))) print diff --git a/fig/fiddle.png b/fig/fiddle.png new file mode 100644 index 0000000..f9bfee0 Binary files /dev/null and b/fig/fiddle.png differ diff --git a/introduction.tex b/introduction.tex index fdb00cf..6ce490b 100644 --- a/introduction.tex +++ b/introduction.tex @@ -1,65 +1,122 @@ \chapter{Introduction} -In everyday life cameras are used to capture a moment and save it for -eternity, but imaging technology technology can be used in many other -contexts, including medical and astronomical applications. -With the advent of computers, tasks previously reserved for the human -brain, like recognizing textures, detecting edges and inferring shapes -and motion, can now be performed algorithmically. The background of -these methods span several fields, including psychology and biology for -the study of human vision, statistics and analysis for the mathematical -foundations, and computer science for the implementation and performance -analysis. - -It is possible to roughly spread the tasks of image processing out along -a line spanning from the raw capturing of light coming into the camera, -a purely physical problem, to the computer vision -methods in the other end, semantically interpreting the scene, -recognizing objects, their position and their movement. In between we -have algorithms working on the captured image, without implying too much -about what the image contains. These methods are often categorized as -\emph{early vision} and includes but is not limited to image -restoration, segmentation, filtering and edge detection. - -In the process of capturing the image with our physical apparatus, -there is always some noise included. Some might come from the physical -nature of how light travels from the scene to the objective, while some -might result from inaccuracies in the construction of the capturing -apparatus. These noise-inducing processes can be studied, and modeled -mathematically, and the process of image restoration looks at how one -can remove some---or optimally all---of the noise in the captured -image. These methods often take into account how we would expect a -``normal'' image to look in the capturing conditions, and also what -kinds of noise we expect to be a part of the image. - -In the next chapter we will see a short overview of some of the most -popular methods in image restoration, especially those related to the -anisotropic total variation based method that will be the focus of the -rest of the thesis. - -In my project work \cite{project}, I described how total variation -regularization can be performed on a grayscale image using a graph cut -approach. In this thesis, this method will be expanded upon by -introducing a more flexible \emph{anisotropic} total variation. The goal -is to improve how the method behaves around edges and detailed parts of -the image. - -In order to get a good understanding of the method, we will try to -describe and look into all the different parts needed to make the method work, -instead of focusing particularly on one piece of the puzzle. The -continuous formulation and the theorems relating to it are thoroughly -described, as they are central to how we arrive at our discrete minimizer. -Next we look at the discretization of the functional, and its different -approximation errors. The discrete minimizer is found using a graph cut -approach as in my project work, and the description is similar except -for some minor changes and a new section on the Boykov--Kolmogorov -algorithm. - -In the end we will through restoration of more or less constructed -examples look at how the introduced anisotropy changes the method. As -the anisotropic total variation also introduces several new parameters, -the result section will focus on looking at how these parameters affect -the restoration performance. +[image processing] + +Image processing forms an important part of our modern computerized +world. Tasks previously reserved for humans, like detecting edges, +recognizing textures and inferring shapes and motions can now be +performed algorithmically. The background of these methods span several +fields, including phychology and biology for the study of human vision, +statistics and analysis for the mathematical background, and computer +science for their implementation and performance analysis. + +[image restoration] + +Image restoration methods are concerned with trying to remove noise in +images. There are numerous different ways to approach the problem. For +background we will discuss some before we go into detail on the total +variation method. + +[total variation] + +As the name suggests, total variation is a measure of how much variation +there is in an image, in total. Thus these methods are often trying to +reduce the total variation while still staying close to the original +image, in some sense. The main strength of the total variation method is +its ability to conserve edges, as it does not favor smooth gradients +over edges like many other methods. However, it may introduce edges from +noise, and it may also reduce the total contrast in the image. + +mention project + +[thesis walkthrough] + +In this thesis we introduce an anisotropy tensor into the total +variation norm. This means making the norm directionally dependant, such +that we can control the weight of the variation based on the position, +and also the direction. The continuous problem is transformed through an +anisotropic coarea formula and an anisotropic Cauchy--Crofton formula to +facilitate the discretization. This is one of the main parts of this +thesis. + +The continuous formulation, now consisting of several integrals, is then +discretized into a series of sums, over the pixels in an image. We make +sure that the discrete formulation is consistent with the continuous +one. + +A provable optimal solution to the discrete problem is then found using +a graph cut algorithm. For each level in the image, a graph is +constructed, and a minimum cut is found, and the restored image can then +be extracted from all these partial solutions. + +For finding these minimum cuts, two algorithms are presented. The +push-relabel algorithm is considered to be the fastest and most +versatile for general graphs, while the Boykov--Kolmogorov algorithm is +specially taylored for the type of graphs we find in these kinds of +imaging applications. + +Further we have some results, and then that's it. + +%In everyday life cameras are used to capture a moment and save it for +%eternity, but imaging technology technology can be used in many other +%contexts, including medical and astronomical applications. +%With the advent of computers, tasks previously reserved for the human +%brain, like recognizing textures, detecting edges and inferring shapes +%and motion, can now be performed algorithmically. The background of +%these methods span several fields, including psychology and biology for +%the study of human vision, statistics and analysis for the mathematical +%foundations, and computer science for the implementation and performance +%analysis. +% +%It is possible to roughly spread the tasks of image processing out along +%a line spanning from the raw capturing of light coming into the camera, +%a purely physical problem, to the computer vision +%methods in the other end, semantically interpreting the scene, +%recognizing objects, their position and their movement. In between we +%have algorithms working on the captured image, without implying too much +%about what the image contains. These methods are often categorized as +%\emph{early vision} and includes but is not limited to image +%restoration, segmentation, filtering and edge detection. +% +%In the process of capturing the image with our physical apparatus, +%there is always some noise included. Some might come from the physical +%nature of how light travels from the scene to the objective, while some +%might result from inaccuracies in the construction of the capturing +%apparatus. These noise-inducing processes can be studied, and modeled +%mathematically, and the process of image restoration looks at how one +%can remove some---or optimally all---of the noise in the captured +%image. These methods often take into account how we would expect a +%``normal'' image to look in the capturing conditions, and also what +%kinds of noise we expect to be a part of the image. +% +%In the next chapter we will see a short overview of some of the most +%popular methods in image restoration, especially those related to the +%anisotropic total variation based method that will be the focus of the +%rest of the thesis. +% +%In my project work \cite{project}, I described how total variation +%regularization can be performed on a grayscale image using a graph cut +%approach. In this thesis, this method will be expanded upon by +%introducing a more flexible \emph{anisotropic} total variation. The goal +%is to improve how the method behaves around edges and detailed parts of +%the image. +% +%In order to get a good understanding of the method, we will try to +%describe and look into all the different parts needed to make the method work, +%instead of focusing particularly on one piece of the puzzle. The +%continuous formulation and the theorems relating to it are thoroughly +%described, as they are central to how we arrive at our discrete minimizer. +%Next we look at the discretization of the functional, and its different +%approximation errors. The discrete minimizer is found using a graph cut +%approach as in my project work, and the description is similar except +%for some minor changes and a new section on the Boykov--Kolmogorov +%algorithm. +% +%In the end we will through restoration of more or less constructed +%examples look at how the introduced anisotropy changes the method. As +%the anisotropic total variation also introduces several new parameters, +%the result section will focus on looking at how these parameters affect +%the restoration performance. \chapter{Methods in image restoration} @@ -279,7 +336,7 @@ problem we hope to avoid in our anisotropic total variation method. \includegraphics[width=\textwidth]{fig/fanisodiff.png} \caption{Regularized, parameters: bleep bloop} \end{subfigure} - \caption{\fixme{UPDATE THIS}} + \caption[bleapofsijdosij]{\fixme{UPDATE THIS}} \label{fig:ansi_diff} \end{figure} @@ -386,7 +443,8 @@ restoration. \includegraphics[width=\textwidth]{fig/factory/grad/r_p2_n16_b5000_g1000000000_r5_s3.png} \caption{Total variation restoration} \end{subfigure} - \caption{% + \caption[The stair-casing effect of regular total variation + restoration]{% Although the original gradient was smooth, the total variation method manages to find structure in the noise, and create edges in the restored image. @@ -413,7 +471,7 @@ regularized image. \centering \includegraphics[width=\textwidth]{fig/ftv.png} \end{subfigure} - \caption{% + \caption[Heavily regularized fingerprint showing contrast loss]{% A fingerprint heavily regularized using the total variation method. The originally white and black ridges have been brought closer in value, to reduce the total variation. diff --git a/main.tex b/main.tex index 5a788c9..357f623 100644 --- a/main.tex +++ b/main.tex @@ -11,6 +11,7 @@ %\setmainfont[Mapping=tex-text,Ligatures=TeX]{TeX Gyre Pagella} %\setmathfont[Mapping=tex-text,Ligatures=TeX]{TeX Gyre Pagella Math} \usepackage{lmodern} +%\usepackage{parskip} \usepackage{amsthm} \usepackage{graphicx} \usepackage[percent]{overpic} @@ -105,9 +106,43 @@ % BLEEP BLOOP. %} +\vspace*{\fill} + \section*{Abstract} -Lelelel. +There are numerous methods for image denoising and restoration. In this +thesis we consider a particular kind of edge-enhancing method based on +total variation. A directional dependence is introduced through an +anisotropy tensor based on the noisy image. Using a coarea formula and a +Cauchy--Crofton style formula the continuous problem is transformed to obtain a discretizable +problem. A solution is found by constructing graphs where the minimum +cuts correspond to minimizers of the discrete problem. Parameters +exposed allows us to control the amount of regularization applied across +edges, and some experiments are presented to show how the anisotropy and +its parameters affect the method. + + +%There are numerous methods for image denoising and restoration. In this +%thesis we consider a total variation based method modified with an +%anisotropic regularization term. A tensor based on the original +%image is introduced to alter the way the total variation is measured. +%Regular total variation based methods +%are good at conserving edges, but can still lead to contrast loss and +%loss of details. The anisotropy is introduced to be able to control the +%direction and strength of the regularization. +% +%The method is first described in a continuous framework. A +%foundation is laid out and well-foundedness is discussed. Then follows +%an important +%part of the thesis which is the transformation and discretization of this +%continuous optimization problem. This discrete problem can then be +%applied to digital grayscale images. +%A solution to the discrete problem is found by +%several successive minimum graph cuts. In the end we assess the +%performance of the algorithm and how the different parameters affect the +%results by experiments on more and less constructed examples. + +\vspace*{\fill} \cleardoublepage @@ -115,16 +150,32 @@ Lelelel. % BLEEP BLEEP NORSK. %} +\vspace*{\fill} + \section*{Sammendrag} Lololol. +\vspace*{\fill} + \cleardoublepage +\vspace*{\fill} + \section*{Preface} -Bleep bloop. Acknowledements? Takk til Henrik for sjokolademelka, og -Kine for god muffins. +This master thesis concludes my study at the Applied Physics and +Mathematics Master's degree programme with specialization in Industrial +Mathematics at the Norwegian University of Science and Technology +(NTNU). + +I would like to thank my supervisor Markus Grasmair at the Department of +Mathematical Sciences for invaluable help and discussion throughout my +work with my project and this thesis. + +Bjørn Rustad, \today. + +\vspace*{\fill} % Romerske tall pÃ¥ alt før selve rapporten starter er pent. \pagenumbering{roman} @@ -136,6 +187,8 @@ Kine for god muffins. % NÃ¥ vi vil ha noe i topp- og bunnteksten \pagestyle{headings} +\setcounter{tocdepth}{1} + % Si til LaTeX at vi vil ha ei innholdsliste generert akkurat her: \tableofcontents diff --git a/maxflow.tex b/maxflow.tex index 653130d..378aa8c 100644 --- a/maxflow.tex +++ b/maxflow.tex @@ -481,12 +481,13 @@ which means that in the general case, the algorithm has a complexity of $O(\abs{E}\abs{V}^2)$. \subsection{Vertex selection rules} + Until now we have stated that the discharge procedure is run on active vertices until there are no more active vertices left. The choice of the order in which to discharge these active vertices remain, and multiple possibilities exist. -The First In, First Out (FIFO) approach is to always maintain a queue of +The «First In, First Out» (FIFO) approach is to always maintain a queue of active vertices. When the vertex from the beginning of the queue is discharged, other vertices might become active, and these are added at the end of the queue. The original article of Goldberg and Tarjan @@ -606,7 +607,7 @@ of the graph. Now we have an algorithm for finding a minimum $s$-$t$-cut in a graph, so let's return to the graph constructed in Section~\ref{sec:graph_construction}. For every level $\lambda \in \{0, -\ldots, L\}$ we want to find a minimum $s$-$t$-cut which gives us the +\ldots, L-1\}$ we want to find a minimum $s$-$t$-cut which gives us the thresholded image $u^\lambda$. These can then hopefully be stacked together to form the final image $u$. @@ -763,7 +764,7 @@ See \cite{gallo1989fast}, \cite{hochbaum2001efficient} and \begin{algorithm} \begin{algorithmic} \Function{BoykovKolmogorov}{$G$, $s$, $t$} - \State $A := {s, t}$, $O := \emptyset$, $S = {s}$, $T = {t}$ + \State $A := \{s, t\}$, $O := \emptyset$, $S = \{s\}$, $T = \{t\}$ \State $s\text{.color} = S$, $t\text{.color} = T$ \While{\texttt{True}} \State $e \gets$ \Call{Grow}{$G$, $A$} @@ -783,15 +784,28 @@ A maximum flow algorithm specialized for the type of graphs found in imaging applications is described by Boykov and Kolmogorov in \cite{boykov2004experimental}. Their algorithm is an augmenting path algorithm where the paths are found using trees that keep track of -possible paths. +possible partial paths. + +The idea of the algorithm is to always maintain the structure of two +trees, one rooted in the source and one rooted in the sink, which are +built up using only edges that can carry additional flow. The algorithm +consists of different phases, one being the \emph{grow} phase, where the +trees are grown by adding additional edges. When an unsaturated edge +connecting the two trees are found, the \emph{augment} phase starts. +In this phase, an augmenting path through the trees is recovered, and +the flow is augmented. Some of the edges in the trees may then become +saturated, and can no longer be a part of their tree. The vertices they +connect to the tree become \emph{orphans} which in the \emph{adopt} +phase are adopted back into their trees, or alternatively freed from +their tree connection. There is one tree denoted $S$ with the source $s$ as its root, and another tree denoted $T$ with the sink $t$ as its root. These trees are -non-overlapping, and all edges in the tree $S$ can carry flow towards +disjoint, and all edges in the tree $S$ can carry flow towards the leafs of the tree, while all edges in $T$ can carry flow towards the sink $t$. -A vertex can either be part of these trees, or be a free vertex, and we +A vertex can either be part of one of these trees, or be a free vertex, and we write \begin{equation} u\text{.color} = \begin{cases} @@ -800,15 +814,15 @@ write \texttt{Free} & \text{ otherwise.} \end{cases} \end{equation} -The idea of the algorithm is then to grow these trees towards eachother, -and when they touch, we have found an augmenting path from $s$ to $t$. -As much flow as possible is then pushed along this path, and some edges -will become saturated. If an edge in the tree $S$ or $T$ becomes -saturated, the tree is split up into multiple trees, also called a -forest. The parts no longer connected to the root are called orphans, -and we write $u \in O$ for an orphan vertex $u$. These vertices are---if -possible---joined back into the tree, or become free nodes. - +%The idea of the algorithm is then to grow these trees towards eachother, +%and when they touch, we have found an augmenting path from $s$ to $t$. +%As much flow as possible is then pushed along this path, and some edges +%will become saturated. If an edge in the tree $S$ or $T$ becomes +%saturated, the tree is split up into multiple trees, also called a +%forest. The parts no longer connected to the root are called orphans, +%and we write $u \in O$ for an orphan vertex $u$. These vertices are---if +%possible---joined back into the tree, or become free nodes. +% The vertices in the trees $S$ and $T$ are either active or passive, and we write $u \in A$ if $u$ is active. The active vertices are those at the boundary of the tree, which can possibly connect to other vertices @@ -816,7 +830,7 @@ to grow the tree. The passive vertices are internal in the tree, and edges to their neighbors are either a part of the tree, or completely saturated. -The main loop of the algorithm is then as shown in +The main loop of the algorithm is as shown in Algorithm~\ref{alg:boykov_kolmogorov}. In the grow procedure, the trees are grown from their active vertices until a new path is found. The flow is then augmented along this path in the augment procedure, and orphan @@ -960,7 +974,7 @@ information until reaching either $s$, $t$ or an orphaned vertex. If a potential parent $v$ of $u$ is \emph{not} found, $u$ becomes a free vertex. All vertices that had $u$ as its parent are orphaned, and are thus -treeted by the adopt procedure later. Vertices that are in one of the +treated by the adopt procedure later. Vertices that are in one of the trees $S$ or $T$, and have a non-saturated edge to this newly freed vertex $u$, become active. @@ -980,7 +994,7 @@ successive runs. \end{figure} Since this is algorithm does not deal with the relaxed preflow concept, -the updates from one level to the next has to be done in a different +the updates from one level to the next have to be done in a different way. We can no longer decrease the capacity of edges, as this could break the flow conservation constraint. However, the graph construction in Section~\ref{sec:graph_representable} did allow for the addition of an arbitrary constant to @@ -994,13 +1008,12 @@ with decreasing $\lambda$ parameter. This construction allows us to update the capacities of the edges, while retaining the flow and the trees $S$ and $T$. A nice property that follows is that the partition $(V - T, T)$ is after each run a minimum -cut since there are is no more residual capacity between the trees $S$ -and $T$. Further, the set of vertices $T$ is non-decreasing, or more -importantly, no vertex already -in the tree $T$ will leave $T$ for succeeding lower $\lambda$ values. +cut since there is no more residual capacity between the trees $S$ +and $T$. Further, no vertex already in the tree $T$ will leave $T$ when +the trees are updated and algorithm is run for lower $\lambda$ values. This can be seen from the fact that if $u$ is in $T$ and the algorithm has terminated, all paths from $s$ to $t$ going -through $u$ has a saturated edge somewhere before $u$. For all these +through $u$ have a saturated edge somewhere before $u$. For all these paths, the capacity will only change for edges after $u$, as we only change the capacity of edges $(v, t)$. Thus these saturated edges will stay saturated, and $u$ will stay in $T$. \fixme{shaky} @@ -1014,37 +1027,13 @@ recommended in \cite{boykov2004experimental}, we have implemented a augmenting path found is a shortest path, although later the distance information is lost in the adoption stage. -In the adoption stage it is possible, and perhaps preferrable to seek +In the adoption stage it is possible, and perhaps preferable to seek a possible parent that is closest to the root of the tree, and adopt that -vertex as parent, instead of the first possible. +vertex as parent, instead of the first one found. Because of the particular graph construction, all vertices except $s$ -and $t$ are connected to $s$ and $t$. Thus there are as many two-edged +and $t$ are connected directly to $s$ and $t$. Thus there are as many two-edged paths from $s$ to $t$ as there are pixels in the image. When increasing the capacity of edges $(v, t)$, a quick sweep over these two-edged paths to send any possible flow may speed up the algorithm. -\section{Implementation} - -A \cpp{} implementation can be found in -Appendix~\ref{app:c++implementation}. It uses the open computer vision -library OpenCV \cite{opencv_library} to load and save image files. - -Note that when implementing maximum flow algorithms it is not a good -idea, memory- and performance-wise, to actually construct the residual -graph $G_f$. Instead, every time we update the flow $f(u,v)$ we set -the flow in the opposite direction to its negative value $f(v,u) = --f(u,v)$. Then we can at any time, consider the value $c(u,v) - f(u,v)$ -in the place of the residual capacity $c_f(u,v)$. - -For the gap relabeling heuristic, we need to have a easy way of finding -when a gap occurs. This is done by keeping track of how many vertices -exist with each label. - -\fixme{something on bk?} -\fixme{move this to the appendix possibly} - -\section{Performance comparison} - -Maybe. - diff --git a/results.tex b/results.tex index c15b23e..fbeffa1 100644 --- a/results.tex +++ b/results.tex @@ -44,7 +44,7 @@ the restoration algorithm. \end{figure} The anisotropy was introduced into the total variation in order to -lessen the regularization done across what we know, or at least are +lessen the regularization applied across what we know, or at least are pretty sure to be edges in the image. Before considering the anisotropy tensor construction described earlier, we will look at how a simple predescribed tensor affects the regularization. Imagine a tensor which @@ -59,7 +59,7 @@ has been restored in two different ways, first with a uniform anisotropy tensor $A = \operatorname{diag}(1, \epsilon)$, and then with the tensor described in Section~\ref{sec:anisotropy_tensor}. We see in Figure~\ref{fig:tensor_experiment_unif} that the uniform tensor gives a -strong smoothing in the $x$-direction, while no apparent smoothing in +strong smoothing in the $x$-direction, but no apparent smoothing in the $y$-direction. \begin{figure} @@ -136,22 +136,26 @@ restoration algorithm. We start out with a section of the much-used Lena test image in Figure~\ref{fig:lena_process_orig}. The first step in the construction of the structure tensor is to blur the image with parameter $\sigma$, and the result is shown in Figure~\ref{fig:lena_process_blur}. -The blurring is done so that the edge detector $\nabla f_\sigma$, which -is shown squared and normalized in Figure~\ref{fig:lena_process_edge}, is not too +The blurring is done so that the edge detector $\nabla f_\sigma$, +visualized as $\abs{\nabla f_\sigma}^2$ in Figure~\ref{fig:lena_process_edge}, is not too sensitive to noise in the image. The structure tensor is then constructed using $\nabla f_\sigma$ and smoothed according to the integration scale $\rho$. The resulting anisotropy tensor is visualized in Figure~\ref{fig:lena_process_tensor}. In a selection of points, the -tensor has been drawn as its two eigenvectors, with the corresponding -eigenvalue as its length, and we clearly see that the eigenvalues are -smaller across edges. Another way of visualizing the tensor, which makes -it possible to see it in every point, is using the color wheel in -Figure~\ref{fig:color_wheel}. The color is decided by the tensor angle, -while the brightness, or the radius in the wheel, is set to $1 / -\lambda_2$, the inverse of the smallest eigenvalue of the metric tensor -$M(x)$. Thus the stronger the anisotropy, the brighter the color, while -we expect smooth areas in the original image to be black. +eigenvectors of the tensor have been drawn. The length of the vectors +have been scaled by the corresponding eigenvalue. + +Another way of visualizing the tensor is shown in +Figure~\ref{fig:lena_process_color}. The color in each point is decided +by the size of the smallest eigenvalue, and the direction of its +corresponding eigenvector, using the color wheel in +Figure~\ref{fig:color_wheel}. The direction decides the color, +while the brightness, here the radius, is set to $1 / \sigma_1 - 1$, +where $\sigma_1$ is the smallest eigenvalue. +Thus the stronger the anisotropy, the brighter the color, while +we expect uniform areas in the original image to be black in the +tensor visualization. \begin{figure} \centering @@ -175,17 +179,17 @@ anisotropy affected the regularization is not obvious however. ~ \begin{subfigure}[t]{0.30\textwidth} \centering - \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b5000_g100_r4_s2.png} + \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b10000_g100_r4_s2.png} \end{subfigure} ~ \begin{subfigure}[t]{0.30\textwidth} \centering - \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b5000_g100_r15_s0.2.png} + \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b10000_g100_r15_s0.2.png} \end{subfigure} \begin{subfigure}[t]{0.30\textwidth} \centering - \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b5000_g100_r15_s2_blur.png} + \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b10000_g100_r15_s2_blur.png} \caption{% Original and blurred with $\sigma = 2$. } @@ -194,7 +198,7 @@ anisotropy affected the regularization is not obvious however. ~ \begin{subfigure}[t]{0.30\textwidth} \centering - \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b5000_g100_r4_s2_color.png} + \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b10000_g100_r4_s2_color.png} \caption{% Restored with relatively high noise scale of $\sigma = 2$. } @@ -203,7 +207,7 @@ anisotropy affected the regularization is not obvious however. ~ \begin{subfigure}[t]{0.30\textwidth} \centering - \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b5000_g100_r15_s0.2_color.png} + \includegraphics[width=\textwidth]{fig/factory/lines/r_p2_n8_b10000_g100_r15_s0.2_color.png} \caption{% Restored with low noise scale $\sigma = 0.2$, but large integration scale $\rho = 15$. @@ -213,10 +217,15 @@ anisotropy affected the regularization is not obvious however. \caption[Effects of the $\sigma$ and $\rho$ parameters on restoration]{% An example constructed to show the effects of the parameters - $\sigma$ and $\rho$ in the anisotropy tensor. The noise scale - $\sigma$ controls what is considered to be noise, while the - integration scale $\rho$ controls the size of the structures - considered by the tensor. + $\sigma$ and $\rho$ in the anisotropy tensor. + The noise scale $\sigma$ controls the smoothing done before edge + detection, and $\sigma=2$ means the thinnest lines are + not considered to be edges by the tensor, and they are thus + regularized. + The integration scale $\rho$ controls the size of the structures + considered by the tensor, and does in this case allow us to + ignore the smaller structures. Parameters: $\abs{\mathcal{N}} = + 8$, $\beta = 10000$, $\omega = 100$. } \label{fig:scale_comp} \end{figure} @@ -225,7 +234,7 @@ To look further into the effects of the parameters in our tensor construction we have a constructed a zebra pattern of increasing width as shown in Figure~\ref{fig:scale_comp}. The anisotropy introduced should in theory help reduce contrast -loss in this situation, by reducing the regularization done in the +loss in this situation, by reducing the regularization applied in the $x$-direction across the edges. There is however the question of how the different scales $\sigma$ and $\rho$ affect the regularization. @@ -428,6 +437,24 @@ corners some. \input{fig/pixel_perimeter.tex} \end{figure} +As mentioned before, there is a discretization error which relates +to the length of the edges in the neighborhood. We approximated the +number of times an edge $e_{ab}$ crosses level set boundary by +$\abs{u^\lambda_a +- u^\lambda_b}$, an approximation that becomes worse for long edges. Thus a larger +neighborhood is not always better, even if it will reduce the artifacts +discussed above. In Figure~\ref{fig:lena_neigh}, a noisy image of Lena +has been restored using two neighborhood stencils, and +there are obvious differences. For the stencil of size 72, the restored +image still contains some pixel-sized noise. +An explanation can be found in +Figure~\ref{fig:pixel_perimeter}. We see why the length of a +one-pixel curve is underestimated by the Cauchy--Crofton formula when +some of the edges are long. Because +many edges $e_{ab}$ cross the curve cross while $\abs{u^\lambda_a - u^\lambda_b} += 0$, thus these edges are ignored completely in our perimeter +approximation. + \begin{table} \caption[Circle circumferences estimated by the Cauchy--Crofton formula]{% @@ -454,24 +481,6 @@ corners some. \label{tab:circumference} \end{table} -As mentioned before, there is a discretization error which relates -to the length of the edges in the neighborhood. We approximated the -number of times an edge $e_{ab}$ crosses level set boundary by -$\abs{u^\lambda_a -- u^\lambda_b}$, an approximation that becomes worse for long edges. Thus a larger -neighborhood is not always better, even if it will reduce the artifacts -discussed above. In Figure~\ref{fig:lena_neigh}, a noisy image of Lena -has been restored using two neighborhood stencils, and -there are obvious differences. For the stencil of size 72, the restored -image still contains some pixel-sized noise. -An explanation can be found in -Figure~\ref{fig:pixel_perimeter}. We see why the length of a -one-pixel curve is underestimated by the Cauchy--Crofton formula when -some of the edges are long. Because -many edges $e_{ab}$ cross the curve cross while $\abs{u^\lambda_a - u^\lambda_b} -= 0$, thus these edges are ignored completely in our perimeter -approximation. - An additional demonstration that this problem mostly relates to small sized noise is shown in Table~\ref{tab:circumference}. The table shows how our discrete Cauchy--Crofton formula approximates the @@ -487,8 +496,8 @@ approximated is that of an actual continuous circle $u : \mathbb{R}^2 \centering \includegraphics[width=\textwidth]{fig/factory/finger/r_p2_n32_b15000_g1000000000000_r10_s3.png} \caption{% - Regular TV,\\ $\beta=15000$,\\ $\norm{u - f}_{L^1} = - 2886817$. + Regular TV,\\ $\beta=15000$,\\ $\norm{u - f}_{L^2} = + 17022$. } \label{fig:finger_contrast_tv} \end{subfigure} @@ -498,17 +507,17 @@ approximated is that of an actual continuous circle $u : \mathbb{R}^2 \includegraphics[width=\textwidth]{fig/factory/finger/r_p2_n32_b15000_g150_r10_s3.png} \caption{% Anisotropic TV ($\gamma = 150$), $\beta=15000$, - $\norm{u - f}_{L^1} = 2558191$. + $\norm{u - f}_{L^2} = 15272$. } \label{fig:finger_contrast_atv1} \end{subfigure} ~ \begin{subfigure}[t]{0.30\textwidth} \centering - \includegraphics[width=\textwidth]{fig/factory/finger/r_p2_n32_b21450_g150_r10_s3.png} + \includegraphics[width=\textwidth]{fig/factory/finger/r_p2_n32_b20970_g150_r10_s3.png} \caption{% - Anisotropic TV ($\gamma = 150$), $\beta=21450$, - $\norm{u - f}_{L^1} = 2886529$. + Anisotropic TV ($\gamma = 150$), $\beta=20970$, + $\norm{u - f}_{L^2} = 17022$. } \label{fig:finger_contrast_atv2} \end{subfigure} @@ -532,14 +541,14 @@ $\omega = 150$. This gives an obvious contrast enhancement, but it is however not obvious what this tells us about the quality of the anisotropic algorithm. As previously mentioned, increasing the anisotropy (decreasing $\omega$) means -decreasing the total amount of regularization done, and less contrast loss is +decreasing the total amount of regularization applied, and less contrast loss is an expected outcome of decreasing the regularization, disregarding the anisotropy. Thus in the last image we have also used $\omega = 150$ but the restoration amount $\beta$ is increased such that the amount of noise removed -$\norm{u - f}_{L^1}$ is +$\norm{u - f}_{L^2}$ is approximately equal to the noise removed when using regular total variation in Figure~\ref{fig:finger_contrast_tv}. By visual inspection, the last image seems to have somewhat higher contrast. This can be