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()
12 vtkImageData* ans = NULL;
13 vtkImageData* src = bbGetInputIn();
18 if (bbGetInputIsFLOATToUSHORT())
20 ans = myOwnCast(src, bbGetInputInType());
24 caster->SetOutputScalarType(bbGetInputInType());
25 //caster->SetOutputScalarTypeToUnsignedShort();
26 caster->SetClampOverflow(bbGetInputClampOverflow());
27 caster->SetInput(src);
29 ans = caster->GetOutput();
31 double typeMin = ans->GetScalarTypeMin();
32 double typeMax = ans->GetScalarTypeMax();
34 std::cout << typeMin << "," << typeMax << std::endl;
37 vtkStructuredPoints* stPoints = vtkStructuredPoints::New( );
38 vtkImageChangeInformation* change = vtkImageChangeInformation::New();
40 vtkDataArray* apt2 = filtro->GetOutput()->GetPointData()->GetScalars();
42 stPoints->GetPointData( )->SetScalars(apt2);
43 stPoints->SetDimensions( sizeIma, sizeIma, 1 );
44 stPoints->SetScalarType( volume->GetScalarType( ) );
47 change->SetInput( stPoints );
48 change->Update(); //important
50 return change->GetOutput();
56 vtkImageData* ElementTypeChanger::myOwnCast(vtkImageData* original, int type)
58 vtkImageData* final = vtkImageData::New();
65 original->GetSpacing(space);
66 original->GetExtent(ext);
67 original->GetOrigin(origin);
68 original->GetDimensions(newDim);
70 final->SetScalarTypeToUnsignedShort();
72 final->SetSpacing(space);
73 final->SetDimensions(newDim);
74 final->SetOrigin(origin);
76 final->AllocateScalars();
84 //double min_value = GetScalarTypeMin();
85 //double max_value = GetScalarTypeMax();
86 for (int i=0; i<newDim[0]; i++){
87 for (int j=0; j<newDim[1]; j++){
88 for (int k=0; k<newDim[2]; k++){
89 ap1 = (float *) original->GetScalarPointer(i,j,k);
91 ap2 = (unsigned short *) final->GetScalarPointer(i,j,k);
92 *ap2 = (((float) *ap1)*(bbGetInputScale()));
100 void ElementTypeChanger::bbUserSetDefaultValues()
103 bbSetInputClampOverflow(1);
106 bbSetOutputOut(NULL);
107 bbSetInputInType(VTK_UNSIGNED_SHORT);
108 bbSetInputIsFLOATToUSHORT(false);
109 caster = vtkImageCast::New();
112 void ElementTypeChanger::bbUserInitializeProcessing()
115 // THE INITIALIZATION METHOD BODY :
117 // but this is where you should allocate the internal/output pointers
122 void ElementTypeChanger::bbUserFinalizeProcessing()
125 // THE FINALIZATION METHOD BODY :
127 // but this is where you should desallocate the internal/output pointers
132 // EO namespace bbTranslation