Script d'application des courbes ACV, sous licence CECILL-B (voir LICENSE.md).
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
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
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:
- IB_18.0.acv avec le masque IB_18.0.5.psb
- bde5_2449_2455.0.acv sur le masque bde5_2449_2455.0.3.psb
- bde5_2449_2455.1.acv sur le masque bde5_2449_2455.1.3.psb
- bde5_2451_2453.0.acv sur le masque bde5_2451_2453.0.1.psb
- bde5_2452.0.acv sur le masque bde5_2452.0.0.psb
- 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:
- une courbe qui s'applique sur les 3 canaux
- une courbe pour le R
- une courbe pour le V
- 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)
Script de création des lignes de command pour Apply_ACV
Le script utilise un environnement python basique.
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.
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.
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.