Parameter file

Basically, a parameter NetCDF file is composed by 3 main sections:

  • Dimensions

  • Variables

    • Correlation mesh:

      One defines here, the meshes on which the correlation will be done (grid dimensions, number of dimensions...). Let's use the following python code to estimate the appropriate meshsize : VerifMesh.py

    • Correlation method:

      One defines here, the different type of correlation that will be used in the correlation sequence (Metric, Shape functions, Interpolator, parameters...) and the connection with previously defined meshes.

    • Correlation sequence:

      One defines here, a sequence of correlation, i.e. a set of correlation methods used, one after one in a pyramidal filter process, to converge toward the required result.

  • Data

netcdf DIC_parameter_file {

dimensions:


  dim_sample = UNLIMITED;// Allow adding automatically, correlation field along a "time" or "sample" dimension, function of image_list size. This option doesn't work thus dim_tmp (temporarly) has been added (by default Unlimited - don't change)
  dim_tmp = 4;// Number of image couple to correlate. If image_list is larger, only dim_tmp correlation will be done. If image_list is smaller a crash will occur after the last correlation.
  dim_system = 1;// number of image composing the observed field (by default 1 - don't change)
  dim_camera = 1;// 1 for correlation or more for stereocorrelation (by default 1 - don't change)
  dim_image = 2;// couple of image to correlate (by default 2 - don't change)
  dim_string = 180;// image name (by default 180 - don't change except for larger image name)
// 	change only if mod_image
	dim_mode = 1;//number of image modes plus 1 (1=default)
	dim_space = 2;//associated dimensions


  
  
variables:

//input_outpout format definition. Different format exist: double_double, float_float, char_float
  byte format;
       format:type = "float_float";

//---------------------------Mesh------------------------------
// Only used Meshes (in correlation method) are taken into account

  // mesh template for local transformation (Block Matching)
  byte mesh_IC;// give the name you want
       mesh_IC:path = "none";// for external mesh (not activated yet)
       mesh_IC:type = "generate_centroid";// mesh are automatically generated on images (at least one node at each image corner) and displacement is calculated at element centroid. (by default "generate_centroid" - don't change)
       mesh_IC:pitch = 32, 32;// number of pixels between nodes or centroids. (Warning: pitch can be automatically reduced or increased at boundaries depending on image dimensions)
       mesh_IC:window = 64, 64;// dimension of Elements. Each one is centered around its centroid (warning: according to pitch and window dimensions an overlap can exist: the element overlap is here of 50%)
       mesh_IC:component = "x,y";// spatial dimensions. (Warning: if 3D, "z" is required as well as a 3rd component on pitch and window)
       mesh_IC:store_peak = 1;// number of intercorrelation peak to store (usually 3 in PIV)
  
  // mesh template for Elastic transformation (local with unity partition - Finite Element Method)
  byte mesh_OFFEM;// give the name you want
       mesh_OFFEM:path = "none";// for external mesh (not activated yet)
       mesh_OFFEM:type = "generate_regularFem";// regular mesh is automatically generated on image (at least one node at each image corner)
       mesh_OFFEM:pitch = 64, 64;// number of pixels between nodes or element size. In the case of finite element, due to unity partition, pitch = window, contrary to mesh_IC. 
       mesh_OFFEM:component = "x,y";// spatial dimensions. (Warning: if 3D, "z" is required as well as a 3rd component on pitch and window)
  
  // mesh template for global transformation (rigid, affine...)
  byte mesh_OFI;
       mesh_OFI:path = "none";// for external mesh (not activated yet)
       mesh_OFI:type = "global";// there is no mesh for global transformation (by default "global" - don't change)
       mesh_OFI:component = "x,y";// spatial dimensions. (Warning: if 3D, "z" is required)

// mesh template for Local transformation (rigid, affine...)
 byte mesh_OFIB;
	mesh_OFIB:path = "none";// for external mesh (not activated yet)
	mesh_OFIB:type = "generate_centroid_integrated";// default for OFIB (don't change)
	mesh_OFIB:pitch = 16,16;// pitch between two windows
	mesh_OFIB:window = 16,16;// windows size (in this example overlap = 0%)
	mesh_OFIB:component = "x,y";// space component (x,y and z-if 3D)
//---------------------------Mesh------------------------------	
  
  
  
//---------------------------Correlation Method----------------
 //example of "Inter-Correlation" method definition
 byte IC;// Give the name you want
  IC:type = "IC_fftw";// define the correlation method: "IC_direct", "IC_fftw", "IC_fftw_phase", "IC_fft", "IC_fft_phase"
  IC:mesh = "mesh_IC";// associate the correlation method and the mesh
  IC:peak = "interpP";// define the sub-pixel precision strategy:  "max", "interpP", "interpG", "interpBiLin", "barycenter"
  IC:median_filter = 3;// box for median filter [+-(mf-1)/2] in elements
  IC:store_correlogram = 0;// allow storing the correlogram : 0 = no storage, otherwise correlogram are stored in netcdf format
    
//example of "Optical Flow Integrated" method definition for "Homogenous strain"
  byte OFI_H; // Give the name you want
    OFI_H:type = "OFI";// Optical-Flow Integrated
    OFI_H:mesh = "mesh_OFI";// associated mesh
    OFI_H:shape = "homogeneous";// assumed kinematics [rigid_body, homogeneous, blade,brasilian,image]
    OFI_H:modes = "Tx,Ty,Rz,Exx,Eyy,Exy";// desired modes
    OFI_H:refX = -1;//shape function X reference, -1 = automatic, i.e. system reference at the center of image, otherwise provide location in pix
    OFI_H:refY = -1;//shape function Y reference, -1 = automatic, i.e. system reference a the center of image, otherwise provide location in pix
    OFI_H:refZ = -1;//shape function Z reference, -1 = automatic, i.e. system reference a the center of image, otherwise provide location in pix
    OFI_H:convergence_speed = 1e-3;//convergence criterion (Epsilon_(i+1) - Epsilon(i)<convergence_speed)
    OFI_H:interpolation_loop = "cubic";//Subpixel interpolation : cubic or linear by default - during iterations
    OFI_H:interpolation_final = "cubic";//Subpixel interpolation : cubic or linear by default - at the final iteration
    
//example of "Optical Flow Integrated" method definition for "rigid body motion"
  byte OFI_RB;// Give the name you want
    OFI_RB:type = "OFI";// Optical-Flow Integrated
    OFI_RB:mesh = "mesh_OFI";// associated mesh
    OFI_RB:shape = "rigid_body";// assumed kinematics [rigid_body, homogeneous, blade,brasilian,image]
    OFI_RB:modes = "Tx,Ty,Rz";// desired modes
    OFI_RB:refX = -1;//shape function X reference    OFI_RB:refY = -1;//shape function Y reference
    OFI_RB:refZ = -1;//shape function Z reference
    OFI_RB:convergence_speed = 1e-3;//convergence criterion (Epsilon_(i+1) - Epsilon(i)<convergence_speed)
    OFI_RB:interpolation_loop = "cubic";
    OFI_RB:interpolation_final = "cubic";
    
//example of "Optical Flow Integrated per block" method definition
  byte OFIB;// Give the name you want
    OFIB:type = "OFIB";// Optical-Flow Integrated per Block
    OFIB:mesh = "mesh_OFIB";// associated mesh
    OFIB:shape = "rigid_body";// assumed kinematics [rigid_body, homogeneous, blade,brasilian,image]
    OFIB:modes = "Tx,Ty,Rz";// desired modes
    OFIB:refX = -1;//shape function X reference
    OFIB:refY = -1;//shape function Y reference
    OFIB:refZ = -1;//shape function Z reference
    OFIB:convergence_speed = 1e-3;//convergence criterion (Epsilon_(i+1) - Epsilon(i)<convergence_speed)
    OFIB:median_filter = 3;// box for median filter [+-(mf-1)/2] in elements
    OFIB:interpolation_loop = "cubic";//cubic or linear by default - during iterations
    OFIB:interpolation_final = "cubic";//cubic or linear by default - at the final iteration
    
//example of "Optical Flow Finite Element Method" method definition
  byte OFFEM;// Give the name you want
    OFFEM:type = "OFFEM";// Optical-Flow Finite Element Method
    OFFEM:mesh = "mesh_OFFEM";// associated mesh
    OFFEM:method = "gradient";// optimization method - newton (warning : not suitable for large 2D images and 3D images) or gradient
    OFFEM:alpha0 = 5e-1;// init coef for gradient method
    OFFEM:shape = "Q4";// assumed kinematics : C8 for 3D
    OFFEM:convergence_speed = 1e-3;//convergence criterion (Epsilon_(i+1) - Epsilon(i)<convergence_speed)
    OFFEM:median_filter = 3;// box for median filter [+-(mf-1)/2] in elements
    OFFEM:iter_max = 100;//max number of authorized iterations : thus calcul stop either if iter_max is reached, if convergence_speed is reached or if the result diverges
    OFFEM:interpolation_loop = "cubic";//cubic or linear by default - during iterations
    OFFEM:interpolation_final = "cubic";//cubic or linear by default - at the final iteration
//---------------------------Correlation Method----------------
  
//------------Correlation sequence per image couple------------
  byte sequence; 
	sequence:analysis = "OFI_H,OFI_H,OFFEM,OFFEM,OFFEM,OFFEM,OFFEM";//correlation sequence list
	sequence:filter = 6,5,4,3,2,1,0;//associated pyramidal filter: super-pixel = 2^i x 2^i pix, e.g. i=0 -> 1x1, i=6 -> 64x64 
//------------Correlation sequence per image couple------------


//------------------------image list---------------------------
  char image_list(dim_sample, dim_tmp, dim_image, dim_string);
  
	  image_list:type = "File";//image capture from File or on-fly Grab(not activated yet)
	  image_list:mask = "mask.png";// mask name (must be in "path" directory)
	  image_list:mode = 0;// 0:dependent mode (Image sequence) - 1:separate mode (PIV)
	  image_list:path = "./img/";// image location
	  
	  
  //declare desired outputs and physical pixel size
  float output;
	  output:display_mode = 0;//Allow a real time field display (not activated yet)
	  output:store_img = 0;//store input data in netcdf format
	  output:store_def = 1;//store the deformed image after deformation
	  output:store_field = 1;//store converged displacement fields on image resolution (Warining: avoid in 3D -> in every cases displacement fields are stored using mesh resolution)
	  output:store_res = 1;//store converged residue fields
	  output:store_strain = 0;//store converged strain field (not activated yet)
	  output:ratio_pxmm = 65;//Allow to output fields in physical units (Warning bug : only put integers, i.e. not 6.5 um but 650 nm for example)
	  output:format = "";//tiff or netcdf default
//------------------------image list---------------------------

  char mode_img(dim_sample, dim_mode, dim_space, dim_string);  
  
//------------------------image list--------------------------- 
// allocate variables
data:

  format = 1;

  mesh_IC = 1;
  mesh_OFIB = 1;
  mesh_OFI = 1;
  mesh_OFFEM = 1;
  
  IC = 1;
  OFI_H = 1;
  OFI_RB = 1;
  OFIB = 1;
  OFFEM = 1;
  
  sequence =1;
  
  image_list =
"00000001.jpg",	"00000100.jpg",
"00000001.jpg",	"00000150.jpg",
"00000001.jpg",	"00000200.jpg",
"00000001.jpg",	"00000250.jpg";

//only for mod_image: i.e. you have created your own image modes as follows, for example:
  mode_img =  
"T.png",	"zero.png",
"zero.png",	"T.png",
"Exx.png",	"zero.png",
"zero.png",	"Eyy.png",
"Eyy.png",	"Exx.png";

}