two_byte_volume_pixel_dataset.h

Go to the documentation of this file.
00001 //--------------------------------------------------
00012 //---------------------------------------------------
00013 
00014 #ifndef IMEDGINE_TWO_BYTE_VOLUME_PIXEL_DATASET_H
00015 #define IMEDGINE_TWO_BYTE_VOLUME_PIXEL_DATASET_H
00016 
00017 #include "../global/global_definitions.h"
00018 #include "dataset_definitions.h"
00019 #include "volume_pixel_dataset.h"
00020 #include "../exceptions/null_pointer_exception.h"
00021 #include "../exceptions/index_out_of_bounds_exception.h"
00022 
00023 #include <boost/shared_ptr.hpp>
00024 
00025 #include <vector>
00026 #include <memory>
00027 #include <itkImage.h>
00028 #include <itkExtractImageFilter.h>
00029 #include <itkResampleImageFilter.h>
00030 
00031 namespace imedgine 
00032 {
00033   //--------------------------------------------------
00049   //--------------------------------------------------
00050   
00051   class TwoByteVolumePixelDataset : public VolumePixelDataset
00052   {
00053   protected:
00054       
00055     //--------------------------------------------------
00058     typedef two_byte_volume_type volume_type;
00059     
00060     //--------------------------------------------------
00063     typedef two_byte_volume_pointer_type volume_pointer_type;
00064     
00065     //--------------------------------------------------
00068     typedef const_two_byte_volume_pointer_type const_volume_pointer_type;
00069     
00070     //--------------------------------------------------
00073     typedef const_two_byte_volume_iterator_type const_volume_iterator_type;
00074     
00075     //--------------------------------------------------
00078     typedef two_byte_image_type image_type;
00079     
00080     //--------------------------------------------------
00083     typedef two_byte_pixel_type pixel_type;
00084             
00085   public: 
00086     
00087     //--------------------------------------------------
00090     typedef volume_type type;
00091 
00092     //--------------------------------------------------
00097     
00098     TwoByteVolumePixelDataset(dataset_key_type dataset_key, volume_pointer_type volume = 0);
00099     
00100     //--------------------------------------------------
00103     
00104     virtual ~TwoByteVolumePixelDataset();
00105     
00106     //--------------------------------------------------
00110     
00111     virtual external_data_pointer_type getData() const
00112         throw(NullPointerException);
00113     
00114     //--------------------------------------------------
00118     
00119     void setDataset(volume_pointer_type dataset);
00120     
00121     //--------------------------------------------------
00126     
00127     const_volume_pointer_type getDataset() const;
00128     
00129     //--------------------------------------------------
00133     
00134     volume_pointer_type getDataset();
00135     
00136         //----------------------------------------------------
00141 
00142     virtual void setIntensity(double window, double level);
00143 
00144     //----------------------------------------------------
00148  
00149     double getIntensityWindow() const
00150         throw(NullPointerException);
00151 
00152     //----------------------------------------------------
00156     
00157     double getIntensityLevel() const
00158         throw(NullPointerException);
00159     
00160     //--------------------------------------------------
00166       
00167     external_data_pointer_type getSliceXY(index_type z_index)
00168       throw(NullPointerException, IndexOutOfBoundsException);
00169     
00170     //--------------------------------------------------
00176       
00177     external_data_pointer_type getSliceXZ(index_type y_index)
00178       throw(NullPointerException, IndexOutOfBoundsException);
00179     
00180     //--------------------------------------------------
00186       
00187     external_data_pointer_type getSliceYZ(index_type x_index)
00188       throw(NullPointerException, IndexOutOfBoundsException);
00189     
00190     //--------------------------------------------------
00197     
00198     dataset_pointer_type getImageXY(index_type z_index, dataset_key_type image_key)
00199         throw(NullPointerException, IndexOutOfBoundsException);
00200     
00201     //--------------------------------------------------
00208       
00209     dataset_pointer_type getImageXZ(index_type y_index, dataset_key_type image_key)
00210         throw(NullPointerException, IndexOutOfBoundsException);
00211     
00212     //--------------------------------------------------
00219       
00220     dataset_pointer_type getImageYZ(index_type x_index, dataset_key_type image_key)
00221         throw(NullPointerException, IndexOutOfBoundsException);
00222 
00223     
00224   protected:
00225     
00226     //--------------------------------------------------
00229     typedef volume_type::RegionType region_type;
00230     
00231     //--------------------------------------------------
00234     typedef volume_type::SizeType region_size_type;
00235 
00236     //--------------------------------------------------
00239     typedef volume_type::IndexType region_index_type;
00240     
00241     //--------------------------------------------------
00244     typedef itk::ResampleImageFilter<volume_type, volume_type, double> resampling_filter_type;
00245     
00246     //--------------------------------------------------
00249     typedef itk::ExtractImageFilter<volume_type, image_type> slice_extractor_type;
00250     
00251     //--------------------------------------------------
00254     typedef itk::ExtractImageFilter<volume_type, image_type> image_extractor_type;
00255     
00256     //--------------------------------------------------
00259     typedef itk::IntensityWindowingImageFilter<volume_type, external_volume_type> 
00260         volume_intensity_filter_type;
00261         
00262     //--------------------------------------------------
00265     typedef itk::IntensityWindowingImageFilter<image_type, external_image_type> 
00266         image_intensity_filter_type;
00267   
00268     //--------------------------------------------------
00271     
00272     TwoByteVolumePixelDataset(TwoByteVolumePixelDataset const& src);
00273     
00274     //--------------------------------------------------
00278     
00279     void setDatasetInternal(volume_pointer_type dataset);
00280 
00281     //--------------------------------------------------
00284     volume_pointer_type dataset_;
00285     
00286     //--------------------------------------------------
00289     resampling_filter_type::Pointer resampling_filter_;
00290     
00291     //--------------------------------------------------
00294     slice_extractor_type::Pointer slice_extractor_;
00295     
00296     //--------------------------------------------------
00299     image_extractor_type::Pointer image_extractor_;
00300     
00301     //--------------------------------------------------
00304     volume_intensity_filter_type::Pointer volume_intensity_filter_;
00305     
00306     //--------------------------------------------------
00309     image_intensity_filter_type::Pointer image_intensity_filter_;
00310     
00311     //--------------------------------------------------
00314     region_type xy_region_to_extract_;
00315     
00316     //--------------------------------------------------
00319     region_type xz_region_to_extract_;
00320     
00321      //--------------------------------------------------
00324     region_type yz_region_to_extract_;
00325     
00326     private:
00327     
00328     //--------------------------------------------------
00331     
00332     TwoByteVolumePixelDataset& operator = (TwoByteVolumePixelDataset const&) { return(*this); }
00333     
00334   };
00335 
00336 }
00337 
00338 #endif 

Generated on Sun Aug 13 18:19:39 2006 for iMEDgine by  doxygen 1.4.6