diff --git a/dox/ITKCompilationOptions.txt b/dox/ITKCompilationOptions.txt index a3383b117..51312fa8b 100644 --- a/dox/ITKCompilationOptions.txt +++ b/dox/ITKCompilationOptions.txt @@ -1,4 +1,4 @@ -elastix 4.9 compiles with ITK 4.11 compiled with the default options. +elastix 4.9 compiles with ITK 4.13.0 compiled with the default options. Optionally use ITK_USE_64BITS_IDS and ITK_LEGACY_REMOVE. diff --git a/dox/manual/manual.tex b/dox/manual/manual.tex index 16a8aa37e..54904c3c6 100644 --- a/dox/manual/manual.tex +++ b/dox/manual/manual.tex @@ -1087,13 +1087,12 @@ \section{Introduction}\label{sec:elastix:intro} what & where \\ \hline Website & \url{http://elastix.isi.uu.nl} \\ -SVN repository & \url{https://svn.bigr.nl/elastix/trunkpublic} \\ +GIT repository & \url{https://github.com/SuperElastix/elastix} \\ Dashboard & \url{http://my.cdash.org/index.php?project=elastix} \\ -WIKI & \url{http://elastix.isi.uu.nl/wiki.php} \\ +WIKI & \url{https://github.com/SuperElastix/elastix/wiki} \\ FAQ & \url{http://elastix.isi.uu.nl/FAQ.php} \\ -Mailing list subscription & -\url{http://lists.bigr.nl/mailman/listinfo/elastix} \\ -Mailing list & \url{elastix@bigr.nl} +Mailing list & +\url{https://groups.google.com/forum/#!forum/elastix-imageregistration} \end{tabular} \end{table} @@ -1167,7 +1166,13 @@ \subsection{Getting started the really easy way} The easiest way to get started with \elastix\ is to use the pre-compiled binaries. \begin{enumerate} -\item Download the compressed archive from the website: +\item Download the compressed archive. From \elastix\ v4.9.0 onwards +the binaries can be found at GitHub: + \begin{quote} + \url{https://github.com/SuperElastix/elastix/releases} + \end{quote} + +Binaries for \elastix\ v4.8.0 and earlier can be found at: \begin{quote} \url{http://elastix.isi.uu.nl/download.php} \end{quote} @@ -1204,37 +1209,33 @@ \subsection{Getting started the easy way} \begin{enumerate} \item Download and install CMake: \url{www.cmake.org}. -\item Download and compile the ITK version 4.11: \url{www.itk.org}. Make - sure to set the following (advanced) CMake variable to \texttt{ON}: - \texttt{Module\_ITKReview}, and optionally \texttt{ITK\_USE\_64BITS\_IDS} +\item Download and compile the ITK version 4.13.0: \url{www.itk.org}. + Optionally set the following (advanced) CMake variables to + \texttt{ON}: \texttt{ITK\_USE\_64BITS\_IDS} and \texttt{ITK\_LEGACY\_REMOVE}. For faster building of ITK you can switch off \texttt{BUILD\_EXAMPLES} and \texttt{BUILD\_TESTING}. \item Obtain the sources. There are three possibilities: \begin{enumerate} - \item Download the compressed sources from the website. Extract the + \item Download the compressed sources from GitHub. Extract the archive to \texttt{} of your choice. - \item Use \texttt{subversion} (\url{https://subversion.tigris.org}) - to check out the release from the subversion repository: -\begin{verbatim} -svn co --username elastixguest --password elastixguest - https://svn.bigr.nl/elastix/tagspublic/elastix_XX_X -\end{verbatim} - where XX\_X is the major version number (first 2 digits) and the - minor version number (1 digit). So, for example, for version - 4.9 this would be 04\_9. - \item Use \texttt{subversion} to check out the latest development - version. NB: this version might be unstable! -\begin{verbatim} -svn co --username elastixguest --password elastixguest - https://svn.bigr.nl/elastix/trunkpublic -\end{verbatim} + \item Use \texttt{git} (\url{https://git-scm.com/}) + to clone the release from the GitHub repository: + \begin{verbatim} + git clone https://github.com/SuperElastix/elastix.git + \end{verbatim} + \item Checkout the release you are interested in: + \begin{verbatim} + git checkout v4.9.0 + \end{verbatim} + \item Follow the \texttt{develop} branch for the latest development. + NB: this version might be unstable! \end{enumerate} \item Run CMake for \elastix: \begin{enumerate} - \item Windows: start CMake. Find the \texttt{src} folder with the + \item Windows: start CMake. Find the folder with the source code. Set the folder where you want the binaries to be created. Click ``Configure'' and select the compiler that you use. Set the \texttt{CMAKE\_INSTALL\_PREFIX} to the directory @@ -1736,7 +1737,7 @@ \subsection{Transform}\label{sec:transformtuning} \texttt{(AutomaticScalesEstimation "true")}\footnote{The implementation is given in %\verb=elastix\src\Core\ComponentBaseClasses\elxTransformBase.hxx=} -\texttt{elastix$\backslash$src$\backslash$Core$\backslash$ComponentBaseClasses$\backslash$elxTransformBase.hxx}}. +\texttt{elastix$\backslash$Core$\backslash$ComponentBaseClasses$\backslash$elxTransformBase.hxx}}. Always start with a rigid or affine transformation before doing a nonrigid one, to get a good initial alignment. @@ -2623,9 +2624,9 @@ \section{Relation to ITK} that the low-level functionality (image classes, memory allocation etc.) is thoroughly tested. Naturally, all image formats supported by the ITK are supported by \elastix\ as well. The C++ source code -can be compiled on multiple operating systems (Windows XP, Linux, -Mac OS X), using various compilers (MS Visual Studio, GCC), and -supports both 32 and 64 bit systems. +can be compiled on multiple operating systems (Windows, Linux, Mac +OS X), using various compilers (MS Visual Studio, GCC), and supports +both 32 and 64 bit systems. In addition to the existing ITK image registration classes, \elastix\ implements new functionality. The most important @@ -2688,25 +2689,25 @@ \section{Overview of the \elastix\ code} layer B wrapper needs to be written, which connects the layer A class to the other parts of \elastix. -The image samplers, for example, are implemented as ITK classes that all -inherit from a base class \texttt{itk::ImageSamplerBase}. These can be found in -\texttt{src/Common/ImageSamplers}. This is ``layer A'' in \elastix. For each -sampler (random, grid, full... ) a wrapper is written, located in -\texttt{src/Components/ImageSamplers}, which takes care of configuring the -sampler before each new resolution of the registration process. This is ``layer -B'' of \elastix. +The image samplers, for example, are implemented as ITK classes that +all inherit from a base class \texttt{itk::ImageSamplerBase}. These +can be found in \texttt{Common/ImageSamplers}. This is ``layer A'' +in \elastix. For each sampler (random, grid, full... ) a wrapper is +written, located in \texttt{Components/ImageSamplers}, which takes +care of configuring the sampler before each new resolution of the +registration process. This is ``layer B'' of \elastix. \subsection{Directory structure} The basic directory structure is as follows: \begin{itemize} \item dox -\item src/Common: ITK classes, Layer A stuff. This directory also contains +\item Common: ITK classes, Layer A stuff. This directory also contains some external libraries, unrelated to ITK, like xout (which is written by us) and the ANNlib. -\item src/Core: this is the main \elastix\ kernel, responsible for the +\item Core: this is the main \elastix\ kernel, responsible for the execution flow, connecting the classes, reading parameters etc. -\item src/Components: this directory contains the components and their +\item Components: this directory contains the components and their \elastix\ wrappers (layer B). Very component-specific layer A code can also be found here. \end{itemize} @@ -2775,12 +2776,12 @@ \section{Using \elastix\ in your own software} \subsection{Including \elastix\ code in your own software}\label{ssec:dev:include} -You may find some \elastix\ classes useful to integrate in your own project. -For example, if you are developing a new \elastix\ component and first would -like to test it outside elastix (see Section \ref{sec:dev:newcomp}. In such a -case, you could of course copy the required \elastix\ files to your own -project, or set the include-paths manually, but this would not be very -convenient. +You may find some \elastix\ classes useful to integrate in your own +project. For example, if you are developing a new \elastix\ +component and first would like to test it outside \elastix\ (see +Section \ref{sec:dev:newcomp}. In such a case, you could of course +copy the required \elastix\ files to your own project, or set the +include-paths manually, but this would not be very convenient. To make it easier, a \texttt{UseElastix.cmake} file is generated in the \elastix\ binary directory. You can include this in the \texttt{CMakeLists.txt} @@ -2788,8 +2789,8 @@ \subsection{Including \elastix\ code in your own software}\label{ssec:dev:includ include\_directories are set. Also, you can link to the \elastix\ libraries, such as elxCommon, to avoid recompiling code. -An example of this can be found in the directory \texttt{dox/externalproject} -of the elastix source distribution. +An example of this can be found in the directory +\texttt{dox/externalproject} of the \elastix\ source distribution. \subsection{Using \elastix\ as a library}\label{ssec:dev:library} @@ -3028,13 +3029,14 @@ \section{Creating new components}\label{sec:dev:newcomp} \end{verbatim} \end{quote} The \texttt{ADD\_ELXCOMPONENT} command is a macro defined in -\texttt{src/Components/CMakeLists.txt}. The first argument is the name of the -layer B wrapper class, which is declared in ``elxAdvancedMeanSquaresMetric.h''. -After that, you can specify the source files on which the component relies. In -the example above, the files that start with ``itk'' form the layer A code. -Files that start with ``elx'' are the layer B code. The file -``elxAdvancedMeanSquaresMetric.cxx'' is particularly simple. It just consists -of two lines: +\texttt{Components/CMakeLists.txt}. The first argument is the name +of the layer B wrapper class, which is declared in +``elxAdvancedMeanSquaresMetric.h''. After that, you can specify the +source files on which the component relies. In the example above, +the files that start with ``itk'' form the layer A code. Files that +start with ``elx'' are the layer B code. The file +``elxAdvancedMeanSquaresMetric.cxx'' is particularly simple. It just +consists of two lines: \begin{quote} \begin{verbatim} #include "elxAdvancedMeanSquaresMetric.h" @@ -3042,7 +3044,7 @@ \section{Creating new components}\label{sec:dev:newcomp} \end{verbatim} \end{quote} The \texttt{elxInstallMacro} is defined in -\texttt{src/Core/Install/elxMacro.h}. +\texttt{Core/Install/elxMacro.h}. The files \texttt{elxAdvancedMeanSquaresMetric.h/hxx} together define the layer B wrapper class. That class inherits from the corresponding layer A class, but