Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Barcode Recognition / pharmacode-decoder
Search
shun74
November 26, 2022
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Barcode Recognition / pharmacode-decoder
Pharmacodeリーダーを製作しました。
アルゴリズムなどの解説資料です。
shun74
November 26, 2022
Transcript
13 slides
バーコード認識の実装 RICORA - shun74
扱うバーコード Pharmacode (ファーマコード) • 医薬品業界向けバーコードの世界標準 • {太い、細い}黒線の2種類を組み合わせるシンプルな設計 Pharmacodeの例 • 決まった長さを持たない
• ある番号を表す(アルファベットを含まない)
Pharmacodeのデコード • Pharmacodeは右から順に計算することでデコードできる 1. 一番右から0, 1, 2…と線に番号を付ける 2. i番目の線が太かったら2^(i+1)を細かったら2^iを足す •
画像のPharmacodeは計算すると... 2^0 + 2^1 + 2^3 + 2^4 + 2^5 + 2^5 = 1 + 2 + 8 + 16 + 32 + 32 = 91
バーコード認識アルゴリズム 以下のステップで認識を行う 1. 画像のグレイスケール化⇢白黒化 ⇣ 2. 白黒画像のパターンの取得 ⇣ 3. パターンのデコード
⇣ 4. デコード結果の結合 ⇣ 5. バーコード部分を塗りつぶして2に戻る ⇣ 6. すべてのバーコードを検出したら終了
画像のグレイスケール化⇢白黒化 • 画像を加工して特徴を捉えやすくする ⇢ ⇢ 元画像(RGB) グレイスケール画像 白黒画像 • 白黒の2値にすることで処理が簡単に!
白=255、黒=0となっている 白黒画像のパターンの取得 • 白黒画像のバーコードを値のパターンから検出する • バーコードのあるラインには特定のパターンが発生する
白黒画像のパターンの取得 パターンを検出する方針 1. 同じ幅の白区間が複数並んでいる場所を検出 2. 白と黒の幅を比較して太い線か細い線かを判定 • 白区間の幅に外れ値がないかをチェック ⇢ ノイズを排除しやすくなる
• 予め白区間の幅を指定しない ⇢ 様々な大きさのバーコードを検出可能
パターンのデコード • 取得できたパターンからpharmacodeの値を計算 • このラインからは755が検出される • パターンがない場合は0としておく
デコード結果の結合 • 各ラインの結果を統合してバーコード領域を特定 • 緑の線の範囲はデコード結果が755と なっているはず • 同じ数値が一番長く続いた区間を検 出結果とする
複数バーコードがある場合は? • 検出された部分を塗りつぶして検出をやりなおす ⇢⇢⇢ • バーコードが検出されなくなるまで繰り返すことで全て検出可能
検出結果 バーコード領域をきれいに検出できている!
その他工夫 • 画像にガンマ補正+鮮明化の前処理を行う ⇢ ブレに強くなる • 白黒化はラインごとに行う ⇢ よりノイズに強い白黒化 •
ラインごとの処理を並列化 ⇢ 並列化により処理を高速化
実装 GitHub:https://github.com/shun74/Barcode-Recognition
More Decks by shun74
See All by shun74
深度推定モデルの自己教師あり学習/self-supervised-depth
shun74
0
590
GPUでステレオマッチング / Stereo-matching with GPU
shun74
0
1.3k
卒業研究の進め方 / How to preceed with the research
shun74
1
670
Vision Transformer講座 / Vision Transformer Presentation
shun74
1
870
ニューラルネットの1bit化 / 1bit-neural-network
shun74
0
1.1k
Defocus Map Estimation From a Single Image Based on Two-Parameter Defocus Model / two-parameter-defocus-model
shun74
0
440
理解してほしいVision Transformer / plz-understand-ViT
shun74
0
870
Other Decks in Programming
See All in Programming
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
420
AI Augmentation Techniques with Liberty
ivargrimstad
1
470
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.7k
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
570
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.9k
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
150
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
230
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
230
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
300
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.2k
GraphQL の onError と Nullability のこれから
quramy
0
220
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
BBQ
matthewcrist
90
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Paper Plane (Part 1)
katiecoart
PRO
3
12k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
570
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
560
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
530
Docker and Python
trallard
47
4.3k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
350
Scaling GitHub
holman
464
140k