BBTK_BLACK_BOX_IMPLEMENTATION(ImageChangeInformation,bbtk::AtomicBlackBox);
void ImageChangeInformation::Process()
{
- int ext[6];
- double spc[3];
- vtkImageData* img = bbGetInputIn();
- if(img!=NULL){
+ int ext[6];
+ double spc[3];
+ double origin[3];
+ vtkImageData *img = bbGetInputIn();
+ if(img!=NULL)
+ {
if(mchange != NULL)
{
mchange->Delete();
}
mchange = vtkImageChangeInformation::New();
img->GetExtent( ext );
-// double origin[3];
-// origin[0] = 0.0;
-// origin[1] = 0.0;
-// origin[2] = 0.0;
-// img->SetOrigin(origin);
mchange->SetInput( img );
-//EED 2016 15 06
-// mchange->SetExtentTranslation( -ext[0], -ext[2], -ext[4] );
- mchange->SetOutputOrigin (0, 0, 0);
mchange->SetOutputExtentStart(0,0,0);
if (bbGetInputNewSpacing().size()==3)
{
spc[2] = bbGetInputNewSpacing()[2];
mchange->SetOutputSpacing( spc[0] , spc[1] , spc [2] ); //spacing
}
+ if (bbGetInputNewOrigin().size()==3)
+ {
+ if ( (bbGetInputNewOrigin()[0]==-1) && (bbGetInputNewOrigin()[1]==-1) && (bbGetInputNewOrigin()[2]==-1) )
+ {
+ img->GetOrigin( origin );
+ } else {
+ origin[0] = bbGetInputNewOrigin()[0];
+ origin[1] = bbGetInputNewOrigin()[1];
+ origin[2] = bbGetInputNewOrigin()[2];
+ }
+ } else {
+ origin[0] = 0;
+ origin[1] = 0;
+ origin[2] = 0;
+ }
+ mchange->SetOutputOrigin( origin );
mchange->Modified(); //important
mchange->Update(); //important
bbSetOutputOut( mchange->GetOutput() );
- }
+ } // if img
}
+
void ImageChangeInformation::bbUserSetDefaultValues()
{
mchange = NULL;
BBTK_BLACK_BOX_INTERFACE(ImageChangeInformation,bbtk::AtomicBlackBox);
BBTK_DECLARE_INPUT(In,vtkImageData*);
BBTK_DECLARE_INPUT(NewSpacing,std::vector<double>);
-
+ BBTK_DECLARE_INPUT(NewOrigin,std::vector<double>);
BBTK_DECLARE_OUTPUT(Out,vtkImageData*);
BBTK_PROCESS(Process);
void Process();
private:
- vtkImageChangeInformation *mchange;
+ vtkImageChangeInformation *mchange;
};
BBTK_DESCRIPTION("vtkImageData change information. Translate extern to 0,0,0");
BBTK_CATEGORY("filter");
BBTK_INPUT(ImageChangeInformation,In,"Input image",vtkImageData*,"");
- BBTK_INPUT(ImageChangeInformation,NewSpacing,"New spacing of the image (default: the same spacing of the original image)",std::vector<double>,"");
+ BBTK_INPUT(ImageChangeInformation,NewSpacing,"New spacing of the image. 3 elements (default: the same spacing of the original image)", std::vector<double> ,"");
+ BBTK_INPUT(ImageChangeInformation,NewOrigin,"New origin of the image. 3 elements (default: 0,0,0). (-1,-1,-1) get the same origin of the original image", std::vector<double> ,"");
BBTK_OUTPUT(ImageChangeInformation,Out,"Output image",vtkImageData*,"");
BBTK_END_DESCRIBE_BLACK_BOX(ImageChangeInformation);
}