[MINC-users] median filter

Mishkin Derakhshan mishkind at gmail.com
Fri Jan 28 14:09:47 EST 2011


Alternatively, here is a perl script that does the filtering on the
histogram of the data, and not the data itself.


#! /usr/bin/perl

my $default = 5;
if (scalar(@ARGV) < 1) {
    usage(1);
    exit(1);
}


my $cnt=0;
my ($i, $j, $p);
my @pts;
my @arr;
my @bins;
my $median_samples=$ARGV[1];


if(!defined($median_samples)){
    $median_sample=$default;
    print "Using default window size of: $default\n";
}

open(FIN,"$ARGV[0]");
while(<FIN>){
    $i="";
    chomp;
    ($j, $i, $p)=split(/ +/,$_);
    #  print "[$j] [$i] [$p]\n";
    if($j !~ m/\#/){
	if("$i" ne ""){
	    push @pts, $p;
	    push @bins, $i;
	    $cnt++;
	}
    }
}

my $hmedian= int($median_samples/2);
for ($i=0; $i<=$cnt-$median_samples; $i++){
    my @arr;
    for ($j=0; $j<=$median_samples; $j++){
	$arr[$j]= $pts[$i+$j]
    }
    my @sorted= sort {$a <=> $b} @arr;
    push @filtered, $sorted[$hmedian];
}

for ($i=0; $i< $hmedian; $i++){
    unshift @filtered, $filtered[0];
    push @filtered, $filtered[$#filtered];
}

# print map "$_\n", @filtered;
for ($i=0; $i< $cnt; $i++){
    print " $bins[$i] $filtered[$i]\n";
}

sub usage{
    @params = @_;
    @array = split(/\//,$0);
    $me = $array[$#array];
    if($params[0]==1){
        print "\nDoes a median filter on histogram data. The input
file is the output from mincstats\n";
        #print "\tOptions:\n";
	print "\n[window_size] is the number of bins to include when
calculating the median (default: ${default})\n";
	print "\n";
    }
    print "\nUsage:";
    print "\t$me <histfile.txt> [window_size]\n";
    #print "\t$me -help\n";
}


On Fri, Jan 28, 2011 at 12:28 PM, francois hebert
<francois.hebert007 at gmail.com> wrote:
> Thanks a lot.
>
> Francois
>
> 2011/1/28 Vladimir S. FONOV <vladimir.fonov at gmail.com>
>
>> Hello,
>>
>> looks like mailing list removes attachments. Here it is:
>> http://www.bic.mni.mcgill.ca/~vfonov/software/itk_g_morph.cpp<http://www.bic.mni.mcgill.ca/%7Evfonov/software/itk_g_morph.cpp>
>>
>>
>> francois hebert wrote:
>>
>>> Hello,
>>>
>>> Not sure but I think you forgot to attach the file.
>>>
>>> 2011/1/28 Vladimir FONOV <vladimir.fonov at gmail.com>
>>>
>>>  Hello,
>>>>
>>>> see attached file for my grayscale morphology program.
>>>>
>>>>
>>>> francois hebert wrote:
>>>>
>>>>  Thanks for the tip I will have a look on it.
>>>>>
>>>>> Francois
>>>>>
>>>>> 2011/1/28 Vladimir FONOV <vladimir.fonov at gmail.com>
>>>>>
>>>>>  Hello,
>>>>>
>>>>>>
>>>>>> I use morphology filters from ITK, using ezminc to interface it with
>>>>>> MINC:
>>>>>>
>>>>>> http://en.wikibooks.org/wiki/MINC/EZMINC
>>>>>>
>>>>>>
>>>>>>
>>>>>> francois hebert wrote:
>>>>>>
>>>>>>  I wuld like to know if there is a median filter in the minc tool or if
>>>>>>
>>>>>>> somebody have it?
>>>>>>> I know that we can specified kernel with mincmoprh but i'm not sure I
>>>>>>> can
>>>>>>> use mincmorph to perform the median filtering.
>>>>>>>
>>>>>>>  --
>>>> Best regards,
>>>>  Vladimir S. FONOV ~ v.s.fonov  <at> ilmarin.info
>>>>
>>>> _______________________________________________
>>>> MINC-users at bic.mni.mcgill.ca
>>>> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
>>>>
>>>>
>>>>  _______________________________________________
>>> MINC-users at bic.mni.mcgill.ca
>>> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
>>>
>>
>>
>> --
>> Best regards,
>>  Vladimir S. FONOV ~ v.s.fonov  <at> ilmarin.info
>> _______________________________________________
>> MINC-users at bic.mni.mcgill.ca
>> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
>>
> _______________________________________________
> MINC-users at bic.mni.mcgill.ca
> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
>


More information about the MINC-users mailing list