The RotationRegistration program performs step 2 from above. The basic algorithm is to allow the angle of rotation to be variable while the center of rotation is held constant for the first pass. When the first pass is complete a second pass is then performed with the new angle of rotation as input and the center of rotation is now allowed to be variable while the angle of rotation is help constant. This two pass method allows for very good image metrics to be obtained for slice to slice comparisons. The angle of rotation and center of rotation is stored in the MXA file for use later when exporting registererd images.
A note about multi-cpu and multi-core support. This algorithm depends on ITK (Insight Toolkit - http://www.itk.org) for its core operating algorithms. If you build ITK with the "Optimized Registration Methods" then a multi-threaded library will be built. This is applied to the RotationRegistration program in the form of a multi-threaded registration code. This means that all available cores/cpus will be dedicated to finding the correct rotation registration for a single slice/slice pair. The means that using more than 1 thread as an argument (see below) is not recommended most of the time.
A note about RAM Usage. Due to the shear size of the extract images used for comparisons upwards of 5 GB or more of RAM could be used for slices with more than a few tiles in each direction. Make sure there is enough RAM in your machine to run this program. Also note that this limits the machine to running on 64 bit platforms.
[mjackson@workstation] $ RotationRegistration Required Parameters: --help Produce help message -i [ --inputfile ] arg MXA File to be used as input -r [ --recname ] arg Name of the Data Record to Register -s [ --sliceStart ] arg The value of the starting slice to fix -e [ --sliceEnd ] arg The value of the ending slice to fix -t [ --numThreads ] arg The number of threads to use when registering -l [ --logfile ] arg Name of the Log file to store any output into -R [ --restartfile ] arg Location of the temporary file to initialize from. -L [ --listRecords ] arg List the possible Data Model Records for the given MXA file -v [ --verbose ] Verbose Output
-r [--recname] You will need to know the name of the MXA Data Record that represents the image that you would like to process. Typically this is "Zeiss Image". You can invoke the RotationRegistration program with the --listRecords argument to obtain a list of the MXA Data Records in the MXA File.
-l [--logfile] The path to a file to store debugging messages into.
-R [--restartfile] Path to a temporary file that holds intermediate data. This can help debug if something goes wrong during the process. The file is written in binary so computer codes would need to be written to parse the file.
-t [--numThreads] The number of threads to use to process the MXA Data file.
-s [--sliceStart] The first slice of data to export
-e [--sliceEnd] The last slice of data to export
-L [--listRecords] Returns a list of the MXA Data Records in the MXA File.
-v [--verbose] Determines how many debugging messages are written to the log file
The R3DRotationRegistration GUI Application