def run(self, ips, imgs, para = None):
k = ips.unit[0]
titles = ['ID']
if para['center']:titles.extend(['Center-X','Center-Y','Center-Z'])
if para['vol']:titles.append('Volume')
if para['extent']:titles.extend(['Min-Z','Min-Y','Min-X','Max-Z','Max-Y','Max-X'])
if para['ed']:titles.extend(['Diameter'])
if para['fa']:titles.extend(['FilledArea'])
buf = imgs.astype(np.uint16)
strc = generate_binary_structure(3, 1 if para['con']=='4-connect' else 2)
label(imgs, strc, output=buf)
ls = regionprops(buf)
dt = [range(len(ls))]
centroids = [i.centroid for i in ls]
if para['center']:
dt.append([round(i.centroid[1]*k,1) for i in ls])
dt.append([round(i.centroid[0]*k,1) for i in ls])
dt.append([round(i.centroid[2]*k,1) for i in ls])
if para['vol']:
dt.append([i.area*k**3 for i in ls])
if para['extent']:
for j in (0,1,2,3,4,5):
dt.append([i.bbox[j]*k for i in ls])
if para['ed']:
dt.append([round(i.equivalent_diameter*k, 1) for i in ls])
if para['fa']:
dt.append([i.filled_area*k**3 for i in ls])
IPy.table(ips.title+'-region', list(zip(*dt)), titles)
# center, area, l, extent, cov
评论列表
文章目录