2014-07-07 38 views
0

我在R中的以下代碼:R圖像(X,Y,COL = RGB,...)函數給錯誤

img = read.csv(file="img119.csv") 

IMG被加載這樣的:

X Y R G B 
1 0 0 0.48046875 0.65234375 0.83593750 
2 0 1 0.40234375 0.57031250 0.73828125 
3 0 2 0.24609375 0.39453125 0.54687500 
4 0 3 0.07031250 0.19921875 0.32031250 
5 0 4 0.00000000 0.07812500 0.17187500 


width = img[length(img[,1]),1]+1; 

height = img[length(img[,2]),2]+1; 

x = 1:width; 

y = 1:height; 

img[,3:5] = img[,3:5]/256; 

rgb_colors = rgb(img[,3:5]) 

imgfunction <-function(xx,yy){ 

    idx = xx*width + height - yy; 

    rgb_color = rgb_colors[idx]; 

    return (rgb_color) 

} 

rgb_colors_xy = outer(x,y,imgfunction) 

image(x,y,rgb_colors) 

我想要像常規圖像那樣繪製該csv文件。然而,最後一行讓我錯誤如下:

Error in image.default(x, y, rgb_colors) : 'z' must be a matrix 

我不知道我在做什麼錯了,如果你幫我解決這個代碼升值。

謝謝,

回答

1

graphics::image不會產生由3- d數據的彩色圖像。您需要使用raster::imagerasterImage。仔細閱讀幫助文件以瞭解如何將RGB數據轉換爲陣列。 「長」的方式是創建三個x通過y矩陣,並填寫每一個與沿

for(i in 1:max(x)) { 
    for(j in 1:max(y)) redmat[i,j]<- img[i,j,3] 
} 

線的東西有更快的工具,有人更清醒,比我可能會發布。還要注意,R從1開始,而不是0,因此您需要適當地抵消計數。

相關問題