2016-12-12 33 views
0

我試圖獲得組成給定圖片的每種顏色的百分比。 我得到使用此代碼的RGB矩陣:使用R的圖像顏色組合

library(jpeg) 
img <- readJPEG("C:/Users/Pictures/img.jpg") 
dim(img) 
#145 371 3 
img<-img*255 
#this operation is necessary to obtain an RBG scale 

在這一步我不知道這是前進的正確方法。無論如何,我想獲得這樣的東西:

Count RGB vector 

200614 (255,255,255) 

4758  (253,253,218) 

4312  (250,250,229) 

1821  (235,237,242) 

1776  (212,214,226) 

... 

然後我可以計算出每種顏色的百分比。 最後,我會嘗試將標籤與每個RGB矢量相關聯。

任何人都可以幫到我嗎?

回答

3

as.raster(注意,您不需要通過將值乘以255來縮放值)將像素數組轉換爲#rrggbb值後,您可以很容易地使用table對顏色進行計數。來自十六進制顏色字符串的各個顏色分量可以通過col2rgb獲得。

library(jpeg) 
img <- readJPEG("C:/Users/Pictures/img.jpg") 

# Convert the 3D array to a matrix of #rrggbb values 
img <- as.raster(img) 

# Create a count table 
tab <- table(img) 

# Convert to a data.frame 
tab <- data.frame(Color = names(tab), Count = as.integer(tab)) 

# Extract red/green/blue values 
RGB <- t(col2rgb(tab$Color)) 
tab <- cbind(tab, RGB) 

# Preview 
head(tab) 
+0

它的工作,非常感謝!你知道是否有一個已經實現的功能,可以幫助我給每個顏色發一個標籤?我想有必要將一些RBG向量分組以獲得合理數量的標籤。 – dag

+0

你能否澄清這些標籤究竟是什麼意思?應該是與'colors()'相對應的顏色名稱嗎? – aoles

+0

對不起,你是對的。我的意思是,我想添加另一列到選項卡,其中顯示例如顏色的名稱。 : 顏色計數紅綠藍名 1#000000 11600 0 0 0白色 2#00C25F 1 0 194 95黑色 3#00C34B 81 0 195 75黃色 4#00C454 1 0 196 84 ... 5# 00C45E 1 0 196 94 ... 6#00C764 1 0 199 100 ... 你認爲這有可能嗎? 很多Tnx – dag