added routine to remove small objects

This commit is contained in:
2023-02-01 09:45:48 +01:00
parent 046185500c
commit 2395eae471

View File

@@ -8,6 +8,7 @@ Created on Fri Mar 25 08:39:28 2022
import xarray as xr
import os
from skimage import measure
from skimage import morphology
from skimage.morphology import ball
import trimesh
import numpy as np
@@ -70,13 +71,14 @@ class mesh_maker:
with open(stlpath, 'w+') as file:
file.write(stl)
def time_4D_stl(self, ts, phase=1, phasename = 'phase_1', clean=False, fp = None):
def time_4D_stl(self, ts, phase=1, phasename = 'phase_1', clean=False, remove_small= False, fp = None, minsize=20):
im = self.dyn_data['segmented'].sel(time=ts)==phase
if np.any(im):
im = im.data
if clean: im = ndimage.binary_opening(im, structure=fp)
if remove_small: im = morphology.remove_small(im, min_size=minsize)
im[:,:,:2] = 0
im[:,:,-3:] = 0
verts, faces, _, _ = measure.marching_cubes(im) #_lewiner
@@ -113,7 +115,7 @@ class mesh_maker:
self.dyn_data.close()
self.dyn_data.close()
def run2(self, phase, name, clean, fp=ball(1)):
def run2(self, phase, name, clean=False, remove_small=False, fp=ball(1)):
# laod the data
self.load_data()
# TODO:close ncfile if error
@@ -129,7 +131,7 @@ class mesh_maker:
steps = self.timesteps
if self.parallel:
Parallel(n_jobs=self.njobs, temp_folder=temp_folder)(delayed(self.time_4D_stl)(ts, phase, name, clean, fp) for ts in steps)
Parallel(n_jobs=self.njobs, temp_folder=temp_folder)(delayed(self.time_4D_stl)(ts, phase, name, clean,remove_small, fp) for ts in steps)
else:
for ts in steps:
if not ts == self.ref_ts: