ITK/Release 4/Enhancing Image Registration Framework/Tcon 2010-11-23
Topic notes:
How do we develop a design document?
E.g. http://www.itk.org/Wiki/Proposals:Refactoring_Statistics_Framework_2007_Class_Manifesto but dont use tables. Do use the class diagrams.
Is there a different method? maybe latex ....
CompositeTransform ( Michael Stauffer, Nick )
Mike will push later today.
CompositeTransform I/O
We are currently leaning toward writing a list of files. why? because you write out a deformation field as nii.gz , an affine as .mat or .txt and a velocity field as .mhd. and it may be easily edited to build concatenated files. problems: windows, etc. also, sometimes headers are in separate files than the binary data they describe.
Tricky design issues --- composite transform file names. Do we pass full file names for each transform?
Invoke a special I/O object for composite transforms?
Currently, a transform has 2 arrays of doubles. Then the I/O writer will save in either txt or binary. Do we add a string or array of strings with each transform to the transform factory? Most transforms would not use this. The composite transform would populate it.
Do we need a ImageTransformIOFactory?
Should possibly add GetDefaultTransformFileType to transform base. Enumerates: BinaryType, TextType, ImageType.
DeformationFieldTransform
Current deformation field transform only transforms point. Still needs to implement jacobian and other elements that are ultimately needed. This is ok for now. The rest will happen later.
DeformationFieldTransform I/O
See composite transform notes above.
How to remove transforms we dont want anymore?
Document? Mark classes as deprecated? How do we avoid breaking somebody's application?
Good solution: create a module for classes that we want to eliminate. Xiaoxiao stuff. E.g. all centered transforms.
Also: create core registration module that is tested most deeply and that we highly recommend.
BSpline refactoring + Bug? ( Nick )
Line 721 bspline transform txx --- Luis says "Wow". We decide we should get rid of the bulk transform b/c it is inconsistent with the rest of the toolkit. CompositeTransform will replace this functionality. Need to discuss / publicize this change with NAMIC, Hans Johnson, Elastix.
First, we'll put the current preliminary composite transform in through gerrit.
Transform base class refactoring
Enum type that identifies output file type
SpatialJacobian
SpatialHessian and/or Hessian
Eliminate transform vector functions? Kind of. Implement the methods polymorphically then call the polymorphic methods from the TransformVector / TransformTensor function.
Metric base class refactoring
Remove multi-threading stuff except SetNumberOfThreads. Luis will go over.
Reorientation standards/approaches.
Separate reorientation filters ?
Add a template parameter that takes a reorienting functor. Identity default.
It appears to be standard throughout the toolkit that reorientation is performed. as far as we know.