00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkSqrtImageAdaptor_h
00018
#define __itkSqrtImageAdaptor_h
00019
00020
#include <itkImageAdaptor.h>
00021
#include "vnl/vnl_math.h"
00022
00023
namespace itk
00024 {
00025
00026
namespace Accessor {
00037
template <
class TInternalType,
class TExternalType >
00038 class ITK_EXPORT SqrtPixelAccessor
00039 {
00040
public:
00043 typedef TExternalType
ExternalType;
00044
00047 typedef TInternalType
InternalType;
00048
00049 static inline void Set(TInternalType & output,
const TExternalType & input)
00050 {output = (TInternalType)sqrt((
double)input);}
00051
00052 static inline TExternalType Get(
const TInternalType & input )
00053 {
return (TExternalType)sqrt((
double)input);}
00054 };
00055
00056 }
00057
00066
template <
class TImage,
class TOutputPixelType>
00067 class ITK_EXPORT SqrtImageAdaptor :
public
00068
ImageAdaptor<TImage, Accessor::SqrtPixelAccessor<
00069 typename TImage::PixelType,
00070 TOutputPixelType> >
00071 {
00072
public:
00074 typedef SqrtImageAdaptor
Self;
00075
typedef ImageAdaptor<TImage,
Accessor::SqrtPixelAccessor<
00076
typename TImage::PixelType,
00077 TOutputPixelType> >
Superclass;
00078 typedef SmartPointer<Self> Pointer;
00079 typedef SmartPointer<const Self> ConstPointer;
00080
00082
itkNewMacro(
Self);
00083
00085
itkTypeMacro( SqrtImageAdaptor,
ImageAdaptor );
00086
00087
protected:
00088 SqrtImageAdaptor() {}
00089 virtual ~SqrtImageAdaptor() {}
00090
00091
private:
00092 SqrtImageAdaptor(
const Self&);
00093
void operator=(
const Self&);
00094 };
00095
00096 }
00097
00098
#endif