added routine to remove small objects
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user