2012-11-22 210 views
1

這是我第一次在stackoverflow提問。我努力不作任何違規指引,但是讓我知道是否有任何 - 請理解,因爲這是我第一次。Mathematica圖像平均優化

我在Mathematica中有一個代碼,我認爲它真的很慢。

我有一堆圖像 - 幾百個,我正在Mathematica中創建一個簡單的算法,通過在整個堆棧中平均像素數據來將圖像組合成單個圖像。

例如,假設我有一個像素爲520 x 23,我想從堆棧中的每個圖像中獲取所有數字(數據)並平均該表。我想對我的圖像中的每個像素重複此過程。然後,我將能夠使用Image []將數據重建爲圖像。爲了測試,我使用了1024×1024的圖像,但我最終希望使用8000×8000。

這裏是我的代碼:

idlist = Map[ImageData, ilist]; 
Table[Table[Map[Mean,Transpose[Table[idlist[[a,b,c]],{a,1,Length[idlist]}]]],{b,1,1024}], {c, 1, 1024}] 

我發現我的嵌套表比使用單個表一些奇怪的原因,速度更快。

1.我該如何優化? 2.使用任何並行計算對此特定實現有沒有好處?

+1

http://mathematica.stackexchange.com/ – nhahtdh

回答

1

我不知道如果我按照你的編碼,但要獲得平均像素值一堆圖像,你可以簡單地做以下(這是快速):

imDim = 100; 
n = 80;(*number of images*) 
(*generate random image list*) 
ilist = Array[RandomImage[1, {imDim, imDim}, ColorSpace -> "RGB"] &, n]; 
(*take mean*) 
[email protected][ImageData /@ ilist] 

Mathematica graphics

對於大量的隨機圖像集合,它應該會聚到同質灰度(RGB [.5,.5,.5])。讓我們測試一下:

imDim = 3; 
n = 2000;(*number of images*) 
(*generate random image list*) 
ilist = Array[RandomImage[1, {imDim, imDim}, ColorSpace -> "RGB"] &, n]; 
(*take mean*) 
[email protected][ImageData /@ ilist] 

Mathematica graphics

+0

謝謝。 Image @ Mean [ImageData/@ ilist]完成這項工作。 – hbar