-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path03-TransformationSpectrales.qmd
91 lines (70 loc) · 3.51 KB
/
03-TransformationSpectrales.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
jupyter: python3
from: markdown+emoji
execute:
echo: true
eval: false
message: false
warning: false
---
# Transformations spectrales {#sec-chap03}
## :rocket: Préambule
Assurez-vous de lire ce préambule avant d'exécutez le reste du notebook.
### :dart: Objectifs
Dans ce chapitre, nous abordons quelques techniques de réhaussement et de visualisation d'images. Ce chapitre est aussi disponible sous la forme d'un notebook Python:
[![](images/colab-badge.svg)](https://colab.research.google.com/github/sfoucher/TraitementImagesPythonVol1/blob/main/notebooks/03-TransformationSpectrales.ipynb){target="_blank"}
### Librairies
Les librairies qui vont être explorées dans ce chapitre sont les suivantes:
* [SciPy -](https://scipy.org/)
* [NumPy -](https://numpy.org/)
* [opencv-python · PyPI](https://pypi.org/project/opencv-python/)
* [scikit-image](https://scikit-image.org/)
* [Rasterio](https://rasterio.readthedocs.io/en/stable/)
* [Xarray](https://docs.xarray.dev/en/stable/)
* [rioxarray](https://corteva.github.io/rioxarray/stable/index.html)
Dans l'environnement Google Colab, seul `rioxarray` et GDAL doivent être installés:
```{python}
%%capture
!apt-get update
!apt-get install gdal-bin libgdal-dev
!pip install -q rioxarray
!pip install -qU "geemap[workshop]"
```
Vérifier les importations:
```{python}
#| eval: true
import numpy as np
import rioxarray as rxr
from scipy import signal
import xarray as xr
import xrscipy
import matplotlib.pyplot as plt
```
### Images utilisées
Nous allons utilisez les images suivantes dans ce chapitre:
```{python}
%%capture
!wget https://github.com/sfoucher/TraitementImagesPythonVol1/raw/refs/heads/main/data/chapitre01/subset_RGBNIR_of_S2A_MSIL2A_20240625T153941_N0510_R011_T18TYR_20240625T221903.tif -O RGBNIR_of_S2A.tif
!wget https://github.com/sfoucher/opengeos-data/raw/refs/heads/main/raster/landsat7.tif -O landsat7.tif
!wget https://github.com/sfoucher/opengeos-data/raw/refs/heads/main/images/berkeley.jpg -O berkeley.jpg
!wget https://github.com/sfoucher/TraitementImagesPythonVol1/raw/refs/heads/main/data/chapitre01/subset_1_of_S2A_MSIL2A_20240625T153941_N0510_R011_T18TYR_20240625T221903_resampled.tif -O sentinel2.tif
```
Vérifiez que vous êtes capable de les lire :
```{python}
#| eval: true
#| output: false
with rxr.open_rasterio('berkeley.jpg', mask_and_scale= True) as img_rgb:
print(img_rgb)
with rxr.open_rasterio('RGBNIR_of_S2A.tif', mask_and_scale= True) as img_rgbnir:
print(img_rgbnir)
with rxr.open_rasterio('sentinel2.tif', mask_and_scale= True) as img_s2:
print(img_s2)
```
## Qu'est ce que l'information spectrale?
L'information spectrale touche à l'exploitation de la dimension spectrale des images (c.à.d le long des bandes spectrales de l'image). La taille de cette dimension spectrale dépend du type de capteurs considéré. Un capteur à très haute résolution spatiale par exemple aura très peu de bandes (4 ou 5). Un capteur multispectral pourra contenir une quinzaine de bande. À l'autre extrême, on trouvera les capteurs hyperspectraux qui peuvent contenir des centaines de bandes spectrales.
## Indices spectraux
Il existe une vaste littérature sur les indices spectraux, le choix d'un indice plutôt qu'un autre dépend fortement de l'application visée, nous allons simplement couvrir les principes de base ici.
Le principe d'un indice spectral consiste à mettre en valeur certaines caractéristiques du spectre comme des pentes, des gradients, etc.
## Réduction de dimension
### Analyses en composantes principales
## Exercices de révision