No BSD License  

Highlights from
ordfilt3

4.66667

4.7 | 3 ratings Rate this file 6 Downloads (last 30 days) File Size: 3.29 KB File ID: #22044

ordfilt3

by Toby Collins

 

10 Nov 2008 (Updated 13 Nov 2008)

Performs 3D order-statistic filtering on 3D volumetric data.

| Watch this File

File Information
Description

ordfilt3: Performs 3D order-statistic filtering on 3D volumetric data.

The memory and computational overhead for such an operation can be extremely demanding. Here - memory efficiency has been achieved with a recursive-split algorithm, allowing for far larger volumes and/or window sizes to be processed than if the order statistics were to be attempted directly. The basic operation is fairly simple - the volume is recursively split into 8 even sub-blocks, until sub-blocks are reached that are small enough for the filter to be computed with a single call (i.e. when there is enough free contiguous memory to process the entire sub-block) The intermediate results are propagated back up the call stack which then fill output matrix (V_ord)
              
Usage:

[V_ord] = ordfilt3(V0,ord,winSize,pad_opts)

 Inputs:
 V0: Numeric 3D volume. Supports all numeric classes
 ord: Speficies which order statistic to return.
          This can be a string, or a number 1<=ord<=winSize^3
          
          For example:
          ord = 'min' returns the minimum window value (same as ord = 1)
          ord = 'max' returns the maximum window value (same as ord = winSize^3)
          ord = 'med' returns the median window value

winSize: Size of filter window. Currently, only cubic windows are permitted, whose
             Length=Width=Height = winSize. This must be odd.

pad_opts: same as defined in 'padarray' (optional)

Outputs:
V_ord - Order Statistic

Note:
By calling [V_ord] = ordfilt3(V0,ord,3,pad_opts), this code computes the 26-neighbourhood order statistic filter, which is the same as outputted by Olivier Salvado's implementation (but which is non-splitting, and uses a fixed 3*3*3 window.)

Acknowledgements

The author wishes to acknowledge the following in the creation of this submission:
ordfilt3

MATLAB release MATLAB 7.5 (R2007b)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (5)
26 Sep 2009 Ganesh

Very useful. I like the display of memory allocation. Is there a 3D median filter where the user can set unequal window sizes along the 3 directions?

27 Nov 2009 Shripad Kondra

Thanks !

29 Jun 2010 Juha-Matti Alakoskela  
15 Apr 2011 Matthias Schabel  
15 Apr 2011 Matthias Schabel

I suggest a couple of minor changes :

1) Insert the following two lines after line 50 to get reasonable default values :

if (nargin < 3) winSize = 3; end;
if (nargin < 2) ord = 'med'; end;

2) Replace M = feature('memstats'); (which only works on Windows) with

try
    M = feature('memstats');
catch e
    M = 10^28; % or however many bytes of free space you figure your machine will have
end;

Please login to add a comment or rating.
Updates
10 Nov 2008

Header comments updated

13 Nov 2008

Detailed function description uploaded

Tag Activity for this File
Tag Applied By Date/Time
3d Cristina McIntire 10 Nov 2008 11:38:36
statistics Cristina McIntire 10 Nov 2008 11:38:44
memory Cristina McIntire 10 Nov 2008 11:38:58
orderstatistic Toby Collins 10 Nov 2008 11:39:12
3d filtering Toby Collins 10 Nov 2008 11:39:12
3d volume Toby Collins 10 Nov 2008 11:39:12
volumetric data Toby Collins 10 Nov 2008 11:39:12
order statistic Toby Collins 10 Nov 2008 14:15:12
probability Cristina McIntire 13 Nov 2008 16:07:42

Contact us at files@mathworks.com