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
1pp0
July 18, 2024
200
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
170
Placenoteで簡単共有AR
1pp0
0
2k
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
A Soul's Torment
seathinner
6
2.9k
BBQ
matthewcrist
89
10k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Side Projects
sachag
455
43k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
380
Six Lessons from altMBA
skipperchong
29
4.3k
Automating Front-end Workflow
addyosmani
1370
210k
Transcript
もっと真っ黒な QRコードは作れないのか
1. 前回のQRコードの詳細を確認 2. 「もっと真っ黒」なQRコードを作る方法
バージョン:1 誤り訂正レベル:L マスクパターン参照子:1 モード:数字 データコード :81981920478081920720481 905120481981905130 割合:298/441 = 67.57%
真っ黒なQRコード理論値?
各要素が配置される領域 ※ バージョン1(21x21)、数字モード、誤り訂正レベルLの場合) • 範囲内で設定可能 ◦ 誤り訂正レベル ◦ マスクパターン参照子 ◦
モード ◦ 格納文字数 • 自由に設定可能 ◦ データコード • 計算で導出されるため設定不可 ◦ 誤り訂正コード 1.格納データを二進数化して配置
仕様で固定の領域 106/203 セル
範囲内で設定可能な領域 28/44 セル
自由に設定可能な領域 137/137 セル
計算で導出されるため設定不可な領域 27/57 セル
「自由に設定可能な領域」の黒セルを減らしても 「計算で導出されるため設定不可な領域」の黒セルが増えるような データコードが存在するのではないか? 137/137 27/57 164/194
極端な例 108(-29)/137 57(+30)/57 165(+1)/194
「もっと真っ黒」なQRコードを探索する
1. 基本方針 2. 探索範囲の確認 3. 探索方法及び結果
819819204780819207204~ = 1100110011 1100110011~ → 165/194(137/137, 27/57) 1.基本方針 947819204780819207204~ =
1110110011 1100110011~ → ?/194(136/137, ?/57) 1. データコードを1ビット反転すると、データコード領域の黒セル数が1減る 2. 自動に算出される誤り訂正コードが、どのように変化するかは予測できない 1) 反転するビット数が最小、かつ、2) 誤り訂正コード黒セル数が最大、となる データコードを探索する
819819204780819207204~ 67.57% 1.基本方針 947819204780819207204~ 67.12% ※ 1セル約0.2%
1. データコードは137ビット → 全パターンは 2^137 通り = 17正4224澗5718溝6352穰493𥝱2932垓4779京9005兆653億2426万5472 2. 現状の解として
164/194 (白30セル)まで求めている → データコードを最大29ビット反転するまでの範囲に解がある → 探索すべきパターンは 137C29 + 137C28 … + 137C1 通り = 58穰10𥝱7727垓2293京1897兆2377億4504万3615 2.探索範囲の確認
全探索は無理
3. 現実的な範囲で探索 → 137ビットから 1 または 2 ビットを選んで反転 → 探索すべきパターンは
137+137C2 通り = 9,453 2.探索範囲の確認 11001100111100110011 ~ 0011110 01001100111100110011 ~ 0011110 10001100111100110011 ~ 0011110 … 11001100111100110011 ~ 0011111 11001100111100110011 ~ 0011110 00001100111100110011 ~ 0011110 00101100111100110011 ~ 0011110 … 11001100111100110011 ~ 0011101
黒セルの割合67.57%より もっと真っ黒なQRコードは作れたのか?
80382320478081920720481905120481981905130 (70.75%)
81981920478081971920481905146081981905130 (70.75%)
81981920478081920720481905120488356305130 (70.75%)
3. 現実的な範囲で探索 → 2 ビットを選んで反転した 137C2 通りに、3パターンの70.75%が存在 → データコード:135(-2)/137、誤り訂正コード:43(+16)/57 2.探索範囲の確認
4. 現状の解として 178/194 (白16セル)まで求めている → データコードを3~15ビット反転した場合により良い解が存在する? = 4414京9403兆3455億3333万1442 2.探索範囲の確認
桁は半分になったが全探索は無理(スパコンなら...) ランダム探索法
3.ランダム探索 1. 反転するビット数を3~15の範囲でランダムに選ぶ 2. 選ばれた数のビットをランダムに反転する 3. データコードに変換しQRコードを作成 4. 黒セルの割合を評価 3
70.75%
探索回数20万回程度の結果
81981920478081920720481917920481981930630 (71.20%)
自由に設定可能な領域 134/137 セル
計算で導出されるため設定不可な領域 46/57 セル
バージョン:1 誤り訂正レベル:L マスクパターン参照子:1 モード:数字 データコード :81981920478081920720481 917920481981930630 割合:314/441 = 71.20%
真っ黒なQRコード理論値?
今のところこれが一番黒いです。
おまけ
3.1.ルーレット選択 1. 反転するビット数を3~15の範囲で選ぶ 1. 反転するビット数は少ないほど最適解が出やすいと考え、小さい 数字ほど出現しやすくなるルーレット選択を実装