finir le sprint 3

This commit is contained in:
AlgaLaptop
2026-01-04 18:05:46 +01:00
parent bceb70c052
commit 182cd2bd28
10 changed files with 163 additions and 118 deletions
@@ -1,4 +1,5 @@
package fr.iutfbleau.sae.mhuffman;
import fr.iutfbleau.sae.mimage.Pixel;
import fr.iutfbleau.sae.mimage.RGBImage;
/**
@@ -26,7 +27,7 @@ import fr.iutfbleau.sae.mimage.RGBImage;
* </p>
*
* @author Algassimou Pellel Diallo
* @version 1.0
* @version 1.1
* @since 2025-12-13
*/
public class FrequencyTable {
@@ -62,22 +63,28 @@ public class FrequencyTable {
* </p>
*
* @param img l'image RGB à analyser
* @throws IllegalArgumentException si l'image est null
*/
public void computeFromImage(RGBImage img) {
/*Nb: une composante de couleur est un entier entre 0 et 255 qui représente la part de rouge,vert ou bleu
dans la couleur d'un pixel.
*/
/* pour chaque composante de couleur de chaque pixel, on incrémente la fréquence correspondante,
c'est-à-dire on compte le nombre de fois que la composante apparaît dans l'image.
ex: si un pixel P a une composante rouge de 150, on incrémente freqR[150] de 1.
puis on fait de même pour les composantes verte et bleue.
on répète ce processus pour tous les pixels de l'image.
*/
for (int ligne = 0; ligne < img.getWidth(); ligne++) {
for (int colonne = 0; colonne < img.getHeight(); colonne++) {
this.freqR[img.getPixel(ligne, colonne).getR()]++; // Incrémente la fréquence de la composante rouge
this.freqG[img.getPixel(ligne, colonne).getG()]++; // Incrémente la fréquence de la composante verte
this.freqB[img.getPixel(ligne, colonne).getB()]++; // Incrémente la fréquence de la composante bleue
if (img == null) {
throw new IllegalArgumentException("L'image ne peut pas être null");
}
/* Pour chaque composante de couleur de chaque pixel, on incrémente la fréquence correspondante,
* c'est-à-dire on compte le nombre de fois que la composante apparaît dans l'image.
* Ex: si un pixel P a une composante rouge de 150, on incrémente freqR[150] de 1.
* Puis on fait de même pour les composantes verte et bleue.
* On répète ce processus pour tous les pixels de l'image.
*/
for (int x = 0; x < img.getWidth(); x++) {
for (int y = 0; y < img.getHeight(); y++) {
// On récupère le pixel une seule fois pour optimiser
Pixel pixel = img.getPixel(x, y);
// Puis on incrémente les trois fréquences
this.freqR[pixel.getR()]++;
this.freqG[pixel.getG()]++;
this.freqB[pixel.getB()]++;
}
}
}
@@ -93,7 +100,6 @@ public class FrequencyTable {
/**
* Retourne le tableau des fréquences de la composante verte.
*
* @return un tableau de 256 entiers représentant les fréquences du vert
*/
public int[] getGreen() {
@@ -108,8 +114,4 @@ public class FrequencyTable {
public int[] getBlue() {
return this.freqB;
}
}
}