2016-02-27 144 views
0

我有一個圖像,有7個帶,6938x752像素在每個樂隊。我想對它做一些處理,所以我使用一個名爲RIOS的python模塊來處理圖像的讀寫,讓用戶專注於處理。它以塊的形式讀取圖像作爲numpy數組,以便處理比讀取整個圖像更高效。索引一個三維numpy陣列

它以形狀(7,200,200)作爲numpy數組讀取圖像。我想按像素處理數據,以便從每個像素的每個波段獲取信息。有沒有辦法索引數組,以便我可以處理圖像中每個像素的7個值(每個帶一個)?

我可以在這裏提供的唯一小代碼是我用來讀入,處理和寫入數據的函數。

def MASKimage(info, inputs, outputs): 

    inputs.image1 = inputs.image1.astype(numpy.float32) # Read the image in as an array with shape (7, 200, 200) 

    process = * Do some processing on the array which is the 7 values pixel by pixel * # has shape (1,7) 

    outputs.outimage = process 
+1

你不清楚你在問什麼。你能舉一個你想要做的處理類型的例子嗎?爲了得到每個圖像中相應的像素,你應該爲第0行第0列輸入inputs.image1 [:,0,0],依此類推。 – ebarr

回答

1

您可以嘗試使用np.transposenp.reshape

inputs.image1 = input.images1.transpose((1,2,0)).reshape(200*200,7) 

您可以通過圖像只是用迭代一個循環做你的處理,每個元素代表了七段像素。

+0

這正是我需要的!經過一些處理後,我得到一個像素值。想象一下,例如我想要7個值的平均值。我想寫這個到一個新的圖像,但它需要一個3D數組。你能告訴我如何重塑這個,所以我可以把它寫回來,形狀與我讀的相同(1帶而不是7)? –