2012-11-22 216 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