「QRコードが読み込めない」のは余白がないから。解説ツイートが有益
- hono_ryugaku
- 26275
- 70
- 4
- 32
これは違うな。 画面が大きいからじゃなくて余白がないから読めない。 QRコードは周りに4ピクセルの余白が必要だし、そもそもいちばん大切なファインダパターンが切れてる。 twitter.com/rokuzouhonda/s…
2022-10-22 01:43:26悲報。Apple Watch ultra、画面が大き過ぎてANAの手荷物チェックイン、保安ゲート、搭乗ゲート、全てスキャンできず pic.twitter.com/koLYqO7Ozk
2022-10-21 17:30:14QRコードもバーコードも「余白」がとても大切。 QRは誤り訂正入ってるけど、あくまでパターン内側だけ。 特にファインダパターンの周りは余白がないと読めない。 バーコードも左右に余白が要る。 デコーダー書いてみりゃわかるが、余白がパターン検出のスタートを示すので、削ると全く読めない。
2022-10-22 01:57:07そうそう。切り取ってしまう人が多い。 なので「QRコードやバーコードを出力するときは余白の外側に枠を書け」と指導してるんだが、なかなか普及しない。 枠があれば切るときはその枠で切ってくれる可能性が高いので。 twitter.com/featherogs/sta…
2022-10-22 02:01:38バーコードやQRコードの解析の話はもちょっとするか。 まずバーコードだけど。 画像を2値化してバイナリにすること自体はとても簡単。閾値で分ければいいだけなので。 問題はバーの太さがわからないこと。 センサー上で、10ドットで1本なのか、20ドットで1本なのか。 これを判定するために
2022-10-22 04:57:15フーリエ変換など周期を判定する方法を使うんだが、次はこの変換を何処から始めたらよいかがわからない。 画像やバーコードリーダーで得られる濃淡の一次元情報をフーリエ変換するのは何処からでもできる。 それをもとにバイナリに治すこともできる。 バーコードでない情報でもできてしまう。
2022-10-22 05:03:41もちろんバーコードを読めばその情報をバイナリとして吐けるが、バーコードでなくてもメチャクチャなバイナリを読めてしまう。 これを防ぐために、コントラストの最低値を設けたりするが、 強力なのがフーリエ変換の強度で閾値を設ける方法。 で、これをやるためにはある程度の余白が必要になる。
2022-10-22 05:07:52フーリエ変換がわかってると簡単なんだが。 余白なしのデータは突然ビットが立つわけで、高い周波数を含んでしまって、正確な周期がみつけられなくなる。 なので余白がないとバーコードは読めない。 余白のおかげで「ここがバーコードなのかどうか」が判定できると言ってもいい。
2022-10-22 05:12:51前後するが、バーコードリーダーは読もうと思えばバーコードでなくても読めちゃうので、 バーコードリーダーで大切なのは「バーコードを読んでない」というのを判定すること。 そのために余白が大切。 QRの場合はもう少し高度で。
2022-10-22 05:16:45二次元でも画像をバイナリにするだけなら簡単にできる。 QRは「誤り検出訂正」があるので、メチャクチャなデータの場合は破棄すれば、「QRコードを読んでいるか」という判定はできる。 できるが、それを画像の全領域、全方向でやるのは負荷が高くてできない。
2022-10-22 05:20:52どこにどの向きでQRが写ってそうか、あたりをつけてから変換する必要がある。 そのために使うのがファインダマークとその周りの余白。 バーコードと同じように、フーリエ変換(のようなもの)を縦横に使って、周期を検出する。 だから、同じように余白がないと見つけられない。
2022-10-22 05:24:10一般に、この手のバイナリをアナログに埋め込む技術では、埋め込まれたバイナリを復元することより、「そこに埋め込まれてる」ということを検出するほうが難しい。 なので、検出に使う余白を削ったら読めない。 一方で、検出に関係なくて誤り訂正が入ってるQRの真ん中辺りは削っても普通に読める。
2022-10-22 05:33:06これは余談なんだけど。 よくあるQRコードリーダーはファインダパターン(角にある四角)を見つけるとそのあたりをデコードしてQRコードかどうか確認する。デコードは結構負荷が高い。 なので。 ファインダパターンだらけの画像を読ませると処理が追いつかなくて止まったり落ちたりするケースが多い。
2022-10-22 05:37:00ある人を写真に撮ろうとするとアプリが異常に重くなったり落ちたりして写真とれない怪現象に遭遇したことがある。 スクエアドット柄のスカートが原因で、スカートを写さなければ問題なかった。 原因はQRコード読み込み機能のバグではないかと思ってる。
2022-10-22 05:43:24@rei_software 画像をちょい縮小して余白を増やしてやるか、 A4の白い紙にQRコードよりほんの少し大きい穴を開けてから重ね、 その窓から読めばいけそう。
2022-10-22 08:05:45@rei_software セルフレジでスキャナーを密着させて読み込まない!とか文句言うタイプの人だな
2022-10-22 09:06:05@ten10tem @rei_software いや、この人が画像の余白をトリミングしたせいなんじゃないか?
2022-10-22 12:15:36@rei_software @May_Roma スマートウォッチの枠が白色ならワンチャン読めたかもですね。 リーダーによって分解能も異なるので、他の会社ならいけたりするのかしら。
2022-10-22 10:15:06@rei_software 誤記とは思いますが、4セルですね qrcode.com/howto/code.html
2022-10-22 10:23:59@rei_software これ Apple Watch ultra側の仕様の問題だな( ;´Д`) 仕様がコロコロ変わるから ソフト側の表示範囲の設定が必要なパターンなので( ;´Д`) Appleが仕様公開が遅過ぎたんだろうな( ;´Д`) Appleアプリの表示範囲はソフト側指定なので Appleの公開が遅過ぎなのが原因かと
2022-10-22 10:27:46