OpenCV のノイズ除去について (Blur)
はじめに
OpenCV のBlurを使ったノイズ除去ついて調べたことをまとめた。
とりあえず関数を試してみたい方
実験用プログラム 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/
Blur 処理について
Blur の処理方法は平均化フィルタ (meaning) になっている。
カーネル内の数値を足して、カーネルの枠数で割ったものを注目画素の値とする。
全体がぼやけた画像になるので、背景をぼかす、文字を読めないようにぼかす処理に使いやすい。
写真を見やすくするなどのノイズ除去方法としてはあまり向かないかも。
blur関数について
void cv:: blur (InputArray src,
OutputArray dst,
Size ksize = 3,
Point anchor
int borderType = BORDER_DEFAULT
)
引数
src | InputArray | 入力画像 | グレースケールの画像 |
dst | OutputArray | 出力画像 | グレースケールの画像 フォーマットはddepth による。 |
ksize | Size | カーネルサイズ | カーネルの縦横のサイズ (正方形以外も可能) |
anchor | Point | カーネルアンカー | カーネル内のフィルタ対象点(注目画素)の相対位置を表す (-1, -1) はカーネルの中心 |
borderType | int | 境界外処理方法 | cv::BorderTypes 画面 もしくは roi の境界処理をどうするか。 詳しくは下記参照 https://iryachi.stars.ne.jp/opencv_bordertype/ |
カーネル、アンカーの意味については以下参照
https://iryachi.stars.ne.jp/opencv-filter2d/
カーネル
3×3 までのカーネルは以下の様になる。
処理例
左上を拡大
わかりにくいが、左画像は縦線、右画像は横線がぼやけた感じになっている。
おわりに
最も基本的なぼかしフィルタで、単純に全体をぼかす時に使用する事が多い。
方向性がわかっている時には横方向(縦方向)だけのカーネル使う事もあるかな。
ディスカッション
コメント一覧
まだ、コメントがありません