#!/bin/csh ####################################################################################################################################### # # # E N T R E L A C A G E D E S I M A G E S D ' U N E A N I M A T I O N : # # # # # # Utilisation : # # # # $xci/entrelace.01$Z <nom_animationA> <nom_animationR> <premiere> <derniere> [<postfixe>] # # # # # # Principe : # # # # Lorsque qu'une image est diffusee en video (au # # format 'Pal' par exemple), elle est composee d'une # # trame "impaire" et d'une trame "paire" : # # # # IMAGE = (IMPAIRE,PAIRE). # # # # Soit alors une sequence d'images S(n) ; en notant # # 'I(i)' et 'P(i)' les trames impaires et paires de # # l'image 'S(i)', on : # # # # S = [(I(1),P(1)],[(I(2),P(2)],...,[(I(i),P(i)],...,[(I(n),P(n)] # # # # les instants etant : \ / \ / \ / \ / # # \ / \ / \ / \ / # # t+0 t+1 t+i t+n # # # # (ou 't+i' indique l'instant associe a l'image 'S(i)', ou l'on # # suppose que les trames 'I(i)' et 'P(i)' sont calculees pour # # le meme instant 't+i', puiqu'en effet, la notion de trame # # "impaire" et "paire" n'existe pas au niveau des calculs...) # # # # A partir de la on genere une sequence Z(n/2) donnant # # une version entrelacee de S(n) suivant la regle : # # # # Z = [(I(1),P(2)],[(I(3),P(4)],...,[(I(i),P(i+1)],...,[(I(n-1),P(n)] # # # # les instants etant : # # \ /\ / \ /\ / \ /\ / \ /\ / # # t+0 t+1 t+2 t+3 t+i-1 t+i t+n-1 t+n # # # # auquel cas, les trames 'I(i)' et 'P(i+1)' associees a # # l'image 'Z((i+1)/2)' correspondent bien a des instants # # successifs... # # # # # # Author of '$xci/entrelace.01$Z' : # # # # Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). # # # ####################################################################################################################################### set sequenceA=$1 set sequenceR=$2 set premiere=$3 set derniere=$4 set postfixe=$5 set horizontal=VRAI FileTmpB nomI FileTmpB nomP # Generation de noms temporaires pour les "mires" d'entrelacage, # FileTmpB nomTI FileTmpB nomTP # Generation de noms temporaires pour les images intermediaires... # $xci/init$X n=$NOIR $formatI | $xci/entrelace$X R=$nomI horizontal=$horizontal impairs=VRAI $formatI $xci/init$X n=$NOIR $formatI | $xci/entrelace$X R=$nomP horizontal=$horizontal impairs=FAUX $formatI # Generation des mires d'entrelacage. # set liste=`$xci/nombres$X A="$K_VIDE" p=$premiere d=$derniere pas=1` # Recuperation de la liste des images a entrelacer... # set numero=$premiere # Numero des images de la sequence Resultat. # set impaire=$EXIST # Indicateur en bascule permettant de savoir quelles trames on traite, sachant que l'on # # commence sur la trame impaire... # foreach image ($liste) if ($impaire == $EXIST) then # Cas ou la trame courante a generer est "impaire" : # $xci/and$X A1=$sequenceA$image$postfixe A2=$nomI R=$nomTI $formatI # Recuperation des lignes de la trame impaire... # set impaire=$NEXIST # La trame suivante a generer sera "paire". # else # Cas ou la trame courante a generer est "paire" : # $xci/and$X A1=$sequenceA$image$postfixe A2=$nomP R=$nomTP $formatI # Recuperation des lignes de la trame paire... # set Numero=`$xci/nombres$X A="$K_VIDE" p=$numero d=$numero pas=1` # Recuperation de la liste des images a entrelacer... # $xci/or_02$X A1=$nomTI A2=$nomTP R=$sequenceR$Numero$postfixe $formatI # Multiplexage des lignes impaires et paires du couple '$sequenceA' courant... # @ numero = $numero + 1 # Preparation du numero de l'image suivante a generer... # set impaire=$EXIST # La trame suivante a generer sera "impaire". # endif end FileTmpE nomTP FileTmpE nomTI # Nettoyage... # FileTmpE nomP FileTmpE nomI # Nettoyage... #