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

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章