I'm trying to use a composite transform (TranslationTransform + ScaleTransform) for registration. The concept is to first register with Translation, then do [Translation, Scale] with the initial transform of the translation given by the solution of the initial registration. If you try and do this with a composite transform, only the last transform added will get modified though, and all the higher order transform types include rotation - priors let me know that the rotation is well determined and shouldnt be modified as a degree of freedom. I can think of two ways of solving this:
- Come up with a way of allowing registration on a composite transform which allows for parameters from both transform to be modified - maybe using the base Transform class?
- Come up with a way of holding certain parameters constant in a higher order transform during registration. EDIT I think that the SetOptimizerWeights function can be used to do this way of solving the problem. EDIT You aren't allowed to SetOptimizerWeights for the L-BFGS type optimizers, meaning there is no easy way to mask dimensions. As these proved to be much much more robust across datasets, in the end I may just allow for registration to occur across the higher order space.
I dont know how to do either of these things and cant find any (good) documentation on either... any help very appreciated!!