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

Basic support for bool data

parent a251cab0
No related branches found
No related tags found
No related merge requests found
"""
Image processing utility functions
"""
from math import ceil, floor
import numpy as np
from skimage.exposure import rescale_intensity
def pad(im, mpx): # now in model_server.batch
'''Pads and crops image width edge values to specified dimension'''
dh = 0.5 * (mpx - im.shape[0])
dw = 0.5 * (mpx - im.shape[1])
if dw < 0:
x0 = floor(-dw)
x1 = x0 + mpx
im = im[:, x0:x1]
dw = 0
if dh < 0:
y0 = floor(-dh)
y1 = y0 + mpx
im = im[y0:y1, :]
dh = 0
border = ((floor(dh), ceil(dh)), (floor(dw), ceil(dw)))
padded = np.pad(im, border, mode='constant')
if padded.shape != (mpx, mpx):
raise Exception(f'Incorrect image shape: {padded.shape} v. {(mpx, mpx)}')
return padded
def pad_3d(im, mpx): # im: [z x h x w]
assert(len(im.shape) == 3)
nz, h, w = im.shape
padded = np.zeros((nz, mpx, mpx), dtype=im.dtype)
for zi in range(nz):
padded[zi, :, :] = pad(im[zi, :, :], mpx)
return padded
def resample(nda, cmin=0, cmax=2**16): # now in model_server.batch
return rescale_intensity(
np.clip(nda, cmin, cmax),
in_range=(cmin, cmax + 1),
out_range=(0, 2**8)
).astype('uint8')
def rescale(nda, clip=0.0): # now in model_server.batch
clip_pct = (100.0 * clip, 100.0 * (1.0 - clip))
cmin, cmax = np.percentile(nda, clip_pct)
rescaled = rescale_intensity(nda, in_range=(cmin, cmax))
return rescaled
\ 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