A voir également:
- Besoin d'aide pour la compression d'images
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image de manchots sur une image de plage. retrouvez l'image originale de la plage. que cachent les manchots ? ✓ - Forum Windows
- Visualisez cette image avec un logiciel d'édition d'images. combien y a-t-il de pixels noirs sur le camion ? ✓ - Forum Python
- Une image subliminale a été incrustée dans la vidéo à télécharger. quelle est la largeur de cette image ? - Forum Formats vidéo
- Compression pdf - Guide
- La vidéo à télécharger a été accélérée. elle va 4 fois plus vite que la vidéo d'origine. restaurez la vidéo d'origine. combien de papillons figurent à 3 secondes et 6 images dans la vidéo d'origine ? ✓ - Forum Montage vidéo
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...
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...
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
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
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"
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.
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.
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.