INTRODUCTION
L’objectif de cette activité est d’illuStrer le traitement numérique des images.
Vous pouvez télécharger le fichiers PNG ci-dessou en utilisant dans les exemples pout le traitétement des images.
solo version LEGO (256px).
Le package PNG
Ce package R permet de charger des fichiers images au format PNG(Portable Nework Graphics). La fonction readPNG initialise une variable de type array de taille hauteur × largeur × profondeur : la hauteur et la largeur correspondent aux dimensions en pixels de l’image chargée. La profondeur, quant à elle, correspond au nombre de composantes du pixel (cas des images de luminance). Chaque composante est un nombre réel compris dans l’intervalle [0;1]. Le package du PNG peut être importe par deux procedures,soit à l’aide de la fonction library, soit en le cochant dans la liste des packages de Rstudio.
library("png")
setwd("C:/Users/Lazar/Desktop/rapport de rédaction/imge")
img1 <- readPNG("C:/Users/Lazar/Desktop/rapport de rédaction/imge/solo-256px.png")
Dimension de l’image
Dans cette partie, nous allons utilisées deux fonctions. la lonction Col et la Fonction *nrow** pour obtenir les dimensions de l’images en pixel.
La fonction ncol permet d’obtenir la largeur de l’image en Pixel.
larg <- ncol(img1)
print(paste("larg:",larg))
## [1] "larg: 256"
la fonction nrow permet d’obtenir la hauteur de l’image en pixel.
hauteur <- nrow(img1)
print(paste("hauteur: ",hauteur))
## [1] "hauteur: 256"
Accèes à un pixel de l’image
L’image étant stocké en memoire sous la forme d’un objet array,l’accès à la composante numéro c du pixel de coordonnées (x,y) se fait via l’opérateur [y,x,c]. Par exemple, le code ci-dessous affiche les composantes rouge, vert, bleu du pixel de coordonnées x=47 et y=60. .
print(img1[60,47,])
## [1] 1.0000000 0.9019608 0.4313725
Le pixel du coin supérieur gauche de l’image a pour coordonnées (1,1), l’axe x est horizontal dirigé vers la droite et l’axe y est vertical dirigé vers le bas. Ainsi le pixel du coin inférieur droit de l’image a pour coordonnées (w,h).
Affichage de l’image
Pour cela, vous pouvez utiliser la fonction display(…) développée par Frédéric Blanchard qui permet d’afficher plusieurs images dans un seul graphique. Pour avoir cette fonction, utiliser le code ci dessous:
display<-function(...){
imageList<-list(...) ; totalWidth<-0 ; maxHeight<-0 ;
for (img in imageList){ if(is.character(img)) img<-readPNG(img) ; dimg<-dim(img) ; totalWidth<-totalWidth+dimg[2] ; maxHeight<-max(maxHeight,dimg[1]) }
par(mar=c(0,0,0,0)) ; plot(c(0,totalWidth),c(0,maxHeight),type="n",asp=1,xaxt="n",yaxt="n",xlab="x",ylab="y") ; offset<-0 ;
for (img in imageList){ dimg<-dim(img) ; rasterImage(img,offset,0,offset+dimg[2],dimg[1])
offset<-offset+dimg[2] }}
Nous allons affichés l’image.
display(img1)