class_docstr: This class enables the extraction of image features (Harilick
  features) and basic statistics over a segmentation
class_docstr_tok: ["This","class","enables","the","extraction","of","image","features","(","Harilick","features",")","and","basic","statistics","over","a","segmentation"]
docstr: Similarly to the volume function, returns probabilistic sum, binary
  number, probabilistic volume and binarised volume of the segmentation
  border
  
  :return:
docstr_tok: ["Similarly","to","the","volume","function",",","returns","probabilistic","sum",",","binary","number",",","probabilistic","volume","and","binarised","volume","of","the","segmentation","border",":","return",":"]
code: def surface(self):
      """
      Similarly to the volume function, returns probabilistic sum, binary
      number, probabilistic volume and binarised volume of the segmentation
      border
  
      :return:
      """
      border_seg = MorphologyOps(self.seg, self.neigh).border_map()
      numb_border_seg_bin = np.sum(border_seg > 0)
      numb_border_seg = np.sum(border_seg)
      return (
          numb_border_seg,
          numb_border_seg_bin,
          numb_border_seg * self.vol_vox,
          numb_border_seg_bin * self.vol_vox,
      )
  
imports: from __future__ import absolute_import, print_function, division
  import numpy
  import numpy.ma
  import math
  import scipy.stats.mstats
  import scipy.ndimage
  from niftynet.utilities.util_common import MorphologyOps, CacheFunctionOutput
label_desc: Use image node_id 5 for calling the RegionProperties obj's underlying member method code with example usage: obj.surface() and returns: numb_border_seg,  numb_border_seg_bin,  unknown,  unknown