Skip to content

ign-packo/Apply_ACV

Repository files navigation

Apply_ACV

Script d'application des courbes ACV, sous licence CECILL-B (voir LICENSE.md).

Pré-requis

Le script utilse: gdal, numpy et scipy + pylint, flake8 pour la vérification du code pytyhon. On peut créer un environnement conda avec la commande:

conda create --name apply_acv --file requirements.txt

Utilisation

Six paramètres:

  • l'image et les courbes que l'on doit y appliquer
  • le dossier qui contient les images à corriger
  • le dossier de sortie des traitements (par défaut les images corrigées portent le même nom que les images en entrée)
  • le dossier contenant les courbes à appliquer (au format acv) et les masques correspondant (dans un format compatble avec GDAL)
  • le nombre de lignes par bloc de calcul (option, par défaut : 1000)
  • la compression à appliquer aux images JPEG en sortie (optionnel, par défaut 100: pas de compression)

Par exemple:

python -c "init.tif,Courbe_de_rehaussement.acv,,bde5_2452.0.acv,bde5_2452.0.0.psb" -i data -o . -a data\liste_reglages

Il y a un script qui permet de comparer deux images (3 canaux 8 bits) et d'exporter une image des différences s'il y en a:

Par exemple:

python test_diff.py init.tif data/ref.tif

Doc technique

L'ordre d'application des courbes dans le fichier texte est de droite à gauche. C'est-à-dire que sur l'exemple data/liste_reglages.txt, on applique:

  1. IB_18.0.acv avec le masque IB_18.0.5.psb
  2. bde5_2449_2455.0.acv sur le masque bde5_2449_2455.0.3.psb
  3. bde5_2449_2455.1.acv sur le masque bde5_2449_2455.1.3.psb
  4. bde5_2451_2453.0.acv sur le masque bde5_2451_2453.0.1.psb
  5. bde5_2452.0.acv sur le masque bde5_2452.0.0.psb
  6. Courbe_de_rehaussement.acv sans masque

Comme les fichiers PSB ne sont pas lisibles par GDAL on suppose qu'ils ont été transformé en TIF (on remplace l'extension).

Dans chaque fichier ACV, il y a 4 courbes:

  1. une courbe qui s'applique sur les 3 canaux
  2. une courbe pour le R
  3. une courbe pour le V
  4. une courbe pour le B

Il faut commencer par appliquer la courbe spécifique à chaque canal PUIS la courbe 0.

Pour interpoler les niveaux sur une courbe, il faut utiliser un spline comme condition limite la dérivée seconde à zéro:

# natural spline boundary conditions
order, value = ([(2, 0)],[(2, 0)])  
fct = make_interp_spline(courbe[::2], courbe[1::2], k=3, bc_type=(order, value)

Pour obtenir un résultat identique à PhotoShop il faut faire attention aux arrondis, schématiquement:

Corr = Round(Masque/255 * Round(Lut(Init)) + (255-Masque)/255 * Init)

Create_cmd

Script de création des lignes de command pour Apply_ACV

Pré-requis

Le script utilise un environnement python basique.

Utilisation

usage: create_cmd.py [-h] -i INPUT -o OUTPUT -c CURVE -a ACV [-f FILE] [-b BLOCKSIZE] [-p PROJECTION] [-q QUALITY] [-v VERBOSE] [--version]

options:
  -h, --help            show this help message and exit
  -i INPUT, --input INPUT
                        input image data folder path
  -o OUTPUT, --output OUTPUT
                        output data folder path
  -c CURVE, --curve CURVE
                        param file for images and curves
  -a ACV, --acv ACV     folder path containing acv files and masks
  -f FILE, --file FILE  output file path containing command lines (default: ./cmd.txt)
  -b BLOCKSIZE, --blocksize BLOCKSIZE
                        number of lines per block (default: 1000)
  -p PROJECTION, --projection PROJECTION
                        EPSG code for output files projection (if needed)
  -q QUALITY, --quality QUALITY
                        JPEG compression quality (default: 90)
  -v VERBOSE, --verbose VERBOSE
                        verbose (default: 0)
  --version             display version information and exit

Par exemple :

python create_cmd.py -i data -o . -c data\liste_reglages.txt -a data\liste_reglages

Exemple en spécifiant le nom du fichier de sortie :

python create_cmd.py -i data -o . -c data\liste_reglages.txt -a data\liste_reglages -f .\out.txt

Le fichier de sortie contiendra l'information sur la version utilisée pour sa création.

Création du paquet pip - développeur

Pour générer un paquet pip apply_acv-XXX.whl, il suffit de se mettre dans le dossier des sources et faire :

python setup.py bdist_wheel

Le paquet whl généré se trouve dans le dossier dist/, paquet à distribuer aux utilisateurs.

Installation du paquet pip - utilisateur

Pour installer un paquet whl, se placer dans le dossier où il se trouve et ensuite faire :

pip3 install apply_acv-XXX.whl

Si besoin, désinstaller une version précédemment installée avec :

pip3 uninstall apply_acv

Une fois l'installation du paquet effectuée, s'assurer que le répertoire contenant les scripts du paquet est bien dans le PATH.

IGN

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages