Accuracy of landmark-based custom scaling

Dear all,

I’m currently working on custom scaling of a bone. For this purpose I’m using 6 landmarks (4 at the distal end, 2 at the proximal end) as target points of the RBF transformation with a linear transformation as pre-transform. The results look quite physiologic.

My question is of general nature about the landmark-based scaling:

I´m wondering how accurate the scaling method works at the exact locations of the landmarks.
Concerning my example, is the transformation of the distal end with more landmarks more accurate than the proximal end with less landmarks?
Is there an easy way to read out the remaining distance of each landmark to the bony surface after the transformation?

Thanks a lot in advance for your help.

Kind regards,

Fabian

Hi Fabian,

RBF should transform the source points into the target points, and other points will be interpolated/extrapolated using constructed transformation. You can simply measure a distance between the target points, and the source points subjected to the constructed transformation to see the difference.

So if you want a certain point to follow morphing precisely - add it to the landmark protocol.-

Kind regards,
Pavel

Hi Pavel,

thanks a lot for your quick response.

I compared the distance between the target landmarks and the actual distance of the landmarks in the model after RBF transformation. It comes quite close but there is still a deviation of about 3 to 5 millimeters in absolute distance (depending on which distance I compare).

If I understand your reply correctly, the RBF transformation will always lead to exact positioning of the target landmarks on the surface. Is it thus right to assume that the settings of my transformation could not lead to the deviation I described above?

My transformation is set up as follows:

//-------------------------------------------------------------
AnyFunTransform3DRBF GeometryTransformRBF =
{
PreTransforms = {&.GeometryTransformLin};

Points1 = .GeometryTransformLin.Points1;  
Points0 = .GeometryTransformLin.Points0; 

RBFDef.Type = RBF_Triharmonic;  
RBFDef.Param = 0.1;
PolynomDegree = 1;      
BoundingBox. Type = BB_Cartesian;
BoundingBox. ScaleXYZ = {2, 2, 2};
BoundingBox. DivisionFactorXYZ = 5 * {1, 1, 1}; 
BoundingBoxOnOff = On;

};
//-------------------------------------------------------------

For the “GeometryTransformLin” I´m using the “VTK_LANDMARK_AFFINE” mode.

Thanks again for your help!

Kind regards,

Fabian

Hi Fabian,

The code seems to be correct, but you use a pretransform.
Could you make a standalone example to demonstrate the problem? Could the error come from elsewhere?

Thanks,
Pavel

Thanks, this is good to know. I will have a look at the remaining parts of my model and get back to you with an example in case I don´t find the error.

Kind regards,

Fabian