Apple Watch Ultraで飛行機に乗ろうとしたらQRコードがスキャンできなかった→表示されたQRコードが規格を満たしていなかった?

126
れい(猫耳の専門家)🍥 @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
ogs @featherogs

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

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

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

2022-10-22 01:43:26
れい(猫耳の専門家)🍥 @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

追記(ツイート主の反応)

本田雅一 @rokuzouhonda

なるほど。 少しキレてるなと思っていましたけど、この程度ならファインダパターンは読めるんじゃないかと思ってました。 なおサイズもあると思いますよ。預け荷物の読み取り機窓からはみ出ていたので。 あと画面が縦に伸びた一方、縦サイズでアライメント取って拡大してるのかなとか思いました。 twitter.com/rei_software/s…

2022-10-22 16:56:23
まきのっぴ @pmakino

@rokuzouhonda @shimajiro 画面が大きすぎてではなくQRコードの表示が大きすぎて左右に余白がないためではないでしょうか?

2022-10-21 21:01:12
まきのっぴ @pmakino

@rokuzouhonda @shimajiro なおQRコードは周囲に4セル分の余白が必要だと定められているようです。 qrcode.com/howto/code.html したがって余白なしでQRコードを表示しているアプリが仕様違反を犯しているため、その旨指摘すれば修正されると思います。

2022-10-21 22:11:17
本田雅一 @rokuzouhonda

その説が有力そうですが、最初に使った時は預け荷物のスキャナのほうがサイズが小さかったんですよ。規格としては余白が不足してるようですね。いずれにしろすぐに修正が入るレベルかなと(ちょっと面白いことになってる的な意図だったので問題提起という意味ではなかったの) twitter.com/pmakino/status…

2022-10-22 16:58:33

そうだったのか

稲荷鮨 @bunbunsenseikow

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

2022-10-22 10:05:17
ピカ @peko_peko_pekon

QRコードとかバーコードの画像を切り出す時は、余白も含めないと読み取れない。 なるほど😳 twitter.com/rei_software/s…

2022-10-22 08:13:02
yagi @yagikjp

これは知らなかった。勉強になります。 twitter.com/rei_software/s…

2022-10-22 08:06:47
thé noir @live_till_2025

フーリエ変換ときいて、 え!インテグラルの式書く??😢ぴえんってなったらそんな話ではなくて ないこともないけど 余白が大事というお話でした。 うん、余白大事。 余談ですがインテグラルっていう響き、好き。 twitter.com/rei_software/s…

2022-10-22 08:52:24
はる@小4小2 @_haru_mama

へーそうだったのか。勉強になる(専門的なことはハテナだが、概要は素人でも理解できました!) twitter.com/rei_software/s…

2022-10-22 10:35:18
Dai @Dai44

たまたま子供とQRコードの読み方を会話してたのでタイムリー。 クワイエットゾーン keyence.co.jp/ss/products/au… これは面白かった。 nlab.itmedia.co.jp/nl/articles/18… / “れい(Windowsを許さない) on Twitter: "これは違うな。 画面が大きいからじゃなくて余白がないから読めない。 Q…” htn.to/wys2dthg9g

2022-10-22 12:12:02
山田 剛 (YAMADA Tsuyoshi) @yamadacsa

私のようなアプリ開発者はQRコードを処理するコードを書く機会もありそうだけど、4ピクセル余白が必要、というのは知らなかったな。これからQRコードの画像を表示するコードを書くときは余白を含めて「QRコード画像」として処理しないといけないですねぇ。 twitter.com/rei_software/s…

2022-10-22 12:08:02