Multiphase level set image segmentation

by

 

performs multiphase level set image segmentation according to various formulations

LevelSet.m

% Description:
% 
% This Matlab/C code performs level set image segmentation using 
% 
%  (1) Several multiphase (or multiregion) methods, including a fast scheme which results
%      in a significant reduction in the computational load (the complexity grows linearly
%      as a function of the number of regions).
% 
%  (2) Several region-based image descriptions more complex than the standard piecewise 
%      constant Chan-Vese model, including
% 
%      - A Gamma description that is applicable to image data corrupted with a multiplicative
%        noise, e.g., data of the type SAR (synthetic aperture radar) in remote sensing, and of
%        the type ultrasound, in medical imaging.
%  
%      - A kernel-mapping description that is flexible enough to be applicable to a variety of 
%        real images and noise types, including medical, satellite and natural images.
% 
% 
% Before using this script, the user need to compile the C files by running compiler.m in Matlab 
% 
% These functions were tested on the following versions of MATLAB and C
%    MATLAB version: 7.7.0.471 (R2008b)
%    C compiler: Lcc-win32 C 2.4.1 
% 
% This software can be used only for research purposes, and is provided "as is", without warranty
% of any kind. Please cite the papers and book mentioned below in any resulting publication.
% Formal and complete details on the implementations as well as on the derivation of the level set
% evolution equations for the various energy functional types used in the software can be found in 
% the book "Variational and Level Set Methods in Image Segmentation" 
% by Amar Mitiche and Ismail Ben Ayed 2010, Springer, 1st edition.



% The users need to enter the inputs here (a full description of the meaning of these inputs 
% will follow)
input_image='Images/brain.tif';
output_image='Images/Result.tif';
nb_regions='3';
nb_iterations='50';
curvature='20';
time_step='0.001';
display_frequency='5';
initialization='1';
segmentation_method='clust';

% Description of the inputs

% a) input_image: the image to be segmented

% b) output_image: the segmentation result

% c) output_image: the segmentation result

% d) nb_regions: the number of segmentation regions

% e) nb_iterations: the number of iterations

% f) curvature: the weight of the curvature velocity (or  smoothness term).
%    The higher the weight, the smoother the segmentation boundaries. Noisy images (e.g., SAR data) 
%    often require a high smoothness weight, e.g., curvature='2000'.

% g) time_step: the gradient-descent time step of curve evolution. a large step yields faster 
%    evolution but lesser stability. Typical values of this parameter are in between 0.0001 and
%    0.001. 
%   
% h) display_frequency:  the frequency of display of the active curve during the evolution. 
%    For instance, when display_frequency='20', the active curve is superimposed on the image each
%    20 iterations.

% i) initialization: this option defines the initial curves which can be either circles centered
%    about the middle of the image (initialization='1') or small circles all over the input 
%    image (initialization='1'). 

% j) segmentation_method: this variable defines the image model and/or the multiphase method. 
%     The following lists and explains the possible options for this variable:
      
%      - segmentation method =  'gamma'
      
%      This function implements level set image segmentation by minimizing a data term which measures
%      the conformity of image data within each region to the Gamma model. It is usefull for image 
%      data corrupted with a multiplicative noise such as in radar and ultrasound data. Please cite 
%      the following paper in any resulting publication:

%      [1] I.  Ben Ayed, A. Mitiche, and Z. Belhadj, Multiregion level set partitioning on synthetic 
%          aperture radar images, IEEE Transactions on Pattern Analysis and Machine Intelligence, 
%          vol. 27, no. 5, pp. 793800, 2005.
  
%       Note that this gamma segmentation function requires a small time step, e.g., time_step='0.0001'.

%      - segmentation method =  'ker'

%      This  method implements a kernel function which maps implicitly the original image data into data
%      of a higher dimension so that the piecewise constant model becomes applicable to images corrupted 
%      with various noise models. This leads to a flexible alternative to complex modeling of the image 
%      data. The function is applicable to a variety of real images such as medical, satellite and natural 
%      images. Please cite the following paper in any resulting publication:
%   
%      [2] M. Ben Salah, A. Mitiche and I. Ben Ayed, Effective Level Set Image Segmentation with a Kernel 
%          Induced Data Term, IEEE Transactions on Image processing, vol. 19, no 1, pp. 220-232, 2010. 

%       Note that this kernel segmentation function requires a small time step, e.g., time_step='0.0001'.
  
%       - Segmentation method =  'mean'

%       This function implements level set image segmentation by minimizing the classical Chan-Vese data 
%       term which measures the conformity of image data within each region to the piecewise constant model. 

%       - Segmentation method =  'Gaussian'
%         This function implements a Gaussian generalization of the classical  piecewise constant model.
    
%     Note that the case of a number of regions more than 2 (the multiphase case) uses several curves which 
%   can intersect. Therefore, a two-region formulation cannot be generalized directly by assigning a region
%   to the interior of each curve because region membership becomes ambiguous when the curves intersect.  
%   The following lists the possible options to evolve multiple curves so that, at convergence, the curves
%   define a partition of the image domain:

%       - Segmentation method = 'clust'

%         This method embeds directly a simple partition constraint in the curve evolution equations. 
%         Starting from an arbitrary initial  partition, the constraints implements the rule that if 
%         a point leaves a region, it is claimed by a single other region. The scheme is fast, and 
%         results in a significant reduction in the computational load (the complexity grows linearly
%         as a function of the number of regions). Please cite the following papers in any resulting
%         publication:

%         [3] I. Ben Ayed, A. Mitiche, and Z. Belhadj, Polarimetric image segmentation via maximum 
%             likelihood approximation and efficient multiphase level sets, IEEE Transactions on Pattern 
%             Analysis and Machine Intelligence, vol. 28, no. 9, pp. 14931500, 2006. 

%         [4] I. Ben Ayed and A. Mitiche: A Partition Constrained Minimization Scheme for Efficient 
%             Multiphase Level Set Image Segmentation. IEEE ICIP 2006, pp. 1641-1644

%         [5] I. Ben Ayed and A. Mitiche, A region merging prior for variational level set image 
%             segmentation, IEEE Transactions on Image Processing, vol. 17, no. 12, pp. 23012313, 2008. 

%        - Segmentation method = 'part'

%         This method implements a systematic general mapping between the segmentation regions and the 
%         regions defined by the curves and their intersections. The mapping guarantees, by definition,
%         a partition at all times during curve evolution. Please cite the following paper in any resulting 
%         publication:

%         [6] A. Mansouri, A. Mitiche, and C. Vazquez, Multiregion competition: A level set extension of 
%             region competition to multiple region partioning,  Computer Vision and Image Understanding, vol. 
%             101, no. 3, pp. 137150, 2006.

%        - Segmentation method = 'ker_part'

%          This option implements the kernel method in [2] with the multiphase method in [6]. Please cite these
%          two papers in any resulting publication. 


%     Note that when Segmentation method = 'gamma',  'ker', 'mean' or 'gaussian' and when the number of regions is 
%  more than 2 (nb_regions> 2), the default multiphase method is the one described in the following papers: 
   
%         [7] C. Vazquez, A. Mitiche, Ismail Ben Ayed, Image segmentation as regularized clustering: a fully 
%             global curve evolution method, IEEE ICIP 2004, pp. 3467-3470.

%      This multiphase method views image segmentation as spatially regularized image data clustering, leading to the 
%      simultaneous minimization of N ?1 functionals to segment an image into N regions, each minimization involving 
%      a single region and its complement. Please cite [7] in any resulting publication.

M=imread(input_image);

global x_iteration;
x_iteration=nb_iterations;
global x_frequency;
x_frequency=display_frequency;
global x_region;
x_region=nb_regions;

curvature = num2str(str2double(curvature) * str2double(time_step));
structure(1).in= input_image;
structure(1).out= output_image;
structure(1).sf= segmentation_method;
structure(1).Nls= nb_iterations;
structure(1).N= nb_regions;
structure(1).nb= display_frequency;
structure(1).var= '0';
structure(1).K= curvature;
structure(1).dt= time_step;
structure(1).start= initialization;
structure(1).vect= 'no';

Seg2_Stim(22, structure);

Contact us