タグ付けされた質問 「opencv」

OpenCV(オープンソースコンピュータービジョン)は、リアルタイムのコンピュータービジョンのためのプログラミング機能のクロスプラットフォームライブラリです。

7
画像内の正方形を見つける
OpenCVを使用して画像内の正方形を見つける必要があります(matlabやその他の問題はありません。一般的に、私はいくつかのアイデアを期待しています)。 以下のテスト画像を検討してください。 上の画像で色の付いた正方形を正確に見つける必要があります(白い長いストリップではありません)。 私がしたこと : 一般的な方法(OpenCVサンプルに付属)を適用しました。つまり、すべてのカラープレーンで輪郭を見つけ、近似し、要素数= 4をチェックします。いくつかの四角形、特に暗い四角形が検出されると、ある程度拡張されます。 次のステップは予測でした。すなわち、この配置は固定されています。そのため、いくつかが取得された場合、残りのものを予測できます。また、さらに拡張されました。しかし、精度は非常に悪かった。 しかし、ここでは予測は良い方法ではなく、最初のステップで与えられたように正確な答えを常に提供するとは限りません。 必要なもの: 1)これらの正方形をより正確に検出する他のより良い方法はありますか?または複数の方法? 1つの重要なポイントは、ここでは時間は問題ではないということです。アルゴリズムは遅くなる可能性がありますが、問題ではありません。しかし、精度が主要な基準です。 時々、画像がはるかにぼやけることがあります。 そして、私が直面した主要な問題の1つは、いくつかの正方形が背景の色とほぼ同じ色を持つことです(3列目の1番目と2番目の正方形を確認してください)。 アイデアを探して、事前に感謝します 更新: 以下は、私が得た最大の正確な結果です: もちろん、結果画像のサイズは少し変更されます。 更新2: 私は以下の回答でより良いソリューションを提供しました:https : //dsp.stackexchange.com/a/7526/818

1
ハリスの角点検出の数学
この質問は、Signal Processing Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 これは、ハリスコーナー検出の数式です。 しかし、次の疑問があります。 とvの物理的な意味は何ですか?多くの参考文献は、それがウィンドウwがシフトする大きさだと言っています。それでは、ウィンドウはどのくらいシフトされますか?1ピクセルですか2ピクセルですか?uuuvvvwww ピクセル位置の合計はウィンドウでカバーされていますか? 単に仮定、I (X 、Y )における単一の画素の強度であり(X 、Y )または中心とするウィンドウ内の強度の和(X 、Y )?w(x,y)=1w(x,y)=1w(x,y) = 1I(x,y)I(x,y)I(x,y)(x,y)(x,y)(x,y)(x,y)(x,y)(x,y) Wikiによると、画像は2Dであり、Iで示され、エリア上の画像パッチを考慮するように求められ、I (x 、y )という表記を使用します。(x,y)(x,y)(x,y)I(x,y)I(x,y)I(x,y) 数学的な説明を理解するのはわかりにくいです。誰もがアイデアを持っていますか?

2
キーポイント記述子を使用する理由
私はSURFについて勉強したばかりで、その実装に行きますが、それでも記述子を使用する理由がわかりませんでした。 キーポイントとその目的を理解していますが、キーポイントを抽出するとき、なぜ記述子を使用する必要があるのでしょうか?認識における彼らの重要性と役割は何ですか?

2
ボードゲームで六角形のタイルを認識する方法は?
以下の画像のように、写真の六角形のタイルの境界を認識したいと思います。 正方形のグリッドでの標準的なアプローチは、最初にコーナー(例:キャニー)を検出し、次にハフ変換などを使用して最も長い線を抽出することです。 これは、外側の線の長さが短く、他の線と区別するのが難しいため、16進タイリングでは最適なソリューションではありません。 この問題を解決するアルゴリズムはありますか?opencvで解決策があると特に便利ですが、一般的なアイデアにも興味があります。 更新: pythonとopencvを使用すると、この結果を受け取ることができました: ここに私のコードがあります: import cv2 import numpy as np imgOrig = "test1"; img = cv2.imread(imgOrig+".jpg"); lap = cv2.Laplacian(img, cv2.IPL_DEPTH_32F, ksize = 3) imgray = cv2.cvtColor(lap,cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(imgray,127,255,0) contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE) size = img.shape m = np.zeros(size, dtype=np.uint8) for i, cnt in enumerate(contours): if cv2.contourArea(cnt) …

4
上からの人の検出
私は、地上3メートルのカメラを1つだけ使用して、人を検出する方法を見つけようとしています。これはカメラによって返されるフレームです: 更新:ビデオテスト-> http://dl.dropbox.com/u/5576334/top_head_shadow.avi そのためには、まず、バックグラウンドとフォアグラウンドのセグメンテーションを実行する必要があることを理解します。それは簡単な部分です。 前景マスクを使用すると、ハフ変換などの簡単な操作で円を見つけることができますが、この方法では、多くの誤検出を含む頭部の60%しか検出されません。 色分けのような他の簡単なテクニックを使用することもできますが、髪型、色、髪の量などのために、人々の頭は上とは大きく異なることがわかりました... 私がそれについて持っている他のオプションは、HOG記述子、またはHaarのような機能を使用する可能性ですが、モデルを訓練するには上から見た人々の広範なデータベースが必要です。私はそのようなものを見つけていません。 これは非常に頻繁に起こる問題だと思っていましたが、文学やインターネットではあまり見つけることができません。このタスクを解決するための助けをいただければ幸いです:-) 更新:詳細については、目標は歩行者の流れを追跡するための一般的な方法を実装することです。最初のプロトタイプはモールでテストされます。

4
最も正確なカメラキャリブレーションを取得するにはどうすればよいですか?
まず、これが正しいStack Exchangeボードであることを願っています。そうでない場合、私の謝罪。 カメラのキャリブレーションを必要とするものに取り組んでいます。OpenCV(C ++)でこれを行うためのコードを正常に実装しました。内蔵のチェス盤機能と印刷したチェス盤を使用しています。 インターネットには、チェス盤の複数のビューを提供し、各フレームからコーナーを抽出することを述べた多くのチュートリアルがあります。 最も正確なカメラキャリブレーションを取得するために、関数に与える最適なビューのセットはありますか?キャリブレーションの精度に影響を与えるものは何ですか? たとえば、何も動かさずに同じビューの5つの画像を与えると、ウェブカメラフィードを歪ませようとすると、まっすぐな結果が得られます。 ご参考までに:非対称円のグリッドとそれぞれのOpenCV関数を使用することで、より良いカメラキャリブレーションが必要であることが最近わかりました。

6
さまざまな素材の画像セグメンテーションの問題
こんにちはCV /パターン認識コミュニティ、 画像のセグメンテーションに関して深刻な問題があります。シナリオは、私の頭を狂わせる炉内の雰囲気です。また、1つの特殊なケースだけでなく、さまざまな材料(ガラス、セラミック、Al、Irなど)のオブジェクトの輪郭を短時間(10秒未満)で検出する必要があります。また、コードのピクセルの連続した行に輪郭が必要です。したがって、チェーンコードまたはいわゆるボーダー/輪郭追跡も必要であるため、オープンホールは適切ではありません。バックグラウンドには、ほこり、粒子などの非線形ノイズが時々現れます。 MatlabまたはOpenCVの提案を歓迎します。 より明確にするために、目標と半透明のオブジェクトの別の画像を投稿しましたが、これも検出する必要があります。また、知っておく必要があるさらなる例。 画像#1を見るとわかるように、画像の右側の部分と、オブジェクトである星の外側の輪郭の近くに粒子があります。また、全体的なコントラストはあまり良くありません。オブジェクト自体は地下にあり、輪郭検出には関係ありません。画像#2は半透明のオブジェクトを示していますが、これも可能です。 次の画面(赤い線)のように、そのオブジェクトの輪郭/境界を見つけたい。2つの長方形(黄色)は、開始点(左)と終了点(右)を示しています。青い線は無視できます。 最初は、フィルターだけでその不潔な雰囲気の問題を解決できると思いました。しかし、多大な時間を費やした後、前景と背景のコントラストを高めるためにノイズを大幅に除去または削減する必要があることに気付きました。ヒストグラム等化、大津適応等化、線形フィルター(ガウスなど)、非線形フィルター(中央値、拡散)、Active Contours、k-Means、Fuzzy-c-means、純粋なCannyなど、多くの方法を試しました。形態学的演算子と組み合わせたエッジ検出。 キャニー:粒子と大気が穴の原因になっていますが、オブジェクトの完全な輪郭が必要です。モルフォロジー演算子を閉じて拡張しても、それだけでは十分ではありません。Cannyには、ヒステリシスがあるため、私が研究したすべての方法の中で最高の結果が残っています。 アクティブな輪郭:エッジ/グラデーションでも機能します。オブジェクト内で初期化した後、完全に狂ったように動作します。これは、エッジマップが「開いた」オブジェクトになっていることが原因である可能性があります。私の知る限り、輪郭を閉じなければなりません。さまざまな派生物(GVF / VFC / Classic Snake)で試してみました。 k-Means:霧の背景のため、結果には炉の雰囲気が含まれます。ファジーc-meansについても同じです。オブジェクトを背景から分離するため、2つのクラスターを選択しました。クラスターが多いと、結果が弱くなります。 ヒストグラム/大津:グレーの強度が非常に近いため(imho!)、オブジェクトと背景をマージしています。ローカルおよびグローバルな方法で試してみました。 フィルター:特にGLPFまたは他のLPFがエッジを塗りつぶしますが、これはあまり良くなく、霧の雰囲気さえも低減しません。 非線形フィルターはエッジを保持しています。それらのほとんどは、大きな画像の計算に時間がかかりすぎます。とりあえず、高速の双方向フィルタを使用しました。結果は以下を参照してください。 したがって、得られたオブジェクトセグメントの結果は既存のアルゴリズムと十分に競合しないため、後処理ステップには単一の方法では十分ではありません。既存のアルゴリズムは非常にローカルであるため、この非常に特殊なシナリオで機能します。 何かを完全に見逃してしまった場合、どうすればいいかわかりません。隙間や穴を開けずに、どのように処理し、どのように良好な輪郭結果を得る必要があるのか​​分かりません。 CCDと物理的環境?前もって感謝します! これまでの最後のアプローチ(MOでの長い実験の後): バイラテラルフィルター(エッジを保持しますが、均一な領域を平滑化します) キャニー(シグマ= 2、しきい値= [0.04 0.08]) 形態学的オペレーション(MO): 、 bwareopen、&closingremovebridge bwlabel輪郭の周囲のみを選択し、不要なノイズを除去します。まだスクリーンショットは更新されていませんが、スターには有効です。ガラスには外側の輪郭に接続された内側の輪郭があります。これは下のスクリーンショットでも確認できます。 そのため、外側の輪郭を横断するための特別なアルゴリズムが必要なのではないかと心配しています。近隣の時計回り/反時計回りの検索になります。コーナーポイントがある場合、その時計回り/反時計回りのステップを切り替えることができます。隙間がある場合は、半径を増やしてもう一度見てください。次のポイントが2つ以上ある場合は、前と同じ方向を向いたポイントを選択します。その輪郭追従アルゴリズムは理にかなっていると思いますか?

3
OpenCV / C ++は、それらの間の距離に基づいて近くの輪郭を接続します
輪郭を接続するかどうかを指定するそれらの間の距離に基づいて、画像内の近くの輪郭を接続する必要があります。 今、同じ問題に関する質問があります/programming/8973017/opencv-c-obj-c-connect-nearby-contoursが、ここで彼はすべての輪郭を単一の輪郭にマージしています。これは欲しくない。このためのopencvの機能はないと思いますが、そのアルゴリズムを提案できます。私のアプリケーションは次のようになります: 私は手を検出しているので、皮膚検出アルゴリズムを使用してそれらを特定しましたが、私の皮膚は白くなく、ひょっとすると肘の輪郭が壊れていることもあります。だから私は近くの輪郭を接続したいがそれらのすべてではない(両方の私の手が輪郭にあるので)(手によって私は肩から手のひらまでを意味するからです)。 さらに、いくつかのエッジ検出を使用することで、手の境界を取得し、この境界内のこのパッチの一部が皮膚として検出されたかどうかを検出すると、この境界内の領域全体が皮膚として検出されますが、これを行う方法がわかりません部。 どんな助けでもありがたいです。前もって感謝します サンプル画像: この画像では、距離が40ピクセル未満のポイント(8つの接続)を接続したいので、左手を単一の輪郭として取得します 私の目的は、手の輪郭のみを取得することです(他の領域は気にしません)

3
ホモグラフィ行列からカメラポーズを計算する方法は?
キャリブレーションされたカメラを1台だけ使用するとします。このカメラから、私は画像AとB IがAとBの間のホモグラフィを知ってもらう、通過計算のOpenCVの)(findHomography。 画像Aのポーズ(回転行列Rと並進ベクトルt)がわかっているので、画像Bのポーズが必要です。取得したら、後続の画像のすべてのポーズを計算できるようになります。 Bのポーズの計算の実装を知っていますか?ウェブ上でいくつかの記事を見つけましたが、簡単に実装できるソリューションを見つけることができませんでした...

4
本棚の画像からの本のタイトルと著者のスライスと認識
私は自分の学習目的で、次のような本棚のイメージを与えられて、本をリストするアルゴリズムの実装を開発しようとしています: 最初のステップは、画像を個々の本にスライスすることです。 Mathematicaでの私のアルゴリズムは次のとおりです。 img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"] 基本的なエッジ検出を行い、 テキストを削除し、長い行を維持しようとします edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5] 次に、不要な水平線を削除します lines = Sort[ImageLines[img5] /. {{0., _}, {_, _}} -> Sequence[]] Show[img, Graphics[{Thick, Orange, Line /@ lines}]] ただし、結果はそれほど優れていません。 私の質問は: これを改善してより良い結果を得るにはどうすればよいですか? これを行うよりスマートな方法はありますか? (後の)OCRフェーズで精度を高めるために、さらにどのように画像を処理する必要がありますか? 色情報を使用してセグメンテーションを改善する方法は?

2
検出された線に基づいてホモグラフィを計算する
「完全なモデル」と画像点の間の対応点を使用して、画像からカメラ平面までのホモグラフィを計算できることを知っています。 私はサッカーのピッチ/フィールドでそれをやっており、エッジ検出を使用してピッチ内の白い線を見つけました。 しかし、カメラは(常に)すべてのピッチをカバーしているわけではないため、すべてのコーナーを見ることができません...そして、モデルのコーナーのみが100%既知のポイントです(他の顕著なポイントはありません)。 問題は、線が別の線と交差して角を形成しない限り、線の画像点のみを知っていることであり、モデルの対応する「完全/現実世界」座標ではありません。 検出された線が互いに交差せずにコーナーを作成していても、検出された線を使用してホモグラフィを計算する方法、または候補ホモグラフィのセットだけを計算する方法はありますか? ピッチ、視野、および対応する実世界/モデル座標(緑色の円)を知ることができるピッチのポイント、および視野内ではまったく役に立たない可能性がある2行の例を示す画像の例、私は彼らがピッチの対応する現実世界/モデルで開始または停止する正確な手がかりがありません: 赤い線は、使用したい線の例ですが、実際の座標はわかりません。カメラのポーズによっては、対応する点が「どこでも」になる可能性があるため、推定するのは難しいです。

4
スケールおよび回転不変テンプレートのマッチング
スケールと回転に不変なテンプレートマッチングの方法を探しています。私はすでにいくつか試してみましたが、それらは私の例にとってそれほどうまく機能しなかったか、実行するのに永遠にかかりませんでした。SIFTおよびSURF機能の検出は完全に失敗しました。Log-Polar Template Matching関数も実装しようとしましたが、まだ終りませんでした(正確な方法はわかりませんでした)。 これらの記事(最初はドイツ語) http://cvpr.uni-muenster.de/teaching/ss08/seminarSS08/downloads/Wentker-Vortrag.pdf http://www.jprr.org/index.php/jprr/article/viewFile/355/148 その方法について読みました。極座標のマッピングは機能しましたが、それが正しいかどうかはわかりません。画像は次のようになります。 source_log_polar.png http://www.shareimages.com/images/pics/0/0/3/62394-pZSfl5WenZysnpyVnKg-source_log_polar.png そして、これらの2つの画像をOpenCVのテンプレートマッチング機能でマッチングした後、私はその結果を得ました 今はどうすればいいのかわからない。 私のテンプレートは、青写真と青写真自体を構築する上で常にシンプルなシンボルです。シンボルのサイズと向きは異なる場合があります。 たとえば、私の単純な青写真: そして私のテンプレート この例では、テンプレートは1つだけですが、設計図では、サイズや向きが含まれているものも含め、すべてのオカレンスを見つける必要があります。 誰も私がこれを解決する方法を持っていますか? 編集: アンドレイのアプローチへの追加。放射状プロファイルの距離キャプチャアルゴリズム。(EmguCVを使用) private float[] getRadialProfile( Image<Gray, byte> image, Point center, int resolution ) { var roi = image.ROI; if ( !roi.Contains( center ) ) { return null; } var steps = resolution; var degreeSteps …

2
歩行者カウントアルゴリズム
現在、歩行者カウンタープロジェクトを開発しています(LinuxでOpenCV + QTを使用)。アプローチについての私の考えは次のとおりです。 フレームをキャプチャする バックグラウンド減算を行う 明確なノイズ(侵食、拡張) BLOBの検索(cvBlobslib)-フォアグラウンドオブジェクト 各BLOBについて、ROIを設定し、これらのBLOBで歩行者(detectMultiScaleを使用したLBP)を検索します(パフォーマンス向上のため) 見つかった歩行者ごとに、ネストされた上半身検索を実行します(不明)(信頼性の向上) 同じ歩行者が連続するフレーム(3〜4フレーム)で見つかった場合-その領域をカムシフトとトラックに追加-歩行者としてマークする 次のフレームのBLOB検出からカムシフト追跡領域を除外する 歩行者が行のインクリメント数を超える場合 順調に進んでいるかどうかを確認したい。私のアプローチを改善する方法について何か提案はありますか?誰かが似たようなことに取り組んだ場合、この問題に関する有用なヒント、リソース(および批判)をいただければ幸いです。

1
ノイズの多いポイントのコレクションから曲線を復元する
背景:ビデオ内の多数の泡を追跡するシステムを作成しようとしています Circular Hough Transformを使用して、単一画像のケースでバブル検出を実装しています。オクルージョン、ブラー、その他の要因により、この検出は100%正確になることはありません。精度を犠牲にして、再現率が高くなるように検出手順を調整しています。 これが行われ、ビデオの一連のフレームに適用されると、4D空間内のポイントとして特徴付けることができるいくつかの検出があります-x位置、y位置、半径、およびフレームインデックス。 この4D点群から曲線を復元できる手順はありますか?

2
ガウスの違い、ガウスのラプラス、メキシカンハットウェーブレットの違いは何ですか?
CVで使用されている3つの手法は非常に似ていますが、微妙な違いがあります。 ガウスのラプラシアン:∇2[g(x,y,t)∗f(x,y)]∇2[g(x,y,t)∗f(x,y)]\nabla^2\left[g(x,y,t)\ast f(x,y)\right] ガウスの差:[g1(x,y,t)∗f(x,y)]−[g2(x,y,t)∗f(x,y)][g1(x,y,t)∗f(x,y)]−[g2(x,y,t)∗f(x,y)] \left[g_1(x,y,t)\ast f(x,y)\right] - \left[g_2(x,y,t)\ast f(x,y)\right] リッカーウェーブレットとの畳み込み:リッカー(x、y、t )∗ f(x 、y)Ricker(x,y,t)∗f(x,y)\textrm{Ricker}(x,y,t)\ast f(x,y) 私が現在理解しているように:DoGはLoGの近似です。どちらもブロブ検出で使用され、どちらも基本的にバンドパスフィルターとして機能します。メキシカンハット/リッカーウェーブレットを使用した畳み込みでも、ほぼ同じ効果が得られるようです。 私は3つのテクニックすべてをパルス信号に適用しました(マグニチュードを類似させるために必要なスケーリングを使用)、結果はかなり近いです。実際、LoGとRickerはほとんど同じに見えます。私が気付いた唯一の本当の違いは、DoGとの違いです。LoGとRickerではなく、調整する2つの無料パラメーター(と)がありました。また、ウェーブレットが最も簡単/最速であることがわかりました。これは、DoGの場合は1回のたたみ込み(カーネルのFTを使用したフーリエ空間での乗算によって行われる)と、DoGの場合は2回、LoGの場合はコンボリューションとラプラシアンで実行できるためです。 σ 1σ1σ1\sigma_1σ1σ1\sigma_1 各手法の比較の長所/短所は何ですか? 一方が他方より優れているさまざまなユースケースはありますか? また、はカーネルとして実装できるため、LoGとRickerは別々のサンプルで同じ操作に縮退すると直観的に考えています。 。[ - 1 、2 、- 1 ]∇2∇2\nabla^2[ − 1 、2 、− 1]または⎡⎣⎢0− 10− 14− 10− 10⎤⎦⎥2D画像用[−1,2,−1]or[0−10−14−10−10]for 2D images\begin{bmatrix}-1,& 2,& -1\end{bmatrix}\quad\text{or}\quad\begin{bmatrix} 0 & -1 & 0 \\ -1 & 4 …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.