https://public.kitware.com/Wiki/api.php?action=feedcontributions&user=Gabe.hart&feedformat=atomKitwarePublic - User contributions [en]2024-03-28T10:58:45ZUser contributionsMediaWiki 1.38.6https://public.kitware.com/Wiki/index.php?title=File:GeoMet_result.png&diff=42202File:GeoMet result.png2011-08-12T14:12:23Z<p>Gabe.hart: uploaded a new version of &quot;File:GeoMet result.png&quot;</p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:GeoMet_target.png&diff=42201File:GeoMet target.png2011-08-12T14:12:00Z<p>Gabe.hart: uploaded a new version of &quot;File:GeoMet target.png&quot;</p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:GeoMet_source.png&diff=42199File:GeoMet source.png2011-08-12T14:10:28Z<p>Gabe.hart: uploaded a new version of &quot;File:GeoMet source.png&quot;</p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:GeoMet_result.png&diff=42179File:GeoMet result.png2011-08-11T23:28:29Z<p>Gabe.hart: </p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:GeoMet_target.png&diff=42178File:GeoMet target.png2011-08-11T23:28:07Z<p>Gabe.hart: </p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:GeoMet_source.png&diff=42177File:GeoMet source.png2011-08-11T23:27:43Z<p>Gabe.hart: uploaded a new version of &quot;File:GeoMet source.png&quot;</p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:GeoMet_source.png&diff=42176File:GeoMet source.png2011-08-11T23:25:41Z<p>Gabe.hart: </p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Images&diff=42175FRAT/Images2011-08-11T23:25:11Z<p>Gabe.hart: /* Images */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Images =<br />
This page presents an assorted set of images generated for various research projects using FRAT<br />
<br />
== LDDMM Registration ==<br />
{| style="text-align:center;"<br />
|[[image:registration_source.png]]<br />
|[[image:registration_target.png]]<br />
|[[image:registration_result.png]]<br />
|-<br />
|Source<br />
|Target<br />
|Result<br />
|}<br />
<br />
== Time Series Registration ==<br />
[[image:timeSeries.png]]<br />
<br />
Time series results. Known images are labeled. Time goes left to right and top to bottom<br />
<br />
== Geometric Metamorphosis ==<br />
<br />
{| style="text-align:center;"<br />
|[[image:GeoMet_source.png]]<br />
|[[image:GeoMet_target.png]]<br />
|[[image:GeoMet_result.png]]<br />
|-<br />
|Source<br />
|Target<br />
|Result<br />
|}<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Images&diff=42174FRAT/Images2011-08-11T23:19:41Z<p>Gabe.hart: /* Time Series Registration */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Images =<br />
This page presents an assorted set of images generated for various research projects using FRAT<br />
<br />
== LDDMM Registration ==<br />
{| style="text-align:center;"<br />
|[[image:registration_source.png]]<br />
|[[image:registration_target.png]]<br />
|[[image:registration_result.png]]<br />
|-<br />
|Source<br />
|Target<br />
|Result<br />
|}<br />
<br />
== Time Series Registration ==<br />
[[image:timeSeries.png]]<br />
<br />
Time series results. Known images are labeled. Time goes left to right and top to bottom<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42173FRAT/Library2011-08-11T23:19:00Z<p>Gabe.hart: /* Algorithims */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT as a Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build FRAT.<br />
<br />
== Using libFRAT in an External Project ==<br />
Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
<br />
== Basic Concepts in FRAT ==<br />
This section outlines some of the basics of the FRAT project so you can learn how to use libFRAT in your own project.<br />
<br />
=== Data Structures ===<br />
<br />
FRAT provides libraries for working with both 2D and 3D vector-valued images. Most functions and algorithms are implemented for both 2D and 3D, so for the sake of brevity, we'll use XD in place of 2D or 3D. At this time, FRAT is not generalized to arbitrary dimensionality. The base data classes in FRAT are the VectorArrayXD classes. These templated classes store XD vector-valued data of any type. Throughout the code, they are used only as the superclass for the float-based VectorImageXD and VectorFieldXD classes.<br />
<br />
==== VectorImageXD ====<br />
<br />
The VectorImage2D and VectorImage3D classes offer basic vector-value XD image functionality with float type pixels. The following trivial example shows a simple operation using the VectorImage2D type and then deletes the image. In this case it simply sets the value of each pixel to the value of the x index times the value of the y index.<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim);<br />
<br />
for (unsigned int y = 0; y < szY; y++) {<br />
for (unsigned int x = 0; x < szX; x++) {<br />
for (unsigned int d = 0; d < dim; d++) {<br />
<br />
im->setValue(x,y,d, x*y);<br />
<br />
}<br />
}<br />
}<br />
<br />
delete im;<br />
<br />
* The key elements in this example are the use of the setValue(x,y,d, val) method and the use of the inverted loop structure. FRAT stores the image array in row-major format, so using the y-dimension in 2D or the z-dimension in 3D as the outer loop is more efficient. The setValue(x,y,d, val) method used here simply sets d'th vector component of the pixel at location x,y to val. The pixel can then be accessed using getValue(x,y,d).<br />
<br />
* In addition to image size (szX, szY) and vector dimensionality (dim), the VectorImageXD classes support the notion of anisotropic pixel spacing (spX, spY). A spacing scale factor (spFct) can also be employed to change the units on the space in order to adjust derivative behavior. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim, spX, spY, spFct);<br />
<br />
* If the space factor is not set for an image, it will default to having a factor of 0.01 (found to be the best default experimentally). If the spacing is not specified, it will default to 1 for each axis. The size, dimensionality spacing, and space factor can be get and set after instantiation using methods such as getSizeX(), getDim(), getSpaceX(), getSpaceFactor(), and similar set methods.<br />
<br />
* To offer full compatibility with ITK images, FRAT images also carry a world coordinate origin and an direction matrix. These pieces of meta-data are used only to ensure that origin and direction are preserved between reading and writing. NOTE: All of the registration operations in FRAT assume that the images being registered are affinely pre-registered and thus have the same origin and direction.<br />
<br />
==== VectorFieldXD ====<br />
<br />
The other primary data type used in FRAT is vector fields, implemented in the VectorField2D and VectorField3D classes. In practice these classes are simply subclasses of the VectorImageXD classes where the vector size is specified as 2 for 2D fields and 3 for 3D fields. In theory, however, these classes should be thought of as separate entities from the VectorImageXD classes. To access vector components, these classes provide axis specific get and set methods such as getX(x,y,d) and setX(x,y,d, val). Since the dimensionality is fixed for vector fields, a dim value cannot be included when instantiating a field. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorField2D* fld = new VectorField2D(szX, szY, spX, spY, spFct);<br />
<br />
When using VectorFieldXD objects in conjunction with VectorImageXD objects, it is important that the fields use the same spacings and space factor as the images.<br />
<br />
==== VectorImageTimeSeriesXD ====<br />
<br />
The VectorImageTimeSeriesXD data structures act as container classes for the data computed during time series registration. Additionally, they provide functionality to use the computed velocity field to interpolate an image or displacement map at any time-point along the series trajectory. The important members of the data structure are:<br />
* ''VSeries'': The series of velocity fields between each known image in the time series<br />
* ''ISet'': The set of known images for the time series<br />
* ''MapSet'': The set of displacement maps used to initialize the transformations for each known image<br />
* ''timeSet'': The set of times associated with ISet and MapSet<br />
* ''IPathSet'': The paths to each of the known images. This is used when saving a time series object so that the images can be re-read later<br />
* ''AlgParams'': The parameters used to compute the time series<br />
<br />
=== Utility Functions ===<br />
<br />
FRAT has a collection of utility classes that contain static functions for operating on the data structures. These classes are divided based on the data structure they cater to. Additionally, a set of more advanced algorithmic parameters is provided in LDDMMUtils and a set of utilities for writing applications is provided in ApplicationUtils. The utility classes are:<br />
* ''VectorImage2DUtils'' and ''VectorImage3DUtils'': Basic utilities, including IO, for the VectorImageXD data structures<br />
* ''VectorField2DUtils'' and ''VectorField3DUtils'': Utilities specific to the displacement field nature of the VectorFieldXD data structures. Use VectorImageXDUtils for IO.<br />
* ''TimeSeries2DUtils'' and ''TimeSeries3DUtils'': IO utilities for the VectorImageTimeSeriesXD data structures.<br />
* ''LDDMMUtils'': Subroutines for LDDMM registration.<br />
* ''ApplicationUtils'': Front-end utilities such as string parsing and path verification for writing executables<br />
<br />
=== Algorithims ===<br />
FRAT implements a set of algorithms based on LDDMM registration. The lowest-level algorithms are:<br />
* ''FlowAdvectionSemiLagrangian'': Flow a volume using a provided velocity field. This implements a discrete solution to the advection equation and is a core component in the LDDMM registration algorithm.<br />
* ''FlowScalarConsrvation'': Flow a volume using a provided velocity field while conserving overall volume intensity. This implements a discrete solution to the scalar conservation equation and is a core component in the LDDMM registration algorithm.<br />
The higher-level algorithms are used to perform various registration tasks. Each algorithm is implemented first with a single-scale system and then augmented with a multiscale wrapper. These algorithms are:<br />
* ''LDDMMAdjoint'': Fluid registration from a source image to a target image<br />
* ''AtlasBuilder'': Cross-sectional atlas construction for a set of images<br />
* ''TimeSeries'': Fluid registration between a series of N time-point images<br />
* ''GeometricMetamorphosis'': Fluid registration between images with structural differences<br />
Finally, the ''LongitudinalAtlasBuilder'' algorithm uses TimeSeries and AtlasBuilder internally to create an average growth model for a longitudinal population of subjects.<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42172FRAT/Library2011-08-11T23:05:42Z<p>Gabe.hart: /* FRAT as a Library */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT as a Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build FRAT.<br />
<br />
== Using libFRAT in an External Project ==<br />
Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
<br />
== Basic Concepts in FRAT ==<br />
This section outlines some of the basics of the FRAT project so you can learn how to use libFRAT in your own project.<br />
<br />
=== Data Structures ===<br />
<br />
FRAT provides libraries for working with both 2D and 3D vector-valued images. Most functions and algorithms are implemented for both 2D and 3D, so for the sake of brevity, we'll use XD in place of 2D or 3D. At this time, FRAT is not generalized to arbitrary dimensionality. The base data classes in FRAT are the VectorArrayXD classes. These templated classes store XD vector-valued data of any type. Throughout the code, they are used only as the superclass for the float-based VectorImageXD and VectorFieldXD classes.<br />
<br />
==== VectorImageXD ====<br />
<br />
The VectorImage2D and VectorImage3D classes offer basic vector-value XD image functionality with float type pixels. The following trivial example shows a simple operation using the VectorImage2D type and then deletes the image. In this case it simply sets the value of each pixel to the value of the x index times the value of the y index.<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim);<br />
<br />
for (unsigned int y = 0; y < szY; y++) {<br />
for (unsigned int x = 0; x < szX; x++) {<br />
for (unsigned int d = 0; d < dim; d++) {<br />
<br />
im->setValue(x,y,d, x*y);<br />
<br />
}<br />
}<br />
}<br />
<br />
delete im;<br />
<br />
* The key elements in this example are the use of the setValue(x,y,d, val) method and the use of the inverted loop structure. FRAT stores the image array in row-major format, so using the y-dimension in 2D or the z-dimension in 3D as the outer loop is more efficient. The setValue(x,y,d, val) method used here simply sets d'th vector component of the pixel at location x,y to val. The pixel can then be accessed using getValue(x,y,d).<br />
<br />
* In addition to image size (szX, szY) and vector dimensionality (dim), the VectorImageXD classes support the notion of anisotropic pixel spacing (spX, spY). A spacing scale factor (spFct) can also be employed to change the units on the space in order to adjust derivative behavior. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim, spX, spY, spFct);<br />
<br />
* If the space factor is not set for an image, it will default to having a factor of 0.01 (found to be the best default experimentally). If the spacing is not specified, it will default to 1 for each axis. The size, dimensionality spacing, and space factor can be get and set after instantiation using methods such as getSizeX(), getDim(), getSpaceX(), getSpaceFactor(), and similar set methods.<br />
<br />
* To offer full compatibility with ITK images, FRAT images also carry a world coordinate origin and an direction matrix. These pieces of meta-data are used only to ensure that origin and direction are preserved between reading and writing. NOTE: All of the registration operations in FRAT assume that the images being registered are affinely pre-registered and thus have the same origin and direction.<br />
<br />
==== VectorFieldXD ====<br />
<br />
The other primary data type used in FRAT is vector fields, implemented in the VectorField2D and VectorField3D classes. In practice these classes are simply subclasses of the VectorImageXD classes where the vector size is specified as 2 for 2D fields and 3 for 3D fields. In theory, however, these classes should be thought of as separate entities from the VectorImageXD classes. To access vector components, these classes provide axis specific get and set methods such as getX(x,y,d) and setX(x,y,d, val). Since the dimensionality is fixed for vector fields, a dim value cannot be included when instantiating a field. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorField2D* fld = new VectorField2D(szX, szY, spX, spY, spFct);<br />
<br />
When using VectorFieldXD objects in conjunction with VectorImageXD objects, it is important that the fields use the same spacings and space factor as the images.<br />
<br />
==== VectorImageTimeSeriesXD ====<br />
<br />
The VectorImageTimeSeriesXD data structures act as container classes for the data computed during time series registration. Additionally, they provide functionality to use the computed velocity field to interpolate an image or displacement map at any time-point along the series trajectory. The important members of the data structure are:<br />
* ''VSeries'': The series of velocity fields between each known image in the time series<br />
* ''ISet'': The set of known images for the time series<br />
* ''MapSet'': The set of displacement maps used to initialize the transformations for each known image<br />
* ''timeSet'': The set of times associated with ISet and MapSet<br />
* ''IPathSet'': The paths to each of the known images. This is used when saving a time series object so that the images can be re-read later<br />
* ''AlgParams'': The parameters used to compute the time series<br />
<br />
=== Utility Functions ===<br />
<br />
FRAT has a collection of utility classes that contain static functions for operating on the data structures. These classes are divided based on the data structure they cater to. Additionally, a set of more advanced algorithmic parameters is provided in LDDMMUtils and a set of utilities for writing applications is provided in ApplicationUtils. The utility classes are:<br />
* ''VectorImage2DUtils'' and ''VectorImage3DUtils'': Basic utilities, including IO, for the VectorImageXD data structures<br />
* ''VectorField2DUtils'' and ''VectorField3DUtils'': Utilities specific to the displacement field nature of the VectorFieldXD data structures. Use VectorImageXDUtils for IO.<br />
* ''TimeSeries2DUtils'' and ''TimeSeries3DUtils'': IO utilities for the VectorImageTimeSeriesXD data structures.<br />
* ''LDDMMUtils'': Subroutines for LDDMM registration.<br />
* ''ApplicationUtils'': Front-end utilities such as string parsing and path verification for writing executables<br />
<br />
=== Algorithims ===<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42171FRAT/Library2011-08-11T23:04:51Z<p>Gabe.hart: /* Utility Functions */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT as a Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build FRAT.<br />
<br />
== Using libFRAT in an External Project ==<br />
Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
<br />
== Basic Concepts in FRAT ==<br />
This section outlines some of the basics of the FRAT project so you can learn how to use libFRAT in your own project.<br />
<br />
=== Data Structures ===<br />
<br />
FRAT provides libraries for working with both 2D and 3D vector-valued images. Most functions and algorithms are implemented for both 2D and 3D, so for the sake of brevity, we'll use XD in place of 2D or 3D. At this time, FRAT is not generalized to arbitrary dimensionality. The base data classes in FRAT are the VectorArrayXD classes. These templated classes store XD vector-valued data of any type. Throughout the code, they are used only as the superclass for the float-based VectorImageXD and VectorFieldXD classes.<br />
<br />
==== VectorImageXD ====<br />
<br />
The VectorImage2D and VectorImage3D classes offer basic vector-value XD image functionality with float type pixels. The following trivial example shows a simple operation using the VectorImage2D type and then deletes the image. In this case it simply sets the value of each pixel to the value of the x index times the value of the y index.<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim);<br />
<br />
for (unsigned int y = 0; y < szY; y++) {<br />
for (unsigned int x = 0; x < szX; x++) {<br />
for (unsigned int d = 0; d < dim; d++) {<br />
<br />
im->setValue(x,y,d, x*y);<br />
<br />
}<br />
}<br />
}<br />
<br />
delete im;<br />
<br />
* The key elements in this example are the use of the setValue(x,y,d, val) method and the use of the inverted loop structure. FRAT stores the image array in row-major format, so using the y-dimension in 2D or the z-dimension in 3D as the outer loop is more efficient. The setValue(x,y,d, val) method used here simply sets d'th vector component of the pixel at location x,y to val. The pixel can then be accessed using getValue(x,y,d).<br />
<br />
* In addition to image size (szX, szY) and vector dimensionality (dim), the VectorImageXD classes support the notion of anisotropic pixel spacing (spX, spY). A spacing scale factor (spFct) can also be employed to change the units on the space in order to adjust derivative behavior. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim, spX, spY, spFct);<br />
<br />
* If the space factor is not set for an image, it will default to having a factor of 0.01 (found to be the best default experimentally). If the spacing is not specified, it will default to 1 for each axis. The size, dimensionality spacing, and space factor can be get and set after instantiation using methods such as getSizeX(), getDim(), getSpaceX(), getSpaceFactor(), and similar set methods.<br />
<br />
* To offer full compatibility with ITK images, FRAT images also carry a world coordinate origin and an direction matrix. These pieces of meta-data are used only to ensure that origin and direction are preserved between reading and writing. NOTE: All of the registration operations in FRAT assume that the images being registered are affinely pre-registered and thus have the same origin and direction.<br />
<br />
==== VectorFieldXD ====<br />
<br />
The other primary data type used in FRAT is vector fields, implemented in the VectorField2D and VectorField3D classes. In practice these classes are simply subclasses of the VectorImageXD classes where the vector size is specified as 2 for 2D fields and 3 for 3D fields. In theory, however, these classes should be thought of as separate entities from the VectorImageXD classes. To access vector components, these classes provide axis specific get and set methods such as getX(x,y,d) and setX(x,y,d, val). Since the dimensionality is fixed for vector fields, a dim value cannot be included when instantiating a field. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorField2D* fld = new VectorField2D(szX, szY, spX, spY, spFct);<br />
<br />
When using VectorFieldXD objects in conjunction with VectorImageXD objects, it is important that the fields use the same spacings and space factor as the images.<br />
<br />
==== VectorImageTimeSeriesXD ====<br />
<br />
The VectorImageTimeSeriesXD data structures act as container classes for the data computed during time series registration. Additionally, they provide functionality to use the computed velocity field to interpolate an image or displacement map at any time-point along the series trajectory. The important members of the data structure are:<br />
* ''VSeries'': The series of velocity fields between each known image in the time series<br />
* ''ISet'': The set of known images for the time series<br />
* ''MapSet'': The set of displacement maps used to initialize the transformations for each known image<br />
* ''timeSet'': The set of times associated with ISet and MapSet<br />
* ''IPathSet'': The paths to each of the known images. This is used when saving a time series object so that the images can be re-read later<br />
* ''AlgParams'': The parameters used to compute the time series<br />
<br />
=== Utility Functions ===<br />
<br />
FRAT has a collection of utility classes that contain static functions for operating on the data structures. These classes are divided based on the data structure they cater to. Additionally, a set of more advanced algorithmic parameters is provided in LDDMMUtils and a set of utilities for writing applications is provided in ApplicationUtils. The utility classes are:<br />
* ''VectorImage2DUtils'' and ''VectorImage3DUtils'': Basic utilities, including IO, for the VectorImageXD data structures<br />
* ''VectorField2DUtils'' and ''VectorField3DUtils'': Utilities specific to the displacement field nature of the VectorFieldXD data structures. Use VectorImageXDUtils for IO.<br />
* ''TimeSeries2DUtils'' and ''TimeSeries3DUtils'': IO utilities for the VectorImageTimeSeriesXD data structures.<br />
* ''LDDMMUtils'': Subroutines for LDDMM registration.<br />
* ''ApplicationUtils'': Front-end utilities such as string parsing and path verification for writing executables<br />
<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42170FRAT/Library2011-08-11T23:00:30Z<p>Gabe.hart: /* VectorImageTimeSeriesXD */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT as a Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build FRAT.<br />
<br />
== Using libFRAT in an External Project ==<br />
Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
<br />
== Basic Concepts in FRAT ==<br />
This section outlines some of the basics of the FRAT project so you can learn how to use libFRAT in your own project.<br />
<br />
=== Data Structures ===<br />
<br />
FRAT provides libraries for working with both 2D and 3D vector-valued images. Most functions and algorithms are implemented for both 2D and 3D, so for the sake of brevity, we'll use XD in place of 2D or 3D. At this time, FRAT is not generalized to arbitrary dimensionality. The base data classes in FRAT are the VectorArrayXD classes. These templated classes store XD vector-valued data of any type. Throughout the code, they are used only as the superclass for the float-based VectorImageXD and VectorFieldXD classes.<br />
<br />
==== VectorImageXD ====<br />
<br />
The VectorImage2D and VectorImage3D classes offer basic vector-value XD image functionality with float type pixels. The following trivial example shows a simple operation using the VectorImage2D type and then deletes the image. In this case it simply sets the value of each pixel to the value of the x index times the value of the y index.<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim);<br />
<br />
for (unsigned int y = 0; y < szY; y++) {<br />
for (unsigned int x = 0; x < szX; x++) {<br />
for (unsigned int d = 0; d < dim; d++) {<br />
<br />
im->setValue(x,y,d, x*y);<br />
<br />
}<br />
}<br />
}<br />
<br />
delete im;<br />
<br />
* The key elements in this example are the use of the setValue(x,y,d, val) method and the use of the inverted loop structure. FRAT stores the image array in row-major format, so using the y-dimension in 2D or the z-dimension in 3D as the outer loop is more efficient. The setValue(x,y,d, val) method used here simply sets d'th vector component of the pixel at location x,y to val. The pixel can then be accessed using getValue(x,y,d).<br />
<br />
* In addition to image size (szX, szY) and vector dimensionality (dim), the VectorImageXD classes support the notion of anisotropic pixel spacing (spX, spY). A spacing scale factor (spFct) can also be employed to change the units on the space in order to adjust derivative behavior. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim, spX, spY, spFct);<br />
<br />
* If the space factor is not set for an image, it will default to having a factor of 0.01 (found to be the best default experimentally). If the spacing is not specified, it will default to 1 for each axis. The size, dimensionality spacing, and space factor can be get and set after instantiation using methods such as getSizeX(), getDim(), getSpaceX(), getSpaceFactor(), and similar set methods.<br />
<br />
* To offer full compatibility with ITK images, FRAT images also carry a world coordinate origin and an direction matrix. These pieces of meta-data are used only to ensure that origin and direction are preserved between reading and writing. NOTE: All of the registration operations in FRAT assume that the images being registered are affinely pre-registered and thus have the same origin and direction.<br />
<br />
==== VectorFieldXD ====<br />
<br />
The other primary data type used in FRAT is vector fields, implemented in the VectorField2D and VectorField3D classes. In practice these classes are simply subclasses of the VectorImageXD classes where the vector size is specified as 2 for 2D fields and 3 for 3D fields. In theory, however, these classes should be thought of as separate entities from the VectorImageXD classes. To access vector components, these classes provide axis specific get and set methods such as getX(x,y,d) and setX(x,y,d, val). Since the dimensionality is fixed for vector fields, a dim value cannot be included when instantiating a field. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorField2D* fld = new VectorField2D(szX, szY, spX, spY, spFct);<br />
<br />
When using VectorFieldXD objects in conjunction with VectorImageXD objects, it is important that the fields use the same spacings and space factor as the images.<br />
<br />
==== VectorImageTimeSeriesXD ====<br />
<br />
The VectorImageTimeSeriesXD data structures act as container classes for the data computed during time series registration. Additionally, they provide functionality to use the computed velocity field to interpolate an image or displacement map at any time-point along the series trajectory. The important members of the data structure are:<br />
* ''VSeries'': The series of velocity fields between each known image in the time series<br />
* ''ISet'': The set of known images for the time series<br />
* ''MapSet'': The set of displacement maps used to initialize the transformations for each known image<br />
* ''timeSet'': The set of times associated with ISet and MapSet<br />
* ''IPathSet'': The paths to each of the known images. This is used when saving a time series object so that the images can be re-read later<br />
* ''AlgParams'': The parameters used to compute the time series<br />
<br />
=== Utility Functions ===<br />
<br />
FRAT has a collection of utility classes that contain static functions for operating on the data structures. These classes are divided based on the data structure they cater to. Additionally, a set of more advanced algorithmic parameters is provided in LDDMMUtils and a set of utilities for writing applications is provided in ApplicationUtils. The utility classes are:<br />
* VectorImage2DUtils<br />
* VectorImage3DUtils<br />
* VectorField2DUtils<br />
* VectorField3DUtils<br />
* TimeSeries2DUtils<br />
* TimeSeries3DUtils<br />
* LDDMMUtils<br />
* ApplicationUtils<br />
<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42169FRAT/Library2011-08-11T22:47:22Z<p>Gabe.hart: /* Basic Concepts in FRAT */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT as a Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build FRAT.<br />
<br />
== Using libFRAT in an External Project ==<br />
Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
<br />
== Basic Concepts in FRAT ==<br />
This section outlines some of the basics of the FRAT project so you can learn how to use libFRAT in your own project.<br />
<br />
=== Data Structures ===<br />
<br />
FRAT provides libraries for working with both 2D and 3D vector-valued images. Most functions and algorithms are implemented for both 2D and 3D, so for the sake of brevity, we'll use XD in place of 2D or 3D. At this time, FRAT is not generalized to arbitrary dimensionality. The base data classes in FRAT are the VectorArrayXD classes. These templated classes store XD vector-valued data of any type. Throughout the code, they are used only as the superclass for the float-based VectorImageXD and VectorFieldXD classes.<br />
<br />
==== VectorImageXD ====<br />
<br />
The VectorImage2D and VectorImage3D classes offer basic vector-value XD image functionality with float type pixels. The following trivial example shows a simple operation using the VectorImage2D type and then deletes the image. In this case it simply sets the value of each pixel to the value of the x index times the value of the y index.<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim);<br />
<br />
for (unsigned int y = 0; y < szY; y++) {<br />
for (unsigned int x = 0; x < szX; x++) {<br />
for (unsigned int d = 0; d < dim; d++) {<br />
<br />
im->setValue(x,y,d, x*y);<br />
<br />
}<br />
}<br />
}<br />
<br />
delete im;<br />
<br />
* The key elements in this example are the use of the setValue(x,y,d, val) method and the use of the inverted loop structure. FRAT stores the image array in row-major format, so using the y-dimension in 2D or the z-dimension in 3D as the outer loop is more efficient. The setValue(x,y,d, val) method used here simply sets d'th vector component of the pixel at location x,y to val. The pixel can then be accessed using getValue(x,y,d).<br />
<br />
* In addition to image size (szX, szY) and vector dimensionality (dim), the VectorImageXD classes support the notion of anisotropic pixel spacing (spX, spY). A spacing scale factor (spFct) can also be employed to change the units on the space in order to adjust derivative behavior. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim, spX, spY, spFct);<br />
<br />
* If the space factor is not set for an image, it will default to having a factor of 0.01 (found to be the best default experimentally). If the spacing is not specified, it will default to 1 for each axis. The size, dimensionality spacing, and space factor can be get and set after instantiation using methods such as getSizeX(), getDim(), getSpaceX(), getSpaceFactor(), and similar set methods.<br />
<br />
* To offer full compatibility with ITK images, FRAT images also carry a world coordinate origin and an direction matrix. These pieces of meta-data are used only to ensure that origin and direction are preserved between reading and writing. NOTE: All of the registration operations in FRAT assume that the images being registered are affinely pre-registered and thus have the same origin and direction.<br />
<br />
==== VectorFieldXD ====<br />
<br />
The other primary data type used in FRAT is vector fields, implemented in the VectorField2D and VectorField3D classes. In practice these classes are simply subclasses of the VectorImageXD classes where the vector size is specified as 2 for 2D fields and 3 for 3D fields. In theory, however, these classes should be thought of as separate entities from the VectorImageXD classes. To access vector components, these classes provide axis specific get and set methods such as getX(x,y,d) and setX(x,y,d, val). Since the dimensionality is fixed for vector fields, a dim value cannot be included when instantiating a field. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorField2D* fld = new VectorField2D(szX, szY, spX, spY, spFct);<br />
<br />
When using VectorFieldXD objects in conjunction with VectorImageXD objects, it is important that the fields use the same spacings and space factor as the images.<br />
<br />
==== VectorImageTimeSeriesXD ====<br />
<br />
<br />
=== Utility Functions ===<br />
<br />
FRAT has a collection of utility classes that contain static functions for operating on the data structures. These classes are divided based on the data structure they cater to. Additionally, a set of more advanced algorithmic parameters is provided in LDDMMUtils and a set of utilities for writing applications is provided in ApplicationUtils. The utility classes are:<br />
* VectorImage2DUtils<br />
* VectorImage3DUtils<br />
* VectorField2DUtils<br />
* VectorField3DUtils<br />
* TimeSeries2DUtils<br />
* TimeSeries3DUtils<br />
* LDDMMUtils<br />
* ApplicationUtils<br />
<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42166FRAT/Library2011-08-11T22:38:06Z<p>Gabe.hart: /* Basic Concepts in FRAT */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT as a Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build FRAT.<br />
<br />
== Using libFRAT in an External Project ==<br />
Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
<br />
== Basic Concepts in FRAT ==<br />
This section outlines some of the basics of the FRAT project so you can learn how to use libFRAT in your own project.<br />
<br />
=== Data Structures ===<br />
<br />
FRAT provides libraries for working with both 2D and 3D vector-valued images. Most functions and algorithms are implemented for both 2D and 3D, so for the sake of brevity, we'll use XD in place of 2D or 3D. At this time, FRAT is not generalized to arbitrary dimensionality. The base data classes in FRAT are the VectorArrayXD classes. These templated classes store XD vector-valued data of any type. Throughout the code, they are used only as the superclass for the float-based VectorImageXD and VectorFieldXD classes.<br />
<br />
==== VectorImageXD ====<br />
<br />
The VectorImage2D and VectorImage3D classes offer basic vector-value XD image functionality with float type pixels. The following trivial example shows a simple operation using the VectorImage2D type and then deletes the image. In this case it simply sets the value of each pixel to the value of the x index times the value of the y index.<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim);<br />
<br />
for (unsigned int y = 0; y < szY; y++) {<br />
for (unsigned int x = 0; x < szX; x++) {<br />
for (unsigned int d = 0; d < dim; d++) {<br />
<br />
im->setValue(x,y,d, x*y);<br />
<br />
}<br />
}<br />
}<br />
<br />
delete im;<br />
<br />
* The key elements in this example are the use of the setValue(x,y,d, val) method and the use of the inverted loop structure. FRAT stores the image array in row-major format, so using the y-dimension in 2D or the z-dimension in 3D as the outer loop is more efficient. The setValue(x,y,d, val) method used here simply sets d'th vector component of the pixel at location x,y to val. The pixel can then be accessed using getValue(x,y,d).<br />
<br />
* In addition to image size (szX, szY) and vector dimensionality (dim), the VectorImageXD classes support the notion of anisotropic pixel spacing (spX, spY). A spacing scale factor (spFct) can also be employed to change the units on the space in order to adjust derivative behavior. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
unsigned int dim = 1;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorImage2D* im = new VectorImage2D(szX, szY, dim, spX, spY, spFct);<br />
<br />
* If the space factor is not set for an image, it will default to having a factor of 0.01 (found to be the best default experimentally). If the spacing is not specified, it will default to 1 for each axis. The size, dimensionality spacing, and space factor can be get and set after instantiation using methods such as getSizeX(), getDim(), getSpaceX(), getSpaceFactor(), and similar set methods.<br />
<br />
* To offer full compatibility with ITK images, FRAT images also carry a world coordinate origin and an direction matrix. These pieces of meta-data are used only to ensure that origin and direction are preserved between reading and writing. NOTE: All of the registration operations in FRAT assume that the images being registered are affinely pre-registered and thus have the same origin and direction.<br />
<br />
==== VectorFieldXD ====<br />
<br />
The other primary data type used in FRAT is vector fields, implemented in the VectorField2D and VectorField3D classes. In practice these classes are simply subclasses of the VectorImageXD classes where the vector size is specified as 2 for 2D fields and 3 for 3D fields. In theory, however, these classes should be thought of as separate entities from the VectorImageXD classes. To access vector components, these classes provide axis specific get and set methods such as getX(x,y,d) and setX(x,y,d, val). Since the dimensionality is fixed for vector fields, a dim value cannot be included when instantiating a field. For example:<br />
<br />
unsigned int szX = 100;<br />
unsigned int szY = 50;<br />
float spX = 0.1;<br />
float spY = 0.2;<br />
float spFct = 0.01;<br />
<br />
VectorField2D* fld = new VectorField2D(szX, szY, spX, spY, spFct);<br />
<br />
When using VectorFieldXD objects in conjunction with VectorImageXD objects, it is important that the fields use the same spacings and space factor as the images.<br />
<br />
<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42165FRAT/Library2011-08-11T22:28:53Z<p>Gabe.hart: /* FRAT Library */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT as a Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build FRAT.<br />
<br />
== Using libFRAT in an External Project ==<br />
Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
<br />
== Basic Concepts in FRAT ==<br />
This section outlines some of the basics of the FRAT project so you can learn how to use libFRAT in your own project.<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42164FRAT/Library2011-08-11T22:26:23Z<p>Gabe.hart: /* FRAT Library */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build libFrat. Once built, the steps for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42163FRAT/Library2011-08-11T22:25:49Z<p>Gabe.hart: /* FRAT Library */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT Library =<br />
<br />
In addition to command line executables, FRAT provides a C++ library that can be used in external projects. Since FRAT is currently only available as source code, you must first follow the instructions in the [[FRAT/Install_Guide | Installation Guide]] to build libFrat. Once built, the process for using FRAT in your own CMake project are:<br />
<br />
* In your CMakeLists.txt file, find the FRAT project<br />
find_package(FRAT REQUIRED)<br />
if(FRAT_FOUND)<br />
include(${FRAT_USE_FILE})<br />
else(FRAT_FOUND)<br />
message(FATAL_ERROR "FRAT not found. Please set FRAT_DIR.")<br />
endif(FRAT_FOUND)<br />
<br />
* When building an executable or library that uses FRAT, make sure to link against the libraries in ${FRAT_LIBRARIES}<br />
add_library(bar bar.cxx)<br />
target_link_libraries(bar ${FRAT_LIBRARIES})<br />
add_executable(foo foo.cxx)<br />
target_link_libraries(foo bar ${FRAT_LIBRARIES})<br />
<br />
* There is currently no installation system for FRAT, so you will most likely need to manually specify FRAT_DIR when configuring your project with CMake<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Team&diff=42162FRAT/Team2011-08-11T22:18:15Z<p>Gabe.hart: /* Contacts */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Contacts =<br />
* Gabe Hart (administrator) - Kitware / Numerica Corp.<br />
** gabe.l.hart <at> gmail <dot> com<br />
* Ilknur Kabul - Kitware<br />
** ilknur.kabul <at> Kiware <dot> com<br />
* Istvan Csapo - UNC<br />
** icscapo <at> gmail <dot> com<br />
* Marc Niethammer - UNC<br />
** mn <at> unc <dot> edu<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT&diff=42161FRAT2011-08-11T22:17:44Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Overview =<br />
FRAT provides c++ libraries and command line applications for performing fluid registration based operations on 2D and 3D images. The registration method used throughout is based on the large displacement diffeomorphic metric mapping (LDDMM) technique. We use variants of LDDMM to address the problems of time series analysis, cross-sectional atlas building, longitudinal atlas building, and geometric metamorphosis.<br />
<br />
== Command Line Tools ==<br />
* LDDMM: Fluid registration between two images.<br />
* TimeSeries: Time series analysis of longitudinal data for a single subject.<br />
* AtlasBuilder: Cross-sectional atlas building for a population of images.<br />
* LongitudinalAtlasBuilder: Longitudinal atlas building for a population of subjects, each with a longitudinal data set.<br />
* GeometricMetamorphosis: Perform registration on image pairs undergoing geometric change.<br />
* FRATUtils: A colleciton of utilitiy functions for working with volumes and time seried files.<br />
<br />
== Driving Applications ==<br />
* [http://www.na-mic.org/pages/DBP:TBI Traumatic brain injury (TBI) diagnosis]<br />
* Diagnosis of tumor growth and malignancy<br />
* Atlas construction for neuro-development in primates<br />
<br />
== Technical Focus ==<br />
<br />
* '''Large Displacement Diffeomorphic Metric Mapping (LDDMM)''' is the core problem of computing a time-dependent and spatially-varying velocity field which accounts for deformation between a pair of images.<br />
* '''Cross sectional atlas construction''' computes a geometric average of a set of images.<br />
* '''Time series registration''' computes a growth trajectory for a series of longitudinally related images (typically more than two).<br />
* '''Longitudinal atlas construction''' computes the geometric average of a set of time series models. This is used when producing an atlas to represent growth in a population.<br />
* '''Geometric metamorphosis''' registers between images where the underlying structures change and thus a perfect structural match is impossible.<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42160FRAT/Library2011-08-11T22:17:43Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT Library =<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Images&diff=42159FRAT/Images2011-08-11T22:17:41Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Images =<br />
This page presents an assorted set of images generated for various research projects using FRAT<br />
<br />
== LDDMM Registration ==<br />
{| style="text-align:center;"<br />
|[[image:registration_source.png]]<br />
|[[image:registration_target.png]]<br />
|[[image:registration_result.png]]<br />
|-<br />
|Source<br />
|Target<br />
|Result<br />
|}<br />
<br />
== Time Series Registration ==<br />
[[image:timeSeries.png]]<br />
Time series results. Known images are labeled. Time goes left to right and top to bottom<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Data&diff=42158FRAT/Data2011-08-11T22:17:39Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Data =<br />
* No data currently available with FRAT<br />
<br />
= Publications =<br />
* G. Hart, C. Zach, M. Niethammer. 2009. An optimal control approach for deformable registration. Proceedings of the Workshop on Mathematical Methods in Biomedical Image Analysis (MMBIA). :9–16.<br />
* M. Niethammer, G. Hart, C. Zach. 2009. An Optimal Control Approach for the Registration of Image Time Series. :2427–2434.<br />
* G. Hart, Y. Shi, H. Zhu, M. Sanchez, M. Styner, M. Niethammer. 2010. DTI Longitudinal Atlas Construction as an Average of Growth Models. MICCAI, International Workshop on Spatio-Temporal Image Analysis for Longitudinal and Time-Series Image Data.<br />
* M. Niethammer, G. L. Hart, D. F. Pace, P. M. Vespa, A. Irimia, J. D. Van Horn, S. R. Aylward. “Geometric Metamorphosis.” IEEE Medical Image Computing and Computer Assisted Intervention (MICCAI), 2011<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Install_Guide&diff=42157FRAT/Install Guide2011-08-11T22:17:36Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Installation Guide =<br />
WARNING: FRAT is currently a work in progress and is under no mandate to maintain backward compatibility.<br />
<br />
== Dependencies ==<br />
* FRAT is configured and built using [http://www.cmake.org/ CMake]. A basic understanding of CMake is assumed. Documentation and tutorials can be found at [http://www.cmake.org/cmake/help/documentation.html]. In this walkthrough, we demonstrate configuration at the linux command line. The CMake GUI can also be used in Windows or Linux.<br />
* FRAT requires a full setup of the Insight Toolkit (ITK), GenerateCLP, and a working FFTW setup. The easiest way to get ITK and GenerateCLP is to do a complete install of TubeTK. For build instructions, go [http://www.vtk.org/Wiki/TubeTK/Development/Build here]. For FFTW installation instructions, go [http://www.fftw.org/fftw2_doc/fftw_6.html here].<br />
<br />
== Download FRAT Source Code ==<br />
NOTE: Currently FRAT is available only as source. Binary executables may be available in the future.<br />
* Create the directory for your FRAT setup. We'll refer to it as FRAT_DIR for the sake of clarity.<br />
* In FRAT_DIR, clone the repository<br />
cd FRAT_DIR<br />
git clone git://gitorious.org/frat/frat.git<br />
* After cloning you should now have a FRAT_DIR/frat/ directory<br />
<br />
== Configure build ==<br />
* First, create a build directory and enter it. Typically this will live alongside the source directory.<br />
mkdir build<br />
cd build<br />
* Now, use cmake to configure the build<br />
ccmake FRAT_DIR/frat<br />
* You will now be presented with the cmake configuration interface. Press 'c' to run the initial configuration.<br />
* You will initially be presented with errors since the paths to ITK and GenerateCLP probably won't be immediately found.<br />
* If you built ITK and GenerateCLP by building TubeTK (assuming TubeTK built with SuperBuild in TubeTK_BUILD_DIR), set the paths as:<br />
ITK_DIR TubeTK_BUILD_DIR/GenerateCLP-Build<br />
GenerateCLP_DIR TubeTK_BUILD_DIR/Insight-Build<br />
* By default, only the test applications are enabled. To build the entire toolkit, set<br />
COMPILE_APPLICATIONS ON<br />
COMPILE_TESTING ON<br />
* For further control, individual executables (tests and applications) can be enabled or disabled in the advanced options. Press (t) to toggle the advanced view on.<br />
* Once the option to generate is presented, press (g) to generate the build files<br />
<br />
== Build ==<br />
* This is the easy part. Just run make (optionally with a -j flag for parallel compilation)<br />
make -j4<br />
* To build the Doxygen documentation, enable BUILD_DOCUMENTATION in CMake and build the "doc" target<br />
make doc<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Slicer&diff=42156FRAT/Slicer2011-08-11T22:17:34Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= FRAT with Slicer =<br />
The command line applications from FRAT are currently being integrated as optional modules with [http://www.slicer.org/slicerWiki/index.php/Main_Page Slicer4]<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Development&diff=42155FRAT/Development2011-08-11T22:17:33Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Development Guidelines =<br />
Current development on FRAT is done using [http://git-scm.com/ git]. The repository is currently hosted at:<br />
* https://gitorious.org/frat/frat<br />
<br />
== Development Environment ==<br />
<br />
To gain write access to the repository, contact one of the [[FRAT/Team | administrators]]. Once gained, follow the steps in the [[FRAT/Install_Guide | Installation Guide]] except use the read/write address to clone the repository<br />
git clone git@gitorious.org:frat/frat.git<br />
<br />
== Workflow ==<br />
<br />
Due to the small developer community, we follow a simple branchy workflow in git. The core workflow is:<br />
* To work on a new topic, create a branch off of ''master''<br />
git checkout master<br />
git checkout -b MY_TOPIC<br />
* Work on the topic, making commits as necessary<br />
<edit files><br />
git commit -a<br />
<Add descriptive commit message><br />
* Once the topic is complete, merge to master. NOTE: Please use "--no-ff" to force a merge commit. This keeps the master branch consistent as a series of topics being merged.<br />
git checkout master<br />
git merge --no-ff --log MY_TOPIC<br />
* Update the upstream repository<br />
git push<br />
<br />
NOTE: For minor bug fixes, commits directly onto master are ok. In this case, make sure that the commit message reads something like:<br />
BUG: brief bug description<br />
<br />
This is a full description of the bug and what I did to<br />
fix it.<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Team&diff=42154FRAT/Team2011-08-11T22:17:30Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Documentation | API Documentation]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Contacts =<br />
* Gabe Hart (administrator) - Kitware / Numerica Corp.<br />
** gabe.l.hart <at> gmail <dot> com<br />
* Ilknur Kabul - Kitware<br />
<!-- ** ilknur.kabul <at> Kiware <dot> com --><br />
* Istvan Csapo - UNC<br />
<!-- ** icscapo <at> gmail <dot> com --><br />
* Marc Niethammer - UNC<br />
<!-- ** marc.niethammer <at> gmail <dot> com --><br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Library&diff=42153FRAT/Library2011-08-11T22:15:57Z<p>Gabe.hart: Created page with "__NOTITLE__ __NOTOC__ {| border="1" cellpadding="10" cellspacing="0" |+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p> |- | style="background:#efefef..."</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= FRAT Library =<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT&diff=42150FRAT2011-08-11T22:15:13Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Overview =<br />
FRAT provides c++ libraries and command line applications for performing fluid registration based operations on 2D and 3D images. The registration method used throughout is based on the large displacement diffeomorphic metric mapping (LDDMM) technique. We use variants of LDDMM to address the problems of time series analysis, cross-sectional atlas building, longitudinal atlas building, and geometric metamorphosis.<br />
<br />
== Command Line Tools ==<br />
* LDDMM: Fluid registration between two images.<br />
* TimeSeries: Time series analysis of longitudinal data for a single subject.<br />
* AtlasBuilder: Cross-sectional atlas building for a population of images.<br />
* LongitudinalAtlasBuilder: Longitudinal atlas building for a population of subjects, each with a longitudinal data set.<br />
* GeometricMetamorphosis: Perform registration on image pairs undergoing geometric change.<br />
* FRATUtils: A colleciton of utilitiy functions for working with volumes and time seried files.<br />
<br />
== Driving Applications ==<br />
* [http://www.na-mic.org/pages/DBP:TBI Traumatic brain injury (TBI) diagnosis]<br />
* Diagnosis of tumor growth and malignancy<br />
* Atlas construction for neuro-development in primates<br />
<br />
== Technical Focus ==<br />
<br />
* '''Large Displacement Diffeomorphic Metric Mapping (LDDMM)''' is the core problem of computing a time-dependent and spatially-varying velocity field which accounts for deformation between a pair of images.<br />
* '''Cross sectional atlas construction''' computes a geometric average of a set of images.<br />
* '''Time series registration''' computes a growth trajectory for a series of longitudinally related images (typically more than two).<br />
* '''Longitudinal atlas construction''' computes the geometric average of a set of time series models. This is used when producing an atlas to represent growth in a population.<br />
* '''Geometric metamorphosis''' registers between images where the underlying structures change and thus a perfect structural match is impossible.<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Images&diff=42149FRAT/Images2011-08-11T22:15:11Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Images =<br />
This page presents an assorted set of images generated for various research projects using FRAT<br />
<br />
== LDDMM Registration ==<br />
{| style="text-align:center;"<br />
|[[image:registration_source.png]]<br />
|[[image:registration_target.png]]<br />
|[[image:registration_result.png]]<br />
|-<br />
|Source<br />
|Target<br />
|Result<br />
|}<br />
<br />
== Time Series Registration ==<br />
[[image:timeSeries.png]]<br />
Time series results. Known images are labeled. Time goes left to right and top to bottom<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Data&diff=42148FRAT/Data2011-08-11T22:15:08Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Data =<br />
* No data currently available with FRAT<br />
<br />
= Publications =<br />
* G. Hart, C. Zach, M. Niethammer. 2009. An optimal control approach for deformable registration. Proceedings of the Workshop on Mathematical Methods in Biomedical Image Analysis (MMBIA). :9–16.<br />
* M. Niethammer, G. Hart, C. Zach. 2009. An Optimal Control Approach for the Registration of Image Time Series. :2427–2434.<br />
* G. Hart, Y. Shi, H. Zhu, M. Sanchez, M. Styner, M. Niethammer. 2010. DTI Longitudinal Atlas Construction as an Average of Growth Models. MICCAI, International Workshop on Spatio-Temporal Image Analysis for Longitudinal and Time-Series Image Data.<br />
* M. Niethammer, G. L. Hart, D. F. Pace, P. M. Vespa, A. Irimia, J. D. Van Horn, S. R. Aylward. “Geometric Metamorphosis.” IEEE Medical Image Computing and Computer Assisted Intervention (MICCAI), 2011<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Install_Guide&diff=42147FRAT/Install Guide2011-08-11T22:15:05Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Installation Guide =<br />
WARNING: FRAT is currently a work in progress and is under no mandate to maintain backward compatibility.<br />
<br />
== Dependencies ==<br />
* FRAT is configured and built using [http://www.cmake.org/ CMake]. A basic understanding of CMake is assumed. Documentation and tutorials can be found at [http://www.cmake.org/cmake/help/documentation.html]. In this walkthrough, we demonstrate configuration at the linux command line. The CMake GUI can also be used in Windows or Linux.<br />
* FRAT requires a full setup of the Insight Toolkit (ITK), GenerateCLP, and a working FFTW setup. The easiest way to get ITK and GenerateCLP is to do a complete install of TubeTK. For build instructions, go [http://www.vtk.org/Wiki/TubeTK/Development/Build here]. For FFTW installation instructions, go [http://www.fftw.org/fftw2_doc/fftw_6.html here].<br />
<br />
== Download FRAT Source Code ==<br />
NOTE: Currently FRAT is available only as source. Binary executables may be available in the future.<br />
* Create the directory for your FRAT setup. We'll refer to it as FRAT_DIR for the sake of clarity.<br />
* In FRAT_DIR, clone the repository<br />
cd FRAT_DIR<br />
git clone git://gitorious.org/frat/frat.git<br />
* After cloning you should now have a FRAT_DIR/frat/ directory<br />
<br />
== Configure build ==<br />
* First, create a build directory and enter it. Typically this will live alongside the source directory.<br />
mkdir build<br />
cd build<br />
* Now, use cmake to configure the build<br />
ccmake FRAT_DIR/frat<br />
* You will now be presented with the cmake configuration interface. Press 'c' to run the initial configuration.<br />
* You will initially be presented with errors since the paths to ITK and GenerateCLP probably won't be immediately found.<br />
* If you built ITK and GenerateCLP by building TubeTK (assuming TubeTK built with SuperBuild in TubeTK_BUILD_DIR), set the paths as:<br />
ITK_DIR TubeTK_BUILD_DIR/GenerateCLP-Build<br />
GenerateCLP_DIR TubeTK_BUILD_DIR/Insight-Build<br />
* By default, only the test applications are enabled. To build the entire toolkit, set<br />
COMPILE_APPLICATIONS ON<br />
COMPILE_TESTING ON<br />
* For further control, individual executables (tests and applications) can be enabled or disabled in the advanced options. Press (t) to toggle the advanced view on.<br />
* Once the option to generate is presented, press (g) to generate the build files<br />
<br />
== Build ==<br />
* This is the easy part. Just run make (optionally with a -j flag for parallel compilation)<br />
make -j4<br />
* To build the Doxygen documentation, enable BUILD_DOCUMENTATION in CMake and build the "doc" target<br />
make doc<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Slicer&diff=42146FRAT/Slicer2011-08-11T22:15:03Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= FRAT with Slicer =<br />
The command line applications from FRAT are currently being integrated as optional modules with [http://www.slicer.org/slicerWiki/index.php/Main_Page Slicer4]<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Development&diff=42145FRAT/Development2011-08-11T22:15:01Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Development Guidelines =<br />
Current development on FRAT is done using [http://git-scm.com/ git]. The repository is currently hosted at:<br />
* https://gitorious.org/frat/frat<br />
<br />
== Development Environment ==<br />
<br />
To gain write access to the repository, contact one of the [[FRAT/Team | administrators]]. Once gained, follow the steps in the [[FRAT/Install_Guide | Installation Guide]] except use the read/write address to clone the repository<br />
git clone git@gitorious.org:frat/frat.git<br />
<br />
== Workflow ==<br />
<br />
Due to the small developer community, we follow a simple branchy workflow in git. The core workflow is:<br />
* To work on a new topic, create a branch off of ''master''<br />
git checkout master<br />
git checkout -b MY_TOPIC<br />
* Work on the topic, making commits as necessary<br />
<edit files><br />
git commit -a<br />
<Add descriptive commit message><br />
* Once the topic is complete, merge to master. NOTE: Please use "--no-ff" to force a merge commit. This keeps the master branch consistent as a series of topics being merged.<br />
git checkout master<br />
git merge --no-ff --log MY_TOPIC<br />
* Update the upstream repository<br />
git push<br />
<br />
NOTE: For minor bug fixes, commits directly onto master are ok. In this case, make sure that the commit message reads something like:<br />
BUG: brief bug description<br />
<br />
This is a full description of the bug and what I did to<br />
fix it.<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Team&diff=42144FRAT/Team2011-08-11T22:14:58Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Library | libFRAT]]<br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Contacts =<br />
* Gabe Hart (administrator) - Kitware / Numerica Corp.<br />
** gabe.l.hart <at> gmail <dot> com<br />
* Ilknur Kabul - Kitware<br />
<!-- ** ilknur.kabul <at> Kiware <dot> com --><br />
* Istvan Csapo - UNC<br />
<!-- ** icscapo <at> gmail <dot> com --><br />
* Marc Niethammer - UNC<br />
<!-- ** marc.niethammer <at> gmail <dot> com --><br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT&diff=42128FRAT2011-08-11T16:42:39Z<p>Gabe.hart: /* Technical Focus */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Overview =<br />
FRAT provides c++ libraries and command line applications for performing fluid registration based operations on 2D and 3D images. The registration method used throughout is based on the large displacement diffeomorphic metric mapping (LDDMM) technique. We use variants of LDDMM to address the problems of time series analysis, cross-sectional atlas building, longitudinal atlas building, and geometric metamorphosis.<br />
<br />
== Command Line Tools ==<br />
* LDDMM: Fluid registration between two images.<br />
* TimeSeries: Time series analysis of longitudinal data for a single subject.<br />
* AtlasBuilder: Cross-sectional atlas building for a population of images.<br />
* LongitudinalAtlasBuilder: Longitudinal atlas building for a population of subjects, each with a longitudinal data set.<br />
* GeometricMetamorphosis: Perform registration on image pairs undergoing geometric change.<br />
* FRATUtils: A colleciton of utilitiy functions for working with volumes and time seried files.<br />
<br />
== Driving Applications ==<br />
* [http://www.na-mic.org/pages/DBP:TBI Traumatic brain injury (TBI) diagnosis]<br />
* Diagnosis of tumor growth and malignancy<br />
* Atlas construction for neuro-development in primates<br />
<br />
== Technical Focus ==<br />
<br />
* '''Large Displacement Diffeomorphic Metric Mapping (LDDMM)''' is the core problem of computing a time-dependent and spatially-varying velocity field which accounts for deformation between a pair of images.<br />
* '''Cross sectional atlas construction''' computes a geometric average of a set of images.<br />
* '''Time series registration''' computes a growth trajectory for a series of longitudinally related images (typically more than two).<br />
* '''Longitudinal atlas construction''' computes the geometric average of a set of time series models. This is used when producing an atlas to represent growth in a population.<br />
* '''Geometric metamorphosis''' registers between images where the underlying structures change and thus a perfect structural match is impossible.<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:TimeSeries.png&diff=42117File:TimeSeries.png2011-08-10T22:42:50Z<p>Gabe.hart: </p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Images&diff=42116FRAT/Images2011-08-10T22:42:32Z<p>Gabe.hart: /* Images */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Images =<br />
This page presents an assorted set of images generated for various research projects using FRAT<br />
<br />
== LDDMM Registration ==<br />
{| style="text-align:center;"<br />
|[[image:registration_source.png]]<br />
|[[image:registration_target.png]]<br />
|[[image:registration_result.png]]<br />
|-<br />
|Source<br />
|Target<br />
|Result<br />
|}<br />
<br />
== Time Series Registration ==<br />
[[image:timeSeries.png]]<br />
Time series results. Known images are labeled. Time goes left to right and top to bottom<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:Registration_result.png&diff=42115File:Registration result.png2011-08-10T22:31:50Z<p>Gabe.hart: </p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:Registration_target.png&diff=42114File:Registration target.png2011-08-10T22:31:16Z<p>Gabe.hart: </p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=File:Registration_source.png&diff=42113File:Registration source.png2011-08-10T22:30:58Z<p>Gabe.hart: </p>
<hr />
<div></div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Images&diff=42112FRAT/Images2011-08-10T22:30:27Z<p>Gabe.hart: Created page with "__NOTITLE__ __NOTOC__ {| border="1" cellpadding="10" cellspacing="0" |+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p> |- | style="background:#efefef..."</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Images =<br />
This page presents an assorted set of images generated for various research projects using FRAT<br />
<br />
== Fluid Registration ==<br />
{|<br />
|[[image:registration_source.png]]<br />
|[[image:registration_target.png]]<br />
|[[image:registration_result.png]]<br />
|-<br />
|Source<br />
|Target<br />
|Result<br />
|}<br />
<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Team&diff=42111FRAT/Team2011-08-10T22:24:11Z<p>Gabe.hart: Created page with "__NOTITLE__ __NOTOC__ {| border="1" cellpadding="10" cellspacing="0" |+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p> |- | style="background:#efefef..."</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Contacts =<br />
* Gabe Hart (administrator) - Kitware / Numerica Corp.<br />
** gabe.l.hart <at> gmail <dot> com<br />
* Ilknur Kabul - Kitware<br />
<!-- ** ilknur.kabul <at> Kiware <dot> com --><br />
* Istvan Csapo - UNC<br />
<!-- ** icscapo <at> gmail <dot> com --><br />
* Marc Niethammer - UNC<br />
<!-- ** marc.niethammer <at> gmail <dot> com --><br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Slicer&diff=42110FRAT/Slicer2011-08-10T22:11:25Z<p>Gabe.hart: Created page with "__NOTITLE__ __NOTOC__ {| border="1" cellpadding="10" cellspacing="0" |+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p> |- | style="background:#efefef..."</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= FRAT with Slicer =<br />
The command line applications from FRAT are currently being integrated as optional modules with [http://www.slicer.org/slicerWiki/index.php/Main_Page Slicer4]<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Install_Guide&diff=42109FRAT/Install Guide2011-08-10T22:09:04Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Installation Guide =<br />
WARNING: FRAT is currently a work in progress and is under no mandate to maintain backward compatibility.<br />
<br />
== Dependencies ==<br />
* FRAT is configured and built using [http://www.cmake.org/ CMake]. A basic understanding of CMake is assumed. Documentation and tutorials can be found at [http://www.cmake.org/cmake/help/documentation.html]. In this walkthrough, we demonstrate configuration at the linux command line. The CMake GUI can also be used in Windows or Linux.<br />
* FRAT requires a full setup of the Insight Toolkit (ITK), GenerateCLP, and a working FFTW setup. The easiest way to get ITK and GenerateCLP is to do a complete install of TubeTK. For build instructions, go [http://www.vtk.org/Wiki/TubeTK/Development/Build here]. For FFTW installation instructions, go [http://www.fftw.org/fftw2_doc/fftw_6.html here].<br />
<br />
== Download FRAT Source Code ==<br />
NOTE: Currently FRAT is available only as source. Binary executables may be available in the future.<br />
* Create the directory for your FRAT setup. We'll refer to it as FRAT_DIR for the sake of clarity.<br />
* In FRAT_DIR, clone the repository<br />
cd FRAT_DIR<br />
git clone git://gitorious.org/frat/frat.git<br />
* After cloning you should now have a FRAT_DIR/frat/ directory<br />
<br />
== Configure build ==<br />
* First, create a build directory and enter it. Typically this will live alongside the source directory.<br />
mkdir build<br />
cd build<br />
* Now, use cmake to configure the build<br />
ccmake FRAT_DIR/frat<br />
* You will now be presented with the cmake configuration interface. Press 'c' to run the initial configuration.<br />
* You will initially be presented with errors since the paths to ITK and GenerateCLP probably won't be immediately found.<br />
* If you built ITK and GenerateCLP by building TubeTK (assuming TubeTK built with SuperBuild in TubeTK_BUILD_DIR), set the paths as:<br />
ITK_DIR TubeTK_BUILD_DIR/GenerateCLP-Build<br />
GenerateCLP_DIR TubeTK_BUILD_DIR/Insight-Build<br />
* By default, only the test applications are enabled. To build the entire toolkit, set<br />
COMPILE_APPLICATIONS ON<br />
COMPILE_TESTING ON<br />
* For further control, individual executables (tests and applications) can be enabled or disabled in the advanced options. Press (t) to toggle the advanced view on.<br />
* Once the option to generate is presented, press (g) to generate the build files<br />
<br />
== Build ==<br />
* This is the easy part. Just run make (optionally with a -j flag for parallel compilation)<br />
make -j4<br />
* To build the Doxygen documentation, enable BUILD_DOCUMENTATION in CMake and build the "doc" target<br />
make doc<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Install_Guide&diff=42108FRAT/Install Guide2011-08-10T22:08:43Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Installation =<br />
WARNING: FRAT is currently a work in progress and is under no mandate to maintain backward compatibility.<br />
<br />
== Dependencies ==<br />
* FRAT is configured and built using [http://www.cmake.org/ CMake]. A basic understanding of CMake is assumed. Documentation and tutorials can be found at [http://www.cmake.org/cmake/help/documentation.html]. In this walkthrough, we demonstrate configuration at the linux command line. The CMake GUI can also be used in Windows or Linux.<br />
* FRAT requires a full setup of the Insight Toolkit (ITK), GenerateCLP, and a working FFTW setup. The easiest way to get ITK and GenerateCLP is to do a complete install of TubeTK. For build instructions, go [http://www.vtk.org/Wiki/TubeTK/Development/Build here]. For FFTW installation instructions, go [http://www.fftw.org/fftw2_doc/fftw_6.html here].<br />
<br />
== Download FRAT Source Code ==<br />
NOTE: Currently FRAT is available only as source. Binary executables may be available in the future.<br />
* Create the directory for your FRAT setup. We'll refer to it as FRAT_DIR for the sake of clarity.<br />
* In FRAT_DIR, clone the repository<br />
cd FRAT_DIR<br />
git clone git://gitorious.org/frat/frat.git<br />
* After cloning you should now have a FRAT_DIR/frat/ directory<br />
<br />
== Configure build ==<br />
* First, create a build directory and enter it. Typically this will live alongside the source directory.<br />
mkdir build<br />
cd build<br />
* Now, use cmake to configure the build<br />
ccmake FRAT_DIR/frat<br />
* You will now be presented with the cmake configuration interface. Press 'c' to run the initial configuration.<br />
* You will initially be presented with errors since the paths to ITK and GenerateCLP probably won't be immediately found.<br />
* If you built ITK and GenerateCLP by building TubeTK (assuming TubeTK built with SuperBuild in TubeTK_BUILD_DIR), set the paths as:<br />
ITK_DIR TubeTK_BUILD_DIR/GenerateCLP-Build<br />
GenerateCLP_DIR TubeTK_BUILD_DIR/Insight-Build<br />
* By default, only the test applications are enabled. To build the entire toolkit, set<br />
COMPILE_APPLICATIONS ON<br />
COMPILE_TESTING ON<br />
* For further control, individual executables (tests and applications) can be enabled or disabled in the advanced options. Press (t) to toggle the advanced view on.<br />
* Once the option to generate is presented, press (g) to generate the build files<br />
<br />
== Build ==<br />
* This is the easy part. Just run make (optionally with a -j flag for parallel compilation)<br />
make -j4<br />
* To build the Doxygen documentation, enable BUILD_DOCUMENTATION in CMake and build the "doc" target<br />
make doc<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Install_Guide&diff=42107FRAT/Install Guide2011-08-10T22:02:47Z<p>Gabe.hart: /* Installation */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Installation =<br />
WARNING: FRAT is currently a work in progress and is under no mandate to maintain backward compatibility.<br />
<br />
== Dependencies ==<br />
* FRAT is configured and built using [http://www.cmake.org/ CMake]. A basic understanding of CMake is assumed. Documentation and tutorials can be found at [http://www.cmake.org/cmake/help/documentation.html]. In this walkthrough, we demonstrate configuration at the linux command line. The CMake GUI can also be used in Windows or Linux.<br />
* FRAT requires a full setup of the Insight Toolkit (ITK), GenerateCLP, and a working FFTW setup. The easiest way to get ITK and GenerateCLP is to do a complete install of TubeTK. For build instructions, go [http://www.vtk.org/Wiki/TubeTK/Development/Build here]. For FFTW installation instructions, go [http://www.fftw.org/fftw2_doc/fftw_6.html here].<br />
<br />
== Download FRAT Source Code ==<br />
NOTE: Currently FRAT is available only as source. Binary executables may be available in the future.<br />
* Create the directory for your FRAT setup. We'll refer to it as FRAT_DIR for the sake of clarity.<br />
* In FRAT_DIR, clone the repository<br />
cd FRAT_DIR<br />
git clone git://gitorious.org/frat/frat.git<br />
* After cloning you should now have a FRAT_DIR/frat/ directory<br />
<br />
== Configure build ==<br />
* First, create a build directory and enter it. Typically this will live alongside the source directory.<br />
mkdir build<br />
cd build<br />
* Now, use cmake to configure the build<br />
ccmake FRAT_DIR/frat<br />
* You will now be presented with the cmake configuration interface. Press 'c' to run the initial configuration.<br />
* You will initially be presented with errors since the paths to ITK and GenerateCLP probably won't be immediately found.<br />
* If you built ITK and GenerateCLP by building TubeTK (assuming TubeTK built with SuperBuild in TubeTK_BUILD_DIR), set the paths as:<br />
ITK_DIR TubeTK_BUILD_DIR/GenerateCLP-Build<br />
GenerateCLP_DIR TubeTK_BUILD_DIR/Insight-Build<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Install_Guide&diff=42106FRAT/Install Guide2011-08-10T21:36:24Z<p>Gabe.hart: /* Installation */</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Installation =<br />
WARNING: FRAT is currently a work in progress and is under no mandate to maintain backward compatibility.<br />
<br />
== Dependencies ==<br />
* FRAT is configured and build using [http://www.cmake.org/ CMake]. A basic understanding of CMake is assumed. Documentation and tutorials can be found at [http://www.cmake.org/cmake/help/documentation.html].<br />
* FRAT requires a full setup of the Insight Toolkit (ITK), the GenerateCLP module from Slicer3, and a working FFTW setup. The easiest way to get ITK and GenerateCLP is to do a complete install of Slicer3. For build instructions, go [http://www.slicer.org/slicerWiki/index.php/Slicer3:Build_Instructions here]. For FFTW installation instructions, go [http://www.fftw.org/fftw2_doc/fftw_6.html here].<br />
<br />
== Download FRAT Source Code ==<br />
NOTE: Currently FRAT is available only as source. Binary executables may be available in the future.<br />
* Create the directory for your FRAT setup. We'll refer to it as FRAT_DIR for the sake of clarity.<br />
* In FRAT_DIR, clone the repository<br />
cd FRAT_DIR<br />
git clone git://gitorious.org/frat/frat.git<br />
* After cloning you should now have a FRAT_DIR/frat/ directory<br />
<br />
== Set up build ==<br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Install_Guide&diff=42105FRAT/Install Guide2011-08-10T21:13:00Z<p>Gabe.hart: Created page with "__NOTITLE__ __NOTOC__ {| border="1" cellpadding="10" cellspacing="0" |+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p> |- | style="background:#efefef..."</p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
<br />
= Installation =<br />
WARNING: FRAT is currently a work in progress and is under no mandate to maintain backward compatibility.<br />
<br />
== Dependencies ==<br />
* FRAT is configured and build using [http://www.cmake.org/ CMake]. A basic understanding of CMake is assumed. Documentation and tutorials can be found at [http://www.cmake.org/cmake/help/documentation.html].<br />
* FRAT requires a full setup of the Insight Toolkit (ITK), the GenerateCLP module from Slicer3, and a working FFTW setup. The easiest way to get ITK and GenerateCLP is to do a complete install of Slicer3. For build instructions, go [http://www.slicer.org/slicerWiki/index.php/Slicer3:Build_Instructions here]. For FFTW installation instructions, go [http://www.fftw.org/fftw2_doc/fftw_6.html here].<br />
<br />
== Download FRAT Source Code ==<br />
* Currently FRAT is available only as source.<br />
* For the sake of clarity, we'll refer to the installation <br />
<br />
|-<br />
|}</div>Gabe.harthttps://public.kitware.com/Wiki/index.php?title=FRAT/Development&diff=42104FRAT/Development2011-08-10T20:44:36Z<p>Gabe.hart: </p>
<hr />
<div>__NOTITLE__<br />
__NOTOC__<br />
<br />
{| border="1" cellpadding="10" cellspacing="0"<br />
|+ <p style="font-size:250%">(F)luid (R)egistration and (A)tlas (T)oolkit</p><br />
|-<br />
| style="background:#efefef;" align="left" valign="top" width="150px" | <br />
<br><br />
<b>[http://public.kitware.com/Wiki/FRAT Home]</b><br />
*[[FRAT/Images | Image Gallery]]<br />
*[[FRAT/Data | Data and Publications]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Users</b><br />
* [[FRAT/Install_Guide | Installation Guide]]<br />
* [[FRAT/Documentation | Documentation]]<br />
* [[FRAT/Slicer | FRAT with Slicer]]<br />
<br><br />
<hr><br />
<br><br />
<b>For Developers</b><br />
* [[FRAT/Development | Development Docs]]<br />
<br><br />
<hr><br />
<br><br />
<b>[[FRAT/Team | Contact Us]]</b><br />
<br />
| align="left" width="800px" | <br />
= Development Guidelines =<br />
Current development on FRAT is done using [http://git-scm.com/ git]. The repository is currently hosted at:<br />
* https://gitorious.org/frat/frat<br />
<br />
== Development Environment ==<br />
<br />
To gain write access to the repository, contact one of the [[FRAT/Team | administrators]]. Once gained, follow the steps in the [[FRAT/Install_Guide | Installation Guide]] except use the read/write address to clone the repository<br />
git clone git@gitorious.org:frat/frat.git<br />
<br />
== Workflow ==<br />
<br />
Due to the small developer community, we follow a simple branchy workflow in git. The core workflow is:<br />
* To work on a new topic, create a branch off of ''master''<br />
git checkout master<br />
git checkout -b MY_TOPIC<br />
* Work on the topic, making commits as necessary<br />
<edit files><br />
git commit -a<br />
<Add descriptive commit message><br />
* Once the topic is complete, merge to master. NOTE: Please use "--no-ff" to force a merge commit. This keeps the master branch consistent as a series of topics being merged.<br />
git checkout master<br />
git merge --no-ff --log MY_TOPIC<br />
* Update the upstream repository<br />
git push<br />
<br />
NOTE: For minor bug fixes, commits directly onto master are ok. In this case, make sure that the commit message reads something like:<br />
BUG: brief bug description<br />
<br />
This is a full description of the bug and what I did to<br />
fix it.<br />
<br />
|-<br />
|}</div>Gabe.hart