I believe you're describing superpixels3
help superpixels3
 SUPERPIXELS3 3-D superpixel over-segmentation of 3-D images
 
    [L,NumLabels] = superpixels3(A,N) computes 3-D superpixels of 3-D image
    A using N as the requested number of superpixels.  N must be between 1
    and the number of pixels in the image A. The first output argument, L, is
    a label matrix of type double. The second output argument, NumLabels,
    is the actual number of 3-D superpixels that were computed.
 
    [L,NumLabels] = superpixels3(___,Name,Value,...) computes superpixels of A
    with Name-Value pairs used to control aspects of the segmentation.
 
    Parameters include:
 
    'Compactness'         - Numeric scalar specifying the compactness
                            parameter of the SLIC algorithm. Compactness
                            controls the shape of superpixels. A higher
                            value for compactness makes superpixels more
                            regularly shaped/square. A lower value makes
                            superpixels adhere to boundaries better, making
                            them irregularly shaped. The allowed range of
                            Compactness is (0 Inf). Typical values for
                            Compactness are in the range [0.01, 0.1]. If
                            this parameter is not specified, the default
                            value is chosen as 0.001 if METHOD is 'slic0'
                            and 0.05 if METHOD is 'slic'.
 
    'Method'              - String specifying the algorithm used to compute
                            superpixels. Supported options are 'slic' and
                            'slic0'. When 'Method' is 'slic0', the SLIC0
                            algorithm is used to adaptively refine
                            'Compactness' after the first iteration. When
                            'Method' is 'slic', 'compactness' is constant
                            during clustering.
 
                            Default: 'slic0'
                                                       
    'NumIterations'       - Numeric scalar specifying the number of
                            iterations used in the clustering phase of the
                            algorithm. For most problems it is not
                            necessary to adjust this parameter.
 
                            Default: 10
 
 
    Class Support
    -------------
    The input image A must be a real, non-sparse matrix of the following
    classes: int8, uint8, int16, uint16, int32, uint32, single, or double.
 
    Notes
    -----
    1. When using the 'slic0' method, it is generally not necessary to adjust
       'Compactness' parameter. The intention of 'slic0' is to adaptively
       refine 'Compactness' automatically and eliminate the need for users
       to determine a good value of 'Compactness' for themselves.
 
    References: 
    ----------- 
    [1] Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi,
    Pascal Fua, and Sabine Susstrunk, SLIC Superpixels Compared to
    State-of-the-art Superpixel Methods, IEEE Transactions on Pattern
    Analysis and Machine Intelligence, vol. 34, num. 11, p. 2274 - 2282,
    May 2012.
 
    [2] Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi,
    Pascal Fua, and Sabine Susstrunk, SLIC Superpixels, EPFL Technical
    Report no. 149300, June 2010.
 
    Example
    -------
    % Compute 3-D superpixels of input volumetric intensity image. Form an
    % output image where each pixel is set to the mean color of its
    % corresponding superpixel region.
    
      load mri;
      D = squeeze(D);
      A = ind2gray(D,map);
      [L,N] = superpixels3(A, 34);
  
      % Show all xy-planes progressively with superpixel boundaries.
      imSize = size(A);
      % Create a stack of RGB images to display the boundaries in color.
      imPlusBoundaries = zeros(imSize(1),imSize(2),3,imSize(3),'uint8');
      for plane = 1:imSize(3)
          BW = boundarymask(L(:, :, plane));
          % Create an RGB representation of this plane with boundary shown
          % in cyan.
          imPlusBoundaries(:, :, :, plane) = imoverlay(A(:, :, plane), BW, 'cyan');
      end
      implay(imPlusBoundaries,5)
  
      % Set color of each pixel in output image to the mean intensity of
      % the superpixel region. 
      % Show the mean image next to the original.
      pixelIdxList = label2idx(L);
      meanA = zeros(size(A),'like',D);
      for superpixel = 1:N
         memberPixelIdx = pixelIdxList{superpixel};
         meanA(memberPixelIdx) = mean(A(memberPixelIdx));
      end
      implay([A meanA],5);
    
    See also superpixels, boundarymask, imoverlay, label2idx, implay.
    Documentation for superpixels3
       doc superpixels3



