「QRコードが読み込めない」のは余白がないから。解説ツイートが有益

コンピューターサイエンスって奥が深いな
23
れい(猫耳の専門家)🍥 @rei_software

これは違うな。 画面が大きいからじゃなくて余白がないから読めない。 QRコードは周りに4ピクセルの余白が必要だし、そもそもいちばん大切なファインダパターンが切れてる。 twitter.com/rokuzouhonda/s…

2022-10-22 01:43:26
本田雅一 @rokuzouhonda

悲報。Apple Watch ultra、画面が大き過ぎてANAの手荷物チェックイン、保安ゲート、搭乗ゲート、全てスキャンできず pic.twitter.com/koLYqO7Ozk

2022-10-21 17:30:14
れい(猫耳の専門家)🍥 @rei_software

QRコードもバーコードも「余白」がとても大切。 QRは誤り訂正入ってるけど、あくまでパターン内側だけ。 特にファインダパターンの周りは余白がないと読めない。 バーコードも左右に余白が要る。 デコーダー書いてみりゃわかるが、余白がパターン検出のスタートを示すので、削ると全く読めない。

2022-10-22 01:57:07
れい(猫耳の専門家)🍥 @rei_software

そうそう。切り取ってしまう人が多い。 なので「QRコードやバーコードを出力するときは余白の外側に枠を書け」と指導してるんだが、なかなか普及しない。 枠があれば切るときはその枠で切ってくれる可能性が高いので。 twitter.com/featherogs/sta…

2022-10-22 02:01:38
ogs @featherogs

余白が必要なことを知らずにトリミングしちゃう人、いますよねぇ twitter.com/rei_software/s…

2022-10-22 01:57:29
れい(猫耳の専門家)🍥 @rei_software

バーコードやQRコードの解析の話はもちょっとするか。 まずバーコードだけど。 画像を2値化してバイナリにすること自体はとても簡単。閾値で分ければいいだけなので。 問題はバーの太さがわからないこと。 センサー上で、10ドットで1本なのか、20ドットで1本なのか。 これを判定するために

2022-10-22 04:57:15
れい(猫耳の専門家)🍥 @rei_software

フーリエ変換など周期を判定する方法を使うんだが、次はこの変換を何処から始めたらよいかがわからない。 画像やバーコードリーダーで得られる濃淡の一次元情報をフーリエ変換するのは何処からでもできる。 それをもとにバイナリに治すこともできる。 バーコードでない情報でもできてしまう。

2022-10-22 05:03:41
れい(猫耳の専門家)🍥 @rei_software

もちろんバーコードを読めばその情報をバイナリとして吐けるが、バーコードでなくてもメチャクチャなバイナリを読めてしまう。 これを防ぐために、コントラストの最低値を設けたりするが、 強力なのがフーリエ変換の強度で閾値を設ける方法。 で、これをやるためにはある程度の余白が必要になる。

2022-10-22 05:07:52
れい(猫耳の専門家)🍥 @rei_software

フーリエ変換がわかってると簡単なんだが。 余白なしのデータは突然ビットが立つわけで、高い周波数を含んでしまって、正確な周期がみつけられなくなる。 なので余白がないとバーコードは読めない。 余白のおかげで「ここがバーコードなのかどうか」が判定できると言ってもいい。

2022-10-22 05:12:51
れい(猫耳の専門家)🍥 @rei_software

前後するが、バーコードリーダーは読もうと思えばバーコードでなくても読めちゃうので、 バーコードリーダーで大切なのは「バーコードを読んでない」というのを判定すること。 そのために余白が大切。 QRの場合はもう少し高度で。

2022-10-22 05:16:45
れい(猫耳の専門家)🍥 @rei_software

二次元でも画像をバイナリにするだけなら簡単にできる。 QRは「誤り検出訂正」があるので、メチャクチャなデータの場合は破棄すれば、「QRコードを読んでいるか」という判定はできる。 できるが、それを画像の全領域、全方向でやるのは負荷が高くてできない。

2022-10-22 05:20:52
れい(猫耳の専門家)🍥 @rei_software

どこにどの向きでQRが写ってそうか、あたりをつけてから変換する必要がある。 そのために使うのがファインダマークとその周りの余白。 バーコードと同じように、フーリエ変換(のようなもの)を縦横に使って、周期を検出する。 だから、同じように余白がないと見つけられない。

2022-10-22 05:24:10
れい(猫耳の専門家)🍥 @rei_software

一般に、この手のバイナリをアナログに埋め込む技術では、埋め込まれたバイナリを復元することより、「そこに埋め込まれてる」ということを検出するほうが難しい。 なので、検出に使う余白を削ったら読めない。 一方で、検出に関係なくて誤り訂正が入ってるQRの真ん中辺りは削っても普通に読める。

2022-10-22 05:33:06
れい(猫耳の専門家)🍥 @rei_software

これは余談なんだけど。 よくあるQRコードリーダーはファインダパターン(角にある四角)を見つけるとそのあたりをデコードしてQRコードかどうか確認する。デコードは結構負荷が高い。 なので。 ファインダパターンだらけの画像を読ませると処理が追いつかなくて止まったり落ちたりするケースが多い。

2022-10-22 05:37:00
れい(猫耳の専門家)🍥 @rei_software

ある人を写真に撮ろうとするとアプリが異常に重くなったり落ちたりして写真とれない怪現象に遭遇したことがある。 スクエアドット柄のスカートが原因で、スカートを写さなければ問題なかった。 原因はQRコード読み込み機能のバグではないかと思ってる。

2022-10-22 05:43:24
65022a03 @KawaT65022a03

@rei_software 画像をちょい縮小して余白を増やしてやるか、 A4の白い紙にQRコードよりほんの少し大きい穴を開けてから重ね、 その窓から読めばいけそう。

2022-10-22 08:05:45
黒ポメのような熊のようなポメ @PomenRStingray

@rei_software セルフレジでスキャナーを密着させて読み込まない!とか文句言うタイプの人だな

2022-10-22 09:06:05
TenTem⋈ @ten10tem

@rei_software アップルがQRコードの仕様を理解していなってことか

2022-10-22 09:45:13
ふくいち Fearless @wanwanwan1221

@ten10tem @rei_software いや、この人が画像の余白をトリミングしたせいなんじゃないか?

2022-10-22 12:15:36
稲荷鮨 @bunbunsenseikow

@rei_software 4つ角(3つしかないけど)のあれがめっちゃ重要なの意外と認知されてないですからね〜

2022-10-22 10:05:17
うっきー @wakky_188

@rei_software @May_Roma スマートウォッチの枠が白色ならワンチャン読めたかもですね。 リーダーによって分解能も異なるので、他の会社ならいけたりするのかしら。

2022-10-22 10:15:06
リンク www.qrcode.com コード領域を確定するためのポイント|QRコードドットコム|株式会社デンソーウェーブ 読み取りやすいQRコードを生成するには、印字するプリンタと読み取り機器の性能を考慮して、セル(小さな黒い四角)の大きさを設定する必要があります。
Gz @Gz_yue

@rei_software これ Apple Watch ultra側の仕様の問題だな( ;´Д`) 仕様がコロコロ変わるから ソフト側の表示範囲の設定が必要なパターンなので( ;´Д`) Appleが仕様公開が遅過ぎたんだろうな( ;´Д`) Appleアプリの表示範囲はソフト側指定なので Appleの公開が遅過ぎなのが原因かと

2022-10-22 10:27:46