アカウント名:
パスワード:
QRコードは1:1:3:1:1の位置検出パターンを探索するという仕様上、位置検出パターン自体が歪んでその比率が狂うと極端に検出性能が落ちてしまうのが難点。くしゃくしゃの紙にまで対応しろとは言わないので均一曲率の曲面程度には対応できるような簡易的な歪み補正機能を持たせてくれると嬉しい。
良く出回ってるライブラリには回転と斜め補正ぐらいはついてるよなそれで3次元中の位値出したりした覚えがある
しかし曲面は…どうなんかな試さなかったなぁどうしても必要なら自前でループ書いても何とかなるんじゃね?# 白黒反転対応とかそれ(自前加工)でやったことあるな
と言っても曲率と向きのバラエティ豊富すぎて片っ端からやってもきついかコーナーマーク3つを別途処理で見つければヒントぐらいにはできそうかね
QRコードの認識フローとしては、・まず3つの位置検出パターンを画像認識する あの正方形パターンは、中心からずれても、ななめでも、一次元的にスライスしたら黒白の比率が1:1:3:1:1になりますので、 どんな向きで撮影したQRコードでも、水平スキャンで1:1:3:1:1を検出→垂直にも1:1:3:1:1か確認、 で比較的平易に画像認識できます。 ↓・位置検出パターンを3つを元に、パースを補正する 「正方形な平面のQRコードを、3次元的に傾けて撮影」した場合のパースは、 その3頂点、3個のマーカーの大きさ・間隔がわかれば、 残りの1頂点の情報がなくても算出可能です。 そこから逆変換してパース無しの正面正方形画像に変換できます。 マーカー無しの頂点を右下に変換すれば向きも揃います。 ↓・正方形画像になったQRコードをデコードするって流れですね。
曲面に張られたQRコードの場合は、3頂点から残り1頂点を求めることはできません。そこで、モデル2では、残りの1頂点に補助として「アライメントパターン」を配置してる。4頂点がわかれば、そこから「緩やかな曲面を想定した逆変換」はなんとかできるんでしょう…
#以上の理屈は難しくないんですが、自前で実装してみると、なかなかまともに認識できないんですよね。細かいノウハウが山ほどありそうです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
歪み補正機能がほしい (スコア:2, 興味深い)
QRコードは1:1:3:1:1の位置検出パターンを探索するという仕様上、位置検出パターン自体が歪んでその比率が狂うと極端に検出性能が落ちてしまうのが難点。
くしゃくしゃの紙にまで対応しろとは言わないので均一曲率の曲面程度には対応できるような簡易的な歪み補正機能を持たせてくれると嬉しい。
Re: (スコア:0)
良く出回ってるライブラリには回転と斜め補正ぐらいはついてるよな
それで3次元中の位値出したりした覚えがある
しかし曲面は…どうなんかな試さなかったなぁ
どうしても必要なら自前でループ書いても何とかなるんじゃね?
# 白黒反転対応とかそれ(自前加工)でやったことあるな
と言っても曲率と向きのバラエティ豊富すぎて片っ端からやってもきついか
コーナーマーク3つを別途処理で見つければヒントぐらいにはできそうかね
Re:歪み補正機能がほしい (スコア:2)
QRコードの認識フローとしては、
・まず3つの位置検出パターンを画像認識する
あの正方形パターンは、中心からずれても、ななめでも、一次元的にスライスしたら黒白の比率が1:1:3:1:1になりますので、
どんな向きで撮影したQRコードでも、水平スキャンで1:1:3:1:1を検出→垂直にも1:1:3:1:1か確認、
で比較的平易に画像認識できます。
↓
・位置検出パターンを3つを元に、パースを補正する
「正方形な平面のQRコードを、3次元的に傾けて撮影」した場合のパースは、
その3頂点、3個のマーカーの大きさ・間隔がわかれば、
残りの1頂点の情報がなくても算出可能です。
そこから逆変換してパース無しの正面正方形画像に変換できます。
マーカー無しの頂点を右下に変換すれば向きも揃います。
↓
・正方形画像になったQRコードをデコードする
って流れですね。
曲面に張られたQRコードの場合は、3頂点から残り1頂点を求めることはできません。そこで、モデル2では、残りの1頂点に補助として「アライメントパターン」を配置してる。4頂点がわかれば、そこから「緩やかな曲面を想定した逆変換」はなんとかできるんでしょう…
#以上の理屈は難しくないんですが、自前で実装してみると、なかなかまともに認識できないんですよね。細かいノウハウが山ほどありそうです。