#!/bin/csh
#######################################################################################################################################
# #
# T R A I T E M E N T " A N T I - A L I A S I N G " D ' U N I M A G E E N V R A I E S C O U L E U R S #
# P A R C O N V O L U T I O N " V A R I A B L E " L A O U L E G R A D I E N T E S T F O R T : #
# #
# #
# Utilisation : #
# #
# $xci/anti_alia.11$Z <imageA> <imageR> [<imageL> [<PointsG> [<PointsGC> [<Facteur> [<Transfert> [<Forme> [<Valeur>]]]]]]] #
# #
# par defaut : #
# #
# $xci/anti_alia.11$Z <imageA> <imageR> <imageA> 81 25 0.1 1.0 $BLANC $BLANC #
# #
# #
# Nota : #
# #
# Malheureusement, cette methode ajoute un #
# leger flou sur l'image Resultat... #
# #
# #
# Author of '$xci/anti_alia.11$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). #
# #
#######################################################################################################################################
set nomA=$1
set nomR=$2
set nomL=$3
set PointsG=$4
set PointsGC=$5
set Facteur=$6
set Transfert=$7
set Forme=$8
set Valeur=$9
if ("$nomL" == "$K_VIDE") then
#20111214171448____: set nomL=$nomA #
SET1s nomL = $nomA
# Image dont on va utiliser le gradient de la luminance pour convoluer. #
# Argument. #
else
endif
setArgum PointsG 81
# Nombre de points du noyau destine a calculer le gradient de la luminance de l'image #
# Argument. #
setArgum PointsGC 25
# Nombre de points du noyau destine a convoluer le gradient de la luminance. #
setArgum Facteur 0.1
# Facteur multiplicatif destine a passer en chaque point (X,Y) du gradient convolue de #
# la luminance au nombre de points du noyau de convolution d'anti-aliasing. Augmenter cette #
# valeur (a 1.0 par exemple) augmente tout simplement le flou...). #
setArgum Transfert 1.0
# Exposant de la fonction de transfert du cumul de convolution (1.0 est la valeur neutre). #
# ATTENTION, cette methode a malheureusement des effets pervers : par exemple, la convolution #
# "unite" (ne portant que sur un seul point) qui devrait laisser inchangee les niveaux, les #
# modifie lorsque le parametre '$Transfert' n'est pas egal a 1 ; cela fait donc perdre du #
# contraste aux images (d'ou la valeur 1.0 par defaut, et non plus 0.5...). #
if ("$Forme" == "$K_VIDE") then
#AAAAMMJJhhmmss____: set Forme=$xiio/BLANC #
FileTmpB Forme
$xci/init$X niveau=$BLANC R=$Forme $formatI
# Choix de l'image definissant la forme du noyau de convolution. Il y a differents choix #
# interessants, et en particulier : #
# #
# $xiio/BLANC : noyau carre, #
# $xiio/GAUSS.8??? : noyau circulaire, #
# $xiit/RANDOM.11 : noyau aleatoire. #
# #
else
endif
if ("$Valeur" == "$K_VIDE") then
#AAAAMMJJhhmmss____: set Valeur=$xiio/BLANC #
FileTmpB Valeur
$xci/init$X niveau=$BLANC R=$Valeur $formatI
# Choix de l'image definissant la valeur des elements du noyau de convolution. La valeur par #
# defaut definie un noyau uniforme... #
else
endif
FileTmpB nomT
# Creation d'un nom temporaire... #
$xci/luminance.01$X AR=$nomL$ROUGE AV=$nomL$VERTE AB=$nomL$BLEUE $formatI \
| $xci/gradient.01$X points=$PointsG $formatI \
| $xci/convol.01$X points=$PointsGC R=$nomT $formatI
# Calcul de la luminance de l'image Argument, dont on calcule ensuite le gradient, qui est #
# lui-meme convolue afin d'arrondir ses angles... #
$xci/convol.02$X A=$nomA$ROUGE \
N=$nomT Facteur=$Facteur F=$Forme V=$Valeur transfert=$Transfert \
renormaliser=FAUX \
messages=FAUX \
R=$nomR$ROUGE $formatI
# Traitement anti-aliasing de la composante ROUGE. #
$xci/convol.02$X A=$nomA$VERTE \
N=$nomT Facteur=$Facteur F=$Forme V=$Valeur transfert=$Transfert \
renormaliser=FAUX \
messages=FAUX \
R=$nomR$VERTE $formatI
# Traitement anti-aliasing de la composante VERTE. #
$xci/convol.02$X A=$nomA$BLEUE \
N=$nomT Facteur=$Facteur F=$Forme V=$Valeur transfert=$Transfert \
renormaliser=FAUX \
messages=FAUX \
R=$nomR$BLEUE $formatI
# Traitement anti-aliasing de la composante BLEUE. #
FileTmpE nomT
FileTmpE Forme
FileTmpE Valeur
# Puis destruction des images temporaires... #