0

2 次元配列に 3x3 以上の画像フィルター (ガウスまたは中央値) を適用したいと考えています。

ループを適用したり、ループを適用したりする方法はいくつかありますが、ループをバイパスする時間を大幅に節約できるためscipy.ndimage.gaussian_filter、配列の各ピクセルに 3x3 以上のフィルターを同時に適用する方法があるかどうかを知りたいです。mxn関数型プログラミングを目的に使用できますか??

というモジュールがありますが、scipy.ndimage.filters.convolve同時操作ができるか教えてください。

4

2 に答える 2

2

Python での並列処理について学びたいと思うかもしれません: http://wiki.python.org/moin/ParallelProcessing またはmultiprocessing特にパッケージ: http://docs.python.org/library/multiprocessing.html

マルチプロセッサで Python Imaging Library (PIL) を使用して確認してください。 PIL および同様の質問でマルチプロセッシングを使用する。

4 つのワーカーを作成し、イメージを 4 つに分割し、各象限をワーカーに割り当てることができます。ただし、オーバーヘッドのために時間を失う可能性があります。一方、処理する画像が複数ある場合は、このアプローチが機能する可能性があります (各ワーカーが独自の画像を開くことができます)。

于 2012-10-22T09:48:40.377 に答える
1

PythonがループせずにNxM配列に操作を適用する機能を提供したとしても、CPUがサイクルごとに処理できる命令の量が制限されており、時間を節約できないため、操作はバックグラウンドで同時に実行されません。 。配列内のフィールドには依存関係がある可能性があり、アクセスされる順序がわからない場合、これは混乱を招く可能性が高いため、ユースケースではこれは逆効果になる可能性があります。

Huguesは、Pythonでの並列処理に関するいくつかの便利なリンクを提供しましたが、複数のスレッドを持つ配列など、同じデータ構造に同時にアクセスする場合は注意が必要です。スレッドを同期しないと、スレッドは同時に配列の同じ部分にアクセスし、混乱する可能性があります。
また、効果的に並列実行できるスレッドの数は、プロセッサコアの数によって制限されることに注意してください。

于 2012-10-22T10:04:22.557 に答える