diff --git a/python_src/diapOTB_S1IW.py b/python_src/diapOTB_S1IW.py index 37cc19b8c04a9aaa77d7a3283d668900c5e47d1e..07cb8676f1bc64309bf541bb62de213287986f7f 100644 --- a/python_src/diapOTB_S1IW.py +++ b/python_src/diapOTB_S1IW.py @@ -44,6 +44,7 @@ import re from processings import Pre_Processing from processings import Ground from processings import DInSar +from processings import Post_Processing from utils import func_utils @@ -65,7 +66,8 @@ if __name__ == "__main__": dict_PreProcessing = dataConfig['Pre_Processing'] dict_Ground = dataConfig['Ground'] dict_DInSAR = dataConfig['DIn_SAR'] - + dict_PostProcessing = dataConfig['Post_Processing'] + # Get elements from dictionaries # Global @@ -102,7 +104,26 @@ if __name__ == "__main__": else : esd_AutoMode = True esd_NbIter = 10 # 10 iterations maximum for automatic mode - + + + # Post_Processing + activateOrtho = dict_PostProcessing['parameter']['Activate_Ortho'] + + spacingxy = 0.00001 + if "spacingxy" in dict_PostProcessing['parameter'] : + spacingxy = dict_PostProcessing['parameter']['Spacingxy'] + + activateFiltering = "false" + if "Activate_Filtering" in dict_PostProcessing['parameter'] : + activateFiltering = dict_PostProcessing['parameter']['Activate_Filtering'] + + ml_interf_filt_range = 3 + if "Filtered_Interferogram_mlran" in dict_PostProcessing['parameter'] : + ml_interf_filt_range = int(dict_PostProcessing['parameter']['Filtered_Interferogram_mlran']) + + ml_interf_filt_azimut = 3 + if "Filtered_Interferogram_mlazi" in dict_PostProcessing['parameter'] : + ml_interf_filt_azimut = int(dict_PostProcessing['parameter']['Filtered_Interferogram_mlazi']) # Check Threshold if (geoGrid_threshold < 0) or (geoGrid_threshold > 1) : @@ -150,6 +171,16 @@ if __name__ == "__main__": func_utils.log(logging.INFO, "esd_AutoMode : {param}".format(param=esd_AutoMode)) func_utils.log(logging.INFO, "esd_NbIter : {param}".format(param=esd_NbIter)) + # Post_Processing + func_utils.log(logging.INFO, " Post_Processing : ") + func_utils.log(logging.INFO, "activateOrtho : {param}".format(param=activateOrtho)) + if func_utils.str2bool(activateOrtho): + func_utils.log(logging.INFO, "spacingxy : {param}".format(param=spacingxy)) + func_utils.log(logging.INFO, "activateFiltering : {param}".format(param=activateFiltering)) + if func_utils.str2bool(activateFiltering): + func_utils.log(logging.INFO, "ml_interf_filt_range : {param}".format(param=ml_interf_filt_range)) + func_utils.log(logging.INFO, "ml_interf_filt_azimut : {param}".format(param=ml_interf_filt_azimut)) + func_utils.log(logging.INFO, "########### Input Images for the current execution ############## ") func_utils.log(logging.INFO, "master_Image : {param}".format(param=master_Image)) func_utils.log(logging.INFO, "slave_Image : {param}".format(param=slave_Image)) @@ -310,6 +341,24 @@ if __name__ == "__main__": param['esd_AutoMode'] = esd_AutoMode DInSar.gridToInterferogram(dem, master_Image, master_Image_base, slave_Image, slave_Image_base, output_dir, output_dir, param, 'S1_IW', output_dir) + + + ######################## Post_Processing Chain ############################# + func_utils.printOnStd("\n Post_Processing chain \n") + func_utils.log(logging.INFO, "Post_Processing chain") + + # Phase Filtering (if required) + if func_utils.str2bool(activateFiltering): + # Default paramater + alpha = 0.7 + step = 16 + sizetiles = 64 + + paramPost = {} + paramPost['ml_filt_interf_range'] = ml_interf_filt_range + paramPost['ml_filt_interf_azimut'] = ml_interf_filt_azimut + + Post_Processing.filtering(master_Image, master_Image_base, slave_Image, slave_Image_base, output_dir, output_dir, paramPost, "S1_IW", output_dir) func_utils.printOnStd("\n End of DiapOTB processing (S1 IW mode) \n") func_utils.log(logging.INFO, "############ End of DiapOTB processing (S1 IW mode) ##############") diff --git a/python_src/processings/Post_Processing.py b/python_src/processings/Post_Processing.py index 0714a0a36fc353b0791bd8adb9dbf92aa84e3c8a..53a7339e1dd03218df89267dca3399f829fa6f11 100644 --- a/python_src/processings/Post_Processing.py +++ b/python_src/processings/Post_Processing.py @@ -214,6 +214,44 @@ def filtering_S1IW(master_Image, master_Image_base, slave_Image, slave_Image_bas :rtype: list, list """ # Get elements into param dictionnaries - ml_azimut = param['ml_azimut'] - ml_range = param['ml_range'] + ml_azimut = 1 + ml_range = 1 + + ml_filt_interf_range = ml_range + if "ml_filt_interf_range" in param : + ml_filt_interf_range = param['ml_filt_interf_range'] + + ml_filt_interf_azimut = ml_azimut + if "ml_filt_interf_azimut" in param : + ml_filt_interf_azimut = param['ml_filt_interf_azimut'] + + + # define partial function with previous parameters + phaseFilteringApp = partial(diapOTBApp.phaseFiltering, withComplex="false", + mlran=ml_filt_interf_range, mlazi=ml_filt_interf_azimut, step=16, + sizetiles=64, alpha=0.7) + + addAmpApp = partial(diapOTBApp.addAmpInterferogram, withComplex="false", + mlran=ml_filt_interf_range, mlazi=ml_filt_interf_azimut, gain=1) + + filt_dir = os.path.join(output_dir, "filt") + + if not os.path.exists(filt_dir): + os.makedirs(filt_dir) + + # Use directly the interferogram (ML 1x1) + interf_name = "interferogram_swath.tif" + + + # SARPhaseFiltering + filt_phacoh = "filfPhaCoh.tif" + filt_phacoh_path = os.path.join(filt_dir, filt_phacoh) + phaseFilteringApp(inForFiltering=os.path.join(output_dir, interf_name), + outPath=filt_phacoh_path) + + # SARAddBandInterfergoram + filt_interferogram = "filtered_interferogram.tif" + addAmpApp(inForAmp=os.path.join(output_dir, interf_name), + inForPhaCoh=filt_phacoh_path, + outPath=os.path.join(output_dir, filt_interferogram))