Interpreting the Scatter Coefficients

50 views
Skip to first unread message

Max

unread,
Oct 20, 2022, 4:54:44 PM10/20/22
to PyWavelets
I have been reading about scatter coefficients and I am not sure how to read the scatter coefficients with the right order. There should be only one coefficient in 0th order but when I print shape of 0th order coefficients there are two arrays, 1st order there are 6 arrays and so on.. I don't know how to interpret the coefficients with the generally understood convention. Can someone please help? Thanks!
(I'm using pywt.wavedec2, 'haar' to get the coefficients)

Screen Shot 2022-10-20 at 1.49.49 PM.png

Deepu

unread,
May 22, 2023, 2:12:53 AM5/22/23
to PyWavelets
When using `pywt.wavedec2` with the 'haar' wavelet, the scatter coefficients are organized into subbands, and the number of subbands depends on the number of decomposition levels. Each subband corresponds to a specific order in the scattering transform.

The scatter coefficients can be interpreted as follows:

- 0th order: It represents the low-frequency approximation coefficients obtained after the first level of decomposition. In the case of the 'haar' wavelet, there is only one low-frequency approximation subband (LL).

- 1st order: It represents the detail coefficients obtained after the first level of decomposition. For the 'haar' wavelet, there are four high-frequency detail subbands (LH, HL, HH1, HH2). These subbands capture different directional and scale information.

- 2nd order: It represents the detail coefficients obtained after the second level of decomposition. For each high-frequency detail subband from the 1st order, you get three additional subbands: LH, HL, HH. This gives a total of six subbands.

The number of subbands doubles with each subsequent order. So, for the 'haar' wavelet, the number of subbands at each order follows the pattern: 1, 4, 6, 12, 24, and so on.

When you print the shape of the scatter coefficients, you will see multiple arrays because each subband is stored as a separate array. To access the coefficients in the desired order, you can iterate through the arrays accordingly.

Here's an example to access the scatter coefficients of the 'haar' wavelet using `pywt.wavedec2`:

```python
import pywt

image = ...  # Your input image
coeffs = pywt.wavedec2(image, wavelet='haar', level=2)

# Accessing 0th order coefficients
LL2 = coeffs[0]  # Low-frequency approximation at 2nd level

# Accessing 1st order coefficients
LH1, HL1, HH11, HH12 = coeffs[1]  # High-frequency details at 1st level

# Accessing 2nd order coefficients
LH2, HL2, HH21, HH22 = coeffs[2]  # High-frequency details at 2nd level

# Accessing 3rd order coefficients (assuming level=3)
LH3, HL3, HH31, HH32, LH2LH3, LH2HL3, LH2HH31, LH2HH32, HL2LH3, HL2HL3, HL2HH31, HL2HH32 = coeffs[3]

# And so on...
```

You can continue this pattern to access the scatter coefficients at higher orders.

Keep in mind that the number of arrays and their specific order may vary depending on the wavelet used and the number of decomposition levels.

I hope this clarifies how to interpret and access the scatter coefficients using the 'haar' wavelet. Let me know if you have further questions!
Reply all
Reply to author
Forward
0 new messages