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
_______________________________________________
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://kitware.com/products/protraining.php
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-developers