4

私は、上級プロジェクトで遭遇したジレンマに関して、stackoverflow コミュニティから何らかのガイダンスを得られることを望んでいました。まず最初に、私は初心者のプログラマーであり、このプロジェクトは私の頭をはるかに超えていたとすぐに言う人もいると思います。私はすぐに、これがおそらく真実であることに気づきました。

では、それは仕方のないことです。いくつかの定義を示しましょう。

プロジェクトの目標: プロジェクト の目標は、他の多くの人がさまざまな SO の質問で達成しようとしてきたように (その多くは、この取り組みの過程で私にとって非常に役に立ちました)、駐車スペースが満車か空いているかを検出することです。最終的には、そのようなレポートをユーザーに返します (理想的には、使いやすさのために iPhone や Droid、またはその他のモバイル アプリを介して)。

使用ツール: AForge.Net ライブラリのリソースを多用しました。IP カメラからのビデオのキャプチャ、画像へのフィルタの適用、および最終的に検出の目標を完了します。その結果、主に初心者にとって使いやすいという理由で、C# でプログラミングすることを選択したことがわかります。その他のオプションには、MATLAB/C++、OpenCV を使用した C++、およびその他の代替手段が含まれていました。

問題

ここで私は問題に遭遇しました。以下は、AForge Image Processing Lab で前処理された画像のリンクです。使用された一連のフィルターとプロセスは、グレースケール、ヒストグラム均等化、ソーベル エッジ検出、そして最後に大津しきい値処理でした (ただし、最終ステップが必要であるとは確信していません)。

http://i.stack.imgur.com/u6eqk.jpg

もちろん、肉眼での画像からわかるように、カメラで監視しているスペースに明らかに駐車中の車である検出されたエッジのシーケンスがあります。これらの車は、光沢のある車輪のパターン、本質的​​にサイド ウィンドウの外縁を表す一種の「二重線路」パターン、およびこの場合のナンバー プレートの輪郭によって明確に定義されます。ただし、具体的には、プロジェクトの継続では、選択されたカメラはできるだけ多くのブロックをカバーする PTZ になるため、車の側面の特徴に焦点を当てたいと思います (ナンバー プレートなどの要素を排除します)。 . サンルーフの長方形などの機能も考慮される可能性がありますが、一般的なウィンドウの輪郭がそうであるのに対し、明らかにこれは車の普遍的な機能ではありません.

これらのパターンには違いがあり、もちろん車種やモデルによって異なることがわかります。しかし、一般に、このシーケンスは、目的のフィーチャの検索に成功するだけでなく、道路をビューから除外します (空きスペースを検出する場合、「最初のリトマス試験紙」として道路の色を使用するつもりであるため、重要です...道路のデータと一致するグレー レベルを検出した場合、特に領域内でエッジが検出されなかった場合は、安全に空きスペースを想定できると感じます)。私の質問はこれです。うまくいけば、サイト上の他の人に実際に役立つほど一般的です。

焦点を絞った質問:
画像セグメントを (クロッピングによって) 取得し、検出されたエッジ シーケンスをカメラからの将来の新しいフレームと比較する方法はありますか? より具体的には、余裕を持たせながら/本質的にエッジのわずかな違いに対する許容しきい値を作成しながらこれを行う方法はありますか?

質問に関する個人的な考え/ブレーンストーミング:
- 文字通りピクセルごとに比較する方法があると確信しています - 端の周りの長方形だけにトリミングし、トリミングした画像を新しく処理されたフレームにスライドさせて比較ピクセル-ピクセルごとですが、検出されたエッジと完全に一致しない限り、特に役に立ちません。

すべての助けに感謝します。必要に応じて明確にすることもできます。

4

2 に答える 2

4

やってみよう。

2 つのイメージがあります。それらをBeforePicとAfterPicと呼びましょう。これらの 2 つの画像のそれぞれについて、ROI (関心のある四角形) - AKA トリミングされたセグメントがあります。

AfterPic.ROI が BeforePic.ROI と大きく異なるかどうかを確認します。「非常に異なる」とは、その差が何らかのしきい値よりも大きいことを意味します。

これが実際に問題である場合は、次の 3 つの部分に分割する必要があります。

  1. BeforePic と AfterPic (およびそれぞれの ROI) を取得します。
  2. 画像\エッジの違いの抽象的な概念を数値的なものに変換します。
  3. 違いを何らかのしきい値と比較します。

最初の部分は実際にはあなたの質問の一部ではないので、無視します。最後の部分は、基本的に正しいしきい値を見つけることに基づいています。再び質問の範囲外です。2番目の部分は、質問の核心だと思います(ここで完全に外れていないことを願っています)。これには、 ShapeContextアルゴリズムを使用します(PDF では、セクション 3.3 まで実装するのが最適です。3.4 以降のニーズには堅牢すぎるためです)。

Shape Context は、画像のエッジを使用した画像マッチング アルゴリズムであり、成功率が高いです。これを実装することは私の最終的なプロジェクトであり、あなたにとって完璧に一致するようです (しゃれは意図されていません)。エッジが良好で、ROI が正確であれば、失敗することはありません。

実装には時間がかかる場合がありますが、正しく実行されれば、これは完全に機能します。貧弱な実装は実行が遅くなる可能性があり、画像ごとに 5 秒という最悪のケースを見たことがあることを心に留めておいてください。一方、適切な (まだ完全ではない) 実装では、画像あたり 0.1 秒未満で済みます。

これがお役に立てば幸いです。幸運を祈ります。

編集:興味があれば、C# @ CodeProject で ShapeContext の実装を見つけました

于 2011-04-25T16:21:45.667 に答える
3

私は自分の仕事でかなりの数のマシン ビジョンの問題を扱っていますが、最も重要なことは、単純であるほど良いということです。アプローチが複雑になればなるほど、予期しない境界ケースによって障害が発生する可能性が高くなります。産業界では、通常、条件を可能な限り単純化し、考慮すべき事項の数を制限する厳格な制約を課すことで、この問題に対処しています。確かに、学生のプロジェクトは業界のプロジェクトとは異なります。特定の手法を理解していることを示す必要があるためです。これは、自分が取り組むことを選択した問題に対する堅牢なソリューションであるかどうかよりも重要である可能性があります。

考慮すべき点がいくつかあります。

  1. 路上に事前定義された駐車スペースはありますか? カメラが監視する駐車領域を手動で事前定義するオプションはありますか? これにより、問題が大幅に簡素化されます。

  2. 車が違法に駐車されている場合 (複数の場所を占有している場合など)、間違った結果を提供してもよいですか?

  3. 予想外の環境条件 (ゴミ、ポットホール、溜まった水、雪など) がある場合、間違った結果を提供してもよいですか?

  4. すべてのカテゴリの車両をサポートする必要がありますか (乗用車、フラット ベッド トラック、バン、配送トラック、オートバイ、ミニ電気自動車、三脚車など)。

  5. 車のない通りのベースライン スナップショットを撮ることはできますか?

2 セットのエッジを比較する場合、おそらく最も堅牢なアプローチは幾何学的モデルの発見として知られています (関心のあるエッジを一連の「エッジゲル」として数学的に記述し、それらをチェーンに結合し、ジオメトリを比較します) が、これはやり過ぎです。あなたのアプリケーションのために。駐車領域に存在する「エッジ ピクセル」の数のしきい値、またはベースライン イメージとの差異に注目します (ただし、屋外の温度変化による材料の膨張によって視野が変化する可能性があるため、イメージ シフトに注意する必要があります)。カメラが機械的に動くため、わずかに変化します。)

于 2011-04-25T17:08:41.060 に答える