Applies the meanShift algorithm to a joint spatial/range image.


function [M,Vr,Vc] = meanShiftIm( X,sigSpt,sigRng,softFlag,maxIter,minDel )


 Applies the meanShift algorithm to a joint spatial/range image.

 See "Mean Shift Analysis and Applications" by Comaniciu & Meer for info.

 Assumes X is an MxNxP array, where an X(i,j,:) represents the range data
 at locations (i,j).  This function runs meanShift on each of the MxN data
 points.  It takes advantage of the lattice structure of an image for
 efficiency (it only needs to calculate full distance between two points
 if they are near each other spatially).

 In the original formulation of the algorithm, after normalization of the
 data, the search window around each point x has radius 1 (ie
 corresponding to 1 std of the data). That is the search window only
 encloses 2*s+1 pixels, and of those, all which fall within 1 unit from x
 are used to calcluate the new mean.  If softFlag==0 the original
 formulation is used.  If softFlag==1, instead of using a fixed radius,
 each point p is used in the calulation of the mean with points close to x
 given significantly more weight.  Specifically, each point p is given
 weight exp(-dist(x,p)).  So instead of having a fixed cutoff at r, the
 cutoff is 'soft' (same idea as in softmax), and occurs at approximately
 r.  The implementation remains efficient by actually using a hard cutoff
 at points further then 2r spatially from x.

 The resulting matrix M is of size MxNx(P+2).  M(i,j,1) represents the
 convergent row location of X(i,j,:) - (which had initial row location i)
 and M(i,j,2) represents the final column location.  M(i,j,p+2) represents
 the convergent value for X(i,j,p).  The optionaly outputs Vr and Vc are
 2D arrays where Vr(i,j)=M(i,j,1)-i and Vc(i,j)=M(i,j,2)-j.  That is they
 represent the spatial offset between the original location of a point and
 its convergent location.  Display using quiver(Vc,Vr,0).

  [M,Vr,Vc] = meanShiftIm( X,sigSpt,sigRng,[softFlag],[maxIter],[minDel] )

  X        - MxNxP data array, P may be 1
  sigSpt   - integer specifying spatial standard deviation
  sigRng   - value specifying the standard deviation of the range data
  softFlag - [0]- see above
  maxIter  - [100] maximum number of iterations per data point
  minDel   - [.001] minimum amount of spatial change defining convergence

  M        - array of convergent locations [see above]
  Vr       - spatial motion in row direction
  Vc       - spatial motion in col direction

  [M,Vr,Vc] = meanShiftIm( I,5,.2 );
  figure(1); im(I); figure(2); im( M(:,:,3) );
  % color image:
  [M,Vr,Vc] = meanShiftIm( I,5,.2 );
  figure(1); im(I); figure(2); im( M(:,:,3:end) );


 Piotr's Computer Vision Matlab Toolbox      Version 2.0
 Copyright 2014 Piotr Dollar.  []
 Licensed under the Simplified BSD License [see external/bsd.txt]

Generated by m2html © 2003