HOG使ってみた

HOG(Histogram of Oriented Gradient: 勾配方向ヒストグラム)は、画像をいくつかの領域に分け、各領域内のエッジがどの方向にあるかのヒストグラムを計算するものです。

OpenCVにはHOG+SVMの物体検出器が実装されてありますので、早速組み込んでしまいましょう。
リファレンスでは、cv::HOGDescriptorについては解説されていません。

#include "ardrone/ardrone.h"

int main(int argc, char *argv[])
{
// AR.Droneクラス
ARDrone ardrone;

// 初期化
if (!ardrone.open()) {
printf("Failed to initialize.\n");
return -1;
}

// HOGさん
cv::HOGDescriptor hog;
hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());

while (1) {
// キー入力
int key = cv::waitKey(1);
if (key == 0x1b) break;

// 更新
if (!ardrone.update()) break;

// 画像取得
cv::Mat img(ardrone.getImage());

// HOG特徴の検出
std::vector found;
hog.detectMultiScale(img, found, 0, cv::Size(4,4), cv::Size(0, 0), 1.5, 2.0);

// 表示
std::vector<cv::Rect>::const_iterator it;
for (it = found.begin(); it != found.end(); ++it) {
cv::Rect r = *it;
cv::rectangle(img, r.tl(), r.br(), cv::Scalar(255,0,0), 2);
}
cv::imshow("hog", img);
}

return 0;
}
結果はこんな感じです。

hog_test.jpg
今回は公安6課の方々に実験を協力してもらいました。

パラメータも少し調整しましたが、やはり処理が重いですねぇ。

Wikipediaの記事
http://en.wikipedia.org/wiki/Histogram_of_oriented_gradients

論文
http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf
関連記事

コメントの投稿

非公開コメント

プロフィール

puku

Author:puku
暇な時はゲームかプログラミングしてる人だよ。
だいたい月1更新。
CV Drone はこちら(GitHub)

最近はQiitaでOnsenUI2で遊んでいる。

最新記事
最新コメント
最新トラックバック
検索フォーム
カレンダー
04 | 2023/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
スポンサードリンク
RSSリンクの表示
FC2カウンター
リンク
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
822位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
152位
アクセスランキングを見る>>
FC2ブログランキング

FC2Blog Ranking

QRコード
QR