#!/bin/csh
#######################################################################################################################################
# #
# D E T O U R A G E E N N O I R D ' U N E I M A G E E N V R A I E S C O U L E U R S : #
# #
# #
# Utilisation : #
# #
# $xci/detourage.13$Z <imageA> <imageR> [<Sgradient> [<Sfiltre> [<EtLogique> [<MessageErr> [<Conv> [<FConv> [<Dil> [<NDil>]]]]]]]] #
# . #
# /|\ #
# | #
# ------------ "3" parce que travaille sur les trois composantes (ROUGE, VERTE et BLEUE) #
# #
# #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# * * * ** * * * * * ** * #
# * * * * * * * * * * * * * * * #
# * * * * * * * * * * * * * #
# * * * * * * * * * * * * * * * #
# * * * * * * * * * * * * * * * #
# * * * * * * * * * * * * * * * * * #
# * * * * * * * * * * * * * #
# * * * * * * * * * * * * * * * #
# * * * * ** * * * * * ** #
# * * * * * * * * * * * * * * * * * * * * * * #
# #
# #
# ATTENTION : #
# #
# A compter du 20060606145534, il est #
# preferable d'utiliser 'v $xci/detourage.23$Z' #
# qui est plus general et moins restrictif... #
# #
# #
# Author of '$xci/detourage.13$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). #
# #
#######################################################################################################################################
set nomA=$1
set nomR=$2
set Sgradient=$3
set Sfiltre=$4
set EtLogique=$5
set MessageErr=$6
# Parametre introduit le 20050920185006... #
set Convoluer=$7
set FConvol=$8
# Parametres introduits le 20091202094132... #
set Dilater=$9
set NDilater=$10
# Parametres introduits le 20140814101720... #
setArgum Sgradient 28
setArgum Sfiltre 80
setArgum EtLogique $EXIST
# Permet de choisir entre '$xci/and$X' ('$EXIST') et '$xci/multi_02.01$X' ('$NEXIST'), #
# l'avantage de '$xci/and$X' etant de conserver les couleurs de l'image Argument... #
# Ce choix a ete introduit le 19970725175500, sachant que dans les versions anterieures #
# il faut considerer qu'il etait a l'etat '$NEXIST' puisque seul '$xci/multi_02.01$X' etait #
# utilise... #
setArgum MessageErr $EXIST
setArgum Convoluer $NEXIST
setArgum FConvol `GetParam $xci/convol.02$X facteur_points`
setArgum Dilater $NEXIST
# Parametre introduit le 20140814101720 et dont la valeur par defaut assure la compatibilite #
# anterieure... #
setArgum NDilater `GetParam $xci/dilate.01$X points`
FileTmpB nomT
# Generation d'un nom temporaire... #
execRVB $xci/gradient.01$X A=$nomA%s R=$nomT%s $formatI
# Calcul du gradient pour chacune des trois composantes de l'image vraies couleurs Argument. #
if ( ("$formatI" == "$format_Suq") \
|| ("$formatI" == "$format_Sud") \
|| ("$formatI" == "$format_Std") \
|| ("$formatI" == "$format_Sdu") \
) then
$xci/gauss$X R=$nomT$W $formatI
# Generation systematique d'un champ gaussien du type 'v $xiio/GAUSS.8110' ; en effet, on ne #
# peut utiliser cette derniere image que si on est en mode 'Suq', 'Sud', 'Std' ou 'Sdu' #
# (c'est-a-dire en format "carre" de dimension lineaire egale a une puissance de 2). #
$xci/maximum$X A1=$nomT$ROUGE A2=$nomT$VERTE $formatI \
| $xci/maximum$X A2=$nomT$BLEUE $formatI \
| $xci/seuil$X seuil=$Sgradient $formatI \
| $xci/complement$X $formatI \
| $xci/filtre.01$X N=$nomT$W seuil=$Sfiltre $formatI \
| $xci/acces$X R=$nomT $formatI
# Calcul du maximum des trois gradients que l'on seuille, puis que l'on complemente, puis #
# qu'enfin on filtre... #
else
if ($MessageErr == $EXIST) then
# Test introduit le 20050920185006 et permettant de supprimer le message qui suit... #
EROR "Les seuls formats d'image reconnus par le programme '"'$xci/filtre.01$X'"' sont \c"
ECHO "{Suh,Suq,Sud,Std,Sdu} (carree et puissance de 2), ce programme ne peut donc etre utilise."
else
endif
$xci/maximum$X A1=$nomT$ROUGE A2=$nomT$VERTE $formatI \
| $xci/maximum$X A2=$nomT$BLEUE $formatI \
| $xci/seuil$X seuil=$Sgradient $formatI \
| $xci/complement$X $formatI \
| $xci/acces$X R=$nomT $formatI
# Calcul du maximum des trois gradients que l'on seuille, puis que l'on complemente. #
endif
if ($EtLogique == $EXIST) then
execRVB $xci/and$X A1=$nomA%s A2=$nomT R=$nomR%s $formatI
else
execRVB $xci/multi_02.01$X A1=$nomA%s A2=$nomT R=$nomR%s $formatI
endif
# Et enfin detourage la ou le gradient est fort... #
if ($Convoluer == $EXIST) then
$xci/complement$X A=$nomT R=$nomT $formatI
if ($Dilater == $EXIST) then
$xci/dilate.01$X A=$nomT points=$NDilater R=$nomT $formatI
# Introduit le 20140814101720 afin de pouvoir elargir la zone de convolution '$nomT' et #
# ainsi pouvoir convoluer de part et d'autre du detourage... #
else
endif
execRVB $xci/convol.02$X A=$nomR%s N=$nomT V=$BLANC F=$BLANC R=$nomR%s fp=$FConvol mncv=FAUX $formatI
# Et enfin convolution fonction du gradient inverse (introduit le 20091202094132)... #
else
endif
FileTmpE nomT
# Puis destruction des images de manoeuvre... #