Besoin d'aide pour la compression d'images

Fermé
karn - 10 janv. 2004 à 00:18
 ludal - 10 janv. 2004 à 16:59
je suis en 1ere et je commence actuellement un tpe (gros expose) sur la compression d'images mais je but sur la formule de la dct (transformation discrete par cosinus).je sais a quoi correspondent les variables mais je ne connais pas la signification de cette double somme donc si qqun a une forme simplifie ou se sent de m'aider ca serait tres sympa.

la formule ici: http://donut.99.free.fr/En-vrac/tipe/dct.htm

4 réponses

Salut,

La double somme dont tu parles (les bij) est simplement un produit scalaire, mais en dimension 64 (dans le cas de la DCT sur une image 8*8).

Donc chaque bij est le résultat d'un produit scalaire entre le vecteur A (= le bloc 8*8 de l'image) et un vecteur d'une base de Fourier discrète dont les coordonnées sont Fij(k,l) = cos( (2k+1)i.pi/2N )*cos( (2l+1)j.pi/2N )

Les vecteurs sont 'dessinés' dans le tableau (les damiers) de la page que tu as indiquée. cad chaque dessin correspond à un vecteur vij pour une valeur de i et j entre 0 et 7; Chaque dessin est une grille 8*8; la valeur d'un pixel est donnée par Fij(k,l) pour le point (k,l) de la grille.

Par exemple le vecteur en haut à gauche correspond à i=0 j=0 soit pour tout les k et l : Fij(k,l)=1 ( représenté par un carré blanc )

Il se trouve que les Fij forment une base orthogonale. La DCT est donc simplement un changement de base, les bij étant les coordonnées de l'image A dans cette nouvelle base.

La forme simplifiée de la formule c'est donc bij = A * Fij (avec *=produit scalaire)

voila en espérant que ca t'aide...
0
blux Messages postés 24897 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 mars 2023 3 317
10 janv. 2004 à 06:25
Salut,

y'a un très bon article dans LOGIN: du mois de Janvier sur la compression d'image...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
merci ludal pour ta reponse, tu as l'air effectivment de t'y connaitre , le seul prob c que je ne comprends pas ce que tu m'explique, je ne sais d'abord pas ce que viennent faire les produits scalaire dans l'histoire(je sais que c'es pas evident d'expliquer ce genre de chose) donc si tu es d'accord j'aurais bien aime que l'on se recontre par msn ou ce que tu veux de facon a ce que je puisse mieux comprendre si tu m'explique en direct.
0
Salut,

MSN ca va pas être possible; j'ai pas de windows et même si des clients MSN existent sur linux je ne suis pas près de me créer un compte sur .NET. IRC ;e parait le plus simple si tu connais un serveur et channel approprié je te propose demain vers 15/16h

En attendant,
la formule du produit scalaire dans le plan c'est : v1.v2 = x1*x2+y1*y2
Dans un espace plus grand (N dimensions) ca se généralise :
si v1 = (x1,x2,...,xN) et v2=(w1,w2,...,wN) (les coordonnées des vecteurs)
alors v1.v2 = x1*w1+x2*w2+...+xN*wN

Ici nos vecteurs sont des images 8*8; leurs coordonnées en tant que vecteurs sont A = ( a00, a01, ..., a07, a10, ... a17, ..., a77 ) ( cad 64 coordonnées )
La différence avec la formule au dessus c'est qu'on prend deux indices i,j pour représenter une coordonnée pour marquer le fait que la coordonnée i,j d'un vecteur (une image) est la valeur de ce point.

Si tu as fait un peu de géométrie dans le plan ou dans l'espace un produit scalaire doit pouvoir te parler un peu ;). Par contre je ne suis pas étonné que tu aies des problèmes à comprendre vu que j'ai apris ca en math sup.
0