#! /usr/bin/env perl # # Evaluate the differences between two minc volumes representing # a brain mask. # # Claude Lepage - claude@bic.mni.mcgill.ca # # Copyright Alan C. Evans # Professor of Neurology # McGill University # use strict; use warnings "all"; use Getopt::Tabular; use File::Basename; use File::Temp qw/ tempdir /; my($Help, $Usage, $me); my $transform_xfm = undef; $me = &basename($0); $Help = < 1, CLEANUP => 1 ); # set up filename base my($i, $s_base, $t_base, $tmp_xfm, $tmp_source, $tmp_target, $prev_xfm); # Transform mask1 to same space as mask2 if needed. if( defined $transform_xfm ) { my $mask1_rsl = "${tmpdir}/mask1_resampled.mnc"; &run( 'mincresample', '-clobber', '-like', $mask2, '-nearest_neighbour', '-transform', $transform_xfm, $mask1, $mask1_rsl ); $mask1 = $mask1_rsl; } # Compare the two masks. my $diff = "${tmpdir}/mask_diff.mnc"; &run( 'minccalc', '-clobber', '-expression', 'A[1]!=A[0];', $mask1, $mask2, $diff ); my $diff_volume; chomp( $diff_volume = `mincstats -quiet -sum $diff` ); my $mask2_volume; chomp( $mask2_volume = `mincstats -quiet -sum $mask2` ); my $error = 100.0 * $diff_volume / $mask2_volume; if( defined $info_file ) { open PIPE, ">$info_file"; print PIPE sprintf( "native skull mask in stx space (%5.2f%%)\n", $error ); close PIPE; } else { print sprintf( "native brain mask error %5.2f%%\n", $error ); } sub run { system(@_) == 0 or die; }