Source code for ants.segmentation.label_geometry_measures


__all__ = ['label_geometry_measures']

from tempfile import mktemp
import pandas as pd
import numpy as np

from .. import utils


[docs]def label_geometry_measures(label_image, intensity_image=None): """ Wrapper for the ANTs funtion labelGeometryMeasures ANTsR function: `labelGeometryMeasures` Arguments --------- label_image : ANTsImage image on which to compute geometry intensity_image : ANTsImage (optional) image with intensity values Returns ------- pandas.DataFrame Example ------- >>> import ants >>> fi = ants.image_read( ants.get_ants_data('r16') ) >>> seg = ants.kmeans_segmentation( fi, 3 )['segmentation'] >>> geom = ants.label_geometry_measures(seg,fi) """ if intensity_image is None: intensity_image = label_image.clone() outcsv = mktemp(suffix='.csv') veccer = [label_image.dimension, label_image, intensity_image, outcsv] veccer_processed = utils._int_antsProcessArguments(veccer) libfn = utils.get_lib_fn('LabelGeometryMeasures') pp = libfn(veccer_processed) pp = pd.read_csv(outcsv) pp['Label'] = np.sort(np.unique(label_image[label_image>0])).astype('int') pp_cols = pp.columns.values pp_cols[1] = 'VolumeInMillimeters' pp.columns = pp_cols spc = np.prod(label_image.spacing) pp['VolumeInMillimeters'] = pp['VolumeInMillimeters']*spc return pp