[Insight-users] MeshToMeshFilter

Thomas Boettger t.boettger at dkfz-heidelberg.de
Wed, 18 Feb 2004 11:13:29 +0100


This is a multi-part message in MIME format.
--------------030402050603040700010207
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hello everybody,

I tried to define the MeshToMeshFilter subclasses with different 
MeshTypes for input and output meshes. The only difference between the 
meshtraits is the pixel type, which i want to change from input to 
output. I need this because I have different PixelTypes defined to store 
data in the new classes I am writing.

The following code example does not compile:

#include "itkMesh.h"
#include "itkIdentityTransform.h"
#include "itkTransformMeshFilter.h"
#include "itkDefaultStaticMeshTraits.h"

int itkDifferentMeshTypesTest(int, char* [] )
{
   typedef itk::DefaultStaticMeshTraits<float, 3, 3, float, float, 
float> FloatTraits;
   typedef itk::DefaultStaticMeshTraits<double, 3, 3, float,float,float> 
DoubleTraits;

   typedef itk::Mesh<float, 3, FloatTraits> FloatMeshType;
   typedef itk::Mesh<double, 3, DoubleTraits> DoubleMeshType;
   typedef itk::IdentityTransform<float,3>  TransformType;
   typedef itk::TransformMeshFilter<FloatMeshType, DoubleMeshType, 
TransformType> MeshFilterType;
   MeshFilterType::Pointer meshTransformer = MeshFilterType::New();
   return 0;
}


It is not clear what the pixel type is really used for. There should be 
no influence because it is described as the PointData type in the 
documetation.

I attached the code and Visual Studio error output. Where is the mistake?


Regards,

Thomas

-- 
Dipl.-Inform. Thomas Boettger
Deutsches Krebsforschungszentrum         (German Cancer Research Center)
Div. Medical and Biological Informatics B010    Tel: (+49) 6221-42 2328
Im Neuenheimer Feld 280                          Fax: (+49) 6221-42 2345
D-69120 Heidelberg                            e-mail: t.boettger at dkfz.de
Germany                      http://www.dkfz.de/mbi/people/thomasb.shtml


--------------030402050603040700010207
Content-Type: text/plain;
 name="meshtomeshfilter_error_out.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="meshtomeshfilter_error_out.txt"

f:\itk-1.4.0\Code\BasicFilters\itkTransformMeshFilter.txx(105) : error C2664: 'void itk::PointSet<TPixelType,VDimension,TMeshTraits>::SetPointData(itk::PointSet<TPixelType,VDimension,TMeshTraits>::PointDataContainer *)' : cannot convert parameter 1 from 'itk::PointSet<TPixelType,VDimension,TMeshTraits>::PointDataContainer *' to 'itk::PointSet<TPixelType,VDimension,TMeshTraits>::PointDataContainer *'
        with
        [
            TPixelType=float,
            VDimension=3,
            TMeshTraits=DoubleTraits
        ]
        and
        [
            TPixelType=float,
            VDimension=3,
            TMeshTraits=itk::DefaultStaticMeshTraits<float,3,3,float,float,float>
        ]
        and
        [
            TPixelType=float,
            VDimension=3,
            TMeshTraits=DoubleTraits
        ]
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
        C:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xtree(261) : while compiling class-template member function 'void itk::TransformMeshFilter<TInputMesh,TOutputMesh,TTransform>::GenerateData(void)'
        with
        [
            TInputMesh=FloatMeshType,
            TOutputMesh=DoubleMeshType,
            TTransform=TransformType
        ]
        itkRegularSphereMeshSourceTest.cpp(65) : see reference to class template instantiation 'itk::TransformMeshFilter<TInputMesh,TOutputMesh,TTransform>' being compiled
        with
        [
            TInputMesh=FloatMeshType,
            TOutputMesh=DoubleMeshType,
            TTransform=TransformType
        ]
f:\itk-1.4.0\Code\BasicFilters\itkTransformMeshFilter.txx(118) : error C2664: 'itk::Mesh<float,3,class itk::DefaultStaticMeshTraits<double,3,3,float,float,float> >::SetBoundaryAssignments' : cannot convert parameter 2 from 'itk::Mesh<TPixelType,VDimension,TMeshTraits>::BoundaryAssignmentsContainerPointer' to 'itk::Mesh<TPixelType,VDimension,TMeshTraits>::BoundaryAssignmentsContainer *'
        with
        [
            TPixelType=float,
            VDimension=3,
            TMeshTraits=itk::DefaultStaticMeshTraits<float,3,3,float,float,float>
        ]
        and
        [
            TPixelType=float,
            VDimension=3,
            TMeshTraits=DoubleTraits
        ]
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

--------------030402050603040700010207
Content-Type: text/plain;
 name="meshtomeshfilter_code.cpp"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="meshtomeshfilter_code.cpp"


#include "itkMesh.h"
#include "itkIdentityTransform.h"
#include "itkTransformMeshFilter.h"
#include "itkDefaultStaticMeshTraits.h"

int itkDifferentMeshTypesTest(int, char* [] )
{
  typedef itk::DefaultStaticMeshTraits<float, 3, 3, float, float, float> FloatTraits;
  typedef itk::DefaultStaticMeshTraits<double, 3, 3, float, float, float> DoubleTraits;

  typedef itk::Mesh<float, 3, FloatTraits> FloatMeshType;
  typedef itk::Mesh<double, 3, DoubleTraits> DoubleMeshType;
  typedef itk::IdentityTransform<float,3>  TransformType;
  typedef itk::TransformMeshFilter<FloatMeshType, DoubleMeshType, TransformType> MeshFilterType;
  MeshFilterType::Pointer meshTransformer = MeshFilterType::New();
  return 0;
}

--------------030402050603040700010207--