OpenCVのノイズ除去について(Gaussian)
はじめに
OpenCV の Gaussian を使った処理ついて調べたことをまとめた。
とりあえず関数を試してみたい方
実験用プログラム 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/
Gaussian について
中心から遠くなるほど重みが小さくなるようなカーネルを使用して畳み込みを行う。つまり、中央から遠い画素の影響よりも近い画素の影響の方が大きくなる。
重みのつけ方は標準偏差を用いて計算される。
図のようにσが大きくなるに従い、横に広がった形になる。画像処理に置き換えると、シグマが大きくなると周りの影響が大きくなり、ぼやけた画像になる。
gaussianBlur 関数について
void cv::GaussianBlur ( InputArray src,
OutputArray dst,
Size ksize,
double sigmaX,
double sigmaY = 0,
int borderType = BORDER_DEFAULT
)
引数
src | InputArray | 入力画像 | カラー or グレースケールの画像 CV_8U, CV_16U, CV_32F |
dst | OutputArray | 出力画像 | フォーマットは入力画像に依存 |
ksize | Size | カーネルサイズ | フィルタのサイズ X, Y 指定 |
sigmaX | double | 標準偏差 | X方向の標準偏差 |
sigmaY | double | 標準偏差 | Y方向の標準偏差 |
borderType | int | 境界外処理方法 | cv::BorderTypes 画面 もしくは roi の境界処理をどうするか。 詳しくは下記参照 https://iryachi.stars.ne.jp/opencv_bordertype/ |
カーネル
カーネルは以下の様な感じ。(一例)
処理例
終わりに
gaussianBlur はエッジを残してノイズ除去をする、元の画素情報をなるべく残してノイズ除去をしたい時に役に立つ。
逆にごま塩ノイズのようなものには向かないこともある。
ディスカッション
コメント一覧
まだ、コメントがありません