0% ont trouvé ce document utile (0 vote)
4 vues3 pages

TP Codage Image

Ce document présente un TP sur le codage JPEG utilisant MATLAB, visant à comprendre les étapes essentielles du standard JPEG. Il décrit les étapes de codage d'une image couleur RGB, y compris la transformation en YCbCr, le découpage en blocs, l'application de la DCT, la quantification, et le codage entropique. Le TP se termine par la génération d'un fichier JPEG et la vérification de sa qualité.

Transféré par

sabergammoudy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues3 pages

TP Codage Image

Ce document présente un TP sur le codage JPEG utilisant MATLAB, visant à comprendre les étapes essentielles du standard JPEG. Il décrit les étapes de codage d'une image couleur RGB, y compris la transformation en YCbCr, le découpage en blocs, l'application de la DCT, la quantification, et le codage entropique. Le TP se termine par la génération d'un fichier JPEG et la vérification de sa qualité.

Transféré par

sabergammoudy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ACADEMIE MILITAIRE DIRECTION DE L’ENSEIGNEMENT

FONDOUK JEDID UNIVERSITAIRE

Spécialité Télécommunications Classé 1


ème
année Télécom

Matiéré Codage image et vidéo Daté Avril 2026

TP n° 1 Codage JPEG par Matlab

Objectif général
L’objectif de ce TP est de comprendre les principales étapes du standard JPEG à travers la réalisation d’un
code MATLAB permettant :
- le codage d’une image couleur RGB
- la génération d’un fichier compressé .jpg
- le décodage JPEG
- l’analyse de la qualité après compression

Partie 1 : Codage JPEG


1) Travail demandé : Réaliser sous MATLAB une fonction : codage_jpg(), ayant comme paramètre
d’entrée : une image couleur de type RGB.
2) Prototype proposé : function codage_jpg(imgRGB, nom_fichier)

Exemple d’utilisation de la function programmée.


img = imread('image_test.bmp');
codage_jpg(img,'[Link]');

3) Les étapes de programme


Étape 1 : Lecture de l’image

Lire l’image RGB : img = imread('image_test.bmp');

Afficher les dimensions (H,W).

Étape 2 : Transformation RGB → YCbCr

Convertir l’image vers l’espace :


Y : luminance
Cb : chrominance bleue
Cr : chrominance rouge

Boucle sur les 3 composantes.

Étape 3 : Découpage en blocs 8×8

Pour chaque composante, parcourir l’image par blocs 8×8 (prendre les mesures nécessaires si les dimensions
ne sont pas multiples de 8)

𝑓𝑜𝑟 𝑖 = 1: 8: 𝐻
𝑓𝑜𝑟 𝑗 = 1: 8: 𝑊

Étape 4 : Appliquer la DCT 2D


Pour chaque bloc : 𝐷 = 𝑑𝑐𝑡2(𝑏𝑙𝑜𝑐)
Étape 5 : Quantification

Utiliser la matrice JPEG standard : 𝑄


Puis : 𝐶𝑞 = 𝑟𝑜𝑢𝑛𝑑(𝐷./𝑄)
Étape 6 : Zigzag
Transformer la matrice 8×8 en vecteur 1×64.

Étape 7 : Codage entropique

Appliquer :

- RLE sur les zéros


- puis codage arithmétique (ou Huffman simplifié)
Étape 8 : Génération du fichier JPEG

Créer un fichier : nom_fichier.jpg


Enregistrer :
- entête JPEG minimal
- tables de quantification
- données compressées
Étape 9 : Vérification

Sous Windows/Linux :

- vérifier que le fichier s’ouvre


- comparer avec image originale
Code Matlab :

%% ===============================================================
% TP JPEG - Version MATLAB 2015
% Codage JPEG simplifié + Décodage JPEG
% Fichiers :
% codage_jpg.m
% decodage_jpg.m
%
% Remarque :
% Ce programme reproduit les étapes JPEG :
% RGB -> YCbCr -> blocs 8x8 -> DCT -> Quantification
% puis reconstruction.
%
% Il génère aussi un vrai fichier JPG via imwrite().
% ===============================================================

%% ===============================================================
% Fichier : codage_jpg.m
% ===============================================================
function codage_jpg(imgRGB, nom_fichier)
clc;
if nargin < 2
nom_fichier = '[Link]';
end

imgRGB = uint8(imgRGB);
[H,W,C] = size(imgRGB);
fprintf('\n===== CODAGE JPEG =====\n');
fprintf('Taille image : %d x %d\n',H,W);
fprintf('Nombre voies : %d\n',C);
%% Matrice de quantification JPEG standard
Q = [16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 98 112 100 103 99];

%% Conversion RGB -> YCbCr


imgYCbCr = rgb2ycbcr(imgRGB);
imgRec = zeros(H,W,3);
for k = 1:3
comp = double(imgYCbCr(:,:,k));
% Padding si nécessaire
H8 = ceil(H/8)*8;
W8 = ceil(W/8)*8;
temp = zeros(H8,W8);
temp(1:H,1:W) = comp;
for i = 1:8:H8
for j = 1:8:W8
bloc = temp(i:i+7,j:j+7);
% Décalage JPEG
bloc = bloc - 128;
D = dct2(bloc); % Calcul DCT
Cq = round(D./Q); % Quantification
imgRec{i:j,:k} =Cq;

end
end
end

%% Sauvegarde JPG réel


imwrite(imgRec,nom_fichier,'jpg');

fprintf('Fichier cree : %s\n',nom_fichier);

%% Taille fichier
info = dir(nom_fichier);
fprintf('Taille fichier JPEG : %.2f Ko\n',[Link]/1024);

end

Vous aimerez peut-être aussi