Source code for coseda.pipeline.processimage
import numpy as np
from diffractem.peakfinder8_extension import peakfinder_8
[docs]
def process_image(i, image_data, x0, y0, cutoff, cutoff_low, threshold, min_snr, min_pix_count, max_pix_count, local_bg_radius, min_res, max_res):
nPeaks = 0
X, Y = np.meshgrid(range(image_data.shape[1]), range(image_data.shape[0]))
R = np.sqrt((X-x0)**2 + (Y-y0)**2).astype(np.float32)
mask = np.ones_like(image_data, dtype=np.int8)
mask[R > max_res] = 0
mask[R < min_res] = 0
pks = peakfinder_8(500, image_data.astype(np.float32), mask, R, image_data.shape[1], image_data.shape[0], 1, 1, threshold, min_snr, min_pix_count, max_pix_count, local_bg_radius)
nPeaks = len(pks[0])
#print(nPeaks)
if pks is None or len(pks[0]) == 0:
fill = [0] * (500)
return {
'index': i,
'nPeaks': 0,
'peakTotalIntensity': np.array(fill),
'peakXPosRaw': np.array(fill),
'peakYPosRaw': np.array(fill),
}
fill = [0] * (500 - nPeaks)
return {
'index': i,
'nPeaks': nPeaks,
'peakTotalIntensity': np.array(pks[2] + fill),
'peakXPosRaw': np.array(pks[0] + fill),
'peakYPosRaw': np.array(pks[1] + fill),
}