Room of Requirement

R是神奇的,,也是好玩的,除了做各种统计以外,对于图像的处理功能也是非常不错的。最近看了R-blogger上的几篇关于用R做图像处理的文章,觉得特别有意思,把图像转化成各个像素的RGB数据,处理完成以后再重新画出来,是件很Geek的事情啊!

先上原图:

关于之前R中一些读取和处理图像的包如ReadImages在新版本的R中已经不再支持了,好在还有jpeg能用。

library(‘jpeg’,’ggplot2’,’reshape’)

readImage<-readJPEG(‘test.jpg’)

longImage<-melt(readImage)

rgbImage<-reshape(longImage,timevar=’X3’,idvar=c(’X1’,’X2’),direction=’wide’)

rgbImage$X1<- -rgbImage$X1

colorColumns<- rgbImage[, substr(colnames(rgbImage), 1, 5)== "value"]

with(rgbImage,plot(X2, X1, col = rgb(colorColumns), asp = 1, pch =".",axes=F,xlab=”,ylab=”))

rgbAlter<- rgbImage

rgbAlter$X2<- jitter(rgbAlter$X2)

rgbAlter$X1<- jitter(rgbAlter$X1)

rgbAlter$Size<- runif(1:nrow(rgbAlter), 0, 2) #and random point sizes

with(rgbAlter,plot(X2, X1, col = rgb(colorColumns), asp = 1, cex =Size,axes=F,xlab=”,ylab=”))

rgbAlter<- rgbImage

rgbAlter[,4] <- 0 #去掉绿色

with(rgbAlter,plot(X2, X1, col = rgb(rgbAlter[, 3:5]), asp = 1, pch =".",axes=F,xlab=”,ylab=”))

rgbAlter<- rgbImage

rgbAlter[,c(3:5)] <- round(rgbAlter[, c(3:5)] * 2) / 2

with(rgbAlter,plot(X2, X1, col = rgb(rgbAlter[, 3:5]), asp = 1, pch =".",axes=F,xlab=”,ylab=”))

我不敢说我可以忘却,或者勇敢,坚强,等等等等一切堂皇而陈旧的字眼。

Room of Requirement

相关文章:

你感兴趣的文章:

标签云: