# Median does not work directly on c(XXa$red,XXb$red,XXc$red)!!

require(pixmap)
XXa<-attributes(read.pnm("Calcite04a.ppm"))
XXb<-attributes(read.pnm("Calcite04b.ppm"))
XXc<-attributes(read.pnm("Calcite04c.ppm"))
XXd<-attributes(read.pnm("Calcite04d.ppm"))
XXe<-attributes(read.pnm("Calcite04e.ppm"))

rows<- XXa$size[1]
cols<- XXa$size[2]

XXblu<-XXgre<-XXred<- matrix(0, rows,cols)

XXred<- (XXa$red+XXb$red+XXc$red+XXd$red+XXe$red)/5
XXblu<- (XXa$blue+XXb$blue+XXc$blue+XXd$blue+XXe$blue)/5
XXgre<- (XXa$green+XXb$green+XXc$green+XXd$green+XXe$green)/5
dat<- array(c(XXred, XXgre, XXblu), c(attributes(XXred)$dim,3))
XX<- pixmapRGB(dat)
write.pnm(XX, file="Calcite04_avg.ppm")
cat("Avg Done\n") 

for (i in 1: rows) { for (j in 1:cols) {
       XXred[i,j]<- median(c(XXa$red[i,j],XXb$red[i,j],XXc$red[i,j],XXd$red[i,j],XXe$red[i,j]))
       XXgre[i,j]<- median(c(XXa$green[i,j],XXb$green[i,j],XXc$green[i,j],XXd$green[i,j],XXe$green[i,j]))
       XXblu[i,j]<- median(c(XXa$blue[i,j],XXb$blue[i,j],XXc$blue[i,j],XXd$blue[i,j],XXe$blue[i,j]))
                                       }
       cat('.')
                    }
cat('end\n')

dat<- array(c(XXred, XXgre, XXblu), c(attributes(XXred)$dim,3))
XX<- pixmapRGB(dat)

write.pnm(XX, file="Calcite04_med.ppm")
rm(list=ls())
cat("All Done\n") 