OpenCV、機械学習、はやりのDeep learningの環境構築の方法、サンプルの動かし方、APIの使い方、Tipsなどをすぐに忘れてしまうので、備忘録として記録している。記憶がなくなるスピードが、早いのでメモしておかないと再現できなくなる確率が高まっている。 最近、再度HDDを飛ばしてしまい、過去の自分のページに再度助けられた。 また、DNNモジュールを触る機会が増えているので、C++からPyhonへと鞍替え中。 内容を気にいっていただければ、twitterで紹介願います。
2013年1月29日火曜日
OpenCVによる画像の膨張と縮小
FloodFillなどの処理により、マスク画像を取得した後、ノイズ除去や欠落部分の補完に、モルフォロジー演算を行う
よく使用するのは、
画像のノイズやひげを除去する
cv::erode(from, to, cv::Mat(), cv::Point(-1,-1), 1);
画像の欠損部を補完する
cv::dilate(from, to, cv::Mat(), cv::Point(-1,-1), 1);
がある。
cv::Mat()を指定するとデフォルトのサイズ3x3が選択される
それ以外のサイズを用いる場合には
cv::Mat element(5,5,CV_8U, cv::Scalar(1))などで、エレメントを指定する
サイズは正方形ではなく、長方形にすれば、縦方向のエッジのみ接続するなどできる
この手法は、Mastering OpenCV with Practical Computer Vision Project chap. 5でナンバープレート検出に使用されている
それぞれ、最後のパラメータは適用する回数であり、複数化適用することによりセグメントの分離や結合することができる
ただし、それぞれ1回演算を行うと、サイズが縮小、あるいは拡大するので、サイズを維持する場合には、反対の処理を行う必要がある
OpenCVでは、利便性を考え、複数を処理を行う morphologyEx 関数も準備されいる。
cv::morphologyEx(from, to, op, cv::Mat(), cv::Point(-1,-1), 1)
3番目のパラメータは、処理であり、
MORPH_OPEN オープニング
MORPH_CLOSE クロージング
など指定する
参考
詳解 OpenCVの 5.3の画像のモルフォロジー P119
OpenCV 2 Computer Vision Application Programming Cookbook Chap.5 P117
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿