[Insight-users] Gradient of Vector Image
Luis Ibanez
luis . ibanez at kitware . com
Tue, 07 Oct 2003 18:23:32 -0400
Hi Jian,
It will not be easy, but it will be fun :-)
1) Create an ImageAdaptor that will
extract the components of the Offset
and present it as a scalar image.
follow the example in the SoftwareGuide
http://www . itk . org/ItkSoftwareGuide . pdf
Section 12.3, pdf-page 526, paper-page 500.
2) Instantiate three of these ImageAdaptors and
set them to extract the components {0,1,2}
of the Offset respectively.
3) Instantiate three GradientRecursiveImageFilters
and connect each one to one of the ImageAdaptors.
4) When you execute these three image filters
you will get as output of each one, the values
along the ROWS of the Jacobian matrix of the Offset.
5) Take a deep breath and decide how do you want
to represent this in an image. For example as
an image of pixel type = itkMatrix<double3,3> ?
or as a vector with 9 elements ?
or as 9 parallel scalar images ?
6) Once you decide about the final representation,
you have basically two options for moving the
jacobian elements into your representation
6A) Use an ImageIterator loop for visiting the output
of the three GradientGaussianRecursiveImageFilters
and copy the elements into your final Jacobian image.
6B) Use the JoinImage filter
http://www . itk . org/Insight/Doxygen/html/classitk_1_1JoinImageFilter . html
that will concatenate the elements of the vector
images produced by each Gradient vector. Since
this filter only have two inputs, you will have to
use two of them. Join first two of the Jacobian
rows to get a 6D vector, and then join the third
row to get a 9D vector.
Regards,
Luis
-----------------
Bing Jian wrote:
> Suppose I have a VectorDistanceMap image, the pixel type
> is Offset<3>, say <u(x,y,z),v(x,y,z),w(x,y,z)>. How do I
> get the Jacobian of Offset?
>
> du/dx du/dy du/dz
> dv/dx dv/dy dv/dz
> dw/dx dw/dy dw/dz
>
> Thanks!
>
>