掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Delphiで画像から顔領域や目の領域を認識検出(Haar Cascades識別器)するクラスを作りましたが、処理速度と精度の両方を高くする畳み込み方法がわからない (ID:150744)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>むにゃ 様 レスありがとうございます。 基本的にはむにゃ様の仰るとおり、目の領域を検出する場合は、顔の検出の後に行います。 私が作っているフリーソフトの場合は顔の検出だけで、その精度と速度向上を行いたく思っております。 haar cascadeのxmlファイルは、ファイル毎に窓サイズ(featureWとfeatureH)は決まっていて、例えば顔の位置(haarcascade_frontalface_default.xml)は、24x24です。(目は20x20みたいです) THaar.Cascadeを呼び出すときの引数「MinScale」で、検出される最小のサイズが決まります。例えばデフォルトの2を与えると、48x48ピクセル以上の大きさの顔領域しか検出出来ないです。 しかしながら、例えばWebカメラからリアルタイムな画像で検出する場合にMinScale=2を与えて検出させたとき、それぞれのパソコンの環境によってカメラの距離やカメラの画角が違うため、MinScale=2ではほとんど検出出来ないような場合があります。 (haarcascade_frontalface_default.xmlとWEBカメラをデジタルサイネージ等の広告の前で使うと、広告を見た人の人数を数えたりするなど、応用も沢山ありそうです。) Webカメラからの画像をhaarcascade_fullbody.xmlで使うと、その時の通行人の人数を数えることが出来ますが、これも同じく、これ単体でしか使わなくて、MinScale=1で出来れば使いたいですが、環境によってはかなり重かったりします。 vclのTBitmapを使っていますが、FMXのTBitmapを使うように、ほんの少し改造するだけで、Androidでも動くようになるので、ますます搭載しているカメラやCPUの環境依存が強くなります。 なるべく環境依存しないようにMinScaleとScaleFactorとWindowMoveRateの上手い設定割合や、その他高速化アルゴリズム等があるとありがたいです。 この内容を書きながら思いついたのですが、WEBカメラからの画像は、ゴマ塩ノイズが多いので、 https://mam-mam.net/delphi/fmx_basic_filter.html にあるメディアンフィルタを使ってノイズを取り除いてからHaar Cascadesを使うのも有りかもしれないですね。(重くなるだけかもですが。) 趣味でDelphiを使ってフリーソフトを作って自己満足しているだけの素人なので、内容が曖昧で申し訳御座いません。 それにしても、Delphiはもう少しヘルプやサンプルソースを素人にもわかるように充実してもらいたいと思いました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.