Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
真っ黒なQRコードは本当に作れないのか
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
1pp0
July 18, 2024
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
真っ黒なQRコードは本当に作れないのか
1pp0
July 18, 2024
More Decks by 1pp0
See All by 1pp0
もっと真っ黒なQRコードは作れないのか
1pp0
0
200
Placenoteで簡単共有AR
1pp0
0
2k
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
WCS-LA-2024
lcolladotor
0
620
Building Adaptive Systems
keathley
44
3k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Writing Fast Ruby
sferik
630
63k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
Transcript
真っ黒なQRコードは 本当に作れないのか
1. 「真っ黒」なQRコードの目標 2. QRコードの仕様を確認 3. 「真っ黒」なQRコードを作る方法
最初に理論値を確認
真っ黒なQRコード? QRコードとして読み取れない事は自明
QRコードとして認識するために 白黒が割り当てられているセルがある 灰色の領域にデータ情報が格納される
理論値? QRコードの仕様に則って データが格納されていないため 読み取る事ができない
目標 QRコードの仕様に則って 可能な限り黒セルが多くなるような データ情報の作り方を求める
QRコード生成の仕様を確認
1. 格納データを二進数化して配置 2. マスク処理
格納データの要素 1. バージョン(QRコードのサイズ、1:21x21 ~ 40:177x177) 2. 誤り訂正レベル(L、M、Q、H) 3. マスクパターン参照子(0 ~
7) 4. モード(数字、英数字、バイナリ、漢字) 5. データコード(QRコード化する文字列) 6. 誤り訂正コード 1.格納データを二進数化して配置
各要素が配置される領域 ※ バージョン1(21x21)、数字モード、誤り訂正レベルLの場合) • 範囲内で設定可能 ◦ 誤り訂正レベル ◦ マスクパターン参照子 ◦
モード ◦ 格納文字数 • 自由に設定可能 ◦ データコード • 計算で導出されるため設定不可 ◦ 誤り訂正コード 1.格納データを二進数化して配置
誤り訂正レベル L:01 M:00 Q:11 H:10 1.格納データを二進数化して配置 マスクパターン 参照子(0~7) 0:000 1:001
〜 7:111 01001 → 計算省略 → 000110100001100
モード 数字:0001 英数字:0010 8bitバイト:0100 漢字:1000 1.格納データを二進数化して配置 格納文字数 41(最大) :0000101001 00010000101001
データコード 数字:101202…(41文字) 101 202 … 0001100101 0011001010 … 誤り訂正コード 格納文字列と誤り訂正レベルから算出
1.格納データを二進数化して配置
データコード及び誤り訂正コードを配置しただけでは、QRコードとして の読み取りに支障がでる場合があるため、8種類のマスクパターンを検証 し、その中で最も優れたパターンでマスク処理を行う。 2.マスク処理
2.マスク処理 特徴 評価条件 失点 同色の行/列の隣接 5連続+i 3+i 同色のブロック 2*2 3
ファインダパターン 40 全体に占める黒の割合 50±(5*k)%~50±((5*(k+1))% 10*k -40 -7 -3 マスク処理後の黒セルが99%の場合 k=9 → -90 以上の評価条件により、黒セルの割合が 極端に多くなるような「真っ黒」なQRコードは生成されない
QRコードが真っ黒になるマスクパターンは選択されない QRコードの生成アルゴリズムを改変し マスクパターンを固定して格納データを求めれば良い
格納データの導出 マスクパターン(001) 1100110011 → 819、1100110011 → 819、0011001100 → 204 …
バージョン:1 誤り訂正レベル:L マスクパターン参照子:1 モード:数字 データコード :81981920478081920720481 905120481981905130 真っ黒なQRコード理論値?
バージョン:1:バージョン2以降は「アライメントパターン」が挿入 誤り訂正レベル:L:誤り訂正レベルが低いほど格納可能な文字数が多い マスクパターン参照子:1 モード:数字 パラメータ選定理由 範囲内で設定可能な領域で 最も黒セルが多くなる組み合わせ
多分これが一番黒いと思います。
おまけ
誤り訂正領域等をある程度塗りつぶしても読み取れる
最も良いmaskを選択する処理を改変して固定値を設定