#!/bin/csh
#######################################################################################################################################
# #
# A C C E S A V E C L I S S A G E D ' U N E I M A G E : #
# C O N V E R S I O N " S T A N D A R D --> F L O T T A N T E " D ' U N E #
# I M A G E E N F A U S S E S C O U L E U R S A V E C L I S S A G E : #
# #
# #
# Utilisation : #
# #
# $xci/acces_lis.11$Z <imageA standard> <imageR flottante> [<attenuation> [<Points7> ... [<Points0>]]]]]]]]] #
# #
# #
# Author of '$xci/acces_lis.11$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). #
# #
#######################################################################################################################################
set nomA=$1
set nomR=$2
set attenuation=$3
set Points7=$4
set Points6=$5
set Points5=$6
set Points4=$8
set Points3=$9
set Points2=$10
set Points1=$11
set Points0=$12
# Comme on peut le voir sur l'image 'v $xiirc/JULI.b1.0114$ROUGE' par exemple, il peut #
# etre souhaitable de temps en temps de faire que les '$Points?' ne varient pas comme #
# des carres strictement. Par exemple pour ce qui est de l'image precedemment citee, on #
# aura interet a prendre : #
# #
# Points7=009 #
# #
# et '$Points6' a '$Points0' ayant les valeurs calculees ci-apres, c'est-a-dire : #
# #
# {009,025,049,081,121,169,225} #
# #
set nomPb=$xiP/bits
set nomPp=$xiP/plan
#AAAAMMJJhhmmss____:set nomP=$nomPp #
set nomP=$nomPb
# Nom de la palette d'extraction des differents bits... #
if ("$attenuation" == "$K_VIDE") then
if ("$nomP" == "$nomPb") then
set attenuation=1
# Dans le cas de '$xiP/bits' la ponderation (les puissance de 2) sont contenues dans le #
# resultat de l'extraction par definition de '$xiP/bits'. #
else
endif
if ("$nomP" == "$nomPp") then
set attenuation=0
# Dans le cas de '$xiP/plan' il faut restaurer une pseudo-ponderation des plans (l'equivalent #
# des puissance de 2 finalement...) puisque l'extraction par '$xiP/plan' donne a priori du #
# '$BLANC'. #
else
endif
else
endif
set Coef1n=2
set Coef0n=1
# Definition des coefficients du polynome du premier degre definissant le passage du #
# numero 'NuMeRo' a la variable du polynome du second degre qui suit. La variable #
# '$PoInTs1D' sera donc definie par : #
# #
# PoInTs1D = (($Derniere - $NuMeRo) * $Coef1n) + $Coef0n #
# #
set Coef2P=1
set Coef1P=0
set Coef0P=0
# Definition des coefficients du polynome du second degre definissant la taille des noyaux #
# de convolution. La variable '$PoInTs2D' sera donc definie par : #
# #
# PoInTs2D = ((($Coef2P * $PoInTs1D) + $Coef1P) * $PoInTs1D) + $Coef0P #
# #
alias Gcoeff 'set NoM=\!:1 ; set NuMeRo=\!:2 ; \\
@ PoInTs1D = (($Derniere - $NuMeRo) * $Coef1n) + $Coef0n ; \\
@ PoInTs2D = ((($Coef2P * $PoInTs1D) + $Coef1P) * $PoInTs1D) + $Coef0P ; \\
eval "set TeSt=$K_DOLLAR$NoM" ; \\
if ("$TeSt" == "$K_VIDE") eval "set $NoM=$PoInTs2D" ; \\
unset NoM NuMeRo PoInTs1D PoInTs2D TeSt'
# Procedure de generation des nombres de points des differents noyaux de convolution. #
set Premiere=0001
set Derniere=0008
Gcoeff Points0 $Premiere
Gcoeff Points1 0002
Gcoeff Points2 0003
Gcoeff Points3 0004
Gcoeff Points4 0005
Gcoeff Points5 0006
Gcoeff Points6 0007
Gcoeff Points7 $Derniere
# Generation des nombres de points des differents noyaux de convolution, ou '$Points7' #
# correspond aux poids forts (2 puissance 7) et '$Points0' aux poids faibles (2 puissance 0). #
set nomT=$xT/`Genom4`
# ATTENTION, c'est 'Genom4' et non point 'genom' qui est utilise afin de limiter la longueur #
# des noms de fichier crees ci-apres... #
alias substit 'set PlAn=\!:1 ; \\
$xci/substitue$X A=$nomA p=$nomP$K_sepP$PlAn substitution=L_SUBSTITUTION_ROUGE R=$nomT$K_sepP$PlAn $formatI ; \\
unset PlAn'
# Procedure d'extraction des 8 plans de bits... #
substit 01
substit 02
substit 04
substit 08
substit 10
substit 20
substit 40
substit 80
# Extraction des 8 plans de bits... #
alias convol 'set PlAn=\!:1 ; set PoInTs=\!:2 ; set NuMeRo=\!:3 ; \\
$xci/acces$X A=$nomT$K_sepP$PlAn convertir=VRAI $formatI | \\
$xci/convol.01$X standard=FAUX points=$PoInTs noyau_carre=FAUX R=$nomT$K_sepP$NuMeRo $formatI ; \\
unset PlAn NuMeRo PoInTs'
# Procedure de filtrage des 8 plans de bits... #
convol 01 $Points0 $Premiere
convol 02 $Points1 0002
convol 04 $Points2 0003
convol 08 $Points3 0004
convol 10 $Points4 0005
convol 20 $Points5 0006
convol 40 $Points6 0007
convol 80 $Points7 $Derniere
# Convolution des 8 plans de bits en convoluant beaucoup les bits de poids faible et tres #
# peu les bits de poids fort. #
$xci/accumule.01$X A=$nomT$K_sepP premiere=$Premiere derniere=$Derniere standard=FAUX attenuation=$attenuation R=$nomR $formatI
$DELETE $nomT$K_sepP??
$DELETE $nomT$K_sepP????
# Puis grand nettoyage... #