Principes de fonctionnement de MoreTV (inspiré de la documentation de Taz, Yo Zorglub et Kuhn) :

Ce petit laïus a pour but de comprendre le fonctionnement général de l'algorithme de dé-embrouillage utilisé par MoreTV et les autres logiciels du même genre (un but éducatif donc). Le but n'est pas ici d'expliquer étape par étape, point par point le comment du pourquoi. Aussi, si vous voulez plus de précisions, vous pouvez vous reporter au chapitre «Pour en savoir plus». Si ce texte comporte des erreurs, vous pouvez me le signaler sur  : http://www3.bravenet.com/forum/show.asp?userid=ch84085

Standard de télévision :

En France, pays du SECAM, nous travaillons en 25 images par seconde. Chaque image est formée de deux demi images successives et entrelacées. La technique d'entrelacement consiste à envoyer successivement une première demi image qui ne contient que les lignes paires puis, une seconde ne contenant que les lignes impaires. En tout le nombre de lignes transmises est de 625 avec deux types de lignes. Les lignes visibles de 23 à 310 et de 336 à 623 (ces deux intervalles correspondent à nos deux demi images 2 x 288) et les lignes non visibles (49 lignes) qui vont contenir des informations de synchronisation, de télétexte etc. Donc chaque demi images contient 288 lignes utiles que l'on numérote souvent de 0 à 287.

la table de lien (bind.txt) :

Ce fichier est parfois présent dans certains programmes, sinon il est inclus dans le code comme pour les versions récentes de MoreTV. Il est différent pour chaque carte. En effet ce fichier permet de faire le lien entre le nombre et la place des lignes capturées par la carte TV et les 288 lignes nécessaires au traitement (la méthode peut être différente suivant les cartes, d'où le choix que l'on fait sous MoreTV d'une carte précise)

Procédé d'embrouillage :

Il travail sur les deux demi images ou champ de 288 lignes.

Il procède à une permutation grâce à une table spécifique. Cette table est le fameux fichier key.txt. Il contient 256 lignes, chaque ligne étant un chiffre allant de 0 à 31. Actuellement il n'en existe que deux qui ont été utilisés, le key_level1.txt et le key_level2.txt.

Le choix d'une permutation se fait de la façon suivante : Dans le fichier key.txt, on commence par choisir une ligne parmi les 256 lignes (choix de l'offset) puis on choisit un incrément impair (choix du pas). En parcourant le fichier key.txt de façon circulaire, pour chaque ligne du champ (1ère ligne à 288ème ligne), on lui affecte une position dans un buffer pouvant contenir 32 lignes (ligne 0 à ligne 31).

Comment apparaît l'image brouillée à l'écran : l'arrivée d'une ligne, dans le buffer, à une position donnée va «pousser» à l'écran celle qui s'y trouvait auparavant. Le but étant ensuite de la remettre à la bonne place, bien entendu si l'on possède le bon matériel !

Comme le choix de l'offset peut se faire en 256 endroits différents (1ère ligne, 2, 3, 4,.... 256ème ligne) et que l'incrément (le pas) doit être impair (1, 3, 5, .... 255), on peut donc générer 256 x 128 = 32768 permutations différentes possibles.

le procédé de dé-embrouillage :

Le problème est que l'on ne sait pas comment ont été permutées les lignes. C'est la qu'intervient le fichier key.txt (qui a servi au mélange des lignes). Il va permettre de tester les 32768 possibilités d'embrouillage. Mais comment ? Tout d'abord on choisit un nombre de couple de ligne. Puis, pour chaque couple de ligne, on calcule le «taux de corrélation». C'est à dire, la somme des valeurs absolues de la différence de luminance de chaque pixel des deux lignes. Au plus cette somme est petite, au plus on pourra estimer que les deux lignes sont proches. Et donc que la permutation que l'on teste est la bonne. En effet, souvent dans une image, deux lignes qui se suivent se ressemblent plus que deux lignes fortement éloignées.

Au plus le nombre de couple est important au plus l'incertitude sur le choix de la bonne permutation est faible. Mais un nombre important de couples multiplie les calculs et donc nécessite plus de temps processeur.

Pour reconstituer une demi image permutée il faut prendre les 32 dernières lignes de la première demi image et les 256 premières lignes le la demi image suivante.

Limite du procédé :

Le fait même d'expliquer comment marche l'algorithme, permet de montrer ses limites : Si une image est trop uniforme (pelouse de terrain de foot, générique en fin de film etc.) ou bien si elle contient des symétries verticales (une figure géométrique de couleur uniforme ayant des bords verticaux par exemple des rectangles) alors l'algorithme aura du mal à trouver la bonne permutation et donc l'image «sautera».

P.S. :

le mot frame a ici été traduit par images
le mot field (champ) a ici été traduit par demi images

Pour en savoir plus :

Fichier d'aide de PCTV version 0.98
Fichier d'aide de NagraDec version 0.83
La documentation de Zorglub est en ligne, sur http://www.tu-chemnitz.de/~ukot/
Le fichier de base étant zorglub.zip téléchargeable à l'époque sur http://www.eurosat.com
Le document de Markus G. Kuhn sur http://freepctv.notrix.de/
Enfin les sources des logiciels les fournissant (MoreTV jusqu'à la version 2.83, par exemple)