R语言图像处理

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=''))

 



你可能感兴趣的:(R语言图像处理)