[Insight-developers] itkAzimuthElevationToCartesianTransform
Wilson Chang
wmcst6+@pitt.edu
Thu, 21 Feb 2002 15:05:01 -0500
> Some template parameters are being removed from the Transforms.
>
> Among the transforms there is
>
> itkAzimuthElevationToCartesianTransform
>
> deriving from
>
> itkAffineTransform.
>
> Is there any advantage in deriving from itkAffineTransform
> instead of deriving from the generic itkTransform ?
>
What Jim said about AzimuthElevationToCartesianTransform is correct. It was
just a stop-gap.
what do you think about definining an itkTransformBase class that the
itkImage class uses (as opposed to the current use of itkAffineTransform)?
> What are the parameters of this transformation ?
azimuth sweep angle, elevation sweep angle, azimuth angular seperation,
elevation angular seperation, distance the first sample is from the origin.
> maybe the orientation of the poles ?
> and the origin of the azimuth and altitud angles?
We assume that a pole goes through the center of this ultrasound "wedge."
This application is very specific for 3-D ultrasound captured in
azimuth-elevation(A-E) coordinate systems and is not scalable to
N-dimensions without ambiguity. A-E is different from conventional polar
coordinates.
> We may need to define SetParameters() and a GetJacobian()
> methods for it.
there is some stuff derived from itkAffineTransform that is not needed, such
as jacobian. A-E transforms can not be done with matricies.
>
> There are also methods for sampling the input space of the
> transform and getting the images of the sampling points
> at the output space. This can be quite useful but maybe this
> functionality should be implemented in a filter rather than
> a Transform.
I think a filter would be a better idea. perhaps this filter could be use
the proposed itkTransformBase class, and then people could plug whatever
transform they wanted into this filter.
>
> This transform also have methods for making it work
> Forwards or Backwards, In principle the API of the
> transforms uses : Transform() and BackTransform()
> for this purpouse.
>
yes, there is a flag in itkAzimuthElevationToCartesianTransform to say which
direction (A-E to cartesian, or cartesian to A-E) is forward, and which is
backward. I think I called them:
void SetForwardAzimuthElevationToCartesian();
void SetForwardCartesianToAzimuthElevation();
I know this doesnt make for a standard API, but at the time, I think this
was the only solution (again, without rewriting itkImage)
>
> This class will be fundamental for registering Ultrasound
> images with rectangular grid images like CT or MRI.
>
> We may want to have a 2D and a 3D version (the current
> one is 3D).
>
> In fact the 2D could be implemented as a ND cylindrical
> transform that maps 2 of the dimension into a circle and
> left the others untouched. In that way the same class will
> serve to map 2D ultrasond to 2D rectangular-grid images,
> and 2D ultrasound parallel sequences to 3D rectangular-gird
> images.
This sounds like it should be taken care of with a polar coordinate to
cartesian transform class, not A-E to cartesian transform. A-E is very
specific for 3-D. polar coordinates can be N-D, right?
>
> The current 3D version could also be generalized to ND by
> mapping 3 of the N dimensions into a sphere leaving the
> other dimensions untouched. That will serve for mapping
> time sequences of 3D ultrasound to time sequences of
> 3D rectangular-grid images (because time will still be
> rectilinear).
>
This would be fine.
>
> Would these changes disrupt the current use of this class ?
>
wilson