Skip to content
Snippets Groups Projects
Commit 3b34d7e4 authored by Christopher Randolph Rhodes's avatar Christopher Randolph Rhodes
Browse files

Batch script to generate coloring book-like line profiles from pixel classifier

parent 1aa7b51b
No related branches found
No related tags found
No related merge requests found
from pathlib import Path
import numpy as np
import pandas as pd
from skimage.filters import gaussian
from skimage.measure import label, regionprops_table
import tifffile
from extensions.chaeo.accessors import MonoPatchStack
from extensions.ilastik.models import IlastikPixelClassifierModel
from model_server.accessors import write_accessor_data_to_file, InMemoryDataAccessor
if __name__ == '__main__':
root = Path('c:/Users/rhodes/projects/proj0011-plankton-seg/exp0024')
px_ilp = root / 'px02.ilp'
sigma = 1.0
thresh = 0.15
min_area = 400
tf = tifffile.imread(root / '20231008-162336-z04-TL.tif')
instack = MonoPatchStack(np.moveaxis(tf, 0, -1))
px_mod = IlastikPixelClassifierModel(params={'project_file': px_ilp})
pxmaps = []
def pipeline(yx_img):
pxmap, _ = px_mod.infer(InMemoryDataAccessor(yx_img))
smoothed = gaussian(pxmap.get_one_channel_data(0).data, sigma=sigma)
mask = smoothed > thresh
proc_mask = mask
lamap = label(proc_mask).astype('uint16')
df = (
pd.DataFrame(
regionprops_table(
lamap[:, :, 0, 0],
properties=('label', 'area')
)
)
)
la_keep = df.loc[df['area'] > min_area, 'label'].unique()
fil_mask = np.isin(lamap, la_keep)
inv = np.invert(fil_mask)
return InMemoryDataAccessor(inv)
results = []
for i in range(0, instack.count):
res = pipeline(instack.iat(i))
results.append(res)
outfile = root / 'output' / f'res_{i:04d}.tif'
outfile.parent.mkdir(parents=True, exist_ok=True)
write_accessor_data_to_file(outfile, res)
print('Finished')
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment