1 #include "bbTranslationElementTypeChanger.h"
2 #include "bbTranslationPackage.h"
3 namespace bbTranslation
6 BBTK_ADD_BLACK_BOX_TO_PACKAGE(Translation,ElementTypeChanger)
7 BBTK_BLACK_BOX_IMPLEMENTATION(ElementTypeChanger,bbtk::AtomicBlackBox);
8 void ElementTypeChanger::Process()
10 vtkImageData* ans = NULL;
11 vtkImageData* src = bbGetInputIn();
16 if (bbGetInputIsFLOATToUSHORT())
18 ans = myOwnCast(src, bbGetInputInType());
22 caster->SetOutputScalarType(bbGetInputInType());
23 //caster->SetOutputScalarTypeToUnsignedShort();
24 caster->SetClampOverflow(bbGetInputClampOverflow());
25 caster->SetInput(src);
27 ans = caster->GetOutput();
29 double typeMin = ans->GetScalarTypeMin();
30 double typeMax = ans->GetScalarTypeMax();
32 std::cout << typeMin << "," << typeMax << std::endl;
35 vtkStructuredPoints* stPoints = vtkStructuredPoints::New( );
36 vtkImageChangeInformation* change = vtkImageChangeInformation::New();
38 vtkDataArray* apt2 = filtro->GetOutput()->GetPointData()->GetScalars();
40 stPoints->GetPointData( )->SetScalars(apt2);
41 stPoints->SetDimensions( sizeIma, sizeIma, 1 );
42 stPoints->SetScalarType( volume->GetScalarType( ) );
45 change->SetInput( stPoints );
46 change->Update(); //important
48 return change->GetOutput();
54 vtkImageData* ElementTypeChanger::myOwnCast(vtkImageData* original, int type)
56 vtkImageData* final = vtkImageData::New();
63 original->GetSpacing(space);
64 original->GetExtent(ext);
65 original->GetOrigin(origin);
66 original->GetDimensions(newDim);
68 final->SetScalarTypeToUnsignedShort();
70 final->SetSpacing(space);
71 final->SetDimensions(newDim);
72 final->SetOrigin(origin);
74 final->AllocateScalars();
82 //double min_value = GetScalarTypeMin();
83 //double max_value = GetScalarTypeMax();
84 for (int i=0; i<newDim[0]; i++){
85 for (int j=0; j<newDim[1]; j++){
86 for (int k=0; k<newDim[2]; k++){
87 ap1 = (float *) original->GetScalarPointer(i,j,k);
89 ap2 = (unsigned short *) final->GetScalarPointer(i,j,k);
90 *ap2 = (((float) *ap1)*(bbGetInputScale()));
98 void ElementTypeChanger::bbUserSetDefaultValues()
101 bbSetInputClampOverflow(1);
104 bbSetOutputOut(NULL);
105 bbSetInputInType(VTK_UNSIGNED_SHORT);
106 bbSetInputIsFLOATToUSHORT(false);
107 caster = vtkImageCast::New();
110 void ElementTypeChanger::bbUserInitializeProcessing()
113 // THE INITIALIZATION METHOD BODY :
115 // but this is where you should allocate the internal/output pointers
120 void ElementTypeChanger::bbUserFinalizeProcessing()
123 // THE FINALIZATION METHOD BODY :
125 // but this is where you should desallocate the internal/output pointers
130 // EO namespace bbTranslation