[Insight-developers] Can someone explain
DiffusionTensor3D::GetRelativeAnisotropy() to me?
Torsten Rohlfing
torsten at synapse.sri.com
Tue Jun 7 16:15:07 EDT 2005
Simon:
Yes, that makes sense now. I don't think you even need to assume D has
been diagonalized, but that's probably not worth pondering now. I
suspect I also figured out where I went wrong in my original thinking -
when I split the difference that is squared inside a double summation, I
failed to account for the second nested summation level, so I was
missing some terms.
I appreciate your help with this!
Best,
Torsten
Simon Warfield wrote:
> Torsten Rohlfing wrote:
>
>>
>> Simon Warfield wrote:
>>
>>>> The code (purged of numerical safeguards etc) that I don't get is
>>>> this:
>>>>
>>>> const RealValueType anisotropy = 3.0 * isp - trace * trace;
>>>> const RealValueType relativeAnisotropySquared =
>>>> static_cast< RealValueType >( anisotropy / ( sqrt( 3.0 ) *
>>>> trace ) );
>>>> const RealValueType relativeAnisotropy =
>>>> static_cast< RealValueType >( sqrt(
>>>> relativeAnisotropySquared ) );
>>>>
>>>> where "isp" is the inner scalar product and "trace" is the tensor
>>>> trace, both as returned by the respective class member functions.
>>>>
>>>> My problem is with the definition of "anisotropy" above. I assume
>>>> that this is supposed to be the inner product of the anisotropic
>>>> part of the tensor, that is, the inner product of (tensor - (trace
>>>> / 3) * identity). This is a double sum over the squares of
>>>> differences between elements of the original tensor and the
>>>> corresponding elements of (trace/3) times the identity tensor.
>>>
>>>
>>>
>>>
>>> Check out Equation 27 here:
>>> http://splweb.bwh.harvard.edu:8000/pages/papers/westin/media2002/Westin_Diffusion_MedAI_2002.pdf
>>>
>>> and the definition of the norm at the top of the column.
>>>
>> Simon:
>>
>> Thank you, but that's exactly my problem - how do you get from Eq. 27
>> in the Westin paper to the implementation in ITK? The Westin equation
>> is basically the same (except for the sqrt(2) factor) to Eq. 14 in
>> the 1996 JMR(B) paper by Basser and Pierpaoli, and their Eq. 10 is
>> the tensor norm as described in the Westin paper. But how do you get
>> from the numerator in the second line of Westin's Eq. 27 to
>> "3*isp-trace*trace" (or isp+1/3*trace*trace, which is basically the
>> same)?
>
>
> I think we are allowed to consider the tensor after reorientation to
> the principal axes such that Dij = 0 for i != j. Then trace(D) = D11
> + D22 + D33.
> The Frobenius norm of
> D - 1/3trace(D)I
> is then the square root of
> \sum_ij (D_ij - k)^2
> for k = 1/3 trace(D) on the diagonal and zero elsewhere
>
> Expanding this, we have
> (D_11 - k)^2 + (D_22 - k)^2 + (D_33 - k)^2 + \sum_i != j D_ij^2
> and this last term is 0.
>
> Expanding the first three terms, I get:
> D_11^2 + D_22^2 + D_33^2 + 3k^2 - 2k(D11 + D22 + D33)
> = isp + 3k^2 - 2k.3k
> for isp = D_11^2 + D_22^3 + D_33^2
> = isp - 3k^2
> = isp - 3.1/3 trace. 1/3 trace
> = isp - 1/3 trace * trace
>
> This is 1/3rd of what ITK is calling 'anisotropy'. I didn't actually
> check the code for what isp is being computed as.
> Does it make sense ?
>
>
>>
>> I assume that the sum of the squared elements is broken up, that is,
>> the differences that make up each element are separated as (a-b)^2 ->
>> (a^2-2ab+b^2), and so sum_i sum_j (a-b)^2 becomes sum_ij a^2 -
>> 2sum_ij ab + sum_ij b^2.
>>
>> Then with a_ij==D and b_ij==1/3 trace(D)I, that would give
>>
>> sum_ij D_ij^2 - 2/3 trace(D) sum_ij I_ij + (1/3 trace(D))^2 sum_ij I_ij
>>
>> and with the first term the norm of D and I the identity tensor we
>> would have
>>
>> |D| - 2 trace(D) + 1/3 trace(D)^2
>>
>> So where is the middle part going in ITK?
>>
>> Sorry if I am suffering from a mental block here.
>>
>> Again, thanks for your help!
>> Torsten
>>
>
>
--
Torsten Rohlfing, PhD SRI International, Neuroscience Program
Research Scientist 333 Ravenswood Ave, Menlo Park, CA 94025
Phone: ++1 (650) 859-3379 Fax: ++1 (650) 859-2743
torsten at synapse.sri.com http://www.stanford.edu/~rohlfing/
"Though this be madness, yet there is a method in't"
More information about the Insight-developers
mailing list