OpenCVを用いた人物検出について質問です。
haar-like特徴を用いて人物を検出したいと考えています。
1枚の画像を入力して、その画像に対して検出を行います。出力において人物は検出できるのですが、それ以外にも何もない部分が検出(これを誤検出とします)されてしまいます。
BackgroundSubtractorMOG2を使用して背景差分を行い、移動物体のみを残して背景部分を黒くした画像を作成しました。
何も処理を施していない画像Aと背景差分を行った画像Bを用いて誤検出を減らしたいと考えています。
今私が考えている方法は、Aでhaar-like特徴を用いて人物を検出し、cvHaarDetectObjectsでその座標を求める。(この時正しく人物を検出できた場合と誤検出両方含みます。)
そしてその座標をBに読み込んで、座標内に占める色の割合で検出を取り消すかどうかといった方法です。Bは背景差分によってほとんど黒い画像なので、範囲内に占める色で黒色が多かった場合、そこには人はいないと判断し検出を取り消すといった処理を行いたいです。
この方法OpenCVのプログラムで表す場合どのようにしたらよいでしょうか。座標内の色の検出、座標内の色の割合の検出、色の割合によって検出を取り消すかどうかの分岐の部分の方法が思いつきません。
関数のヒントでも良いのでご教授をお願いします。
また、画像ABを用いた他に良い誤検出を減らす方法がありましたらご教授をお願いします。
OpenCVを用いた人物検出について
Re: OpenCVを用いた人物検出について
そこまでやりたいことの具体的処理内容がわかっているなら
やってみればいいだけな気がしますが一体何が問題なのですか?
(前回もそうでしたが,やっている内容のレベルに対して,質問内容のレベルがものすごくちぐはぐな印象…)
>座標内の色の検出、座標内の色の割合の検出、色の割合
画像=画素のあつまり であって,個々の画素は画素値(色)を持っているわけです.
そういうデータをあなたは持っているのですから,純粋に,その画素値を調べていけばいいのではありませんか?
とりあえず最初は 1点1点 原始的に調べていけばどうでしょう?
人物検知した結果の領域内(矩形なのかな?)を走査して
その領域の面積に対する「黒」だった画素の割合を求めればよいだけに思います.
>B
といっているのが,
>移動物体のみを残して背景部分を黒くした画像
であれば,移動物体の領域については画素値は原画のままなのでしょうか?
(単純に「移動体領域は白,背景領域は黒」とかにしてしまった方が
後段の 黒の割合がどうの という話に適しているように思いますが…?)
#あと,この方法だと,静止している人物については検出できないと思うけど,その点はOKという話なのかな
やってみればいいだけな気がしますが一体何が問題なのですか?
(前回もそうでしたが,やっている内容のレベルに対して,質問内容のレベルがものすごくちぐはぐな印象…)
>座標内の色の検出、座標内の色の割合の検出、色の割合
画像=画素のあつまり であって,個々の画素は画素値(色)を持っているわけです.
そういうデータをあなたは持っているのですから,純粋に,その画素値を調べていけばいいのではありませんか?
とりあえず最初は 1点1点 原始的に調べていけばどうでしょう?
人物検知した結果の領域内(矩形なのかな?)を走査して
その領域の面積に対する「黒」だった画素の割合を求めればよいだけに思います.
>B
といっているのが,
>移動物体のみを残して背景部分を黒くした画像
であれば,移動物体の領域については画素値は原画のままなのでしょうか?
(単純に「移動体領域は白,背景領域は黒」とかにしてしまった方が
後段の 黒の割合がどうの という話に適しているように思いますが…?)
#あと,この方法だと,静止している人物については検出できないと思うけど,その点はOKという話なのかな
Re: OpenCVを用いた人物検出について
返信ありがとうございます。
検出した結果の矩形の領域内を1つずつ操作していきたいと思います。
そこで問題なのですが、haar-like特徴を用いて人物を検出する際に、cvHaarDetectObjects座標を求めるのですが、その座標の可視化が分かりません。
printfを使用して確認してみたのですが、ビルドするたびに値が変わってしまうので具体的な座標は求められないのではと考えております。
haar-like特徴で検出される箇所は毎回同じ場所なので、その座標の求め方をご教授していただけないでしょうか。
処理後のBの画像は、移動物体の領域については画素値は原画のままなので、二値化してしまったほうがよさそうですね。
今回は誤検出を減らしたいので、静止している人物については検出できない件に関しては問題ありません。
よろしくお願いします。
検出した結果の矩形の領域内を1つずつ操作していきたいと思います。
そこで問題なのですが、haar-like特徴を用いて人物を検出する際に、cvHaarDetectObjects座標を求めるのですが、その座標の可視化が分かりません。
printfを使用して確認してみたのですが、ビルドするたびに値が変わってしまうので具体的な座標は求められないのではと考えております。
haar-like特徴で検出される箇所は毎回同じ場所なので、その座標の求め方をご教授していただけないでしょうか。
処理後のBの画像は、移動物体の領域については画素値は原画のままなので、二値化してしまったほうがよさそうですね。
今回は誤検出を減らしたいので、静止している人物については検出できない件に関しては問題ありません。
よろしくお願いします。
Re: OpenCVを用いた人物検出について
>座標
cvHaarDetectObjects()を使ってるサンプルを参考にすればよいのではないでしょうか.
関数名でググっただけでも
http://opencv.jp/sample/object_detection.html
とか出てきますし…
cvHaarDetectObjects()を使ってるサンプルを参考にすればよいのではないでしょうか.
関数名でググっただけでも
http://opencv.jp/sample/object_detection.html
とか出てきますし…
オフトピック
なんか…
質問文に使われている単語でとりあえず検索した方が早いようなことばかりを
毎度わざわざ掲示板で質問されているような… なんかそんな感じが… 微妙に……
質問文に使われている単語でとりあえず検索した方が早いようなことばかりを
毎度わざわざ掲示板で質問されているような… なんかそんな感じが… 微妙に……