I have seen that before. That is why this class is not wrapped with WrapITK. 
But it is wrapped with SimpleITK.

I believe and EnablelIf is required.

Brad

On Jun 26, 2014, at 1:53 PM, Williams, Norman K <[email protected]> 
wrote:

> The following two lines of code generates hundreds of lines of error messages:
> 
> #include "itkPatchBasedDenoisingImageFilter.h"
> template class itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3u>, 
> itk::Image<float, 3u> >;
> 
> Interestingly enough, this code does not:
> 
> typedef itk::Image<float,3u> ImageType;
> typedef itk::PatchBasedDenoisingImageFilter<ImageType,ImageType> PDIFType;
> PDIFType::Pointer filter = PDIFType::New();
> 
> Here are the compiler errors:
> 
> make
> Scanning dependencies of target PatchBasedDenoisingTest
> [100%] Building CXX object 
> CMakeFiles/PatchBasedDenoisingTest.dir/PatchBasedDenoisingTest.cxx.o
> In file included from 
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:1:
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:337:62:
>  error: no viable
>       conversion from 'const DiffusionTensor3D<PixelValueType>' to 'const 
> PixelType' (aka 'const float')
>       ComputeSignedEuclideanDifferenceAndWeightedSquaredNorm(a, b, weight,
>                                                              ^
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:3:21:
>  note: in instantiation of member
>       function 'itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3>, 
> itk::Image<float, 3>
>       >::ComputeDifferenceAndWeightedSquaredNorm' requested here
> template class itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3u>, 
> itk::Image<float, 3u> >; //Instantiated 9 times
>                     ^
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:501:80:
>  note: passing
>       argument to parameter 'a' here
>   void ComputeSignedEuclideanDifferenceAndWeightedSquaredNorm(const 
> PixelType& a, const PixelType& b,
>                                                                               
>  ^
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:372:39:
>  error: no viable
>       conversion from 'const DiffusionTensor3D<RealValueType>' to 'const 
> RealType' (aka 'const double')
>       return this->AddEuclideanUpdate(a, b);
>                                       ^
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:3:21:
>  note: in instantiation of member
>       function 'itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3>, 
> itk::Image<float, 3> >::AddUpdate' requested here
> template class itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3u>, 
> itk::Image<float, 3u> >; //Instantiated 9 times
>                     ^
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:524:47:
>  note: passing
>       argument to parameter 'a' here
>   RealType AddEuclideanUpdate(const RealType& a, const RealType& b);
>                                               ^
> In file included from 
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:1:
> In file included from 
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:541:
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:784:5:
>  error: called
>       object type 'PixelType' (aka 'float') is not a function or function 
> pointer
>     identityTensor(ii,ii) = NumericTraits<PixelValueType>::One;
>     ^~~~~~~~~~~~~~
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:3:21:
>  note: in instantiation of member
>       function 'itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3>, 
> itk::Image<float, 3> >::ThreadedRiemannianMinMax'
>       requested here
> template class itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3u>, 
> itk::Image<float, 3u> >; //Instantiated 9 times
>                     ^
> In file included from 
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:1:
> In file included from 
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:541:
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1067:20:
>  error: type
>       'PixelType' (aka 'float') cannot be used prior to '::' because it has 
> no members
>   typedef typename PixelType::MatrixType            MatrixType;
>                    ^
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:3:21:
>  note: in instantiation of member
>       function 'itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3>, 
> itk::Image<float, 3>
>       >::ComputeLogMapAndWeightedSquaredGeodesicDifference' requested here
> template class itk::PatchBasedDenoisingImageFilter<itk::Image<float, 3u>, 
> itk::Image<float, 3u> >; //Instantiated 9 times
>                     ^
> In file included from 
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:1:
> In file included from 
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:541:
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1068:20:
>  error: type
>       'RealType' (aka 'double') cannot be used prior to '::' because it has 
> no members
>   typedef typename RealType::EigenValuesArrayType   RealEigenValuesArrayType;
>                    ^
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1069:20:
>  error: type
>       'RealType' (aka 'double') cannot be used prior to '::' because it has 
> no members
>   typedef typename RealType::EigenVectorsMatrixType 
> RealEigenVectorsMatrixType;
>                    ^
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1070:20:
>  error: type
>       'RealType' (aka 'double') cannot be used prior to '::' because it has 
> no members
>   typedef typename RealType::MatrixType             RealMatrixType;
>                    ^
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1132:3:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   Y[0] = ( eigenVecs(0,0) * factor0 + eigenVecs(0,1) * factor1 + 
> eigenVecs(0,2) * factor2 ) / eigenVals[0];
>   ^ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1133:3:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   Y[1] = ( eigenVecs(1,0) * factor0 + eigenVecs(1,1) * factor1 + 
> eigenVecs(1,2) * factor2 ) / std::sqrt(
>   ^ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1135:3:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   Y[2] = ( eigenVecs(2,0) * factor0 + eigenVecs(2,1) * factor1 + 
> eigenVecs(2,2) * factor2 ) / std::sqrt(
>   ^ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1142:3:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   Y[3] = ( eigenVecs(1,0) * factor0 + eigenVecs(1,1) * factor1 + 
> eigenVecs(1,2) * factor2 ) / eigenVals[1];
>   ^ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1143:3:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   Y[4] = ( eigenVecs(2,0) * factor0 + eigenVecs(2,1) * factor1 + 
> eigenVecs(2,2) * factor2 ) / std::sqrt(
>   ^ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1150:3:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   Y[5] = ( eigenVecs(2,0) * factor0 + eigenVecs(2,1) * factor1 + 
> eigenVecs(2,2) * factor2 ) / eigenVals[2];
>   ^ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1154:5:
>  error: no
>       matching member function for call to 'Compute3x3EigenAnalysis'
>     Compute3x3EigenAnalysis(Y, YEigenVals, YEigenVecs);
>     ^~~~~~~~~~~~~~~~~~~~~~~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:520:8:
>  note: candidate
>       template ignored: could not match 
> 'DiffusionTensor3D<type-parameter-0-0>' against 'double'
>   void Compute3x3EigenAnalysis(const DiffusionTensor3D<TensorValueT>& 
> spdMatrix,
>        ^
> In file included from 
> /scratch/kent/itktest/PatchBasedDenoisingTest/src/PatchBasedDenoisingTest.cxx:1:
> In file included from 
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.h:541:
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1177:5:
>  error: 
>       subscripted value is not an array, pointer, or vector
>     YEigenVals[ii] = 
> std::log(vnl_math_max(RealValueType(1e-15),YEigenVals[ii]) );
>     ^~~~~~~~~~ ~~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1182:34:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   const RealValueType YEigVal0 = YEigenVals[0];
>                                  ^~~~~~~~~~ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1183:34:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   const RealValueType YEigVal1 = YEigenVals[1];
>                                  ^~~~~~~~~~ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1184:34:
>  error: 
>       subscripted value is not an array, pointer, or vector
>   const RealValueType YEigVal2 = YEigenVals[2];
>                                  ^~~~~~~~~~ ~
> /scratch/kent/itktest/ITK/Modules/Filtering/Denoising/include/itkPatchBasedDenoisingImageFilter.hxx:1186:49:
>  error: called
>       object type 'RealEigenVectorsMatrixType' (aka 'int') is not a function 
> or function pointer
>   const RealValueType temp00 = eigenVecs(0,0) * YEigenVecs(0,0) * eigVal0 +
>                                                 ^~~~~~~~~~
> fatal error: too many errors emitted, stopping now [-ferror-limit=]
> 20 errors generated.
> make[2]: *** 
> [CMakeFiles/PatchBasedDenoisingTest.dir/PatchBasedDenoisingTest.cxx.o] Error 1
> make[1]: *** [CMakeFiles/PatchBasedDenoisingTest.dir/all] Error 2
> make: *** [all] Error 2
> 
> Compilation exited abnormally with code 2 at Thu Jun 26 12:35:30
> 
> 
> 
> Notice: This UI Health Care e-mail (including attachments) is covered by the 
> Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential 
> and may be legally privileged.  If you are not the intended recipient, you 
> are hereby notified that any retention, dissemination, distribution, or 
> copying of this communication is strictly prohibited.  Please reply to the 
> sender that you have received the message in error, then delete it.  Thank 
> you.
> _______________________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.php
> 
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-developers

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-developers

Reply via email to