2

openCV を実装したり、QR コードの認識 API を呼び出したりせずに、画像内の QR コードの存在を判断するための迅速で信頼できるアルゴリズムはありますか?

この質問の意図は、QR コードをスキャンするユーザー エクスペリエンスを向上させることです。QR コードの認識に失敗した場合、プログラムは、QR コードを再度スキャンして認識するための QR コードが実際に存在するかどうか、またはプログラムが他の手順を呼び出すことができるように QR コードが存在しないかどうかを知る必要があります。

なんらかの応答を返すために、検出プログラムは 100% 正確である必要はありませんが、妥当な確率で正確な結果を返します。ここで openCV を使用できれば、フーリエ変換を簡単に実装して、画像に明らかな高周波があるかどうかを検出できます。これは、QR の存在の良い兆候です。しかし、openCV を統合すると、プログラムのサイズが大幅に増加するので、これは避けたいと思います。

4

2 に答える 2

2

ユーザーにフィードバックを提供したいのは素晴らしいことです。ユーザーが QR コードを見つけるのに「熱くなっている」ことを示すグラフィックを提供すると、コードを見つけて読み取るプロセスがより迅速かつスムーズになります。

すでに回答をお持ちのようですが、より堅牢なソリューションを提供したり、オプションを用意したりするために、次の 1 つまたは複数を試すことができます。

  • N 回の反復を使用して、暗いピクセルを閉じてモーフィングします。結果として得られる四角いチェックボード パターンは、塗りつぶされた四角形により近くなるはずです。これは、DataMatrix (同様の 2D コード) が存在するかどうか、読み取り可能かどうかを判断するために使用した検出方法の一部でした。これが機能するかどうかは、あなたのバックグラウンドに大きく依存します。
  • FFT を適用する前に、遠近歪みを減らすためにアフィン変換を見つけることを検討してください。FFT データの分析は、短縮のために周波数が少し広がっている場合は面倒です。
  • ローカル バイナリ パターン (LBP) などのテクスチャ測定や、Law のテクスチャ メソッドなどの古い手法を使用して、適切な結果を得ることができます。運が良ければ、2D コードとチェッカーボード パターンの間のテクスチャ測定値のヒストグラムでわずかな違いを検出できる場合もあります。
  • チェッカーボードのようなパターンの領域で、QR コードの隅にある 3 つのガイド機能を探します。SIFT/SURF のような方法を試すか、スケール スペースでテストされた限られた数の相関テンプレートを使用して、より単純な一致方法を実装することができます。
  • スケール スペースといえば、画像ピラミッドを生成して、フル解像度の画像で正方形を探す手間を省きましょう。エッジを保持する方法またはエッジを保持しない方法を試して、ピラミッド内のより小さい画像を生成するか、または両方を組み合わせて生成することができます。
  • カーネル処理を高速化するコードがある場合は、コーナー検出方法を試して、処理するデータ量を減らしてチェッカーボードのようなパターンを検出することをお勧めします。
  • 四角い領域でグレースケール値の明確なバイモーダル分布を探します。紙の 2D コードはコントラストが低くても十分に読み取れますが、紙のラベルの 2D コードはコントラストがはっきりしている傾向があります。
  • グレースケール値のバイモーダル分布を探すのではなく、勾配の大きさが非常に一貫しており、ほぼユニモーダルである領域を探すことができます。
  • 読み取り可能な QR コードの最小/最大面積制限がわかっている場合は、上記の基準の 1 つ以上に一致するパッチの画像を確率論的にサンプリングできます: 勾配の大きさの 1 つのモード、コーナー ポイントのほぼ均等な間隔など。有望に見える場合は、別のランダムな位置にジャンプしますが、新しいパッチは以前に有望ではないと判明したわけではありません。

画像ピラミッドのメモリがある場合は、解像度を下げた画像で作業すると、多くのテストをかなり迅速に試すことができるため、有利になる可能性があります。

ユーザー インタラクションに関する限り、前処理中に「これは QR コードである可能性がある」グラフィックを複数回更新し、徐々に強く/緑色のグラフィック (またはその地域の文化に適した色) で信頼度を示すこともできます。 )。たとえば、テクスチャのパッチが QR コードである可能性が約 60% の場合、破線の境界線を持つ薄い黄緑色の長方形を表示できます。80% から 90% の確率で、より彩度の高い緑色の塗りつぶされた長方形を表示できます。約 100 ~ 200 ミリ秒ごとにグラフィックを更新できる場合、ユーザーは、スマートフォンを動かすなどの何らかのアクションが助けになっているのか、それとも害を及ぼしているのかを知ることができます。

于 2013-09-16T17:10:18.837 に答える
1

1) 画像をグレースケールに変換する 2) 画像を nxm のセル、たとえば 3 x 3 に分割する。この手順は、少なくとも 1 つのセルが可能な QR コードによって完全にカバーされることを保証することを意図している 3)すべての細胞。いずれかのセルで、X 軸と Y 軸の両方で高周波領域の値が著しく大きい場合、QR コードが存在する可能性が高くなります。

100% 正確な検出ではなく、確率の問題に取り組んでいます。このアルゴリズムでは、チェス盤も QR コードとして検出されます。

于 2013-09-13T00:13:09.963 に答える