Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot detect PS after phase linking using TerraSAR-X images #95

Open
david-ncu2019 opened this issue Sep 6, 2024 · 7 comments
Open

Comments

@david-ncu2019
Copy link

Dear @mirzaees ,

Really sorry to bother you. I’d really appreciate it if you could take a moment to look into my case.

I’ve processed 25 TerraSAR-X (TSX) images in a descending path for land subsidence monitoring in an agricultural region of Taiwan. The pre-processing was done with ISCE, and I focused on a small area with miaplpy to test PS detection. The TSX images were kept at full resolution.
MAP_PLOT - Copy

For comparison, I also processed Sentinel-1 images from the same period, which were multilooked (3 azimuth: 1 range) over a larger bounding box.

I expected the number of PS detected from TSX image processing to be significantly higher than those from the Sentinel-1A images, but surprisingly, this was not the case. This has left me quite confused. I’m uncertain if the issue stems from the ISCE processing step or if miaplpy doesn't fully support TSX images.

  1. The first figure shows the bounding box for Sentinel-1 and TSX image processing.
    fig001_resize2

  2. The second figure shows the PS mask after phase linking performance on S1A images.
    fig002_resize2

  3. The final figure contains both amp_dispersion_index and top_eigenvalues raster. Even the output results show high values of amplitude dispersion index and eigenvalues phase linking performance on TSX images, but the file maskPS.h5 shows nothing. I'm really confused why this happened.
    fig003_resize2

Any advice you can provide would be really helpful. Thank you for your time!

Best regards,
David

@mirzaees
Copy link
Collaborator

Hi @david-ncu2019
Sorry for my late reply
It seems like the processing for TSX was not successful and the PS mask is not actually generated
another way to generate this mask is to use temporal coherence. all the coherence values =1 are PS

@david-ncu2019
Copy link
Author

david-ncu2019 commented Oct 13, 2024

Dear @mirzaees ,

Really thank you for your response!

I understand that your schedule may be quite busy, but I'm really grateful if you could take a moment to check my following questions.

It seems like the processing for TSX was not successful and the PS mask is not actually generated

  • Actually, the output files after concatenate_patches still showed values if I checked them individually (using view.py. from MintPy). However, the creation of MaskPS was not successful → Was it due to (1) image processing (with ISCE) or (2) due to the miaplpy algorithm itself?
  • If it was due to (1), what should I do to resolve the issue? For the TSX image pre-processing, I applied unpackFrame_TSX.py and stackStripMap.py.
  • Is it possible to adjust the default values of phase linking functions (phase_linking and concatenate_patches) in miaplpyApp.py from the source code in installed folder?

another way to generate this mask is to use temporal coherence. all the coherence values =1 are PS

  • Would you mind suggesting me the functions to perform this process? Thank you!
    (I will try playing with some functions to perform the temporal_coherence_mask first. Hope my progress aligns with yours)

@mirzaees
Copy link
Collaborator

mirzaees commented Oct 14, 2024

Hi @david-ncu2019

If the individual patches have valid mask ps, then there was a problem during concatenate step
I can tell you more if I see the messages output after running concatenate. Also please delete the file before running this step. I don't think there is any problem in either isce or miaplpy but it might be that your run did not complete successfully and when you try running it again, it checks for the file to exist before regenerating it.
I can tell more if I you run and send me output messages
For the temporal coherence you can use mintpy function:
generate_mask.py temporal_coherence_average.tif -m 1 -o maskPS.h5

@david-ncu2019
Copy link
Author

Dear @mirzaees ,

Thank you for your response!

I think I will rerun the phase_linking and concatenate_patches with a very small area to test it again, then provide you the output messages.

@david-ncu2019
Copy link
Author

david-ncu2019 commented Oct 28, 2024

Dear @mirzaees ,

Sorry for my late reply.

I have re-executed the process to get the output messages for each step, from load_data to concatenate_patches. I have attached the output figures and log files for your review.

I would greatly appreciate it if you could take some time to look over them. Thank you very much for your help.


Figure 1 shows the amplitudes of the selected area over time, highlighting a town with buildings and bridges.
slcStack
selected_area

Figure 2 displays the results after running concatenate_patches:
tempCoh_average
tempCoh_full

Even though the selected area shows high values of full and average temporal coherence, the amp_dispersion_index and top_eigenvalues results reveal only a few observable points.
amp_dispersion_index
top_eigenvalues

Eventually, the maskPS shows no point.
maskPS


Here below are the log messages after running phase_linking and concatenate_patches

phase_linking.txt
concatenate_patches.txt

@mirzaees
Copy link
Collaborator

Hi @david-ncu2019
Thanks for sending me your results,
I am suspecting of the minimum number of SHPs you are using for your TSX data. The default value (10) is selected for Sentinel data but for TSX it is probably higher. I suggest you doing an statistical analysis similar to Figure 20 in the paper:
https://www.sciencedirect.com/science/article/pii/S0098300422002400

in your inverted folder there is the phase_series.h5 which contains SHP and the temporal coherence. using the first band (average temporal coherence), select pixels where the average temp coherence is above 0.9 (or 0.98 like the paper) for example and plot the histogram of SHP for those pixels. That plot can tell you what number is better to use as your minimum number of SHPs.

@david-ncu2019
Copy link
Author

Dear @mirzaees,

Thank you very much for your suggestions!

Following your instructions, I analyzed the phase_series.h5 file, plotted the histogram for the average temporal coherence array, and experimented with SHP histograms at various temporal coherence thresholds.

The array shape is (2051, 1478).

Temporal Coherence Threshold Number of Pixels Total Pixels
0.6 289,351 3,031,378
0.65 151,331 3,031,378
0.7 69,880 3,031,378
0.75 27,795 3,031,378
0.8 9,407 3,031,378
0.85 2,884 3,031,378
0.9 634 3,031,378
0.95 75 3,031,378

avgtempcoh_histogram
SHP_histograms

Based on these histograms, it's quite challenging for me to pick a suitable threshold.

I have tried modifying SHP searching window (range=azimuth=30), and PsNumShp=100. The number of points shown up in amp_disp_index and top_eigenvalues did increase, but not significantly, and the maskPS.h5 still showed nothing.

I'd greatly appreciate any guidance or suggestions you might have, just a hint is great for me!

Thank you so much for your time and support!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants