1

スタックオーバーフローで質問するのはこれが初めてです。ガイドライン違反はないように心がけていますが、初めてなので、もしあれば教えてください。

Mathematica のコードがありますが、本当に遅いと思います。

数百枚の画像のスタックがあり、Mathematica で単純なアルゴリズムを作成して、スタック全体のピクセル データを平均化することで画像を 1 つの画像に結合していました。

たとえば、520 x 23 のピクセルがあり、スタック内のすべての画像からすべての数値 (データ) を取得し、そのテーブルを平均するとします。画像内のすべてのピクセルに対してこのプロセスを繰り返したいと思います。次に、Image[] を使用してデータを画像に再構築できます。テストでは 1024 x 1024 の画像を使用しましたが、最終的には 8000 x 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.この特定の実装に並列コンピューティングを使用する利点はありますか?

4

1 に答える 1

1

私があなたのコーディングに従っているかどうかはわかりませんが、一連の画像の平均ピクセル値を取得するには、次のようにすることができます(高速です)。

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

Mathematicaグラフィックス

ランダム画像の大規模なコレクションの場合、均一なグレー(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*)
Image@Mean[ImageData /@ ilist]

Mathematicaグラフィックス

于 2012-11-22T14:13:56.117 に答える