Commit fb421ea2acd3974277e30f06bda3bdfec4af56b0

Added references and temporary notes to the manual.
doc/manual/bibliography.tex
(31 / 0)
  
1\begin{thebibliography} 9
2 \bibitem{scans}
3 Marko Jaale.
4 \newblock
5 Personal communication.
6 \newblock
7 Marine Research Centre,
8 Finnish Environment Institute,
9 2014.
10 \bibitem{vcurvature}
11 HaiRong Liu, Longin Jan Latecki, WenYu Liu, Xiang Bai.
12 \newblock
13 \emph{Visual Curvature}.
14 \newblock
15 IEEE International Conference on Computer Vision and Pattern Recognition,
16 2007.
17 \bibitem{curvature}
18 Majed Marji.
19 \newblock
20 \emph{On the detection of dominant points on digital planar curves}.
21 \newblock
22 Detroit,
23 2003.
24 \bibitem{skeleton}
25 Siu-Wing Cheng, Antoine Vigneron.
26 \newblock
27 \emph{Motorcycle Graphs and Straight Skeletons}.
28 \newblock
29 Proceedings of the 13th Annual ACM-SIAM Symposium on Discrete Algorithms,
30 2002.
31\end{thebibliography}
doc/manual/manual.tex
(1 / 0)
  
66 \include{dedication}
77 \include{tableofcontents}
88 \include{sections}
9 \include{bibliography}
910 \include{space}
1011\end{document}
doc/manual/sections.tex
(118 / 11)
  
3737ACSA is written in \emph{Java} and requires
3838 the \emph{Java Platform} 6.
3939It also depends on
40 \emph{JCommon} 1.0.16 and
41 \emph{JFreeChart} 1.0.13 for deployment and
42 \emph{Hamcrest} 1.2 and
43 \emph{JUnit} 4.10 for development,
40 the \emph{JCommon} utility library and
41 the \emph{JFreeChart} graphics library for deployment and
42 the \emph{Hamcrest} support library and
43 the \emph{JUnit} testing framework for development,
4444 all of which are packaged with it.
4545\subsection{Using Binaries}
4646% How to download ACSA?
6060\begin{lstlisting}
6161[user@computer ~]$ pacman -S jdk6-openjdk ant
6262\end{lstlisting}
63If linking with newer dependencies is desired, then
64 the \emph{JCommon} utility library,
65 the \emph{JFreeChart} graphics library,
66 the \emph{Hamcrest} support library and
67 the \emph{JUnit} testing framework can be used.
63If linking with newer dependencies is desired, they can be used.
6864\begin{lstlisting}
6965[user@computer ~]$ pacman -S libjcommon-java libjfreechart-java libhamcrest-java junit4
7066\end{lstlisting}
110110 usually configured to do that automatically.
111111\subsection{As a Library}
112112% How to call ACSA as a library?
113\subsection{With the Command Line Interface}
113Using ACSA as a library is as simple as importing the classes
114\begin{lstlisting}
115import acsa.something.ClamAnalyzer;
116\end{lstlisting}
117and using them appropriately.
118\begin{lstlisting}
119ClamSoup result = new ClamAnalyzer(resolution,
120 threshold,
121 defectSize, featureSize,
122 meanSpan, meanSpanSD,
123 sDOfSpan, sDOfSpanSD,
124 confidence).analyze(image);
125\end{lstlisting}
126All of the essential classes are immutable and thread safe.
127Bulk modifications use localized mutable state to avoid performance problems.
128\subsection{Through the Command Line Interface}
114129% How to use ACSA as a command line utility?
130ACSA does not currently support command line use.
131It should.
132\begin{lstlisting}
133[user@computer ~]$ acsa --method clamanalyzer --resolution 300 --configuration parameters.clamanalyzer --summary clams.tsv scan.jpg
134\end{lstlisting}
115135\subsection{With the Graphical User Interface}
116136% How to run ACSA as a graphical application?
137A walkthrough of the most common use case here.
138\subsection{In General}
117139A word about calibration here.
118140\subsection{Troubleshooting}
119141% How to prevent ACSA from malfunctioning?
142A point about bootstrapping \lstinline{rt.jar} here.
120143\paragraph{Problem}
121144The program doesn't start and an error message like
122145\begin{lstlisting}
185185\subsection{Algorithms}
186186% How is ACSA supposed to work?
187187I'll leave these here since I need them while writing.
188
189Outlines can be ideally parametrized by arc length as
188190\begin{align*}
191 v &: \mathbb R \to \mathbb R^2\\
192 v(t) &= \big(x(t), y(t)\big).
193\end{align*}
194
195The curvature at \(t\) satisfies
196\begin{align*}
197 k(t) &= \frac{x'(t) y''(t) - x''(t) y'(t)}{\sqrt{x'(t)^2 + y'(t)^2}^3}
198\end{align*}
199but is unobtainable since
200\begin{align*}
201 x &\in C^0 & y &\in C^0.
202\end{align*}
203
204A local polynomial approximation at \(t_2\) can be obtained by solving
205\begin{align*}
206 \begin{bmatrix}
207 x_1\\
208 x_2\\
209 x_3
210 \end{bmatrix} &= \begin{bmatrix}
211 1 & t_1 & t_1^2\\
212 1 & t_2 & t_2^2\\
213 1 & t_3 & t_3^2
214 \end{bmatrix} \begin{bmatrix}
215 a_1\\
216 a_2\\
217 a_3
218 \end{bmatrix} & \begin{bmatrix}
219 y_1\\
220 y_2\\
221 y_3
222 \end{bmatrix} &= \begin{bmatrix}
223 1 & t_1 & t_1^2\\
224 1 & t_2 & t_2^2\\
225 1 & t_3 & t_3^2
226 \end{bmatrix} \begin{bmatrix}
227 b_1\\
228 b_2\\
229 b_3
230 \end{bmatrix}
231\end{align*}
232where \(s = t_3 - t_2 = t_2 - t_1\) and so
233\begin{align*}
234 k(t_2) &\approx \frac{2 (a_2 b_3 - a_3 b_2)}{\sqrt{(a_2 + 2 a_3 t_2)^2 + (b_2 + 2 b_3 t_2)^2}^3}.
235\end{align*}
236
237Use third degree B├ęzier curves with control point radii
238\begin{align*}
239 r &= \frac 1 2 + \tan \frac{|\alpha_2 - \alpha_1|} 4
240\end{align*}
241to build the missing parts.
242
243Unnormalized absorbed light
244\begin{align*}
245 A &= \frac 1 r \sum_{y = 1}^h \sum_{x = 1}^w S_{x, y}
246\end{align*}
247where \(r\) is the scanner resolution and \(S\) is a signal matrix of size \(w \times h\).
248
249Total mass \(m\) satisfies
250\begin{align*}
251 \begin{bmatrix}
252 m_1\\
253 m_2\\
254 \vdots\\
255 m_n
256 \end{bmatrix} &= \begin{bmatrix}
257 1 & A_1\\
258 1 & A_2\\
259 \vdots & \vdots\\
260 1 & A_n
261 \end{bmatrix} \begin{bmatrix}
262 c\\
263 \rho
264 \end{bmatrix} + \begin{bmatrix}
265 \sigma_1\\
266 \sigma_2\\
267 \vdots\\
268 \sigma_n
269 \end{bmatrix}
270\end{align*}
271where \(c\) is the constant volume term, \(\rho\) is the linear absorptivity term and \(\sigma\) are the sample deviations
272
273Deriving from
274\begin{align*}
189275 x &= a_1 + a_2 t + a_3 t^2\\
190276 \begin{bmatrix}
191277 x_1\\
295295 a_2 &= \frac{x_1 d_1 + x_2 d_2 + x_3 d_3} s\\
296296 a_3 &= \frac{x_1 (t_2 - t_3) + x_2 (t_3 - t_1) + x_3 (t_1 - t_2)} s\\
297297 k &= \frac{x' y'' - x'' y'}{\sqrt{x'^2 + y'^2}^3}
298 = \frac{2 (a_2 b_3 - a_3 b_2)}{\sqrt{(a_2 + 2 a_3 t)^2 + (b_2 + 2 b_3 t)^2}^3}
298 = \frac{2 (a_2 b_3 - a_3 b_2)}{\sqrt{(a_2 + 2 a_3 t)^2 + (b_2 + 2 b_3 t)^2}^3}.
299299\end{align*}
300300\subsection{Architecture}
301301% How does ACSA actually work?
302302\subsection{Lessons Learned}
303303% What didn't work for ACSA?
304A note about keeping it simple and not touching NP-hard problems from computational geometry.
304305\section{Development}
305306% How to develop ACSA further?
307A note about submitting pull requests.