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.
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)}# Pour ouvrir une imagelibrary("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)