これらの制約/品質メトリックを使用して、ローパスフィルターしたい2D画像があります。
- 画像に光を「追加」できないため、結果の各ピクセルは入力の対応するピクセル以下でなければなりません。
- ローパスカットオフ周波数は、実験するためのパラメーターである必要があります
- このフィルターを繰り返し適用しても、結果が大きく変わることはありません。
- このアルゴリズムの実行にかかる時間(5MPixイメージの場合は5分が妥当と思われる)
- 除去される光の量を最小限に抑えます。
以下は、私が試したいくつかのアプローチとその欠点です。
通常のガウスフィルター。次に、制約1に準拠するように結果をプルダウンします。これは最初の3ポイントに非常によく適合しますが、必要以上に多くの光を減らします。
「上」の放物線を「低」点と「下」の放物線の間に合わせて滑らかにします。これは1Dでうまく機能しますが、最初に水平に適用し、次に垂直に適用すると2Dで悪い結果になります。時間がかかりますが、私のアプリケーションにとってはそれほど長くはありません。ただし、このフィルターを繰り返し適用すると、結果が大幅に変わります。(1D)入力が完全な「下向き」放物線である場合(これはフィルタリングしないでください)、開始/終了にある2つの「上向き」放物線に置き換えられます。
最適なパラメーターを見つけるために、2Dの「基本」関数と線形解法の他の形式を使用します。これは現在のところアイデアであり、まだ実装/テストされていません。
私の信号処理の経験領域はほとんど画像処理のみであるため、信号処理の他の分野で活躍する専門家の意見を取り入れて、この問題の代替案を見つけたいと考えています。
更新2011/08/18
現在の反応に基づいて、典型的な入力のグラフと、最初に説明した3つのアプローチの結果とこれまでに受け取った提案を追加することで、物事をもう少し明確にすることにしました。比較しやすいように、これらの例では1Dフィルタリングのみを使用しました。
入力データ:
ガウスフィルター +要件(1)に準拠するようにダウンさせます。
それを下げると、右側で不必要な減光が生じることがわかります。
放物線
私が考える限り、これは非常に優れています。悲しいことに、最初に水平方向を適用してから垂直方向に適用しても、2Dに完全には変換されません。この場合、浮動小数点解像度で近似放物線を評価できることもわかります。これは小さな利点ですが、絶対に必要というわけではありません。
グレースケールエロージョン
rwongからの提案に基づいて、グレースケールエロージョンを試しました。「適合」放物線と同じ放物線形状の構造要素を使用しました。結果はほぼまったく同じなので、これは有望に見えます。ただし、まだいくつかの問題があります。1.構造化要素が「十分な大きさ」ではありませんでした(すでに801ピクセルの幅でした)1.「上向き」放物線しかありません。次へ。
中央値フィルタリング
完全を期すためにのみ含まれていますが、実際に必要なものではありません。
生データ
生の入力データ+さまざまなpythonコマンドをpastebinに貼り付けたため、同じデータを試すこともできます。
http://pastebin.com/ASnJ9M0p