1 /*=========================================================================
3 * Copyright RTK Consortium
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0.txt
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 *=========================================================================*/
19 #ifndef __rtkImagXRawToAttenuationImageFilter_h
20 #define __rtkImagXRawToAttenuationImageFilter_h
22 #include <itkImageToImageFilter.h>
23 #include <itkCropImageFilter.h>
25 #include "rtkImagXLookupTableImageFilter.h"
26 #include "rtkBoellaardScatterCorrectionImageFilter.h"
28 /** \class ImagXRawToAttenuationImageFilter
29 * \brief Convert raw ImagX data to attenuation images
35 * \ingroup ImageToImageFilter
40 template<class TInputImage, class TOutputImage=TInputImage>
41 class ITK_EXPORT ImagXRawToAttenuationImageFilter :
42 public itk::ImageToImageFilter<TInputImage, TOutputImage>
45 /** Standard class typedefs. */
46 typedef ImagXRawToAttenuationImageFilter Self;
47 typedef itk::ImageToImageFilter<TInputImage, TOutputImage> Superclass;
48 typedef itk::SmartPointer<Self> Pointer;
49 typedef itk::SmartPointer<const Self> ConstPointer;
51 /** Some convenient typedefs. */
52 typedef TInputImage InputImageType;
53 typedef TOutputImage OutputImageType;
55 /** Standard New method. */
58 /** Runtime information support. */
59 itkTypeMacro(ImagXRawToAttenuationImageFilter, itk::ImageToImageFilter);
61 ImagXRawToAttenuationImageFilter();
62 ~ImagXRawToAttenuationImageFilter(){
65 /** Apply changes to the input image requested region. */
66 virtual void GenerateInputRequestedRegion();
68 void GenerateOutputInformation();
70 /** Single-threaded version of GenerateData. This filter delegates
71 * to other filters. */
75 //purposely not implemented
76 ImagXRawToAttenuationImageFilter(const Self&);
77 void operator=(const Self&);
79 typedef itk::CropImageFilter<InputImageType, InputImageType> CropFilterType;
80 typedef rtk::BoellaardScatterCorrectionImageFilter<InputImageType, InputImageType> ScatterFilterType;
81 typedef rtk::ImagXLookupTableImageFilter<InputImageType, OutputImageType> LookupTableFilterType;
83 typename LookupTableFilterType::Pointer m_LookupTableFilter;
84 typename CropFilterType::Pointer m_CropFilter;
85 typename ScatterFilterType::Pointer m_ScatterFilter;
88 } // end namespace rtk
90 #ifndef ITK_MANUAL_INSTANTIATION
91 #include "rtkImagXRawToAttenuationImageFilter.txx"