OpenCVで顕著性マップ(c++)

2時間Be my baby聞いてたから、頭の中で、エンドレスビーマイベイベーしてんねん。誰か止めて。

 

研究関連で必要になったから、顕著性マップを使えるようにしようと思って。

使う人は参考になるかもしれんから書いとくね。

 

目標

OpenCVで顕著性マップ(Saliency Map)を生成

 

環境

macOS High Sierra 10.13.6

OpenCV3.4.2

gcc 4.2.1

 

 

顕著性とは

人間は目立つものに対して自然に注意を引きつけられる(外因的注意=受動的注意)。

そして、その目立ち度合い、つまり注意を惹きつける度合いを顕著性と言う。

画像の色や線の方向などの特徴から推定された顕著性を、元の画像にマッピングしたものが顕著性マップ

 

アルゴリズムは?

いくつか種類があるので、簡潔に紹介されているスライド顕著性マップの推定手法 はとても参考になった。

(でも、今回はモジュールを使うので、アルゴリズムは知らなくても結果は得られるんよ)

いずれきっちりとここにも書くね。

 

ライブラリをダウンロード

まずgithub.com/opencv/opencv_contribのmodulesからsaliencyをダウンロードする。

まとめてダウンロードしてもいいし、ターミナルを起動してダウンロードしたいフォルダに移動してsvn export https://github.com/opencv/opencv_contrib/trunk/modules/saliencyでsaliencyだけ持ってきてもいい。

 

openCVをビルド

github.com/opencv/opencv_contribのREADMEに従っていくね。

 

ターミナルを起動

openCV-3.4.2<バージョン>フォルダに移動する(中にCMakeLists.txtがあるフォルダ)。

で、このopenCV-3.4.2の中に/buildというフォルダを作る。これがビルド作業を行うビルドディレクトリになる。

 

ビルドディレクトリに移動

cd build

 

ダウンロードしたモジュールとソースディレクトリを指定してcmake

cmake -DOPENCV_EXTRA_MODULES_PATH=/Users/admin/Documents/opencvLibrary/saliency /Users/admin/Downloads/opencv-3.4.2

※cmakeが存在しないときはsudo port install cmake やpip install cmakeでインストール

※FATAL: In-source builds are not allowedが出たときはこちら

 

そのままビルドディレクトリでmake

make -j5

※j5というのは並列実行の指定。5つまでなら並列ビルドするよという意味(参考:IBM knowledge center)

 

プログラム作成

動くかどうか、いくつかアルゴリズムがあるうちの1つを試してみたよ。

githubのSampleコードを参考に、入力をファイルから取得するようにした。

 

コンパイル

g++ -o saliency saliency.cpp pkg-config --cflag opencv pkg-config --libs opencv

LinuxでOpenCVを入れて適当なコードをコンパイルするまで より

 

結果

表示された画像はこんな感じ

 

重ねるとこう…

 

 

 

 

 

何はともあれ、ひとまず顕著生マップが生成できた。

で!

実はビルドしてる時に気づいたんだけど、私が必要としてたのはPythonの環境だったんよね!

でも、もうせっかくだし、最後までやろうと思ったのでここまで書いたんよね!!!

 

てことで次はPythonでおんなじことやります。では。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です