How SNAPHU uses the number of looks

Varying the number of looks parameter in SNAPHU has a surprisingly large effect on the output, especially the connected component output. Why is that?

There’s two stages, which seem simple, even though I can’t actually map them to a single equation in the referenced paper [1].

  1. Calculate a $\rho_0$:

\(\rho_0 = \frac{c_1}{L} + c_2\) where $c_1 = 1.3, c_2 = 0.14$ are constants (whose defaults in SNAPHU I’m using here) and $L$ is the number of looks (probably the effective number of SAR looks).

Then using this value, from the full configuration manual

Values smaller than the threshold rhominfactor*rho0 are assumed to come from zero statistical correlation because of estimator bias (double).

So using the default in isce3’s snaphu min_corr_factor=1.25, correlation values smaller than \(1.25 \cdot (\frac{c_1}{L} + c_2)\) are assumed to indicate pixels which contain pure noise. Here’s what this threshold is for looks up to 50:

So we see that if your correlation value hits 0.2, SNAPHU is treating it as equal to 0 correlation.


My go-to for weird unwrapping things is the UAVSAR Sacramento Delta example:

This is the phase, correlation, and histogram of correlation.

Unwrapping the interferogram with looks ranging from 5 to 50 gives this:

If we use the curve above to see which regions are ignored as 0 correlation for different input look numbers:

Comparing the two, it’s not obvious where you’ll get connected components just from looking at the masked regions. Worse still, you would have no chance of guessing where the connected components will be placed from the unwrapped phase alone (which looks mostly the same for all 5 cases).


  1. [[@Touzi1999CoherenceEstimationSAR]]