2016-03-21 51 views
0

明るい光(物理的に取り付けられている)に反応して人間の目の瞳の映像を記録する特定のモバイルデバイス上で動作するAndroidアプリケーションを作成する必要がありますモバイルデバイスに送信する)。次いで、ビデオを装置上のフレームごとに後処理して、&を検出して、各フレーム内の瞳孔および虹彩の直径を測定する。画像処理はリアルタイムで行う必要はないことに注意してください。最終的な結果は、経時的な瞳孔(&アイリス)の変化を記述するデータセットになります。虹彩の大きさは、瞳孔径データの信頼性を高めるために使用することができます(例えば、瞳孔サイズのデータ​​を間違って削除するなど)。また、眼の拡張の相対的な尺度として使用することもできます。Androidの画像で形状(円)のサイズを検出して測定する

私はAndroid搭載モバイルアプリの開発に精通していますが、画像処理に関する私の経験は非常に限られています。私は解決策を研究しており、答えは形状検出(例えばhttp://opencvlover.blogspot.co.uk/2012/07/hough-circle-in-javacv.html)を提供するはずのOpenCV/JavaCvライブラリーにあると思われますが、誰でもこれらの特定の質問に関するガイダンスを提供できます:

私はそう考えることができますビットマップ内の2つの円の形状を検出します。すなわち、互いに内側の形状は問題ではない。

JavaCvがサークルを検出し、位置&の半径/直径を返すことは本当ですか?つまり、サークルと比較するためにさらに処理する必要がある頂点のセットを返しませんか?それはHoughCircleメソッドを持っているようだ、私はそう思う。

シェイプ検出を行う前に、通常、各フレームのどの処理が使用されますか?たとえば、エッジを強調したり、滑らかにしたり、色を除去するアルゴリズムですか?

存在感を検出するだけでなく、検出された円の直径を測定するために使用できますか? (ピクセル単位で表示されますが、既知のハードウェアが使用されているため、実際の測定値に簡単に変換できます)。私はそう思っていますが、より身近な人からの確認を聞くのはすばらしいでしょう。

このプロジェクトは非営利の慈善事業ですので、どんな助けでも特に感謝しています。

Video frame sample

+0

はい、これはOpenCVで行うことができます。 1)JavaCVの代わりに[OpenCV公式Javaラッパー](http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html)を使用することを強くお勧めします。 C++のほうが良いコードです。 2)HoughCirclesは正しいアプローチかもしれませんが、同心円を見つけることができないよう注意してください。あなたはこれを自分で処理する必要があります(SOに関する多くの例、[here](http:// stackoverflow。com/a/32287930/5008845))。 – Miki

+0

3)HoughCirclesの結果は、それぞれ3つのパラメータ(x、y、半径)で定義された円のセットです。4)前処理のための魔法のルールはありません。より良いアイデアを得る。 – Miki

答えて

0

それが機能して少しリッチであるように私は本当にNDKを使用してお勧めします。また、画像を持つラップトップでアルゴリズムを実行してテストしてから、デバイスにプッシュして開発をスピードアップすることもできます。

前処理ステップ: 一般的に、スレッディングまたはキャニーエッジの検出とerode dilateのような形態操作を使用します。

虹彩/瞳孔の検出のために、ハサウェイは非常に良い方法ではありません。MSERのような特徴検出方法は、それほどよく定義されていない円に対してはうまく機能します。 Hereは、私が助けることができるコードを持っている同じトピックについて書いた別の答えです。

地域を測定する場合は、thisブログをご覧ください。合理的に正確な測定を行うための手順については、明確な説明があります。

関連する問題