メディアンフィルタとは

中央値を利用した平滑化フィルタ

周辺画素の輝度値と大きく異なる画素を取り除くことができる。
ノイズ除去で効果を発揮。
メディアン:データを小さい順に並べた時の真ん中にある値。

 

  1. 注目画素の近傍の画素値を取得。( ex 8 近傍なら周囲が 8 画素 )
  2. 9 つの画素値を小さい順に並べる。
  3. 真ん中の値 ( ex 8 近傍なら 5 番目の値 ) を注目画素とする。
    他の画素への輝度 ( 色? ) 距離の合計」が最も小さいのが真ん中。
    小さい順に並べると、真ん中の値が合計値が小さくなる。
    モノクロでも 3 色でも計算方法は同じ。
    http://www.robot.t.u-tokyo.ac.jp/~yamashita/paper/E/E150Final.pdf より拝借。
    f:id:koshinRan:20180825224255p:plain

ex )
https://algorithm.joho.info/image-processing/median-filter/  より拝借。
元行列
( 1, 1 ) の画素 120 に注目。
f:id:koshinRan:20180825223807p:plain

 

小さい順に置き換えると、5 番目が 150 となる。
120 を 150 に変更。この操作を端以外の画素に対して行う。
f:id:koshinRan:20180825223840p:plain

 

 

OpenCVメディアンフィルタ 

opencv では

    cv::medianBlur ( 原画像、結果画像、カーネルサイズ );

cv::medianBlur(src, dst, 3); などとかける。

 

 

Memo

1 )
膨張と縮小をメディアンフィルタと組み合わせたら、
欲しい対象物体が膨張し、かつゴミが消えた。

    cv::dilate(hoge, hoge, cv::Mat(), cv::Point(-1, -1), 3); //膨張
    cv::erode(hoge, hoge, cv::Mat(), cv::Point(-1, -1), 3);  //縮小
    cv::medianBlur(hoge, hoge, 3);

 

2 )
時系列メディアンフィルタ
周辺画素ではなく、時系列の画素を取得することにより
背景画像を生成できるもよう。
http://www.robot.t.u-tokyo.ac.jp/~yamashita/paper/E/E150Final.pdf より拝借。
f:id:koshinRan:20180825224556p:plain

OpenCV では cv::createBackgroundSubtractorXXX で実現できる。

 

 

 

こちらから。
https://algorithm.joho.info/image-processing/median-filter/
http://imagingsolution.blog.fc2.com/blog-entry-92.html
http://ishidate.my.coocan.jp/opencv_6/opencv_6.htm
http://www.robot.t.u-tokyo.ac.jp/~yamashita/paper/E/E150Final.pdf
https://www.dendai.ac.jp/crc/about/forum/e5vdec000000dvk0-att/forum05_04.pdf
https://qiita.com/tukine_T/items/f3aac42cbde0290e7993

 

以上。