diff --git a/01_extract_surfaces.py b/01_extract_surfaces.py index ddd552a..c8a368a 100644 --- a/01_extract_surfaces.py +++ b/01_extract_surfaces.py @@ -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: