[ITK-users] Coregistration Transform Phyton to Java please help me

ivan ivan.granata.na at gmail.com
Mon Oct 24 08:53:53 EDT 2016


i've this

https://itk.org/SimpleITKDoxygen/html/Python_2ImageRegistrationMethodDisplacement1_8py-example.html


and in java i try to translate in this:
 but i've some errors
can anyone help me please?






import org.itk.simple.*;
class IterationUpdate  extends Command {
  private ImageRegistrationMethod m_Method;
  public IterationUpdate(ImageRegistrationMethod m) {
    super();
    m_Method=m;
  }
  
  public void execute() {
    org.itk.simple.VectorDouble pos = m_Method.getOptimizerPosition();
    System.out.format("%3d = %10.5f : [%f, %f]\n",
                      m_Method.getOptimizerIteration(),
                      m_Method.getMetricValue(),
                      pos.get(0), pos.get(1));
  }
}

class ImageRegistrationMethodNaplab {
  public static void main(String argv[]) {
  if ( argv.length < 4 )
    {
      System.out.format( "Usage: %s <fixedImageFilter> <movingImageFile>
<outputTransformFile>\n", "ImageRegistrationMethodNaplab");
      System.exit(-1);
    }
  
  

  int   ImageDimension = 3;
  char   PixelType;

  
  
  org.itk.simple.ImageFileReader reader = new
org.itk.simple.ImageFileReader();
  reader.setOutputPixelType( PixelIDValueEnum.sitkFloat32 );
  reader.setFileName(argv[0]);
  Image fixed  = reader.execute();
  reader.setFileName(argv[1]);
  Image moving = reader.execute();
  

  
  
  
  org.itk.simple.Transform initialTx = new org.itk.simple.Transform();
  
  //initialTx.CenteredTransformInitializerFilter( new
org.itk.simple.AffineTransform( fixed.getDimension() ) );
  
    
 initialTx.execute( fixed, moving, AffineTransform( fixed.getDimension() ));
  
  
  
  //org.itk.simple.Transform transf1 = new org.itk.simple.Transform();
  //org.itk.simple.AffineTransform afftransf = new
org.itk.simple.AffineTransform();
  //CenteredTransformInitializerFilter initialTx =
transf1.execute(fixed,moving, Transform.Affine(fixed.getDimension()));
  //org.itk.simple.AffineTransform Aff = new 
org.itk.simple.AffineTransform();
  
 // org.itk.simple.ImageRegistrationMethod initialTx = new 
org.itk.simple.ImageRegistrationMethod();
  
 // CenteredTransformInitializerFilter transform1 = new
CenteredTransformInitializerFilter();
 // initialTx.execute(fixed, moving, transform1( fixed.getDimension()));
  
  
  //initialTx.CenteredTransformInitializerFilter( new
org.itk.simple.AffineTransform( fixed.getDimension() ) );

 // Transform initialTx = new Transform();
  //ord.add(initialTx);
  
  //org.itk.simple.Transform transform =  new Transform();
  
 // initialTx.setInitialTransform( new org.itk.simple.TranslationTransform(
fixed.getDimension() ) );

  
 // initialTx.setInitialTransform( new org.itk.simple.TranslationTransform(
fixed.getDimension() ) );
  
  
  
  
  // initialTx.setTransform( new org.itk.simple.AffineTransform(
fixed.getDimension() ) );
  
//
 
  //org.itk.simple.Transform initialTx =
CenteredTransformInitializerFilter.execute(fixed, moving, Aff);
 
  //fixed, moving, Transform(fixed.getDimension(),TransformEnum.sitkAffine)
  
  
  org.itk.simple.ImageRegistrationMethod R = new 
org.itk.simple.ImageRegistrationMethod();
 
//VectorUInt32 b = [(3,2,1)];
  //VectorUInt32 b = new VectorUInt32 {(3,2,1)};
  long a1= 321;
  VectorUInt32 x1 = new VectorUInt32(a1);
  R.setShrinkFactorsPerLevel(x1);
  //Vector<Double> (3,2,1);
  
  
  long b1 = 211;
  VectorDouble y1 = new VectorDouble(b1);
 
  R.setSmoothingSigmasPerLevel(y1);
  
  //SET Metric
  R.setMetricAsMattesMutualInformation(20);
  //R.setMetricAsJointHistogramMutualInformation(20);
  R.setMetricUseFixedImageGradientFilter(false);
  
  double learningRate = 1.0 ;
  double minStep = 0.01;
  int numberOfIterations = 100;
  
  R.setOptimizerAsRegularStepGradientDescent( learningRate,
                                              minStep,
                                              numberOfIterations);
  //R.setOptimizerAsGradientDescent(learningRate=1.0,  // 
numberOfIterations=100, //  estimateLearningRate = R.EachIteration)
  
  
  
//SET Optimizer
  R.setOptimizerScalesFromPhysicalShift();
  
  
  R.setInitialTransform(initialTx,true);
  
//SET Interpolator
  R.setInterpolator(InterpolatorEnum.sitkLinear);
  
  
  org.itk.simple.Transform outTx = R.execute( fixed, moving );
  System.out.println("-------");
  System.out.println(outTx.toString());
  
  System.out.format("Optimizer stop condition: %s\n",
R.getOptimizerStopConditionDescription());
  System.out.format(" Iteration: %d\n", R.getOptimizerIteration());
  System.out.format(" Metric value: %f\n", R.getMetricValue());
  
  
  
 org.itk.simple.Image displacementField = new 
org.itk.simple.Image(fixed.getSize(), PixelIDValueEnum.sitkVectorFloat64);
  
  //displacementField.Image();
  
  org.itk.simple.DisplacementFieldTransform displacementTx =  new
org.itk.simple.DisplacementFieldTransform(displacementField);
  
  double varianceForUpdateField = 0.0 ;
  double varianceForTotalField = 1.5;
  
  displacementTx.setSmoothingGaussianOnUpdate(varianceForUpdateField,
varianceForTotalField);
  
  
  R.setMovingInitialTransform(outTx);
  R.setInitialTransform(displacementTx,true);
  
 
    
  R.setMetricAsANTSNeighborhoodCorrelation(4);
  R.setMetricUseFixedImageGradientFilter(false);
  R.setMetricUseFixedImageGradientFilter(false);
  
  
  //VectorUInt32 b = [(3,2,1)];
  //VectorUInt32 b = new VectorUInt32 {(3,2,1)};
  long a2= 321;
  VectorUInt32 x2 = new VectorUInt32(a2);
  R.setShrinkFactorsPerLevel(x2);
  //Vector<Double> (3,2,1);
  
  
  long b2 = 211;
  VectorDouble y2 = new VectorDouble(b2);
 
  R.setSmoothingSigmasPerLevel(y2);

  
  R.setOptimizerScalesFromPhysicalShift();
  
  double learningRate2 = 1.0 ;
  double minStep2 = 0.01;
  int numberOfIterations2 = 300;
  
  R.setOptimizerAsRegularStepGradientDescent( learningRate2,
                                              minStep2,
                                              numberOfIterations2);
  
  
  
  
  
  //outTx.AddTransform( R.Execute(fixed, moving) )
  
  outTx.addTransform ( R.execute( fixed, moving ));
  System.out.println("-------");
  System.out.println(outTx.toString());
  
  System.out.format("Optimizer stop condition: %s\n",
R.getOptimizerStopConditionDescription());
  System.out.format(" Iteration: %d\n", R.getOptimizerIteration());
  System.out.format(" Metric value: %f\n", R.getMetricValue());
  
  
  
  outTx.writeTransform(argv[2]);
  System.out.println("Parametri Trasformazione Generati e Salvati");
  
  
  
  org.itk.simple.Transform transform = new org.itk.simple.Transform();
  reader.setFileName(argv[2]);
  // Write result image
  ImageFileWriter writer2 = new org.itk.simple.ImageFileWriter();
  writer2.setFileName(argv[3]);
  
  
  
  org.itk.simple.ResampleImageFilter transf = new 
org.itk.simple.ResampleImageFilter();
    transf.setReferenceImage(fixed);
  transf.setTransform(outTx);
  transf.setOutputPixelType(PixelIDValueEnum.sitkUInt32);
  //InterpolatorEnum interp = 
		  transf.getInterpolator();
  //transf.setInterpolator(interp);
//  VectorDouble orig = 
		  transf.getOutputOrigin();
  //VectorDouble spac = 
		  transf.getOutputSpacing();
 // VectorDouble dir = 
		  transf.getOutputDirection();
  //Double pix = 
		  transf.getDefaultPixelValue();
  //transf.setInterpolator(dir);
  //VectorUInt32 pts = new VectorUInt32();
  transf.getSize();
  transf.execute(moving);
   Image blurredImg = transf.execute(moving);
    //Image castImg = caster.execute(blurredImg);
    ImageFileWriter writer3 = new ImageFileWriter();
    writer3.setFileName(argv[3]);
     writer3.execute(blurredImg);
     //writer.execute(transform.getResultImage()); 
     // transform.setParameters(reader.execute());
      //Image transform = reader.execute();
  //Transform.setParameters();
    // Perform warp
//  transform.logToConsoleOn();
 // transform.execute();
  }

private static Transform AffineTransform(long dimension) {
	// TODO Auto-generated method stub
	return null;
}
  }




--
View this message in context: http://itk-users.7.n7.nabble.com/ITK-users-Coregistration-Transform-Phyton-to-Java-please-help-me-tp37692.html
Sent from the ITK - Users mailing list archive at Nabble.com.


More information about the Insight-users mailing list