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
[Fuzzy Connectedness-based Segmentation Filters]

#include <itkVectorFuzzyConnectednessImageFilter.h>

Inheritance diagram for itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >:

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 TOutputImage::PixelType OutputPixelType
typedef InputPixelType::VectorType InputVectorType
typedef Matrix< double, itkGetStaticConstMacro(VectorDimension), itkGetStaticConstMacro(VectorDimension) DoubleMatrixType )
typedef std::vector< DoubleMatrixTypeDoubleMatrixArrayType
typedef Vector< unsigned short,
itkGetStaticConstMacro(ImageDimension) 
AffinityVector )
typedef Vector< double, itkGetStaticConstMacro(VectorDimension) DoubleVectorType )
typedef std::vector< DoubleVectorTypeDoubleVectorArrayType
typedef Vector< int, 2 > TDVector
typedef TInputImage::IndexType IndexType
typedef TInputImage::SizeType SizeType
typedef TOutputImage::RegionType OutRegionType
typedef std::list< IndexTypeListSeedType
typedef std::vector< ListSeedTypeListSeedArrayType
typedef std::vector< TDVectorOffsetType
typedef TInputImage InputImageType
typedef TOutputImage OutputImageType
typedef Image< unsigned short,
itkGetStaticConstMacro(ImageDimension) 
UShortImageType )
typedef Image< AffinityVector,
itkGetStaticConstMacro(ImageDimension) 
AffinityImageType )

Public Member Functions

virtual const char * GetNameOfClass () const
void SetHomogeneityMatrix (const DoubleMatrixType homo_max)
void SetObjectsMatrix (const DoubleMatrixType object_max, const int object_num)
void SetObjectsSeed (const IndexType &seed, const int object_num)
void SetObjectsMean (const DoubleVectorType, const int object_num)
void SetSuppressBckgFlag (const int flag)
void SetThreshold (const float threshold)
void Initialization ()
 itkStaticConstMacro (VectorDimension, unsigned int, InputPixelType::Dimension)
 itkStaticConstMacro (ImageDimension, unsigned int, TInputImage::ImageDimension)
virtual void SetNumberOfObjects (int _arg)
virtual int GetNumberOfObjects ()

Static Public Member Functions

Pointer New ()

Protected Member Functions

 VectorFuzzyConnectednessImageFilter ()
 ~VectorFuzzyConnectednessImageFilter ()
virtual void PrintSelf (std::ostream &os, Indent indent) const
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 161 of file itkVectorFuzzyConnectednessImageFilter.h.


Member Typedef Documentation

template<class TInputImage, class TOutputImage>
typedef Image<AffinityVector, itkGetStaticConstMacro(ImageDimension) itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::AffinityImageType)
 

Convenient typedefs.

Definition at line 210 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Vector of unsigned sStrong affinity type

Definition at line 196 of file itkVectorFuzzyConnectednessImageFilter.h.

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

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

Definition at line 169 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef std::vector<DoubleMatrixType> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::DoubleMatrixArrayType
 

Array of double matrics

Definition at line 193 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Double matrix type

Definition at line 190 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef std::vector<DoubleVectorType> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::DoubleVectorArrayType
 

Array of double vectors

Definition at line 202 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Vector of double type

Definition at line 199 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Definition at line 213 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 207 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 178 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Definition at line 180 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef std::vector<ListSeedType> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::ListSeedArrayType
 

Array of Lists

Definition at line 221 of file itkVectorFuzzyConnectednessImageFilter.h.

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

List of Seeds type

Definition at line 218 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Definition at line 223 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Convenient typedefs.

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 208 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Definition at line 179 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Definition at line 215 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 168 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 166 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Definition at line 214 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 167 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Vector<int,2> itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::TDVector
 

Definition at line 204 of file itkVectorFuzzyConnectednessImageFilter.h.

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

Convenient typedefs.

Definition at line 209 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 >::GetNameOfClass  )  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 >::GetNumberOfObjects  )  [virtual]
 

Set/Get the object number 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 ImageDimension  ,
unsigned  int,
TInputImage::ImageDimension 
 

Extract the image and vector dimension from the template parameters.

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

Extract the image and vector dimension from the template parameters.

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

Method for creation through the object factory.

Reimplemented from itk::Object.

template<class TInputImage, class TOutputImage>
virtual void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::PrintSelf std::ostream &  os,
Indent  indent
const [protected, virtual]
 

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

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

template<class TInputImage, class TOutputImage>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetHomogeneityMatrix const DoubleMatrixType  homo_max  ) 
 

Setting the covariance matrix for specified object:

template<class TInputImage, class TOutputImage>
virtual void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetNumberOfObjects 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 DoubleMatrixType  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  DoubleVectorType,
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>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetSuppressBckgFlag const int  flag  )  [inline]
 

Setting the flag to suppress background.

Definition at line 243 of file itkVectorFuzzyConnectednessImageFilter.h.

template<class TInputImage, class TOutputImage>
void itk::VectorFuzzyConnectednessImageFilter< TInputImage, TOutputImage >::SetThreshold const float  threshold  )  [inline]
 

Setting the threshold of strength of fuzzy connectedness if user selects absolute FC algorighm

Definition at line 251 of file itkVectorFuzzyConnectednessImageFilter.h.


The documentation for this class was generated from the following file:
Generated at Thu May 25 02:34:39 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000