OpenCVのノイズ除去について(Bilateral)
はじめに
OpenCV の Bilateral FIlterを使った処理ついて調べたことをまとめた。
とりあえず関数を試してみたい方
実験用プログラム OpenCV_test の GitHubリポジトリ
URL
https://github.com/iryachi/OpenCV_test
実行ファイルだけ
https://github.com/iryachi/OpenCV_test/releases
使い方
https://iryachi.stars.ne.jp/opencv_test_imple/
Bilateral Filter 処理について
ガウシアンフィルタ(Gaussian Filter) のように注目画素からの距離によって重みを変えるが、さらに注目画素との色の違いも考慮して重みを決定する。注目画素との色の違いが小さい方が重みが大きくなる。
例えば、図のように注目画素の左右の色が違う場合、注目画素に近い色の右の方が重みが大きくなる。
void cv:: bilateralFilter (InputArray src,
OutputArray dst,
int d,
double sigmaColor,
double sigmaSpace,
)
引数
src | InputArray | 入力画像 | カラー or グレースケールの画像 CV_8U, CV_16U, CV_16S, CV_32F, CV_64F |
dst | OutputArray | 出力画像 | フォーマットは入力画像に依存 |
d | int | フィルタサイズ | フィルタのサイズ X,Y方向同じ値 負の場合、sigmaSpaceから計算される。 |
sigmaColor | double | 色偏差 | 色の差による重みの補正値 |
sigmaSpace | double | 距離偏差 | 注目画素からの距離による重みの補正値 |
boarderType | int | 境界外処理方法 | cv::BorderTypes 画面 もしくは roi の境界処理をどうするか。 |
処理例
終わりに
bilateral Filter は gaussianBlur と同様に、エッジを残してノイズ除去をする事を得意とする。
gaussian よりも性能はいいが、計算時間がかかるというデメリットも有る。
画像によってパラメータの効果が変わるので、いろいろなパラメータで試してみる必要があるかと。
ディスカッション
コメント一覧
まだ、コメントがありません