高度なストライディングを使用したより効率的な移動平均フィルター
概要:
移動の計算大規模なデータセットに対する平均フィルターは、計算コストが高くなる可能性があります。畳み込みフィルターを使用した標準的な実装は低速になる可能性がありますが、高度なストライディング手法はより効率的なソリューションを提供します。
提案された手法:
提案された手法には、NumPy の stride_tricks.as_strided( ) 関数を使用して、元の配列上の移動ウィンドウに対応する配列を作成します。この配列を垂直方向と水平方向にローリングすることで、カーネル値を効率的に合計して各ピクセルの平均を計算できます。
実装:
次のコードは、次のコードの実装を示します。この手法:
<code class="python">import numpy as np filtsize = 3 a = numpy.arange(100).reshape((10,10)) b = np.lib.stride_tricks.as_strided(a, shape=(a.size,filtsize), strides=(a.itemsize, a.itemsize)) for i in range(0, filtsize-1): if i > 0: b += numpy.roll(b, -(pow(filtsize,2)+1)*i, 0) filtered = (numpy.sum(b, 1) / pow(filtsize,2)).reshape((a.shape[0],a.shape[1]))</code>
利点:
この手法には、従来の畳み込みフィルタに比べていくつかの利点があります:
制限事項:
代替アプローチ:
以上が高度なストライディングは移動平均フィルターの効率をどのように向上させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。