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
Barcode Recognition / pharmacode-decoder
Search
shun74
November 26, 2022
Programming
0
920
Barcode Recognition / pharmacode-decoder
Pharmacodeリーダーを製作しました。
アルゴリズムなどの解説資料です。
shun74
November 26, 2022
Tweet
Share
More Decks by shun74
See All by shun74
深度推定モデルの自己教師あり学習/self-supervised-depth
shun74
0
400
GPUでステレオマッチング / Stereo-matching with GPU
shun74
0
880
卒業研究の進め方 / How to preceed with the research
shun74
1
510
Vision Transformer講座 / Vision Transformer Presentation
shun74
1
640
ニューラルネットの1bit化 / 1bit-neural-network
shun74
0
870
Defocus Map Estimation From a Single Image Based on Two-Parameter Defocus Model / two-parameter-defocus-model
shun74
0
350
理解してほしいVision Transformer / plz-understand-ViT
shun74
0
700
Other Decks in Programming
See All in Programming
スマホで海難事故は防げるか?年間2000件以上の小型船舶の事故に挑むアプリ開発
atsuki_seo
0
120
CSC305 Lecture 02
javiergs
PRO
1
260
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
660
開発者への寄付をアプリ内課金として実装する時の気の使いどころ
ski
0
330
ABEMAモバイルアプリが Kotlin Multiplatformと歩んだ5年 ─ 導入と運用、成功と課題 / iOSDC 2025
akkyie
0
300
CSC305 Lecture 03
javiergs
PRO
0
230
株式会社 Sun terras カンパニーデック
sunterras
0
170
AIエージェント時代における TypeScriptスキーマ駆動開発の新たな役割
bicstone
4
1.2k
私はどうやって技術力を上げたのか
yusukebe
42
17k
Model Pollution
hschwentner
1
180
Learn CPU architecture with Assembly
akkeylab
1
1.3k
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
640
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
For a Future-Friendly Web
brad_frost
180
9.9k
We Have a Design System, Now What?
morganepeng
53
7.8k
Agile that works and the tools we love
rasmusluckow
330
21k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Why Our Code Smells
bkeepers
PRO
339
57k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
The Power of CSS Pseudo Elements
geoffreycrofte
78
6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Side Projects
sachag
455
43k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Transcript
バーコード認識の実装 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