Filtrer une image en fonction d'une ou plusieurs couleurs
L'essentiel de cette page !
L'essentiel de cette page !
La fonction filter_img (dont le code est disponible ci-dessous) permet d'extraire les composantes rouge, verte et/ou bleue d'une image et de les restituer en l'état ou en niveau de gris.
Le code à copier-coller pour avoir la fonction filter_img()
Le code à copier-coller pour avoir la fonction filter_img()
filter_img <- function(img,type="r",grey=F){
if (grey==F) {
temp <- img
if (type == "r"){temp [,,2] <- 0 ; temp[,,3] <- 0
} else if ((type == "v")|(type == "g")){temp [,,1] <- 0 ; temp[,,3] <- 0
} else if (type == "b"){temp [,,1] <- 0 ; temp[,,2] <- 0
} else if ((type == "rv")|(type == "vr")|(type == "gr")|(type == "rg")){temp[,,3] <- 0
} else if ((type == "rb")|(type == "br")){temp[,,2] <- 0
} else if ((type == "vb")|(type == "bv")|(type == "gb")|(type == "bg")){temp[,,1] <- 0 }
} else if (grey==T) {
if (type == "r"){temp <- img[,,1]
} else if ((type == "v")|(type == "g")){temp <- img[,,2]
} else if (type == "b"){temp <- img[,,3]
} else if ((type == "rv")|(type == "vr")|(type == "rg")|(type == "gr")){temp<- (img[,,1]+img[,,2])/2
} else if ((type == "rb")|(type == "br")){temp<- (img[,,1]+img[,,3])/2
} else if ((type == "vb")|(type == "bv")|(type == "gb")|(type == "bg")){temp<- (img[,,2]+img[,,3])/2}}
return(temp)}
Exemple d'applications de la fonction filter_img()
Exemple d'applications de la fonction filter_img()
# Pour ouvrir une image
library("png") ; img1<-readPNG("png.png")
Cet exemple permet de comparer image d'origine et composante rouge.
img2 <- filter_img(img1,type="r") ; display(img1,img2)
Récupérer les composantes rouge et verte, ce qui donne la composante jaune.
img2 <- filter_img(img1,type="rv") ; display(img2)
Récupérer la composante bleue et la convertir en niveau de gris avec le paramètre grey=T
img2 <- filter_img(img1,type="b",grey=T) ; display(img2)