5

高速で効率的なメディアン フィルターの Ansi C 実装を探しています。ポインタはありますか?

これまでのところ、の実装を見つけました。これは優れていますが、より高速なものに興味があります。1次元だけが必要です。

4

1 に答える 1

13

非常にノイズの多い CPU 消費データから信号を抽出する必要がありました。これがジェフ・マクリントックのメジアンフィルターです...

平均値と中央値をゼロに初期化し、各サンプルの「インチ」ごとに入力サンプルに向かって中央値を少しずつ増やします。最終的には、入力サンプルの約 50% が中央値よりも大きく、50% が中央値よりも小さい点で落ち着きます。増分のサイズは、実際の中央値に比例する必要があります。実際の中央値がわからないので、平均値を概算として使用します。ステップ サイズは、推定値の 0.01 倍として計算されます。ステップ サイズが小さいほど正確ですが、安定するまでに時間がかかります。

float median = 0.0f;
float average = 0.0f;

// for each sample
{
    average += ( abs(sample) - average ) * 0.1f; // rough running average magnitude.
    median += _copysign( average * 0.01, sample - median );
}

ここに画像の説明を入力

于 2013-03-01T05:11:57.610 に答える