one_byte_volume_pixel_dataset.h

Go to the documentation of this file.
00001 //--------------------------------------------------
00012 //---------------------------------------------------
00013 
00014 #ifndef IMEDGINE_ONE_BYTE_VOLUME_PIXEL_DATASET_H
00015 #define IMEDGINE_ONE_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 #include <itkAffineTransform.h>
00031 
00032 namespace imedgine 
00033 {
00034   //--------------------------------------------------
00052   //--------------------------------------------------
00053 
00054 
00055   class OneByteVolumePixelDataset : public VolumePixelDataset
00056   {
00057   protected:
00058       
00059     //--------------------------------------------------
00062     typedef one_byte_volume_type volume_type;
00063     
00064     //--------------------------------------------------
00067     typedef one_byte_volume_pointer_type volume_pointer_type;
00068     
00069     //--------------------------------------------------
00072     typedef const_one_byte_volume_pointer_type const_volume_pointer_type;
00073     
00074     //--------------------------------------------------
00077     typedef const_one_byte_volume_iterator_type const_volume_iterator_type;
00078     
00079     //--------------------------------------------------
00082     typedef one_byte_image_type image_type;
00083     
00084     //--------------------------------------------------
00087     typedef one_byte_pixel_type pixel_type;
00088             
00089   public: 
00090     
00091     //--------------------------------------------------
00094     typedef volume_type type;
00095 
00096     //--------------------------------------------------
00101     
00102     OneByteVolumePixelDataset(dataset_key_type dataset_key, volume_pointer_type volume = 0);
00103     
00104     //--------------------------------------------------
00107     
00108     virtual ~OneByteVolumePixelDataset();
00109     
00110     //--------------------------------------------------
00114     
00115     virtual external_data_pointer_type getData() const
00116         throw(NullPointerException);
00117         
00118     //--------------------------------------------------
00122     
00123     void setDataset(volume_pointer_type dataset);
00124     
00125     //--------------------------------------------------
00130     
00131     const_volume_pointer_type getDataset() const;
00132     
00133     //--------------------------------------------------
00137     
00138     volume_pointer_type getDataset();
00139     
00140         //----------------------------------------------------
00145 
00146     virtual void setIntensity(double window, double level);
00147 
00148     //----------------------------------------------------
00152  
00153     double getIntensityWindow() const
00154         throw(NullPointerException);
00155 
00156     //----------------------------------------------------
00160     
00161     double getIntensityLevel() const
00162         throw(NullPointerException);
00163     
00164     //--------------------------------------------------
00170       
00171     external_data_pointer_type getSliceXY(index_type z_index)
00172       throw(NullPointerException, IndexOutOfBoundsException);
00173     
00174     //--------------------------------------------------
00180       
00181     external_data_pointer_type getSliceXZ(index_type y_index)
00182       throw(NullPointerException, IndexOutOfBoundsException);
00183     
00184     //--------------------------------------------------
00190       
00191     external_data_pointer_type getSliceYZ(index_type x_index)
00192       throw(NullPointerException, IndexOutOfBoundsException);
00193     
00194     
00195     //--------------------------------------------------
00202     
00203     dataset_pointer_type getImageXY(index_type z_index, dataset_key_type image_key)
00204         throw(NullPointerException, IndexOutOfBoundsException);
00205     
00206     //--------------------------------------------------
00213       
00214     dataset_pointer_type getImageXZ(index_type y_index, dataset_key_type image_key)
00215         throw(NullPointerException, IndexOutOfBoundsException);
00216     
00217     //--------------------------------------------------
00224       
00225     dataset_pointer_type getImageYZ(index_type x_index, dataset_key_type image_key) 
00226         throw(NullPointerException, IndexOutOfBoundsException);
00227 
00228     
00229   protected:
00230     
00231     //--------------------------------------------------
00234     typedef volume_type::RegionType region_type;
00235     
00236     //--------------------------------------------------
00239     typedef volume_type::SizeType region_size_type;
00240 
00241     //--------------------------------------------------
00244     typedef volume_type::IndexType region_index_type;
00245     
00246     //--------------------------------------------------
00249     typedef itk::ResampleImageFilter<volume_type, volume_type, double> resampling_filter_type;
00250     
00251     //--------------------------------------------------
00254     typedef itk::ExtractImageFilter<volume_type, image_type> slice_extractor_type;
00255     
00256     //--------------------------------------------------
00259     typedef itk::ExtractImageFilter<volume_type, image_type> image_extractor_type;
00260     
00261     //--------------------------------------------------
00264     typedef itk::IntensityWindowingImageFilter<volume_type, external_volume_type> 
00265         volume_intensity_filter_type;
00266         
00267     //--------------------------------------------------
00270     typedef itk::IntensityWindowingImageFilter<image_type, external_image_type> 
00271         image_intensity_filter_type;
00272   
00273     //--------------------------------------------------
00276     
00277     OneByteVolumePixelDataset(OneByteVolumePixelDataset const& src);
00278     
00279     //--------------------------------------------------
00283     
00284     void setDatasetInternal(volume_pointer_type dataset);
00285     
00286     //--------------------------------------------------
00289     one_byte_volume_pointer_type dataset_;
00290     
00291     //--------------------------------------------------
00294     resampling_filter_type::Pointer resampling_filter_;
00295     
00296     //--------------------------------------------------
00299     slice_extractor_type::Pointer slice_extractor_;
00300     
00301     //--------------------------------------------------
00304     image_extractor_type::Pointer image_extractor_;
00305     
00306     //--------------------------------------------------
00309     volume_intensity_filter_type::Pointer volume_intensity_filter_;
00310     
00311     //--------------------------------------------------
00314     image_intensity_filter_type::Pointer image_intensity_filter_;
00315     
00316     //--------------------------------------------------
00319     region_type xy_region_to_extract_;
00320     
00321     //--------------------------------------------------
00324     region_type xz_region_to_extract_;
00325     
00326      //--------------------------------------------------
00329     region_type yz_region_to_extract_;
00330     
00331     private:
00332       
00333     //--------------------------------------------------
00336     
00337     OneByteVolumePixelDataset& operator = (OneByteVolumePixelDataset const&) { return(*this); }
00338     
00339   };
00340 
00341 }
00342 
00343 #endif // IMEDGINE3D_DATASET_H

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