Réduction de la palette d'une image avec Octave



Prenons une image "danseusetango.png" convertie en niveaux de gris donc associée à une seule matrice au lieu de trois. Chaque pixel est codé par un nombre entre 0 et 255 ; on dit qu'il est codé sur 8 bits car 256=28. Le premier pixel, par exemple, est codé par 122 , ce qui donne en binaire donne 01111010. Pour un pixel , il y a 8 informations binaires. On va regarder ce qui se passe quand on ne tient compte que d'informations partielles…

Images obtenues avec des informations partielles

Sur un bit

On ne va tenir compte que du premier bit : le premier pixel sera noir puisque codé par 0; on obtient une image en noir et blanc


Sur deux bits

On ne tient compte que des deux premier bits : il y a 4 niveaux de gris.


On continue

Les images suivantes tiennent compte des 3, 4 et 5 premiers bits : il y a 8, 16 et 32 niveaux de gris.



Le script Octave

u=imread('danseusetango.png');
u=double(u);

T1=uint8(255*floor(u/128));
imwrite("plan1.png",T1)

T2=uint8(64*ceil(u/64));
imwrite("plan2.png",T2)

T3=uint8(32*ceil(u/32));
imwrite("plan3.png",T3)

T4=uint8(16*ceil(u/16));
imwrite("plan4.png",T4)

T5=uint8(8*ceil(u/8));
imwrite("plan5.png",T5)

fait le 4 août 2008, modifié le 18 août 2008