Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage > Class Template Reference

#include <itkVectorFuzzyConnectednessImageFilter.h>

Inheritance diagram for itk::VectorFuzzyConnectednessImageFilter:

Inheritance graph
[legend]
Collaboration diagram for itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef VectorFuzzyConnectednessImageFilter Self
typedef ImageToImageFilter<
TInputImage, TOutputImage > 
Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef TInputImage::PixelType InputPixelType
typedef InputPixelType::VectorType InputVectorType
typedef TInputImage InputImageType
typedef TOutputImage OutputImageType
typedef Image< unsigned short,
itkGetStaticConstMacro(ImageDimension) 
UShortImage )
typedef TInputImage::IndexType IndexType
typedef TInputImage::SizeType SizeType
typedef TOutputImage::RegionType RegionType
typedef std::list< IndexTypeListType
typedef std::vector< IDVectorOffsetType
typedef std::vector< float > FloatType
typedef Matrix< double, itkGetStaticConstMacro(VectorDimension), itkGetStaticConstMacro(VectorDimension) MatrixType )
typedef Vector< int, itkGetStaticConstMacro(VectorDimension) VDVector )
typedef Vector< int, itkGetStaticConstMacro(ImageDimension) IDVector )

Public Methods

virtual const char * GetClassName () const
void SetObjectsMatrix (const MatrixType object_max, const int object_num)
void SetObjectsSeed (const IndexType &seed, const int object_num)
void SetObjectsMean (const VDVector, const int object_num)
void Initialization ()
 itkStaticConstMacro (ImageDimension, unsigned int, TInputImage::ImageDimension)
 itkStaticConstMacro (VectorDimension, unsigned int, InputPixelType::VectorDimension)
virtual void SetObjects (int _arg)
virtual int GetObjects ()
virtual void SetSelectedObject (int _arg)
virtual int GetSelectedObject ()

Static Public Methods

Pointer New ()

Protected Methods

 VectorFuzzyConnectednessImageFilter ()
 ~VectorFuzzyConnectednessImageFilter ()
void GenerateData ()

Detailed Description

template<class TInputImage, class TOutputImage>
class itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >

The purpose of our program is to segment an object of interest in vectorial images using fuzzy connectedness principles. Here is a very brief description of these principles.

There are four basic concepts in fuzzy connectedness: fuzzy affinity [1,2], fuzzy connectedness [1], scale [2], and relative fuzzy connectedness [3]. These references give a complete theoretical basis and description of the underlying algorithms. For algorithm implementation and efficiency, see [4].

Fuzzy affinity is a local fuzzy relation which is defined on the whole image domain. It assigns to every pair of nearby voxels a strength of local hanging togetherness. Two components of fuzzy affinity named homogeneity-feature-based affinity and object-feature-based affinity are devised in a fully vectorial manner. The strength of affinity between any two nearby voxels v1 and v2 is large when v1 and v2 are spatially close, the intensity vectors of voxels in the "vicinity" of v1 and v2 have a high degree of homogeneity, and the intensity vectors are close to an intensity vector expected for the object of interest. (If v1 and v2 are far apart, their affinity is considered to be 0) The extent of "vicinity" is determined by the "scale" value assigned to v1 and v2.

"Scale" is a number assigned to every voxel in the image. It represents the radius of the largest ball centered at the voxel within which the vectorial values of all voxels are homogeneous. In determining affinity between two voxels, all voxels within the ball associated with both voxels are considered. Scale-based fuzzy affinity and fuzzy connectedness can make our algorithms more robust and less sensitive to noise.

A global fuzzy relation called fuzzy connectedness is defined on the whole image domain which assigns to every pair of voxels a strength of global hanging togetherness. The strength of hanging togetherness (connectedness) between two voxels is the largest of the strengths of all paths between them. The strength of any path is simply the smallest affinity of successive pair of voxels along the path.

The other important concept is relative fuzzy connectedness. An object gets defined in an image because of the presence of other co-objects. All co-objects of importance that are present in an image are let to compete among themselves in having voxels as their members. In this competition, every pair of voxels in the image will have a strength of connectedness in each object. The object in which this strength is highest will claim membership of the voxels. Suppose that there are n objects (note that image background is also an object) in the image and that we specify a seed voxel si in each object. Then any voxel v in the image has a strength of connectedness with respect to each si. Voxel v is considered to belong to that object with respect to whose seed v has the highest strength of connectedness [3]. The method requires some modification when a set of seed voxels is specified for each object. The basic algorithmic tool required in all cases is dynamic programming.

The fuzzy connectedness methods have been utilized on 1000s of images in several applications [6-10].

Our program takes a vectorial image as input and produces one binary output. The procedure includes six main steps. 1. Use function Compute_LookupTable () to setup three look-up tables m_ScaleMap, m_HomogeneityMap and m_ObjectMap in order to facilitate the computation of scale, homogeneity-based affinity and object-feature-based * affinity. 2. Use function Compute_Scale() to compute scale value at every voxel in and keep them in m_ScaleArray. In our program we set the maximum scale value as 8, this value could be changed in terms of the input image. 3. Use function Compute_Filter() to compute scale-based filtered vectorial value at every voxel and keep the value in m_FilterImage, this step is to speed up the computation of next step. 4. Use function Compute_Affinity() to compute fuzzy affinity value of each pair of neighboring voxels and keep them in m_Xaffinity, m_Yaffinity, and m_Zaffinity in terms of the coordinate direction. At first, we compute homogeneity-based affinity, them compute object-feature-based affinity, finally we combine them together. 5. Use function FastTracking() to compute global fuzzy connectedness between every voxel and seed points of foreground (selected object) and compute global fuzzy connectedness between every voxel and seed points of background ( other objects). And keep their values in m_ObjectFuzzyScene and m_BackgroundFuzzyScene respectively. 6. In function GenerateDate(), we implement iterative relative fuzzy connectedness strategy. We let foreground and background to compete between them for having voxels as their members in an iterative fashion [5].

Before running our program, user needs to input some parameters.

1. Use function SetObjects to set the number of objects of importance in the image. 2. Use function SetSelectedObject to specify the particular object to be segmented. 3. Use function SetObjectsSeed to specify seed points for objects. 4. Use function SetObjectsMean to specify the mean value of the intensity vector for objects. 5. Use function SetObjectsMatrix to specify the covariance matrix of the intensity vector for objects.

Reference:

1. J. K. Udupa and S. Samarasekera, Fuzzy connectedness and object definition: Theory, algorithms, and applications in image segmentation, Graphical Models Image Processing 58, 1996, 246-261. 2. P. K. Saha, J. K. Udupa, and D. Odhner, Scale-based fuzzy connected image segmentation: theory, algorithms, and validation, Computer Vision and Image Understanding 77, 2000, 145-174. 3. P. K.Saha and J. K. Udupa, Relative Fuzzy connectedness among multiple objects: Theory, algorithms, and applications in image segmentation, Computer Vision and Image Understanding 82, 2001, 42-56. 4. L. G. Nyul and J. K. Udupa, Fuzzy-connected 3D image segmentation at interactive speeds, Proc. SPIE: Medical Imaging 3979, 2000, 212-223. 5. P. K.Saha and J. K. Udupa, Iterative relative fuzzy connectedness and object definition: Theory, algorithms, and applications in image segmentation, in Proc. Of IEEE Workshop on Mathematical Methods in Biomedical Image Analysis, 2000, 28-35. 6. J. K. Udupa, L. Wei, S. Samarasekera, Y. Miki, M. A. van Buchen, and R. I. Grossman, Multiple sclerosis lesion quantification using fuzzy connected principles, IEEE Trans. Med. Imag. 16(5), 1997, 598-609. 7. B. L. Rice and J. K. Udupa, Fuzzy connected clutter-free volume rendering for MR angiography, Int. J. Imaging System. Tech. 11, 2000, 62-70. 8. T. Lei and J. K. Udupa, Artery-Vein Separation via MRA-An Image Processing Approch, IEEE Trans. Med. Imag. 20(8), 2001, 689-703. 9. P. K. Saha, J. K. Udupa, E. F. conant, D. P. Chakraborty, and D. Sullivan, Breast Tissue density Quantification via Digitized Mammograms, IEEE Trans. Med. Imag. 20(8), 2001, 792-803. 10. J. Liu, J. K. Udupa, D. Hackney, and G. Moonis, Brain tumor segmentation in MRI by using the fuzzy connectedness method, Proc. SPIE: Medical Imaging 4322, 2001, 1455-1465.

Definition at line 157 of file itkVectorFuzzyConnectednessImageFilter.h.


Member Typedef Documentation

template<class TInputImage, class TOutputImage>
typedef SmartPointer<const Self> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::ConstPointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 165 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef std::vector<float> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::FloatType
 

Definition at line 201 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Vector<int,itkGetStaticConstMacro(ImageDimension) itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::IDVector)
 

Vector and matrix related typedefs.

Definition at line 189 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage::IndexType itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::IndexType
 

Definition at line 196 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::InputImageType
 

Convenient typedefs.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 193 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage::PixelType itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::InputPixelType
 

Extract the image and vector types from the template parameters.

Definition at line 174 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef InputPixelType::VectorType itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::InputVectorType
 

Definition at line 175 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef std::list<IndexType> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::ListType
 

Definition at line 199 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Matrix<double,itkGetStaticConstMacro(VectorDimension), itkGetStaticConstMacro(VectorDimension) itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::MatrixType)
 

Vector and matrix related typedefs.

Definition at line 187 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef std::vector<IDVector> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::OffsetType
 

Definition at line 200 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TOutputImage itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::OutputImageType
 

Some convenient typedefs.

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 194 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef SmartPointer<Self> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::Pointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 164 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TOutputImage::RegionType itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::RegionType
 

Definition at line 198 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef VectorFuzzyConnectednessImageFilter itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::Self
 

Standard class typedefs.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 162 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage::SizeType itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SizeType
 

Definition at line 197 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef ImageToImageFilter<TInputImage,TOutputImage> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::Superclass
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 163 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Image<unsigned short,itkGetStaticConstMacro(ImageDimension) itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::UShortImage)
 

Definition at line 195 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Vector<int,itkGetStaticConstMacro(VectorDimension) itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::VDVector)
 

Vector and matrix related typedefs.

Definition at line 188 of file itkVectorFuzzyConnectednessImageFilter.h.


Constructor & Destructor Documentation

template<class TInputImage, class TOutputImage>
itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::VectorFuzzyConnectednessImageFilter   [protected]
 

template<class TInputImage, class TOutputImage>
itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::~VectorFuzzyConnectednessImageFilter   [protected]
 


Member Function Documentation

template<class TInputImage, class TOutputImage>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::GenerateData   [protected, virtual]
 

Standard pipeline method.

Reimplemented from itk::ImageSource< TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual const char* itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::GetClassName   const [virtual]
 

Run-time type information (and related methods).

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual int itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::GetObjects   [virtual]
 

Set/Get the object number be segmented in the input image.

template<class TInputImage, class TOutputImage>
virtual int itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::GetSelectedObject   [virtual]
 

Set/Get the selected object number to be segmented in the input image.

template<class TInputImage, class TOutputImage>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::Initialization  
 

Allocate the variate in terms of the number of Objects

template<class TInputImage, class TOutputImage>
itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::itkStaticConstMacro VectorDimension   ,
unsigned    int,
InputPixelType::VectorDimension   
 

Extract the image and vector dimension from the template parameters.

template<class TInputImage, class TOutputImage>
itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::itkStaticConstMacro ImageDimension   ,
unsigned    int,
TInputImage::ImageDimension   
 

Extract the image and vector dimension from the template parameters.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
Pointer itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::New   [static]
 

Method for creation through the object factory.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetObjects int    _arg [virtual]
 

Set/Get the object number be segmented in the input image.

template<class TInputImage, class TOutputImage>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetObjectsMatrix const MatrixType    object_max,
const int    object_num
 

Setting the covariance matrix for specified object:

template<class TInputImage, class TOutputImage>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetObjectsMean const    VDVector,
const int    object_num
 

Setting the seed points for specified object.

template<class TInputImage, class TOutputImage>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetObjectsSeed const IndexType   seed,
const int    object_num
 

Setting the seed points for specified object.

template<class TInputImage, class TOutputImage>
virtual void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetSelectedObject int    _arg [virtual]
 

Set/Get the selected object number to be segmented in the input image.


The documentation for this class was generated from the following file:
Generated at Wed Mar 12 01:21:51 2003 for ITK by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2000