def run(self, ips, imgs, para = None):
k, unit = ips.unit
strc = generate_binary_structure(3, 1 if para['con']=='4-connect' else 2)
lab, n = label(imgs==0 if para['inv'] else imgs, strc, output=np.uint16)
idx = (np.ones(n+1)*(0 if para['inv'] else para['front'])).astype(np.uint8)
ls = regionprops(lab)
for i in ls:
if para['vol'] == 0: break
if para['vol']>0:
if i.area*k**3 < para['vol']: idx[i.label] = para['back']
if para['vol']<0:
if i.area*k**3 >= -para['vol']: idx[i.label] = para['back']
for i in ls:
if para['dia'] == 0: break
d = norm(np.array(i.bbox[:3]) - np.array(i.bbox[3:]))
if para['dia']>0:
if d*k < para['dia']: idx[i.label] = para['back']
if para['dia']<0:
if d*k >= -para['dia']: idx[i.label] = para['back']
idx[0] = para['front'] if para['inv'] else 0
imgs[:] = idx[lab]
评论列表
文章目录