[Insight-users] Elements in the jacobian?

Luis Ibanez luis.ibanez at kitware.com
Sun Nov 15 18:32:53 EST 2009


Motes,

The same weights are used, because the Jacobian terms are:

            The derivative of the output coordinates
            with respect to the Transform parameters.

and when you are computing how much the displacement component
of on BSpline grid node affects the corresponding output coordinate,
you do this by multiplying by the BSpline weight. This weight value
is the same regardless of whether you are computing the X or Y
component.  The Weight depends on the relative position of the
input point to the nodes of the BSpline grid.


     Luis


-----------------------------------------------------
On Sun, Nov 15, 2009 at 3:39 PM, motes motes <mort.motes at gmail.com> wrote:
> Thanks for the explanation!
>
> But why are the same 16 weights used in each cell?
>
> When using 16 nodes in 2D the result is actually 32 coeffcients (16
> for each dimension) but in the jacobian only the 16 (computed from the
> weights1D matrix) weights are stored.
>
> Or is that what you meant by "Cross-terms"?
>
>
>
> On Sun, Nov 15, 2009 at 5:25 PM, Luis Ibanez <luis.ibanez at kitware.com> wrote:
>> Hi Motes,
>>
>> Your interpretation of the parameters is correct.
>>
>> ---
>>
>> The reason by there are no cross-terms is that the parameters of the BSpline
>> are fully independent along each dimension.
>>
>> That is, the first 16 parameters are strictly related to the X direction,
>> while the second set of 16 parameters are strictly related to the Y direction.
>>
>> It is logical then than when computing how the Transform parameters affect
>> the outcome of the transformation, the first 16 parameters will NOT affect
>> the output Y coordinate, and the second 16 parameters will NOT affect the
>> output X coordinate.
>>
>>
>>     Regards
>>
>>
>>          Luis
>>
>>
>> ----------------------------------------
>> On Tue, Nov 10, 2009 at 5:32 PM, motes motes <mort.motes at gmail.com> wrote:
>>> I am looking at the code for the BSplineDeformableTransform and the
>>> function GetJacobian for a 2D registration application using Sum of
>>> squared differences as metric and the regular gradient descent
>>> optimizer.
>>>
>>> I have defined 4*4 = 16 nodes and since  its 2D I get 32 parameters in
>>> the parameters array.
>>>
>>> As I understand the 16 weights computed are actually just stored in
>>> the jacobian like:
>>>
>>>
>>> x    w0, w1, w2, ..., w15,    0,   0,   0, ...,   0
>>> y      0,   0,   0, ...,    0,   w0, w1, w2, ..., w15
>>>
>>>
>>> Where each sequence of weights are just copies. So it could be
>>> interpretated as a "diagonal" matrix where only the diagonal consist
>>> of possible non-zero elements. The number of elements per row in the
>>> diagonal are:
>>>
>>>            totalNumberOfParameters/Dim
>>>
>>>
>>> Am I correct so far?
>>>
>>>
>>> What I don't understand is why there are only 16 weights and not 32
>>> weights? Should the weights not be computed for each parameter for
>>> each dimension? This would mean that the diagonal would not contain
>>> copies of the 16 weights.
>>> _____________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://www.kitware.com/products/protraining.html
>>>
>>> Please keep messages on-topic and check the ITK FAQ at:
>>> http://www.itk.org/Wiki/ITK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.itk.org/mailman/listinfo/insight-users
>>>
>>
>


More information about the Insight-users mailing list