[Insight-developers] SymmetricSecondRankTensor does incorrect matrix PreMultiply and PostMultiply
Kris Zygmunt
krismz at sci.utah.edu
Tue May 29 09:43:34 EDT 2012
The fix for this bug is to return a Matrix instead of a
SymmetricSecondRankTensor, but if you have some math like:
A = g*T*g' where T is a tensor and you know that the result A is a
tensor, it would be nice to have a way to convert the Matrix that is
produced by T.PreMultiply(g).PostMultiply(g.GetTranspose()) into a
Tensor. A copy constructor or assignment operator may not be ideal as
they could lead to unintended consequences from accidentally
converting from a Matrix to a Tensor, but perhaps there could be a
method with a name like InitFromMatrix so that one could write:
DiffusionTensor3D newT;
newT.InitFromMatrix(A);
I can add this new method under the same gerrit patch http://review.source.kitware.com/5943
. Is there any preference for the name? Any reason this shouldn't
be done?
-Kris
> Hello,
> While working on some code that does math with DiffusionTensor3D
> pixels, I found that DiffusionTensor3D's parent class
> SymmetricSecondRankTensor returns a SymmetricSecondRankTensor from
> both the PreMultiply(MatrixType m) and the PostMultiply(MatrixType
> m). This code is in effect saying that a symmetric tensor multiplied
> by any matrix results in a symmetric tensor which is not true! The
> code needs to be changed to return a Matrix instead of a
> SymmetricSecondRankTensor. Anyone who is using these PreMultiply and
> PostMultiply methods currently is having important information from
> the lower half of the matrix thrown away and getting incorrect
> computations as a result.
>
> I have added a patch that fixes this bug at http://review.source.kitware.com/5943
>
> -Kris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-developers/attachments/20120529/f7efd7e0/attachment.htm>
More information about the Insight-developers
mailing list