問題タブ [opticalflow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image-processing - スパース オプティカル フローとデンス オプティカル フローの違いは何ですか?
多くのリソースでは、オプティカル フロー アルゴリズムには 2 種類あると書かれています。そしてルーカス・カナデは疎な技なのですが、疎と密の意味が分かりません?密なオプティカル フローと疎なオプティカル フローの違いを教えてください。
ios - iPadでOpenCVを使用した衝突回避
私はOpenCVを使用して衝突回避を実装する必要があるプロジェクトに取り組んでいます。これはiOSで実行されます(iOS 5以降でも実行できます)。
プロジェクトの目的:アイデアは、車のダッシュボードにiPadをマウントし、アプリケーションを起動することです。アプリケーションはカメラからフレームを取得し、それらを処理して、車が障害物と衝突するかどうかを検出する必要があります。
私はあらゆる種類の画像処理の初心者であるため、このプロジェクトでは概念レベルで立ち往生しています。
私がこれまでにしたこと:
- OpenCVを見て、ネットで読んだ。衝突回避は、Lukas-Kanadeピラミッド法を使用して実装されます。これは正しいですか?
このプロジェクトを出発点として使用する:http://aptogo.co.uk/2011/09/opencv-framework-for-ios/ iPadで正常に実行され、キャプチャ機能も機能します。つまり、カメラのキャプチャは適切です。統合。プロセスフレームの実装を変更して、キャニーエッジ検出の代わりにオプティカルフローを試しました。これが関数です(まだ不完全です)。
/li>- オプティカルフローと、それが差し迫った衝突を検出するために(概念的に)どのように使用されるかについて読んでください。概要:オブジェクトのサイズが大きくなっているが、フレームのいずれかの端に向かって移動している場合、それは衝突パスではありません。オブジェクトのサイズが大きくなっているが、どのエッジにも移動していない場合、そのオブジェクトは衝突パス上にあります。これは正しいですか?
- このプロジェクト(http://se.cs.ait.ac.th/cvwiki/opencv:tutorial:optic_flow)は、私が達成したいことを正確に実行しているようです。しかし、コードを読んでも、それがどのように行われているのか理解できませんでした。Linuxボックスがないので実行できません。このウェブページの説明を読んだところ、同形異義語の行列にたどり着いたようです。この結果は衝突回避にどのように使用されますか?
上記の4つのポイントに加えて、私はこのトピックについて多くのことを読みましたが、それでもすべての部分をまとめることはできません。
これが私の質問です(私はこれの初心者であることを忘れないでください)
差し迫った衝突を検出するためにオプティカルフローはどのように使用されますか?つまり、関数cv :: calcOpticalFlowPyrLK()から正しい結果を取得できるとすると、フレーム上のオブジェクトとの差し迫った衝突を検出するために、そこからどのように進めればよいでしょうか。衝突する可能性が最も高い物体からの距離を測定することは可能ですか?
これまたは私が見ることができる同様の機能を実装するサンプルの作業プロジェクトはありますか?eosgarden.comでプロジェクトを確認しましたが、機能が実装されていないようです。
上記のサンプルコードでは、lastCornersをUIImageに変換し、その画像を画面に表示しています。これにより、画面上に色付きの水平線のみが表示され、元のテスト画像とはまったく異なる画像が表示されます。これはその関数の正しい出力ですか?
このプロジェクトで使用されているデータ型を理解するのに少し苦労しています。InputArray、OutputArrayなどは、OpenCVAPIで受け入れられるタイプです。しかし、processFrame関数では、cv::MatがCannyエッジ検出メソッドに渡されていました。prevImageとnextImageのcv::MatをcalcOpticalFlowPyrLK()に渡しますか?
前もって感謝します :)
更新:このサンプルプロジェクトが見つかりました(http://www.hatzlaha.co.il/150842/Lucas-Kanade-Detection-for-the-iPhone)。私のMacではコンパイルされませんが、これからオプティカルフローの動作するコードが得られると思います。しかし、それでも私は、それらのポイントを追跡することから、衝突の妨げをどのように検出できるかを理解できません。あなたの誰かがQtsにさえ答えることができるならば。第一に、それは大いに役立つでしょう。
更新オプティカルフローがFoE(Focus of Expansion)の計算に使用されているようです。複数のFoE候補が存在する可能性があります。そして、FoEを使用して、TTC(Time To Collision)に到達します。後半はよくわかりません。しかし、私は今のところ正しいですか?OpenCVはFoEやTTCを実装していますか?
ios - XCode コンパイラ Apple LLVM 3.1 と LLVM GCC 4.2 の比較
このプロジェクトをダウンロードして試してみました (http://www.hatzlaha.co.il/150842/Lucas-Kanade-Detection-for-the-iPhone)。AppStore にもリリース版があります。
ソースをダウンロードしてコンパイルすると、コンパイル エラーが発生しました。コンパイラを LLVM GCC に変更したところ、エラーや警告なしで即座にコンパイルされました。
さらにここに私がしたことがあります:
- 個人のiPhoneにアプリ「ルーカス・カナデ」をダウンロード。期待どおりに実行されます (つまり、追跡されたポイントとビデオ出力が表示されます)。
- 上記のコンパイル済みアプリを会社の iPad にデプロイしました。これは、追跡されたポイント (アプリケーションがビデオ フレームを取得していることを意味します) を示していますが、ビデオ出力を表示することはできません。
一般的なアプリの流れ:
- カメラからフレームを取得します。
- フレーム (トラック ポイント) を処理します。
- フレームを出力すると、画面は期待どおりにカメラ フィードを表示しているように見えます。
デバイスの詳細:
- iPhone: OS 5.1.1 (9B206); iphone 4;
- iPad: OS 5.1 (9B176); iPad 2;
質問
- ビデオ出力の問題は、OS のバージョンが異なるため、または GCC コンパイラを使用しているために発生していますか?
- それがコンパイラの問題である場合、解決のためにここにコンパイルエラーを入れるのが適切でしょうか、それとも別の質問を開始する必要がありますか?
不明な点が多いため、この情報だけでは不十分な場合があることは承知していますが、アプリの詳細に入ると、問題の説明が非常に網羅的になります。解決策を推測するために必要な情報を教えてください。ここで更新します。
ios - 拡大の焦点
私は以前に質問をしましたが、それに対する回答はありませんでした。ここで、答えを期待して、さらに絞り込みます。
OpenCVからオプティカルフローを導出した後、拡大の焦点を計算する方法は?
前もって感謝します :)
python - cv2.calcOpticalFlowPyrLK の入力画像のデータ型エラー
Python バインディングを使用して opencv 2.4.1 を実行していますが、オプティカル フローの計算に問題があります。
具体的には、コードのこのセクション:
エラーを返します:
それで、画像をnumpy配列に変換しようとします:
今、私は新しいエラーがあります:
最後の努力で、画像を numpy 配列に変換する前に (iplimage から) cvmat に変換して、何が起こるかを確認します。
だから今私は立ち往生しています。以下は、参照用のコード全体です
c++ - OpenCV2.4.2calcOpticalFlowPyrLKはポイントを見つけられません
LinuxでOpenCV2.4.2を使用しています。私はC++で書いています。単純なオブジェクト(たとえば、白い背景に黒い長方形)を追跡したい。最初にgoodFeaturesToTrackを使用し、次にcalcOpticalFlowPyrLKを使用して、別の画像上のそれらのポイントを検索しています。問題は、calcOpticalFlowPyrLKがそれらのポイントを見つけられないことです。
私はCでそれを行うコードを見つけましたが、私の場合は機能しません:http: //dasl.mem.drexel.edu/~noahKuntz/openCVTut9.html
私はそれをC++に変換しました:
ImageA: http: //oi50.tinypic.com/14kv05v.jpg
ImageB: http: //oi46.tinypic.com/4l3xom.jpg
ImageC: http: //oi47.tinypic.com/35n3uox.jpg
winsize = 11でのみ機能することがわかりました。移動する長方形で使用して、原点からの距離を確認してみました。四隅すべてを検出することはほとんどありません。
Lucas-KanadeのOpenCV実装は、バイナリイメージ上の長方形を追跡できないようです。私は何か間違ったことをしていますか、それともこの機能は機能しませんか?
android - オプティカル フローを使用してカメラ ホルダーと壁の間の距離を見つける
通常の速度で歩いているスマートカードを持っている人と壁との間の距離を正確に決定することは可能ですか? スマートフォンにはカメラが 1 つしかありません。オプティカルフローでできますか?グーグル検索で、距離の計算が誤解を招く可能性があることがわかったので、私はそれを求めています。ここで Peter Meijer のコメントを読んでください。
また、私が持っている唯一のリソースがカメラと加速度計を備えたスマートフォンである場合、歩行者が移動した距離を計算するために必要な他のオプションがあることを知りたいです。アルゴリズムについて言及するか、リンクを提供するだけで十分です。
私と一緒に入手できる情報:-
壁からのカメラの最大距離
ユーザーのおおよその速度を見つけるための Android 加速度計からの加速度
私の質問で不明な点があればコメントしてください。
java - Android:MatOfPoint2fでcalcOpticalFlowPyrLKを使用する
MatOfPoint2fでcalcOpticalFlowPyrLKを使用できませんでした。私は自分のタイプを次のように宣言しました:
そして、以下を使用して機能を見つけて追跡します(私のコードは、RobertLaganiereによるC++のサンプルオプティカルフローアプリケーションに基づいています)。
以前は、変数points
は型List<List<Point>>
であり、MatOfPoint2fをインスタンス化してcalcOpticalFlowPyrLKに渡すことにより、型間で変換しfromList
ていました。
initial
ただし、このリストからのリストからリストへの変換では、とのポイント間の対応が失われるため、これはもう行いたくありませんでしたpoints
。この対応関係を維持したいので、両方の行列の項目を同時に繰り返すことでオプティカルフローラインを描画できます。
残念ながら、現在、次のアサーションエラーが発生しています。
不思議なことに、このアサーションを自分で追加すると、calcOpticalFlowPyrLKを呼び出す前に、失敗しません。
誰かが本当の問題がどこにあるのか、そしてフレーム間の追跡されたポイント間のこの関係をどのように維持できるのかを理解するのを手伝ってくれることを願っています。
編集:このアサーションエラーを回避するために何をする必要があるかを発見しました。アプリケーションは正しく動作しますが、次のようになります。
- 理由はわかりません。
- Calib3d.solvePnPについても同様の問題が発生していますが、convertToをimagePointsとobjectPointsに適用しても、ここでは問題が解決されませ
CvType.CV_32FC2
んCvType.CV_32F
。CvType.CV_64F
の場合のアサーションの失敗を修正するために、次のようにcalcOpticalFlowPyrLK
変更しました。points.get(0).push_back(initial);
だから私の質問は次のように変わりました:Calib3d.solvePnPで私の問題を解決する方法も知っているように、誰かが私のために一般的なケースを説明できますか?
opencv - 移動オブジェクトのオプティカル フロー: 少数のポイント
私はこのようなことをしようとしています: http://www.youtube.com/watch?feature=player_embedded&v=MIYt1yNwoZU
私は正しい道を進んでいます.2時間のコーディングでうまくいきます. しかし、私はいくつかの質問があります:
私はopencv 2.4を使用していますが、いくつかのオプションがあります..ここを参照してください。どれが最高ですか?いくつかの自動機能検出を備えたルーカス・カナデ?それとも、単純なグローバルオリエンテーションで十分でしょうか? またはカルマンフィルター?今のところ、私は密なファーネバックのアルゴリズムを使用しています。これが最初の(=より単純な)オプションだと思いますが、おそらく最良のオプションではありません。
画像のオプティカルフローを計算した後(オプティカルフローを計算するのは大変な作業なので2倍に縮小されています)、ベクトルの平均を取ります。通常の平均、それらすべてを合計し、ベクトルの数から除算します。そのため、フローマットのネストされた for ループを使用します。より良い方法?
/li>私は四角形を動かしていますが、右/左の動きは少し奇妙に思えますが、代わりに上/下は本当にうまく機能します! 誰かが私に理由を説明できますか?
翻訳は大丈夫ですが、回転に行き詰まっています..平均ベクトルを取得した場合、次数を取得するにはどうすればよいですか? X 軸を持つベクトル間の角度を試してみましたが、うまくいきません。何かヒント?
今、私はopencv drawing apiで何かを描いていますが、2.4からはopenglのサポートもあります..そしていいはずですが、その例が見つかりません..
python - PythonでのopenCVオプティカルフロー
私はpythonで画像解析プログラムを書いていて、cv.CalcOpticalFlowFarneback
. 私はほとんどのことを理解し、分析が機能しましたが、パラメーターで少し遊んでみたいと思いflags
ます。cv のドキュメントでは、flags は整数であり、説明は次のようになっています。
問題は、オプションのいずれかまたは両方を使用するようにフラグを設定する方法です。