Skip to content

Commit

Permalink
several minor changes
Browse files Browse the repository at this point in the history
  • Loading branch information
hvdwolf committed May 1, 2022
1 parent fb302dc commit 2d965c9
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 32 deletions.
14 changes: 12 additions & 2 deletions PyImageFuser.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,11 @@ def main():
elif event == '_inGridsize_' and values['_inGridsize_'] and values['_inGridsize_'][-1] not in ('0123456789'):
window['_inGridsize_'].update(value='5')
# end of numerical checks
elif event == '_autoHfov':
if values['_autoHfov']:
window['_inHFOV_'].update(disabled=True)
else:
window['_inHFOV_'].update(disabled=False)
elif event == 'About...':
window.disappear()
sg.popup(program_texts.about_message, grab_anywhere=True, keep_on_top=True, icon=image_functions.get_icon())
Expand Down Expand Up @@ -196,6 +201,11 @@ def main():
list_index.extend(range(0, max))
window['-FILE LIST-'].update(set_to_index = list_index,)
window.refresh()
elif event == '_display_selected_':
if values['_display_selected_']:
list_index = []
window['-FILE LIST-'].update(set_to_index=list_index, )
window.refresh()
elif event == "-FILE LIST-": # A file was chosen from the listbox
#print('A file was chosen from the listbox')
if values['_display_selected_'] and len(values['-FILE LIST-']) !=0:
Expand Down Expand Up @@ -226,11 +236,11 @@ def main():
starttime = timeit.default_timer()
if (values['_useAISPreview_']):
cmdstring, cmd_list = image_functions.create_ais_command(values, folder, tmpfolder, 'preview')
print("\n\ncmdstring: ", cmdstring, "; cmd_list: ", cmd_list, "\n\n")
print("\n\ncmdstring: ", cmdstring, "\ncmd_list: ", cmd_list, "\n\n")
result = run_commands.run_shell_command(cmdstring, cmd_list, " running align_image_stack ", False)
if result == 'OK':
cmdstring, cmd_list = image_functions.create_enfuse_command(values, folder, tmpfolder, 'preview_ais','')
print("\n\n", cmdstring, "\n\n")
print("\n\ncmdstring: ", cmdstring, "\ncmd_list: ", cmd_list, "\n\n")
result = run_commands.run_shell_command(cmdstring, cmd_list, 'running enfuse', False)
else:
print("return string from ais ", result)
Expand Down
31 changes: 20 additions & 11 deletions image_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,13 +273,13 @@ def check_ais_params(all_values):
if all_values['_useGPU_']:
cmd_string += '--gpu '
cmd_list.append('--gpu')
#if all_values['_fffImages_']:
# cmd_string += '-e '
# cmd_list.append('-e')
if all_values['_fffImages_']:
cmd_string += '-e '
cmd_list.append('-e')
if all_values['_usegivenorder_']:
cmd_string += '--use-given-order '
cmd_list.append('--use-given-order')
if all_values['_fovOptimize_']:
if all_values['_OptimizeFOV_']:
cmd_string += '-m '
cmd_list.append('-m')
if all_values['_optimizeImgCenter_']:
Expand All @@ -288,6 +288,15 @@ def check_ais_params(all_values):
if all_values['_optimizeRadialDistortion_']:
cmd_string += '-d '
cmd_list.append('-d')
if all_values['_optimixeXposition_']:
cmd_string += '-x '
cmd_list.append('-x')
if all_values['_optimixeYposition_']:
cmd_string += '-y '
cmd_list.append('-y')
if all_values['_optimixeZposition_']:
cmd_string += '-z '
cmd_list.append('-z')
#if all_values['_linImages_']:
# cmd_string += '-l '
# cmd_list.append('-l')
Expand Down Expand Up @@ -387,25 +396,25 @@ def create_ais_command(all_values, folder, tmpfolder, type):
def check_enfuse_params(all_values):
cmd_string = ""
cmd_list = []
if not all_values['_levels_'] == '29':
if not all_values['_levels_'] == 29:
cmd_string += '--levels=' + str(int(all_values['_levels_'])) + ' '
cmd_list.append('--levels=' + str(int(all_values['_levels_'])))
if not all_values['_exposure_weight_'] == '1.0':
if not all_values['_exposure_weight_'] == 1.0:
cmd_string += '--exposure-weight=' + str(all_values['_exposure_weight_']) + ' '
cmd_list.append('--exposure-weight=' + str(all_values['_exposure_weight_']))
if not all_values['_saturation_weight_'] == '0.2':
if not all_values['_saturation_weight_'] == 0.2:
cmd_string += '--saturation-weight=' + str(all_values['_saturation_weight_']) + ' '
cmd_list.append('--saturation-weight=' + str(all_values['_saturation_weight_']))
if not all_values['_contrast_weight_'] == '0':
if not all_values['_contrast_weight_'] == 0:
cmd_string += '--contrast-weight=' + str(all_values['_contrast_weight_']) + ' '
cmd_list.append('--contrast-weight=' + str(all_values['_contrast_weight_']))
if not all_values['_entropy_weight_'] == '0':
if not all_values['_entropy_weight_'] == 0:
cmd_string += '--entropy-weight=' + str(all_values['_entropy_weight_']) + ' '
cmd_list.append('--entropy-weight=' + str(all_values['_entropy_weight_']))
if not all_values['_exposure_optimum_'] == '0.5':
if not all_values['_exposure_optimum_'] == 0.5:
cmd_string += '--exposure-optimum=' + str(all_values['_exposure_optimum_']) + ' '
cmd_list.append('--exposure-optimum=' + str(all_values['_exposure_optimum_']))
if not all_values['_exposure_width_'] == '0.2':
if not all_values['_exposure_width_'] == 0.2:
cmd_string += '--exposure-width=' + str(all_values['_exposure_width_']) + ' '
cmd_list.append('--exposure-width=' + str(all_values['_exposure_width_']))
return cmd_string, cmd_list
Expand Down
4 changes: 2 additions & 2 deletions run_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ def run_command(cmdstring):
def run_shell_command(cmdstring, arguments, waitmessage, output):
retstring = ""
if platform.system() == 'Windows':
result = sg.shell_with_animation(cmdstring, arguments, message=waitmessage, font='Helvetica 15', no_titlebar=True, alpha_channel=0.85)
result = sg.shell_with_animation(cmdstring, arguments, message=waitmessage, font='Helvetica 15', no_titlebar=True, alpha_channel=0.90)
else:
tlist = []
result = sg.shell_with_animation(cmdstring, tlist, message=waitmessage, font='Helvetica 15', no_titlebar=True, alpha_channel=0.85)
result = sg.shell_with_animation(cmdstring, tlist, message=waitmessage, font='Helvetica 15', no_titlebar=True, alpha_channel=0.90)

if output:
sg.popup_scrolled(result, font='Courier 10')
Expand Down
64 changes: 47 additions & 17 deletions ui_layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,28 @@ def create_and_show_gui(tmpfolder, startFolder):
[sg.Checkbox('Save final image to source folder', key='_saveToSource_', default=True)]
]
layoutMain_SaveAs = [
[sg.Text('Save Images as:')],
[sg.Text('Save final Image as:')],
[sg.Radio('.jpg (Default)', "RADIOSAVEAS", default=True, key='_jpg_'), sg.Spin([x for x in range(1, 100)], initial_value="90", key='_jpgCompression_', readonly=True)],
[sg.Radio('.Tiff 8bits', "RADIOSAVEAS", default=False, key='_tiff8_')],
[sg.Radio('.Tiff 16 bits', "RADIOSAVEAS", default=False, key='_tiff16_'), sg.Combo(['deflate', 'packbits', 'lzw', 'none'], default_value='deflate', key='_tiffCompression')],
[sg.Radio('.Tiff 32 bits', "RADIOSAVEAS", default=False, key='_tiff32_')]
[sg.Radio('.Tiff 32 bits', "RADIOSAVEAS", default=False, key='_tiff32_')],
#[sg.Radio('.png', "RADIOSAVEAS", default=False, key='_png_')]
]
layoutMain_Presets = [
[sg.Text('Presets')],
[sg.Radio('None', "RADIOPRESET", default=True, key='_preset_none_')],
[sg.Radio('Default (resets all settings to defaults)', "RADIOPRESET", default=False, key='_alltodefault_')],
[sg.Radio('Focus Stacking', "RADIOPRESET", default=False, key='_focusstacking_')]
]
layoutMainText = [
[sg.Text('In most cases you can simply stay on this main tab. '
'If your alignment or the final exposure is not correct, you can check the other tabs'
' or read some of the Help topics.', size=(30,6),)]
]

layoutMainTab = [
# [sg.Column(layoutMainGeneralCheckBoxes), sg.VSeperator(), sg.Column(layoutMain_SaveAs), sg.VSeperator(), sg.Column(layoutMain_Presets)]
[sg.Column(layoutMainGeneralCheckBoxes, vertical_alignment='top'), sg.VSeperator(), sg.Column(layoutMain_SaveAs), ],
[sg.Column(layoutMainGeneralCheckBoxes, vertical_alignment='top'), sg.VSeperator(), sg.Column(layoutMain_SaveAs), sg.VSeperator(), sg.Column(layoutMainText, vertical_alignment='top'),],
[sg.VPush()],
[sg.Text('Processing time: --', key='_proc_time_', )]
]
Expand Down Expand Up @@ -107,39 +113,62 @@ def create_and_show_gui(tmpfolder, startFolder):
[sg.Radio('Vertical', "RADIOWRAP", default=False, key='_vertical_')],
[sg.Radio('Both', "RADIOWRAP", default=False, key='_both_')]
]
'''
layoutEnfuseTab = [
[sg.Column(layoutEnfuseTab_Levels), sg.Column(layoutEnfuseTab_ExposureWeight),
sg.Column(layoutEnfuseTab_SaturationWeight), sg.Column(layoutEnfuseTab_ContrastWeight),
sg.Column(layoutEnfuseTab_EntropyWeight), sg.Column(layoutEnfuseTab_ExposureOptimum),
sg.Column(layoutEnfuseTab_ExposureWidth), sg.VSeperator(),
sg.Column(layoutEnfuseTab_Mask, vertical_alignment='top'), sg.Column(layoutEnfuseTab_Wrap, vertical_alignment='top')]
]
'''
layoutEnfuseTab = [
[sg.Column(layoutEnfuseTab_Levels), sg.Column(layoutEnfuseTab_ExposureWeight), sg.Column(layoutEnfuseTab_SaturationWeight), sg.Column(layoutEnfuseTab_ContrastWeight),
sg.Column(layoutEnfuseTab_Mask, vertical_alignment='top')],
]
layoutEnfuseAdvanced = [
[sg.Column(layoutEnfuseTab_EntropyWeight), sg.Column(layoutEnfuseTab_ExposureOptimum),
sg.Column(layoutEnfuseTab_ExposureWidth), sg.VSeperator(),
sg.Column(layoutEnfuseTab_Wrap, vertical_alignment='top'),],
]

# ----------------------------------------------------------------------------------------------
# -------------------------------- Align_image_stack tab --------------------------------
layoutAIScheckboxes = [
[sg.Checkbox('Autocrop images', key='_autoCrop_', default=True)],
[sg.Checkbox('Use GPU for remapping', key='_useGPU_', default=True)],
#[sg.Checkbox('Full Frame Fisheye images', key='_fffImages_', default=False)],
[sg.Checkbox('Use given order', key='_usegivenorder_', default=False, tooltip='Use for stacjs for noise reduction. Not for exposure bracketing')],
[sg.Checkbox('Optimize Field of View of all images except first', key='_fovOptimize_', default=False)],
[sg.Checkbox('Optimize image center of all images except first', key='_optimizeImgCenter_', default=False)],
[sg.Checkbox('Optimize radial distortion of all images except first', key='_optimizeRadialDistortion_', default=False)],
#[sg.Checkbox('Assume linear input files', key='_linImages_', default=False,)],
]

layoutAISInputs = [
[sg.InputText(key='_inHFOV_', size=(4, 1), enable_events=True), sg.Text("HFOV"), sg.Checkbox('Auto HFOV', key='_autoHfov', default=True)],
[ sg.InputText('50', key='_inHFOV_', size=(4, 1), disabled=True, enable_events=True, tooltip='Approximate horizontal field of view of input images, use if EXIF info not complete'), sg.Text("HFOV", tooltip='Approximate horizontal field of view of input images, use if EXIF info not complete'),sg.Checkbox('Auto HFOV', key='_autoHfov', default=True, enable_events=True, tooltip='Use exif info to determine HFOV. If not available, you can override the standard fallback value of 50'), ],
[sg.InputText('0.9', key='_correlation_', size=(4, 1), enable_events=True), sg.Text('Correlation threshold')],
[sg.InputText('8', key='_inNoCP_', size=(4, 1), enable_events=True), sg.Text('No. of Control points', tooltip='Default is 8. Increase to 20, 30 or 50 in case of not so good results.')],
[sg.InputText('3', key='_removeCPerror_', size=(4, 1), enable_events=True), sg.Text('Remove Control points with error > than')],
[sg.InputText('1', key='_inScaleDown_', size=(4, 1), enable_events=True), sg.Text('Scale down images by 2^ scale')],
[sg.InputText('5', key='_inGridsize_', size=(4, 1), enable_events=True), sg.Text('Grid size (default: 5x5)')],
]

layoutAIScheckboxes = [
[sg.Checkbox('Autocrop images', key='_autoCrop_', default=True, tooltip='Especially important for hand held images, to cover info available in all images.')],
[sg.Checkbox('Use GPU for remapping', key='_useGPU_', default=True, tooltip='Be careful. Align_image_stack can crash without GPU support, even without warning')],
[sg.Checkbox('Full Frame Fisheye images', key='_fffImages_', default=False)],
[sg.Checkbox('Use given order', key='_usegivenorder_', default=False, tooltip='Use in stacks for noise reduction. Not for exposure bracketing')],
#[sg.Checkbox('Assume linear input files', key='_linImages_', default=False,)],
]

layoutAISadvanced = [
[sg.Checkbox('Optimize Field of View for all images except first', key='_OptimizeFOV_', default=False, tooltip='Useful for aligning focus stacks with slightly different magnification. ')],
[sg.Checkbox('Optimize image center for all images except first', key='_optimizeImgCenter_', default=False)],
[sg.Checkbox('Optimize radial distortion for all images except first', key='_optimizeRadialDistortion_', default=False)],
[sg.Checkbox('Optimize X coordinate of camera position', key='_optimixeXposition_', default=False)],
[sg.Checkbox('Optimize Y coordinate of camera position', key='_optimixeYposition_', default=False)],
[sg.Checkbox('Optimize Z coordinate of camera position', key='_optimixeZposition_', default=False)]
]

layoutAISTab = [
[sg.Column(layoutAIScheckboxes), sg.VSeperator(), sg.Column(layoutAISInputs, vertical_alignment='top')]
[sg.Column(layoutAIScheckboxes, vertical_alignment='top'), sg.VSeperator(), sg.Column(layoutAISInputs, vertical_alignment='top')]
]

layoutAdvanced = [
[sg.Frame('Align_image_stack',layoutAISadvanced, vertical_alignment='top'), sg.Frame('Enfuse',layoutEnfuseAdvanced)],
]

#----------------------------------------------------------------------------------------------
#--------------------------- Left and right panel -----------------
layoutLeftPanel = [
Expand All @@ -152,7 +181,7 @@ def create_and_show_gui(tmpfolder, startFolder):
#[sg.Listbox(values=[], enable_events=True, size=(40, 15), select_mode='multiple', key="-FILE LIST-"), sg.Output(size=(40, 15), visible=False, key = '_sgOutput_')],
[sg.Listbox(values=[], enable_events=True, size=(40, 15), select_mode='multiple', key="-FILE LIST-"), ],
[sg.Button('Select all', font = ('Calibri', 10, 'bold'), key='_select_all_'),
sg.Checkbox('Display selected image when clicked on', key='_display_selected_'),],
sg.Checkbox('Display selected image when clicked on', key='_display_selected_', enable_events=True),],
]

if platform.system() == 'Windows':
Expand All @@ -173,9 +202,10 @@ def create_and_show_gui(tmpfolder, startFolder):
layout = [
[sg.Menu(menu_def, tearoff=False)],
[sg.Column(layoutLeftPanel, vertical_alignment='top'), sg.VSeperator(), sg.Column(layoutRightPanel, vertical_alignment='top')],
[sg.TabGroup([[sg.Tab('Main', layoutMainTab, tooltip='For default enfuse you can simply stay on this tab'),
[sg.TabGroup([[sg.Tab('Main', layoutMainTab,),
sg.Tab('Align_image_stack', layoutAISTab),
sg.Tab('Enfuse', layoutEnfuseTab, ),
sg.Tab('Advanced', layoutAdvanced,),
]])],
[sg.Push(),
sg.Button('Create Exposure fused image', font = ('Calibri', 10, 'bold'), key='_CreateImage_', tooltip='Use this option for Exposure fusion'),
Expand Down

0 comments on commit 2d965c9

Please sign in to comment.