Batch registrationΒΆ
In order to run registration in batch, you must write a script. Because I am a perl guy, this example is written in perl.:
#!/usr/bin/perl
# This example shows how to register a group of images in batch
# This is a template for the command file. Each registration will
# substitute the strings FIXED, MOVING, WARPED, and VF.
$template = <<EODATA
[GLOBAL]
fixed=FIXED
moving=MOVING
img_out=WARPED
vf_out=VF
[STAGE]
xform=bspline
res=1 1 1
grid_spac=4 4 4
regularization_lambda=0.1
max_iterations=11
[STAGE]
max_iterations=11
EODATA
;
# Create an array with the filenames of the moving and fixed images
# In this case, there is a single moving image (00001.nrrd) and a bunch
# of fixed images (00001.nrrd through 00500.nrrd)
@moving_images = ( "00001.nrrd" );
@fixed_images = <000*.nrrd>;
# Loop through both lists
for $f (@fixed_images) {
for $m (@moving_images) {
# Get the "number" portion of the filenames
$f =~ m/([0-9]*)/;
$f_image_no = $1;
$m =~ m/([0-9]*)/;
$m_image_no = $1;
# Create filenames for the output files
$warped = "${f_image_no}_${m_image_no}.nrrd";
$vf = "${f_image_no}_${m_image_no}_vf.nrrd";
# Substitute the image filenames into the template
$t = $template;
$t =~ s/FIXED/$f/;
$t =~ s/MOVING/$m/;
$t =~ s/WARPED/$warped/;
$t =~ s/VF/$vf/;
# Write the command file
open FH, ">", "parameters.txt";
print FH $t;
close FH;
# Run plastimatch on the command file
$cmd = "plastimatch register ${pfn}";
system ($cmd);
}
}