Histogramme d'une image
L'essentiel de cette page !
L'essentiel de cette page !
Voici une fonction qui permet de voir la répartition des valeurs des pixels par intensité dans es composantes rgb (rouge, vert, bleu).
Ce qu'il faudrait améliorer dans cette fonction :
- La rendre compatible avec les images en niveau de gris
- Colorer les zones d'interférences des courbes par des polygones (ex : interférence rouge, vert = jaune)
- Afficher automatiquement le nom de l'image dans le titre de l'histogramme.
La commande à copier-coller dans R
La commande à copier-coller dans R
hist_img <- function(img){
red <- as.vector(img[,,1])*255
green <- as.vector(img[,,2])*255
blue <- as.vector(img[,,3])*255
densite_red <- density(red)
densite_green <- density(green)
densite_blue <- density(blue)
y_max <- max(c(densite_red$y,densite_blue$y,densite_green$y))
plot(red,type="n",xlim=c(0,255),ylim=c(0,y_max),ylab="Fréquence",xlab="Intensité",main=names(img))
lines(densite_red, col = "red",lwd=3) # Superposer la ligne rouge
lines(densite_green, col = "green",lwd=3) # Superposer la ligne verte
lines(densite_blue, col = "blue",lwd=3) # Superposer la ligne bleue
grid() }
Exemple d'utilisation
Exemple d'utilisation
library("png") ; img1<-readPNG("png.png")
hist_img(img1)