Add combined averaging and dark subtraction
This commit is contained in:
parent
f92636370a
commit
f3bf6f88d0
1 changed files with 76 additions and 0 deletions
|
|
@ -160,6 +160,82 @@ def generate_image_list(path, options=None):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def process_2d_scans(data: dict, options={}):
|
||||||
|
|
||||||
|
default_options = {
|
||||||
|
'scans': 15, # number of scans per image
|
||||||
|
'img_filename': 'img_',
|
||||||
|
'extension': '.edf',
|
||||||
|
'darks': True, # whether there are darks
|
||||||
|
'dark_filename': 'dark_',
|
||||||
|
'save': False,
|
||||||
|
'save_folder': './average/',
|
||||||
|
'save_filename': 'avg_',
|
||||||
|
'save_extension': '.dat'
|
||||||
|
}
|
||||||
|
|
||||||
|
options = aux.update_options(options=options, required_options=default_options.keys(), default_options=default_options)
|
||||||
|
|
||||||
|
|
||||||
|
all_imgs = [os.path.join(data['path'], img) for img in os.listdir(data['path']) if img.endswith(options['extension']) and img.startswith(options['img_filename'])]
|
||||||
|
|
||||||
|
if options['darks']:
|
||||||
|
all_darks = [os.path.join(data['path'], img) for img in os.listdir(data['path']) if img.endswith(options['extension']) and img.startswith(options['dark_filename'])]
|
||||||
|
|
||||||
|
|
||||||
|
scans = int(len(all_imgs) / options['scans'])
|
||||||
|
|
||||||
|
assert scans - (len(all_imgs) / options['scans']) == 0
|
||||||
|
|
||||||
|
|
||||||
|
imgs = []
|
||||||
|
darks = []
|
||||||
|
|
||||||
|
for i in range(scans):
|
||||||
|
img = []
|
||||||
|
dark = []
|
||||||
|
for i in range(options['scans']):
|
||||||
|
img.append(all_imgs.pop(0))
|
||||||
|
|
||||||
|
if options['darks']:
|
||||||
|
dark.append(all_darks.pop(0))
|
||||||
|
|
||||||
|
imgs.append(img)
|
||||||
|
|
||||||
|
if options['darks']:
|
||||||
|
darks.append(dark)
|
||||||
|
|
||||||
|
|
||||||
|
img_avgs = []
|
||||||
|
for img in imgs:
|
||||||
|
img_avg = average_images(img)
|
||||||
|
|
||||||
|
if options['darks']:
|
||||||
|
dark_avg = average_images(dark)
|
||||||
|
img_avg = subtract_dark(img_avg, dark_avg)
|
||||||
|
|
||||||
|
img_avgs.append(img_avg)
|
||||||
|
|
||||||
|
|
||||||
|
if options['save']:
|
||||||
|
if not os.path.isdir(options['save_folder']):
|
||||||
|
os.makedirs(options['save_folder'])
|
||||||
|
|
||||||
|
for i, img in enumerate(img_avgs):
|
||||||
|
np.savetxt(os.path.join(options['save_folder'], options['save_filename']+f'{i}'.zfill(4)+options['save_extension']), img, fmt='%.1f', delimiter=";")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return img_avgs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def average_images(images):
|
def average_images(images):
|
||||||
''' Takes a list of path to image files, reads them and averages them before returning the average image'''
|
''' Takes a list of path to image files, reads them and averages them before returning the average image'''
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue