LoginSignup
1
1

画像の輝度ムラ補正(フラットフィールド補正,背景成分除去)

Posted at

はじめに

フラットフィールド補正は,画像から背景成分(低周波な輝度ムラ)を除去する処理です。輝度ムラは,画像解析する上で邪魔なので,除去対象になります。

以下のQiita記事で,フラットフィールド補正が取り上げられています。
(参考1) Flat Field画像処理

上記のQiita記事では,以下のサイトが参照されています。
(参考2) 背景除去について

これらの記事では,画像を強く平滑化して低周波成分を抽出し
(方法1:除算補正) 元画像÷低周波成分×平均輝度値
(方法2:差分補正) 元画像‐低周波成分+平均輝度値
というシンプルな補正方法が紹介されています。

試してみた

(参考2)からサンプル画像を拝借して,自分でも試してみました。
低周波成分の抽出には,半値幅40画素の等方的なガウシアンフィルタを用いました。

サンプル画像 低周波成分
image.png image.png
除算補正 差分補正
image.png image.png

想定通り,低周波な輝度ムラはうまく除去できしたが,(参考2)で言及されているように,サンプル画像には縞状のムラも存在していて,そちらはうまく除去できません

(参考2)では,対処方法として,補正後(?)の画像のフーリエ変換を計算し,縞の走行方向(上下方向)に対応する周波数成分をカットして,縞状のムラの除去に成功しています👇

バンドパスフィルタ 逆フーリエ変換の結果
image.png image.png

(参考2)では,この方法の注意点が付記されています。その通りと思います。

  • 万能ではありません
  • FFT自体の処理は時間がかかります。さらにパディングなんかしたら処理時間はさらにup。

今回の記事では,万能ではないけど,処理時間を増やさずに(むしろ減らせる) ,縞状のムラも除去できる補正方法を紹介します。

はじめに言っておくと,全くもって大したものではありません :smiley:

解決策:非等方な平滑化

非等方な平滑化フィルタを用いたら,余計な成分をうまく抽出できました。 以上です!

(参考2)では等方的な平滑化フィルタを用いていますが,縦方向のフィルタ幅だけを小さくした「非等方的な平滑化フィルタ」 を用いたら,縞状のムラも抽出できるはずと思い,試してみたという感じです。

処理結果は以下です。ここでは,横方向の半値幅40画素,縦方向の半値幅2画素の非等方なガウシアンフィルタ(非常に横長なフィルタ)を用いました。

サンプル画像 余計な成分(低周波成分+縞成分)
image.png image.png
除算補正 差分補正
image.png image.png

期待通り,「余計な成分」として,低周波な輝度ムラだけでなく,縞状のムラも抽出できています:clap: 補正結果もいい感じです:clap:

最後に

今回紹介した方法も,先験情報として縞の走行方向を利用しているので,決して万能ではありませんが,非等方的なフィルタ処理の計算コストは,等方的なフィルタよりも小さく,処理時間は減ります。フィルタのウィンドウサイズが小さいためです。

なお,縞状のムラの除去は,画像処理分野では「Stripe removal」と呼ばれていて,伝統的に研究されており,数多くのアルゴリズムが提案されています。
Google Scholar検索 "Stripe removal"

X線CTの投影データや衛星画像を対象にした研究が多いイメージです。最近は,深層学習ベースの帰納的な手法が多いようですが,縞模様の行列・テンソルとしての低ランク性に着目した演繹的な手法も結構あり,色々と勉強になりそうです。

以上です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1