sur une idée de Yassine EL YANDOUZI

Conversion image-matrice avec Octave

Nous allons utiliser Octave, qui est un clone de Matlab gratuit et open-source disponible ici .

Afficher la matrice des pixels d'une image

Le but est d'afficher, pour une image donnée, la matrice des pixels.

Utiliser Octave

Je reprends l'image de la page précédente; une image de 4×3 pixels sauvegardée sous test.png. Elle est représentée ci-contre fortement agrandie.

Vous pouvez télécharger l'image ici . Attention, elle est minuscule.

Il suffit de se déplacer dans le répertoire où l'on travaille et d'utiliser la commande imread

 cd 00calque/travail/jpg
 imread("test.png")


et l'on obtient :

La lecture est très simple: le premier pixel a pour code RGB (109,148,114). Il est vert. La première matrice donne la composante Rouge, la deuxième la composante Verte et la troisième la Bleue…

Remarques

Je n'arrive pas à ouvrir une image au format .bmp

La commande marche aussi avec Matlab

Avec Octave, la commande imread est fournie par le paquetage image. Sous Linux,elle est définie dans le répertoire /usr/share/octave/packages/image-1.0.4.




Écrire un fichier image à partir de trois matrices

On voudrait maintenant à partir de trois matrices créer une image .png . Pour faire simple, on va faire des pixels aléatoires avec Octave

Le code

A=uint8(rand(50,50)*255)
B=uint8(rand(50,50)*255)
C=uint8(rand(50,50)*255)
imwrite("bruit.png",A,B,C)


On obtient une image de 50×50 pixels dont voici un agrandissement :

Commentaire du code

  1. rand(50,50) crée une matrice 50×50 de nombres aléatoires dans [0;1[
  2. A=uint8(rand(50,50)*255) crée une matrice A de dimension 50×50 dont les éléments sont des entiers dans [0;255[
  3. imwrite("bruit.png",A,B,C) crée une image bruit.png à partir des trois matrices A, B et C

fait le 29 juillet 2008