Performances des dictionnaires structurés pour le codage

Performances des dictionnaires structurés pour le codage

Performances de codage Utiliser les représentations parcimonieuses dans un contexte de codage revient à coder et transmettre pour chaque bloc de l’image test un certain nombre, selon la parcimonie appliquée pour chaque bloc, de paires coefficient/indice issues de la décomposition sur les dictionnaires. De plus, la valeur moyenne de chaque bloc étant retirée en amont de la décomposition, ces valeurs moyennes doivent également être codées.

Dans cette section, ces trois entités vont être codées pour chaque bloc de mani`ere relativement simple dans le but de comparer les différentes structures de dictionnaires dans le cadre de la compression.

Description du codeur initial non optimisé Les coefficients sont tout d’abord quantifiés par une quantification scalaire uniforme à zone morte. La zone morte permet de mettre à zéro des coefficients trop faibles et donc peu significatifs. La quantification suit ainsi la formule suivante : xˆ = round ( x Q ) (4.1) avec ˆx l’index de quantification du coefficient x, Q le pas de quantification et round la fonction d’arrondi à l’entier le plus proche. Le coefficient quantifié ˜x, reconstruit apr`es quantification inverse, est simplement obtenu par une multiplication de l’index de quantification par le pas de quantification : x˜ = ˆx × Q (4.2)

De cette fa¸con, tous les coefficients dans la zone morte définie par l’intervalle ] − Q 2 ; Q 2 [ sont mis à zéro par la quantification, et ne seront pas codés. Les indices de quantification ˆx non nuls sont ensuite placés à la suite sous la forme d’une séquence. Pour chaque bloc, ils sont placés dans l’ordre des niveaux (dans la structure) des atomes auxquels ils correspondent pour les dictionnaires structurés, et dans l’ordre des indices des atomes correspondant pour les dictionnaires “plats”, sans ’0’ intermédiaires dans la séquence. Chaque bloc est terminé par un code “EOB” (End Of Block). Cette séquence est alors codée pas un codage entropique de Huffman similaire à celui réalisé au sein de JPEG pour les coefficiens AC.

La même table usuelle est utilisée, à la différence pr`es que seule la premi`ere partie de la table correspondant à un run de zéro ’0’ est utile, étant donné que la séquence ne contient aucune valeur nulle. Ainsi, chaque indice de quantification de coefficient ˆx est codé via deux symboles : le premier est un code de Huffman, contenant les informations runlength (nombre de 0 précédents) et size (taille du second symbole), et le second est un code à longueur variable contenant l’information d’amplitude (voir section 2.1.1.3).

Les indices des atomes sont quant à eux représentés par un code à longueur fixe de R bits pour chaque indice avec : R = log2(K) (4.3) Performances de codage 109 o`u K correspond au nombre d’atomes de chaque dictionnaire au sein des dictionnaires structurés, ou au nombre d’atomes de l’unique dictionnaire pour les dictionnaires “plats”. Enfin, chaque valeur de moyenne de bloc est arrondie à l’entier le plus proche et codée sur 8 bits, cette valeur étant comprise pour une image 8 bits entre 0 et 255.

LIRE AUSSI :  Le dispositif de FAD, population cible et échantillon d’étude

Comparaison des différentes structures

La décomposition et le codage sont réalisés séparément. La décomposition est d’abord effectuée sur les différentes structures de dictionnaires pour une parcimonie de 10 atomes, ce qui représente le nombre maximal d’atomes pouvant être codés pour chaque bloc. Les structures apprises sur 10 niveaux pour le chapitre 3, ainsi que les dictionnaires K-SVD appris pour une parcimonie de 10 atomes, peuvent de cette fa¸con être utilisés. Puis les coefficients sont quantifiés et codés, ainsi que les indices et les valeurs moyennes des blocs.

Les courbes débit-distorsion sont obtenues en faisant varier le pas de quantification Q. En plus de permettre une quantification plus précise, diminuer le pas permet de diminuer la taille de la zone morte afin de quantifier moins de coefficients à zéro et donc de coder davantage de coefficients (avec une limite fixée à 10) pour atteindre une meilleure qualité de représentation. Le pas de quantification permet ainsi de réguler le nombre d’atomes codés pour chaque bloc. En effet, pour les dictionnaires “plats”, seuls les coefficients non quantifiés à zéro sont codés.

Pour les dictionnaires structurés, le codage des coefficients d’un bloc, traités dans l’ordre niveau apr`es niveau en partant du premier, est arrêté d`es qu’un coefficient est mis à zéro par la quantification afin de ne pas coder de coefficient nul, en considérant que les coefficients suivants sont peu significatifs. En effet, les coefficients sont en général de moins en moins importants. Il est cependant possible qu’un (voire plusieurs) des coefficients suivants ne soit pas mis à zéro par la quantification. Ce dernier n’est alors pas codé puisqu’on ne souhaite pas coder de coefficient nul, et surtout l’indice associé, pour pouvoir coder ce coefficient suivant non nul.

Comme pour les tests en fonction de la parcimonie, réalisés lors du chapitre précédent, un premier constat permet d’apprécier le gain apporté par des dictionnaires appris vis- à-vis du dictionnaire DCT prédéfini (Fig. 4.1-4.3). De plus, K-SVD et Sparse K-SVD (avec une parcimonie de 32 valeurs non nulles sur les atomes du dictionnaire appris) permettent d’obtenir des résultats de codage quasiment identiques

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *