リアルタイムのビデオを受信する独自のブロブ検出を行い、ホワイト ペーパー シートを検出しようとしています。紙の中に何か書いてあったとしても。紙を検出する必要があり、コーナーです。なぜなら、紙の各コーナーで紙の上にopenglポリゴンを描画することがポリゴンのコーナーになるからです。次に、他の作業を行うために紙の座標が必要です。だから私はする必要があります: - 正方形の白い塊を検出します。-角の座標を取得します -白いシートの上に多角形を描きます。
どうすればそれを行うことができますか?
リアルタイムのビデオを受信する独自のブロブ検出を行い、ホワイト ペーパー シートを検出しようとしています。紙の中に何か書いてあったとしても。紙を検出する必要があり、コーナーです。なぜなら、紙の各コーナーで紙の上にopenglポリゴンを描画することがポリゴンのコーナーになるからです。次に、他の作業を行うために紙の座標が必要です。だから私はする必要があります: - 正方形の白い塊を検出します。-角の座標を取得します -白いシートの上に多角形を描きます。
どうすればそれを行うことができますか?
コンテキストに大きく依存します。たとえば、次のように仮定します。
紙は常にほぼ中央に配置され(つまり、W / 2、Y / 2は常にブロブの内側にあります)、45度を超えて回転しないことを知っています(30がより良いでしょう)
角がFOVの端に決して触れないように、シートの周りに適切な境界線を設定します
ポイントがブロブの内側にあるか外側にあるかを(局所的な分散の分析を通じて、または運が良ければ背景色または輝度をチェックして)言うことができます
内側/外側の機能が失敗することはありません(境界のすぐ近くを除く)
次に、境界(確かに外側)と中心(確かに内側)の点から二分法を介して線を歩き、端に点(面積)を見つけることができます。
2つのエッジポイントは長方形を与え(2つの面はビームを与えます)、2つの長方形は交差点を与えます(2つのビームはより大きな面積を与えます)-そしてあなたのコーナーがあります。コーナーを検証するために、検出の不確実性(面積半径)を実行する必要があります(もう1つのあまり洗練されていないアプローチは、コーナーがどこにあるかを大まかに計算し、スパイラル検索または酔っぱらいの散歩でそれを特定することです)。
このアルゴリズムは並列化に適しているため、仮説が成り立つ限り、非常に高速である必要があります。
とはいえ、それはハックのままです-私はくつろぐことに同意します、なぜ車輪を再発明するのですか?メモリまたはCPUの制約(組み込みシステムなど)がある場合は、ARMおよび組み込みプラットフォームにもOpenCVおよびe-Visionの「ライト」ポートが必要だと思います。
(私の用語は申し訳ありませんが、私はイタリア語からサルに翻訳しています。「Areal」はあなたの「blob」に対応する可能性があります。ビームは、2つの異なるブロブのすべての点のカップルを結ぶ線のファミリーです。線の強度は積です。その領域の中心からの点からの距離の)
リアルタイムのビデオを受信する独自のブロブ検出を実行し、ホワイトペーパーシートを検出しようとしています。
最初のショットは、単純な塗りつぶしである可能性があります。つまり、画像を2値化し、アルゴリズムを適用するための適切なしきい値を選択します。X
紙が常にこれより明るく、背景が常にこれより暗いことがわかっている場合は、しきい値を固定できます。または、これは適応しきい値、たとえば大津の方法にすることができます。OpenCVはこれを無料で提供しています。
速度を上げる必要がある場合は、union-findデータ構造を使用できます。
最後に、コーナーを識別するヒューリスティックな方法を考え出す必要があります(たとえば、x / y方向の4つの極値)。
次に、[...]角の座標が必要です[...]
次に、ブロブ検出は必要ありませんが、そもそもコーナー検出または輪郭検出が必要です。OpenCVには、まさにこのための優れた機能がいくつかあります。使用できない場合は、上記のように画像を2値化し、ハリス検出器を使用してオブジェクトの角を見つけることをお勧めします。
OpenCVのTBBサポートは、それを使用し、リアルタイムの要件を満たすのに問題がある場合にも非常に便利です。