(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-30
(45)【発行日】2024-05-10
(54)【発明の名称】バーコード復号化のためのシステム及び方法
(51)【国際特許分類】
G06K 7/14 20060101AFI20240501BHJP
G06K 7/10 20060101ALI20240501BHJP
【FI】
G06K7/14 047
G06K7/10 456
G06K7/14 017
G06K7/14 078
(21)【出願番号】P 2022566603
(86)(22)【出願日】2021-05-06
(86)【国際出願番号】 CN2021091910
(87)【国際公開番号】W WO2021223709
(87)【国際公開日】2021-11-11
【審査請求日】2022-10-31
(31)【優先権主張番号】202010378011.9
(32)【優先日】2020-05-07
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】521312237
【氏名又は名称】ゼジャン・ハーレイ・テクノロジー・カンパニー・リミテッド
(74)【代理人】
【識別番号】110002262
【氏名又は名称】TRY国際弁理士法人
(72)【発明者】
【氏名】リ ウェンフイ
(72)【発明者】
【氏名】マ シジェ
【審査官】松平 英
(56)【参考文献】
【文献】特開2005-174128(JP,A)
【文献】特開2011-119820(JP,A)
【文献】特表2007-538308(JP,A)
【文献】中国特許出願公開第102184378(CN,A)
【文献】特開2014-191755(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 7/00-7/14
17/00-19/18
(57)【特許請求の範囲】
【請求項1】
命令セットを格納する少なくとも1つの記憶装置と、
前記少なくとも1つの記憶装置と通信するように構成される少なくとも1つのプロセッサと
を備え、
前記命令セットが実行されるとき、前記少なくとも1つのプロセッサに、シンボル領域において複数のシンボルキャラクタが含まれるシンボルのシンボル画像を取得することと、
前記シンボルの長さ方向に沿って複数の行ラインを決定することと、
前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することであって、前記複数の列境界のそれぞれは、前記複数のシンボルキャラクタにおける2つのシンボルキャラクタの2つの連続する列に対応することと、
前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の行境界を決定することであって、前記複数の行境界のそれぞれは、前記複数のシンボルキャラクタの2つの隣接する行に対応することと、
前記複数のシンボルキャラクタのそれぞれについて、
前記複数の列境界及び前記複数の行境界に基づいて、前記シンボルキャラクタに対応するキャラクタ領域を決定することと、
前記シンボルキャラクタに対応する前記キャラクタ領域に関連付けられているグレー値に基づいて、前記シンボルキャラクタを復号化することとを含む操作を実行させ、
前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することは、
前記複数のシンボルキャラクタに関連付けられている参照シンボルキャラクタの幅を決定することと、
前記参照シンボルキャラクタの幅に基づいて基準幅範囲を決定することと、
隣接するシンボルキャラクタ間の境界特性と基準幅範囲とに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することと
を含む、システム。
【請求項2】
前記参照シンボルキャラクタは、開始シンボルキャラクタ又は終了シンボルキャラクタを含む、
請求項
1に記載のシステム。
【請求項3】
前記参照シンボルキャラクタの幅を決定することは、
前記参照シンボルキャラクタに関連付けられている予め設定されたコードワード列を取得することと、
前記複数の行ラインのうちの少なくとも1つの行ラインについて、前記複数の行ラインのうちの少なくとも1つの行ラインの上のピクセルのグレー値と、前記予め設定されたコードワード列に関連付けられている所定のグレー値とに基づいて、少なくとも1つの基準線分を識別することと、
前記少なくとも1つの基準線分の長さを前記参照シンボルキャラクタの幅として指定することと
を含む、請求項
1に記載のシステム。
【請求項4】
前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の行境界を決定することは、
隣接するシンボルキャラクタ間の境界特性に基いて、前記複数の行ラインから、前記複数のシンボルキャラクタ間の複数の行境界を識別すること
を含む、前記請求項
1~
3のいずれか一項に記載のシステム。
【請求項5】
前記複数のシンボルキャラクタのそれぞれについて、前記シンボルキャラクタに対応する前記キャラクタ領域に関連付けられているグレー値に基づいて、前記シンボルキャラクタを復号化することは、
行方向に沿って、前記シンボルキャラクタに対応する前記シンボル領域を複数のブロックに分割することと、
前記複数のブロックのそれぞれのグローバルグレー値を決定することと、
前記複数のブロックの前記グローバルグレー値に基づいて、前記シンボルキャラクタのコントラスト値を決定することと、
前記コントラスト値に基づいて、前記シンボルキャラクタに対応するコードワードを決定することと
を含む、請求項
1~
4のいずれか一項に記載のシステム。
【請求項6】
前記複数のブロックの前記グローバルグレー値に基づいて、前記シンボルキャラクタの前記コントラスト値を決定することは、
前記キャラクタ領域における第1タイプのブロックのグレー値の、前記第1タイプのブロックのカウントに対する第1比率を決定することと、
前記キャラクタ領域における第2タイプのブロックのグレー値の、前記第2タイプのブロックのカウントに対する第2比率を決定することと、
前記第1比率と前記第2比率との間の差分値に基づいて、前記シンボルキャラクタの前記コントラスト値を決定することと
を含む、請求項
5に記載のシステム。
【請求項7】
前記操作は、前記シンボル領域の開始境界、終了境界、上境界、及び下境界を決定することをさらに含む、請求項
1~
6のいずれか一項に記載のシステム。
【請求項8】
前記シンボル領域の前記開始境界を決定することは、
前記複数の行ラインのうちの少なくとも1つの行ラインについて、前記少なくとも1つの行ラインの上のピクセルのグレー値と開始コードワード列に関連付けられている所定のグレー値とに基づいて、開始シンボルキャラクタの少なくとも1つの終点を識別することと、
前記開始シンボルキャラクタの前記少なくとも1つの終点に基づいて、前記シンボル領域の前記開始境界を決定することと
を含む、請求項
7に記載のシステム。
【請求項9】
前記シンボル領域の前記終了境界を決定することは、
前記複数の行ラインのうちの少なくとも1つの行ラインについて、前記複数の行ラインのうちの少なくとも1つの行ラインの上のピクセルのグレー値と終了コードワード列に関連付けられている所定のグレー値とに基づいて、終了シンボルキャラクタの少なくとも1つの始点を識別することと、
前記終了シンボルキャラクタの前記少なくとも1つの始点に基づいて、前記シンボル領域の前記終了境界を決定することと
を含む、請求項
7又は請求項
8に記載のシステム。
【請求項10】
前記シンボル領域の上境界を決定することは、
前記複数の列境界のそれぞれについて、
前記複数の行ラインと前記列境界との複数の交点を決定することと、
第1交点の上ピクセルが識別されるまで上向きのトラバースを実行することであって、前記上ピクセルと前記第1交点とが上境界特性を満たすことと、
前記複数の列境界のそれぞれの前記第1交点に基づいて、前記シンボル領域の前記上境界を決定することと
を含む、請求項
7~
9のいずれか一項に記載のシステム。
【請求項11】
前記シンボル領域の前記下境界を決定することは、
前記複数の列境界のそれぞれについて、
前記複数の行ラインと前記列境界との複数の交点を決定することと、
第2交点の下ピクセルが識別されるまで下向きのトラバースを実行することであって、前記下ピクセルと前記第2交点とが下境界特性を満たすことと、
前記複数の列境界のそれぞれの前記第2交点に基づいて、前記シンボル領域の下境界を決定することと
を含む、請求項
7~
10のいずれか一項に記載のシステム。
【請求項12】
プロセッサ及びコンピューター可読記憶装置を備えるコンピューティングデバイス上で実施される方法であって、
シンボル領域において複数のシンボルキャラクタが含まれるシンボルのシンボル画像を取得することと、
前記シンボルの長さ方向に沿って複数の行ラインを決定することと、
前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することであって、前記複数の列境界のそれぞれは、前記複数のシンボルキャラクタにおける2つのシンボルキャラクタの2つの連続する列に対応することと、
前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の行境界を決定することであって、前記複数の行境界のそれぞれは、前記複数のシンボルキャラクタにおける2つの隣接する行に対応することと、
前記複数のシンボルキャラクタのそれぞれについて、
前記複数の列境界と前記複数の行境界とに基づいて、前記シンボルキャラクタに対応するキャラクタ領域を決定することと、
前記シンボルキャラクタに対応する前記キャラクタ領域に関連付けられているグレー値に基づいて、前記シンボルキャラクタを復号化することと
を含み、
前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することは、
前記複数のシンボルキャラクタに関連付けられている参照シンボルキャラクタの幅を決定することと、
前記参照シンボルキャラクタの幅に基づいて基準幅範囲を決定することと、
隣接するシンボルキャラクタ間の境界特性と基準幅範囲とに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することと
を含む方法。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本出願は、2020年5月7日に出願された中国特許出願第202010378011.9号の優先権を主張し、その内容は参照により本明細書に組み込まれる。
【技術分野】
【0002】
本開示は、一般に画像処理に関し、より具体的には、画像内のバーコードを復号化するためのシステム及び方法に関する。
【背景技術】
【0003】
ポータブルデータファイル(PDF)417バーコードなどのバーコードシンボルは、社会活動、証明書、管理、輸送、支払いなど、日常生活で広く利用されている。バーコードシンボルには、高密度のデータを符号化する一連のバーとスペースが含まれる。バーコードシンボルを、カメラなどのスキャナを使用して画像から読み取ることができる。バーコードシンボルが画像から読み取られた後、バーコードシンボルに符号化されたデータを、処理デバイスを使用して復号化することができる。しかしながら、復号化処理中に、通常、画像の歪み、不均一な光などの要因によりエラーが発生する。したがって、バーコードシンボルを正確かつ効率的に復号化するためのシステム及び方法を提供することが望ましい。
【発明の概要】
【0004】
本開示の一側面において、システムが提供される。システムは、命令セットを格納する少なくとも1つの記憶装置と、前記少なくとも1つの記憶装置と通信するように構成されている少なくとも1つのプロセッサとを備える。前記命令セットが実行されるとき、前記少なくとも1つのプロセッサに、シンボル領域において複数のシンボルキャラクタが含まれるシンボルのシンボル画像を取得することと、前記シンボルの長さ方向に沿って複数の行ラインを決定することと、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することであって、前記複数の列境界のそれぞれは、前記複数のシンボルキャラクタにおける2つのシンボルキャラクタの2つの連続する列に対応することと、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の行境界を決定することであって、前記複数の行境界のそれぞれは、前記複数のシンボルキャラクタの2つの隣接する行に対応することと、前記複数のシンボルキャラクタのそれぞれについて、前記複数の列境界及び前記複数の行境界に基づいて、前記シンボルキャラクタに対応するキャラクタ領域を決定することと、前記シンボルキャラクタに対応する前記キャラクタ領域に関連付けられているグレー値に基づいて、前記シンボルキャラクタを復号化することと、を含む操作を実行させる。
【0005】
本開示の別の一側面において、方法が提供される。この方法は、プロセッサ及びコンピューター可読記憶装置を備えるコンピューティングデバイス上で実施することができる。この方法は、シンボル領域において複数のシンボルキャラクタが含まれるシンボルのシンボル画像を取得することと、前記シンボルの長さ方向に沿って複数の行ラインを決定することと、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定ことであって、前記複数の列境界のそれぞれは、前記複数のシンボルキャラクタにおける2つのシンボルキャラクタの2つの連続する列に対応することと、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の行境界を決定することであって、前記複数の行境界のそれぞれは、前記複数のシンボルキャラクタにおける2つの隣接する行に対応することと、前記複数のシンボルキャラクタのそれぞれについて、前記複数の列境界と前記複数の行境界とに基づいて、前記シンボルキャラクタに対応するキャラクタ領域を決定することと、前記シンボルキャラクタに対応する前記キャラクタ領域に関連付けられているグレー値に基づいて、前記シンボルキャラクタを復号化することと、を含む。
【0006】
本開示のさらなる一側面において、非一時的可読媒体が提供される。非一時的可読媒体は、少なくとも1つの命令セットを含む。コンピューティングデバイスの少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つの命令セットは、前記少なくとも1つのプロセッサに方法を実行するように指示する。この方法は、シンボル領域において複数のシンボルキャラクタが含まれるシンボルのシンボル画像を取得することと、シンボルの長さ方向に沿って複数の行ラインを決定することと、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することであって、前記複数の列境界のそれぞれは、前記複数のシンボルキャラクタにおける2つのシンボルキャラクタの2つの連続する列に対応することと、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の行境界を決定することであって、前記複数の行境界のそれぞれは、前記複数のシンボルキャラクタの2つの隣接する行に対応することと、前記複数のシンボルキャラクタのそれぞれについて、前記複数の列境界と前記複数の行境界とに基づいて、前記シンボルキャラクタに対応するキャラクタ領域を決定することと、前記シンボルキャラクタに対応する前記キャラクタ領域に関連付けられているグレー値に基づいて、前記シンボルキャラクタを復号化することと、を含む。
【0007】
いくつかの実施形態では、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の前記複数の列境界を決定することは、前記複数のシンボルキャラクタに関連付けられている参照シンボルキャラクタの幅を決定することことと、前記参照シンボルキャラクタの幅に基づいて基準幅範囲を決定することと、隣接するシンボルキャラクタ間の境界特性と基準幅範囲とに基づいて、前記複数のシンボルキャラクタ間の複数の列境界を決定することと、を含む。
【0008】
いくつかの実施形態では、前記参照シンボルキャラクタは、開始シンボルキャラクタ又は終了シンボルキャラクタを含む。
【0009】
いくつかの実施形態では、前記参照シンボルキャラクタの幅を決定することは、前記参照シンボルキャラクタに関連付けられている予め設定されたコードワード列を取得することと、前記複数の行ラインのうちの少なくとも1つの行ラインについて、前記複数の行ラインのうちの少なくとも1つの行ラインの上のピクセルのグレー値と、前記予め設定されたコードワード列に関連付けられている所定のグレー値とに基づいて、少なくとも1つの基準線分を識別することと、前記少なくとも1つの基準線分の長さを前記参照シンボルキャラクタの幅として指定することと、を含む。
【0010】
いくつかの実施形態では、前記複数の行ラインに基づいて、前記複数のシンボルキャラクタ間の複数の行境界を決定することは、隣接するシンボルキャラクタ間の境界特性に基づいて、前記複数の行ラインから、前記複数のシンボルキャラクタ間の前記複数の行境界を識別することを含む。
【0011】
いくつかの実施形態では、前記複数のシンボルキャラクタのそれぞれについて、前記シンボルキャラクタに対応する前記キャラクタ領域に関連付けられているグレー値に基づいて、前記シンボルキャラクタを復号化することは、前記シンボルキャラクタに対応する前記キャラクタ領域を行方向に沿って複数のブロックに分割することと、前記複数のブロックのそれぞれのグローバルグレー値を決定することと、前記複数のブロックの前記グローバルグレー値に基づいて、前記シンボルキャラクタのコントラスト値を決定することと、前記コントラスト値に基づいて、前記シンボルキャラクタに対応するコードワードを決定することと、を含む。
【0012】
いくつかの実施形態では、前記複数のブロックの前記グローバルグレー値に基づいて、前記シンボルキャラクタのコントラスト値を決定することは、前記キャラクタ領域内の第1タイプのブロックのグレー値の、前記第1タイプのブロックのカウント(count)に対する第1比率を決定することと、前記キャラクタ領域内の第2タイプのブロックのグレー値の、前記第2タイプのブロックのカウントに対する第2比率を決定することと、前記第1比率と前記第2比率との間の差分値に基づいて、前記シンボルキャラクタの前記コントラスト値を決定することと、を含む。
【0013】
いくつかの実施形態では、前記操作は、前記シンボル領域の開始境界、終了境界、上境界、及び下境界を決定することをさらに含む。
【0014】
いくつかの実施形態では、前記シンボル領域の開始境界を決定することは、前記複数の行ラインのうちの少なくとも1つの行ラインについて、前記複数の行ラインのうちの少なくとも1つの行ラインの上のピクセルのグレー値と開始コードワード列に関連付けられている所定のグレー値とに基づいて、開始シンボルキャラクタの少なくとも1つの終点を識別することと、前記開始シンボルキャラクタの前記少なくとも1つの終点に基づいて、前記シンボル領域の前記開始境界を決定することと、を含む。
【0015】
いくつかの実施形態では、前記シンボル領域の前記終了境界を決定することは、前記複数の行ラインのうちの少なくとも1つの行ラインについて、前記複数の行ラインのうちの少なくとも1つの行ラインの上のピクセルのグレー値と終了コードワード列に関連付けられている所定のグレー値とに基づいて、終了シンボルキャラクタの少なくとも1つの始点を識別すること、前記終了シンボルキャラクタの前記少なくとも1つの始点に基づいて、前記シンボル領域の前記終了境界を決定することと、を含む。
【0016】
いくつかの実施形態では、前記シンボル領域の前記上境界を決定することは、前記複数の列境界のそれぞれについて、前記複数の行ラインと前記列境界との複数の交点を決定することと、第1交点の上ピクセルが識別されるまで上向きのトラバースを実行することであって、前記上ピクセルと前記第1交点とが上境界特性を満たすことと、前記複数の列境界のそれぞれの前記第1交点に基づいて、前記シンボル領域の前記上境界を決定することと、を含む。
【0017】
いくつかの実施形態では、前記シンボル領域の前記下境界を決定することは、前記複数の列境界のそれぞれについて、前記複数の行ラインと前記列境界との複数の交点を決定することと、第2交点の下ピクセルが識別されるまで下向きのトラバースを実行することであって、前記下ピクセルと前記第2交点とが下境界特性を満たすことと、前記複数の列境界のそれぞれの前記第2交点に基づいて、前記シンボル領域の前記下境界を決定することと、を含む。
【0018】
追加の特徴は、一部は以下で説明され、他の一部は以下及び添付の図面を検討することで当業者に明らかになり、又は実施例の作成或いは操作によって学習され得る。本開示の特徴は、以下に論じる詳細な例に記載された方法、手段のさまざまな側面、及びそれらの組み合わせを実践又は利用することによって実現/達成することができる。
【図面の簡単な説明】
【0019】
本開示は、例示的な実施形態に関してさらに説明される。これらの例示的な実施形態は、図面を参照して詳細に説明する。図面は縮尺どおりではない。これらの実施形態は、非限定的な例示的な実施形態である。また、図面を通して同じ参照番号が同じ構造を表す。
【
図1】本開示のいくつかの実施形態による例示的な画像処理システムを示す模式図である。
【
図2】本開示のいくつかの実施形態による例示的なコンピューティングデバイスの例示的なハードウェア及び/又はソフトウェアコンポーネントを示す模式図である。
【
図3】本開示のいくつかの実施形態による例示的な端末の例示的な構成要素を示す模式図である。
【
図4】本開示のいくつかの実施形態による例示的な処理デバイスを示すブロック図である。
【
図5】本開示のいくつかの実施形態による、シンボル画像内のシンボルのシンボルキャラクタを復号化するための例示的なプロセスを示すフローチャートである。
【
図6】本開示のいくつかの実施形態による例示的なPDF417バーコードを示す図である。
【
図7】本開示のいくつかの実施形態による例示的なPDF417バーコードを示す図である。
【
図8】本開示のいくつかの実施形態によるシンボル画像内の例示的な行ラインを示す模式図である。
【
図9】本開示のいくつかの実施形態によるPDF417バーコードの部分拡大図である。
【
図10】本開示のいくつかの実施形態による、2つの隣接するシンボルキャラクタ間の例示的な行境界を示す模式図である。
【
図11】本開示のいくつかの実施形態による例示的なシンボル画像を示す。
【
図12】本開示のいくつかの実施形態による、シンボルのシンボル領域内の複数のシンボルキャラクタ間の複数の列境界を決定するための例示的なプロセスを示すフローチャートである。
【
図13】本開示のいくつかの実施形態による例示的なシンボル画像を示す。
【
図14】本開示のいくつかの実施形態による、シンボルキャラクタに対応するキャラクタ領域に関連付けられているグレー値に基づいてシンボルキャラクタを復号化するための例示的なプロセスを示すフローチャートである。
【
図15】本開示のいくつかの実施形態による、シンボル画像内のシンボルのシンボルキャラクタを復号化するための例示的なプロセスを示すフローチャートである。
【
図16】本開示のいくつかの実施形態による例示的なPDF417バーコードの模式図である。
【発明を実施するための形態】
【0020】
本開示の実施形態に関連する技術的解決策を説明するために、実施形態の説明で参照される図面の簡単な紹介が以下に提供される。以下に説明する図面は、本開示のいくつかの例示又は実施形態にすぎないことは明らかである。当業者は、さらに創造的な努力せずにこれらの図面に従って本開示を他の同様な場面に適用することができる。特に明確にしない限り、又は文脈から明らかでない限り、図面中の同じ参照番号は、同じ構造及び操作を指す。
【0021】
本開示及び添付の特許請求の範囲で使用されるように、単数形「一つ(a)」、「一つ(an)」、及び「前記(the)」は、明確にしない限り、複数の対象を指すことも含む。本開示で使用される場合、用語「備える」(comprises)、「備え」(comprising)、「含む」(includes)、及び/又は「含み」(including)は、記載されたステップ及び要素の存在を特定するが、1つ以上のその他のステップ及び要素の存在又は追加を排除しないことがさらに理解されるであろう。
【0022】
システムのいくつかのモジュールは、本開示のいくつかの実施形態に従ってさまざまな方式で参照され得るが、任意の数の異なるモジュールがクライアント端末及び/又はサーバーで使用/操作され得る。これらのモジュールは、説明のためのものであり、本開示の範囲を限定することを意図しない。システム及び方法のさまざまな側面において、さまざまなモジュールを使用することができる。
【0023】
本開示のいくつかの実施形態によれば、システムによって実行される操作を示すためにフローチャートが使用される。上記又は下記の操作は順番に実行されてもされなくてもよいことを、明確に理解されたい。逆に、操作は逆の順序で、又は同時に実行することもできる。また、フローチャートには他の1つ以上の操作が追加されてもよいし、フローチャートから1つ以上の操作が省略されてもよい。
【0024】
本開示の実施形態の技術的解決策は、以下のように図面を参照して説明される。記載された実施形態が網羅的ではなく、限定的でないことは明らかである。本開示に記載された実施形態に基づいて、当業者が創造的な努力せずに得られる他の実施形態は、本開示の範囲内である。
【0025】
本開示の一側面は、画像復号化のためのシステム及び方法に関する。当該システムは、シンボル領域において複数のシンボルキャラクタを含むシンボル画像を取得することができる。シンボル画像は、シンボルの画像(例えば、ポータブルデータファイル(PDF)417バーコード)であってもよい。シンボルの長さ方向に沿っている複数の行ラインが決定され得る。各行ラインは、シンボル領域内の同じ行のピクセルをトラバースする場合がある。当該システムはまた、複数の行ラインに基づいて、複数のシンボルキャラクタ間の複数の列境界と、複数のシンボルキャラクタ間の複数の行境界とを決定することができる。複数のシンボルキャラクタのそれぞれについて、当該システムは、複数の列境界及び複数の行境界に基づいて、シンボルキャラクタに対応するキャラクタ領域を決定することができる。当該システムはさらに、シンボルキャラクタに対応するキャラクタ領域に関連付けられているグレー値に基づいて、シンボルキャラクタを復号化することができる。これにより、複数のシンボルキャラクタのそれぞれの位置をより正確に決定することができ、シンボルキャラクタに対応するコードワードをより効率的かつ正確に決定することができ、また、画像歪み、不均一な光などの要因によって引き起こされて復号化プロセスでエラーが生じることを低減又は除去することができるため、復号化プロセスの有効性と精度が向上する。
【0026】
図1は、本開示のいくつかの実施形態による例示的な画像処理システムを示す模式図である。画像処理システム100は、画像或いは複数の画像から構成されるビデオを処理し、画像又はビデオからデータを抽出することができる。図示のように、画像処理システム100は、画像ソース101、処理デバイス104、バッファマネージャ105、バッファ106、送信機107、端末108(又は複数の端末108)、ネットワーク112、及びネットワーク記憶装置113(又は複数のネットワーク記憶装置113)を備える。
【0027】
画像ソース101は、ネットワーク112を介して、端末108のユーザーに画像或いは少なくとも1つの画像(ビデオフレームとも呼ばれる)を含むビデオを提供することができる。いくつかの実施形態では、画像ソース101は、スキャナ102及び/又はメディアサーバー103を備える。
【0028】
スキャナ102は、画像或いは少なくとも1つの画像を含むビデオを取り込む(capture)ことができる。いくつかの実施形態では、画像はシンボル画像であってもよい。本明細書で使用するシンボル画像は、シンボルの画像であってもよい。いくつかの実施形態では、シンボル画像は、静止画像であってもよいし、ビデオから得られるビデオフレームであってもよい。シンボル画像は、二次元(2D)画像であってもよいし、三次元(3D)画像であってもよい。スキャナ102は、レーザスキャナ、光学スキャナなどであってもよい。
【0029】
いくつかの実施形態では、光学スキャナはカメラであってもよい。カメラは、例えば、デジタルカメラ、ビデオカメラ、セキュリティカメラ、ウェブカメラ、スマートフォン、タブレット、ラップトップ、ウェブカメラを装備したビデオゲームコンソール、複数のレンズを備えるカメラなどであってもよい。
【0030】
単に例示の目的で、カメラは、レンズ、シャッター、センサー、処理要素、及び記憶要素を含み得る。レンズは、屈折によって光ビームを集束させて画像を形成する光学要素であってもよい。レンズは、対象物体(例えば、カード、紙、バッグ、パッケージなどの上のバーコード)を取り込むように構成され得る。レンズの絞り(aperture)は、光が通過してセンサーに到達する穴のサイズを定義することができる。レンズを通過する光の量を調整するために、絞りを調整することができる。レンズの焦点距離(focal length)は、カメラの視野(coverage)を調整するために調整可能である。
【0031】
画像を取り込むときに光がレンズを通過するためにシャッターを開く場合がある。シャッターは、処理要素によって手動又は自動で制御することができる。
【0032】
センサーは、レンズを通過する光を受け取り、受け取った光の光信号を電気信号に変換するように構成され得る。センサーは、電荷結合素子(CCD)及び相補型金属酸化膜半導体(CMOS)を含み得る。センサーは、論理回路と通信することができ、レンズを使用して対象物を検出し、対象物から受け取った光を電子信号に変換するように構成され得る。
【0033】
処理要素は、カメラに関するデータ及び/又は情報を処理し、及び/又はカメラ内の1つ以上の構成要素(例えば、レンズ、シャッター)を制御するように構成され得る。例えば、処理要素は、露出時間、露出ゲイン、及び絞りなどのカメラの露出パラメータの値を自動的に決定することができる。処理要素はまた、カメラによって撮影された画像の品質(例えば、シャープネス、コントラスト、ノイズレベルなど)を調整することもできる。
【0034】
いくつかの実施形態では、処理要素は、ローカルであってもよいし、リモートであってもよい。例えば、処理要素は、ネットワークを介してカメラと通信することができる。別の例として、処理要素をカメラに組み込むことができる。
【0035】
記憶要素は、データ、命令、及び/又は任意の他の情報を記憶することができる。いくつかの実施形態では、記憶要素は、処理要素から得られたデータを記憶することができる。例えば、記憶要素は、取り込まれた画像を記憶することができる。いくつかの実施形態では、記憶要素は、本開示で説明される例示的な方法を実行するために処理デバイスが実行又は利用することができるデータ及び/又は命令を記憶することができる。いくつかの実施形態では、記憶要素は、大容量記憶装置、リムーバブル記憶装置、揮発性読み書きメモリ、読み取り専用メモリ(ROM)など、又はそれらの任意の組み合わせを含み得る。例示的な大容量記憶装置には、磁気ディスク、光ディスク、ソリッドステートドライブなどを含み得る。例示的なリムーバブル記憶装置には、フラッシュドライブ、フロッピーディスク、光ディスク、メモリカード、zipディスク、磁気テープなどを含み得る。例示的な揮発性読み書きメモリは、ランダムアクセスメモリ(RAM)を含み得る。例示的なRAMは、ダイナミックRAM(DRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、スタティックRAM(SRAM)、サイリスタRAM(T-RAM)、及びゼロキャパシタRAM(Z-RAM)を含み得る。例示的なROMは、マスクROM(MROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、コンパクトディスクROM(CD-ROM)、及びデジタル多用途ディスクROMなどを含み得る。
【0036】
メディアサーバー103は、画像或いは複数の画像を含むビデオを格納又は提供するためのサーバー(例えば、コンピューター又はコンピューターグループ)であってもよい。メディアサーバー103はまた、本開示で導入される例示的な方法を使用して画像を処理するように構成される画像処理要素(図示せず)を含み得る。
【0037】
画像ソース101は、画像又はビデオを処理デバイス104に送信することができる。処理デバイス104は、画像又はビデオを処理することができる。例えば、画像又はビデオは、シンボル画像を含み得る。シンボル画像は、シンボルの画像であってもよい。例えば、シンボルはバーコード(例えば、ポータブルデータファイル(PDF)417、コード16K、コード49など)であってもよい。シンボルは、シンボル領域において複数のシンボルキャラクタを含み得る。本明細書で使用される場合、シンボルキャラクタは、シンボル内のデータを符号化するための最小単位を指すことができる。シンボル領域は、シンボルの、複数のシンボルキャラクタが位置される少なくとも一部に対応する領域を指すことができる。処理デバイス104は、シンボルを復号化し、シンボルに対応する復号化されたデータを生成することができる。
【0038】
いくつかの実施形態では、処理デバイス104は、単一のサーバーであってもよいし、サーバーグループであってもよい。サーバーグループは、集中型であってもよいし、分散型であってもよい。いくつかの実施形態では、処理デバイス104は、ローカルであってもよいし、リモートであってもよい。いくつかの実施形態では、処理デバイス104は、クラウドプラットフォーム上で実装され得る。単なる例として、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散型クラウド、インタークラウド、マルチクラウドなど、又はそれらの任意の組み合わせを含み得る。いくつかの実施形態では、処理デバイス104は、
図2に示すような1つ以上の構成要素を有するコンピューティングデバイス200によって実装され得る。
【0039】
画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータは、バッファ106に格納され得る。バッファ106は、バッファマネージャ105によって管理され得る。バッファ106は、ネットワーク112を介して送信される画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータをバッファリングするための記憶装置であり得る。これは、画像ソース101からのリモートデバイスであってもよいし、画像ソース10に内蔵されるローカルデバイス(例えば、カメラの記憶媒体など)であってもよい。バッファ106は、大容量記憶装置、リムーバブル記憶装置、揮発性読み書きメモリ、読み出し専用メモリ(ROM)など、又はそれらの任意の組み合わせを含み得る。例示的な大容量記憶装置は、磁気ディスク、光ディスク、ソリッドステートドライブなどを含み得る。例示的なリムーバブル記憶装置には、フラッシュドライブ、フロッピーディスク(登録商標)、光ディスク、メモリカード、zipディスク、磁気テープなどを含み得る。例示的な揮発性読み書きメモリは、ダイナミックRAM(DRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、スタティックRAM(SRAM)、サイリスタRAM(T-RAM)とゼロキャパシタRAM(Z-RAM)などのランダムアクセスメモリ(RAM)を含み得る。例示的なROMは、マスクROM(MROM)、プログラマブルROM(PROM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、コンパクトディスクROM(CD-ROM)、及びデジタルバーサタイルディスクROMなどを含み得る。
【0040】
送信機107は、バッファ106にバッファリングされた画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータをネットワーク112に送信することができる。送信機107は、ビデオソース101、バッファマネージャ105、端末108など、又はそれらの組み合わせから送信された命令に応じて、画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータを送信することができる。代替的又は追加的に、送信機107は、バッファ106に格納された画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータを自発的に送信することができる。送信機107は、画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータを、ネットワーク112を介して端末108に送信することができる。
【0041】
端末108は、ネットワーク112を介して送信された画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータを受信することができる。いくつかの実施形態では、端末108は、画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータをユーザーに表示したり、支払い、アイデンティティ認証、登録などのさらなる操作を実行したりしてもよい。
【0042】
端末108は、様々な形を取ることができる。例えば、端末108は、モバイルデバイス109、タブレットコンピューター110、ラップトップコンピューター111など、又はそれらの任意の組み合わせを含み得る。いくつかの実施形態では、モバイルデバイス109は、ウェアラブルデバイス、モバイルデバイス、仮想現実デバイス、拡張現実デバイスなど、又はそれらの任意の組み合わせを含み得る。いくつかの実施形態では、ウェアラブルデバイスは、ブレスレット、履物、眼鏡、ヘルメット、時計、衣服、バックパック、スマートアクセサリなど、又はそれらの任意の組み合わせを含み得る。いくつかの実施形態では、モバイルデバイスは、携帯電話、携帯情報端末(PDA)、ラップトップ、タブレットコンピューター、デスクトップなど、又はそれらの任意の組み合わせを含み得る。いくつかの実施形態では、仮想現実デバイス及び/又は拡張現実デバイスは、仮想現実ヘルメット、仮想現実眼鏡、仮想現実パッチ、拡張現実ヘルメット、拡張現実眼鏡、拡張現実パッチなど、又はそれらの任意の組み合わせを含み得る。例えば、仮想現実デバイス及び/又は拡張現実デバイスは、Google GlassTM、Oculus RiftTM、HololensTM、Gear VRTMなどを含み得る。いくつかの実施形態では、端末108は処理エンジンの一部であり得る。
【0043】
ネットワーク112は、データ伝送を容易にすることができる任意の適切なネットワークを含み得る。ネットワーク112は、公衆ネットワーク(例えば、インターネット)、プライベートネットワーク(例えば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN))、有線ネットワーク(例えば、イーサネット(登録商標)ネットワーク)、ワイヤレスネットワーク(802.11 ネットワーク、Wi-Fiネットワークなど)、セルラーネットワーク(Long Term Evolution(LTE)ネットワークなど)、フレームリレーネットワーク、仮想プライベートネットワーク(「VPN」)、衛星ネットワーク、電話ネットワーク、ルーター、ハブ、スイッチ、サーバーコンピューター、及び/又はそれらの任意の組み合わせであってもよく、又はそれを備えてもよい。単なる例として、ネットワーク112は、ケーブルネットワーク、有線ネットワーク、光ファイバーネットワーク、電気通信ネットワーク、イントラネット、ワイヤレスローカルエリアネットワーク(WLAN)、メトロポリタンエリアネットワーク(MAN)、公衆電話交換ネットワーク(PSTN)、BluetoothTMネットワーク、ZigBeeTMネットワーク、近距離無線通信(NFC)ネットワークなど、又はそれらの任意の組み合わせを含み得る。いくつかの実施形態では、ネットワーク112は、1つ以上のネットワークアクセスポイントを含み得る。
【0044】
いくつかの実施形態では、ネットワーク112は、1つ以上のネットワーク記憶装置113を含み得る。ネットワーク記憶装置113は、ネットワーク112で送信されるデータをバッファリング又はキャッシュするための装置であってもよい。送信機107によって送信された画像、ビデオ、及び/又は画像又はビデオに対応する復号化されたデータは、端末108によって受信される前に、1つ以上のネットワーク記憶装置113にバッファリング又はキャッシュされてもよい。ネットワーク記憶装置113は、サーバー、ハブ、ゲートウェイなど、又はそれらの組み合わせであってもよい。
【0045】
処理デバイス104、バッファマネージャ105、バッファ106、及び送信機107のうちの1つ以上は、スタンドアロンデバイス、又は画像ソース101又は別のスタンドアロンデバイスに統合されたモジュールであり得ることに留意されたい。例えば、処理デバイス104、バッファマネージャ105、バッファ106、及び送信機107のうちの1つ以上を、スキャナ102、メディアサーバー103、及び/又は端末108に集積することができる。別の例として、処理デバイス104、バッファマネージャ105、バッファ106、及び送信機107は、直接有線接続、ネットワーク112、又は別のネットワークを介して画像ソース101と通信することができるビデオ処理エンジンに備えられることができる。さらなる例として、処理デバイス104はスタンドアロン装置(例えば、コンピューター又はサーバー)であってもよい。この場合、バッファマネージャ105、バッファ106及び送信機107は別のスタンドアロン装置に備えられてもよい。
【0046】
図2は、本開示のいくつかの実施形態による例示的なコンピューティングデバイスの例示的なハードウェア及び/又はソフトウェアコンポーネントを示す模式図である。例えば、コンピューティングデバイス200は、メディアサーバー103、スキャナ102の処理要素、及び/又は画像処理に特化した電子デバイスであり得る。処理デバイス104及びバッファマネージャ105はまた、コンピューティングデバイス200上に実装されてもよい。
図2に示すように、コンピューティングデバイス200は、プロセッサ222、記憶装置227、入出力(I/O)226、及び通信ポート225を備える。
【0047】
プロセッサ222は、コンピューター命令(例えば、プログラムコード)を実行し、本開示に記載の技術に従って機能を実行することができる。例えば、プロセッサ222は、その中にインターフェース回路及び処理回路を含み得る。インターフェース回路は、バス(
図2には図示せず)から電子信号を受信するように構成することができる。ここで、電子信号は、処理回路が処理する構造化データ及び/又は命令を符号化する。処理回路は、論理演算計算を行い、電子信号として符号化された結論、結果、及び/又は命令を決定することができる。次に、インターフェース回路は、バスを介して処理回路から電子信号を外へ送信することができる。
【0048】
コンピューター命令は、例えば、本開示に記載の特定の機能を実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、手順、モジュール、及び関数を含む。いくつかの実施形態では、プロセッサ222は、一つ以上のハードウェアプロセッサを備えてもよい。これらのハードウェアプロセッサは、マイクロコントローラ、マイクロプロセッサ、縮小命令セットコンピューター(RISC)、特定用途向け集積回路(ASIC)、特定用途向け命令セットプロセッサ(ASIP)、中央処理デバイス(CPU)、グラフィックスプロセッシングユニット(GPU)、物理演算プロセシングユニット(PPU)、マイクロコントローラユニット、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、高度なRISCマシン(ARM)、プログラマブルロジックデバイス(PLD)、1つ以上の機能を実行できる任意の回路又はプロセッサなど、又はそれらの任意の組み合わせであってもよい。
【0049】
単に例示の目的で、コンピューティングデバイス200には1つのプロセッサしか備えられていない場合を例として説明した。しかしながら、本開示に係るコンピューティングデバイス200は、複数のプロセッサを備えることもできることに留意されたい。本開示で説明される処理は、複数のプロセッサによって共同で又は別々に実行されてもよい。例えば、本開示において、コンピューティングデバイス200のプロセッサがステップA及びステップBの両方を実行する場合、ステップA及びステップBは、コンピューティングデバイス200内の2つ以上の異なるプロセッサによって共同(jointly)で又は別々に実行されてもよいことを理解されたい(例えば、第1のプロセッサがステップAを実行し、第2のプロセッサがステップBを実行するか、又は第1及び第2のプロセッサがステップA及びBを共同で実行する)。
【0050】
記憶装置227は、画像ソース101、処理デバイス104、バッファマネージャ105、バッファ106、送信機107、端末108、ネットワーク112、ネットワーク記憶装置113、及び/又は画像処理システム100の他の部材から得られるデータ/情報を記憶することができる。いくつかの実施形態では、記憶装置222は、大容量記憶装置、リムーバブル記憶装置、揮発性読み書きメモリ、読み取り専用メモリ(ROM)など、又はそれらの組み合わせを含み得る。例えば、大容量記憶装置は、フラッシュディスク、光ディスク、ソリッドステートドライブなどを含み得る。リムーバブル記憶装置は、フラッシュドライブ、フロッピーディスク、光ディスク、メモリカード、zipディスク、、磁気ディスク等を含み得る。揮発性読み書きメモリは、ランダムアクセスメモリ(RAM)を含み得る。ランダムアクセスメモリ(RAM)は、ダイナミックRAM(DRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、スタティックRAM(ROMは、マスクROM(MROM)、プログラマブルROM(PROM)、消去可能なプログラマブルROM(EPROM))、電気的消去可能プログラマブルROM(EEPROM)、コンパクトディスクROM(CD-ROM)、及びデジタル多用途ディスクROMなどを含み得る。いくつかの実施形態では、記憶装置222は、本開示に記載の例示的な方法を実行するための1つ以上のプログラム及び/又は命令を格納することができる。例えば、記憶装置222は、処理エンジン(例えば、メディアサーバー103、処理デバイス104)がシンボル画像を復号化するためのプログラムを格納することができる。
【0051】
I/O 226は、信号、データ、情報などを入力及び/又は出力することができる。いくつかの実施形態では、I/O 226は、入力デバイス及び出力デバイスを含み得る。入力デバイスの例としては、キーボード、マウス、タッチスクリーン、マイクロフォンなど、又はそれらの組み合わせを含み得る。出力デバイスの例としては、表示装置、スピーカ、プリンタ、プロジェクタなど、又はそれらの組み合わせを含み得る。ディスプレーデバイスの例としては、液晶ディスプレー(LCD)、発光ダイオード(LED)ベースのディスプレー、フラットパネルディスプレー、曲面スクリーン、テレビジョン装置、陰極線管(CRT)、タッチスクリーンなど、又はそれらの組み合わせを含み得る。
【0052】
通信ポート225は、データ通信を容易にするためにネットワーク(例えば、ネットワーク112)に接続され得る。通信ポート225は、画像ソース101、処理デバイス104、バッファマネージャ105、バッファ106、送信機107、端末108、ネットワーク112、ネットワーク記憶装置113、及び/又は他のいずれかとの間の接続を確立することができる。接続は、有線接続、無線接続、データ送信及び/又は受信を可能にする任意の他の通信接続、及び/又はこれらの接続の任意の組み合わせであり得る。有線接続は、例えば、電気ケーブル、光ケーブル、電話線など、又はそれらの任意の組み合わせを含み得る。無線接続は、例えば、BluetoothTMリンク、Wi-FiTMリンク、WiMaxTMリンク、WLANリンク、ZigBeeリンク、モバイルネットワークリンク(例えば、3G、4G、5G)など、又はそれらの組み合わせを含み得る。いくつかの実施形態では、通信ポート225は、RS232、RS485などの標準化された通信ポートであり、及び/又はそれを含み得る。いくつかの実施形態では、通信ポート225は、特別に設計された通信ポートであり得る。
【0053】
図3は、本開示のいくつかの実施形態による例示的な端末の例示的な構成要素を示す模式図である。
図3に示すように、端末300は、通信プラットフォーム320、ディスプレー310、グラフィック処理ユニット(GPU)330、中央処理ユニット(CPU)340、I/Oポート350、メモリ360、及び記憶装置390を含み得る。いくつかの実施形態では、システムバス又はコントローラ(図示せず)を含むがこれらに限定されない任意の他の適切なコンポーネントも、端末300に含まれ得る。モバイルオペレーティングシステム(例えば、iOS
TM、Android
TM、Windows Phone
TM)及び1つ以上のアプリケーション380が、プロセッサ340によって実行されるために、記憶装置390からメモリ360にロードされ得る。端末300は、端末108の実施形態であり得る。
【0054】
本開示で説明される様々なモジュール、ユニット、及びそれらの機能を実装するために、コンピューターハードウェアプラットフォームが、本明細書で説明される要素の1つ以上のハードウェアプラットフォームとして使用され得る。ユーザーインターフェース要素を備えるコンピューターを使用して、パーソナルコンピューター(PC)又は任意の他のタイプのワークステーション又は端末装置を実装することができる。適切にプログラミングされていれば、コンピューターはサーバーとしても機能できる。
【0055】
図4は、本開示のいくつかの実施形態による例示的な処理デバイスを示すブロック図である。
図4に示すように、処理デバイス104は、取得モジュール410、行ライン決定モジュール420、キャラクタ領域決定モジュール430、及び復号化モジュール440を備える。
【0056】
取得モジュール410は、データ/情報を取得することができる。いくつかの実施形態において、取得モジュール410は、複数のシンボルキャラクタを含むシンボルのシンボル画像を取得することができる。いくつかの実施形態では、シンボル画像内のシンボルはバーコードであってもよい。例示的なバーコードは、コード16K、コード49、PDF417、マイクロPDF417、コード1、マキシコード、クイックレスポンス(QR)コード、データマトリックス、HanXinコード、グリッドマトリックスなどを含み得る。さらに、取得されたデータ/情報には、処理された結果、ユーザー命令、アルゴリズム、プログラムコードなど、又はそれらの組み合わせが含まれ得る。
【0057】
行ライン決定モジュール420は、シンボルの長さ方向に沿ってシンボル画像内の複数の行ラインを決定することができる。いくつかの実施形態では、処理デバイス104は、シンボルのエッジを識別することができる。シンボルのエッジは、シンボル画像内のピクセルに基づいて識別され得る。いくつかの実施形態では、処理デバイス104は、シンボルのエッジが位置決めボックスのエッジと一致するか、又は実質的に一致するまで、位置決めボックスのサイズ、位置、及び/又は向きを動的に調整することができる。いくつかの実施形態では、複数の行ラインのそれぞれは、位置決めボックス内の同じ行のピクセルを連結することによって決定され得る。
【0058】
キャラクタ領域決定モジュール430は、複数のシンボルキャラクタにおけるそれぞれのシンボルキャラクタに対応するキャラクタ領域を決定することができる。いくつかの実施形態では、複数のシンボルキャラクタにおけるそれぞれのシンボルキャラクタに対応するキャラクタ領域は、当該複数のシンボルキャラクタを含むシンボル領域内の複数の列境界及び複数の行境界に基づいて決定され得る。キャラクタ領域決定モジュール430は、行ライン決定モジュール420から複数の行ラインを取得し、複数の行ラインに基づいて複数の列境界及び複数の行境界を決定することができる。複数の列境界及び複数の行境界の決定に関する詳細は、本開示の他の箇所、例えば、
図5、
図12、及び
図15、ならびにそれらの関連付けられている説明から見出すことができる。
【0059】
復号化モジュール440は、シンボルキャラクタに対応するキャラクタ領域に関連付けられているグレー値に基づいて、各シンボルキャラクタを復号化することができる。
【0060】
各キャラクタ領域に関して、復号化モジュール440は、キャラクタ領域を複数のブロックに分割することができる。複数のブロックのそれぞれは、1つ以上のピクセル(例えば、1×4ピクセル(すなわち、行に1ピクセル、列に4ピクセル))を含み得る。ブロックの当該1つ以上のピクセルのグレー値を取得することができる。ブロックのグローバルグレー値は、ブロックの当該1つ以上のピクセルのグレー値の全体的な表現であり得る。
【0061】
いくつかの実施形態では、復号化モジュール440は、複数のブロックのグローバルグレー値に基づいて、キャラクタ領域に対応するシンボルキャラクタのコントラスト値を決定することができる。復号化モジュール440は、コントラスト値に基づいてシンボルキャラクタに対応するコードワードを決定することができる。いくつかの実施形態では、復号化モジュール440は、複数の予め設定されたコードワード(例えば、2787個のコードワード)を取得することができる。複数のコードワードのそれぞれは、所定のコードワード列に対応し得る。複数の予め設定されたコードワードのそれぞれの基準コントラスト値は、対応する所定のコードワード列に基づいて決定され得る。次いで、処理デバイス104は、各コードワードの基準コントラスト値及びシンボルキャラクタのコントラスト値とに基づいて、複数の予め設定されたコードワードのそれぞれとシンボルキャラクタとの間の類似値(similarity)を決定することができる。復号化モジュール440は、類似値に基づいてシンボルキャラクタに対応するコードワードを決定することができる。シンボルキャラクタに対応するコードワードは、シンボル画像内のシンボルに対応する復号化されたデータ(例えば、数字、テキスト、ベクトルなど)であるか、又はそれを含み得る。
【0062】
処理デバイス104内のモジュールは、有線接続又は無線接続を介して互いに接続又は通信することができる。有線接続は、金属ケーブル、光ケーブル、ハイブリッドケーブルなど、又はそれらの任意の組み合わせを含み得る。無線接続は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、Bluetooth、ZigBee、近距離無線通信(NFC)など、又はそれらの任意の組み合わせを含み得る。2つ以上のモジュールを組み合わせて1つのモジュールにすることができ、いずれか1つのモジュールを2つ以上のユニットに分割することもできる。例えば、処理デバイス104は、上述のモジュールに関連付けられている情報及び/又はデータ(例えば、走査データ、画像)を記憶するように構成されている記憶モジュール(図示せず)を含み得る。
【0063】
図5は、本開示のいくつかの実施形態による、シンボル画像内のシンボルのシンボルキャラクタを復号化するための例示的なプロセスを示すフローチャートである。いくつかの実施形態では、プロセス500を、
図1に示すような画像処理システム100上で実施することができる。例えば、プロセス500は、記憶媒体(例えば、ネットワーク記憶装置113、又はコンピューティングデバイス220の記憶装置227)に命令の形で記憶され、処理デバイスによって呼び出され、及び/又は実行されてもよい。以下に示すプロセス500の操作は、例示を意図したものである。いくつかの実施形態では、プロセス500は、説明されていない1つ以上の追加の操作を用いて、及び/又は議論された1つ以上の操作なしで達成され得る。さらに、
図5及び以下の説明に示されるプロセス500の操作の順序は、限定することを意図しない。
【0064】
510において、処理デバイス104(例えば、プロセッサ222、取得モジュール410)は、シンボル領域において複数のシンボルキャラクタが含まれるシンボル画像を取得する。
【0065】
シンボル画像は、シンボルの画像であり得る。いくつかの実施形態では、シンボル画像は、画像処理システム100の画像ソース101(例えば、スキャナ102又はメディアサーバー103)から取得され得る。いくつかの実施形態では、シンボル画像内のシンボルはバーコードであり得る。例示的なバーコードは、コード16K、コード49、PDF417、マイクロPDF417、コード1、マキシコード、クイックレスポンス(QR)コード、データマトリックス、HanXinコード、グリッドマトリックスなどを含み得る。説明のためにPDF417バーコードを参照するが、限定することを意図しない。
【0066】
PDF417バーコードは、積み重ねられている線形バーコード形式のシンボルであり得る。単に例示の目的で、例示的なPDF417バーコードが、
図6及び
図7に示されている。
図6に示すように、PDF417バーコードは、開始シンボルキャラクタ(開始パターンとも呼ばれる)A、シンボル領域B、及び終了シンボルキャラクタ(停止パターンとも呼ばれる)Cを含む。開始シンボルキャラクタA、シンボル領域B、及び終了シンボルキャラクタCは、(例えば、
図6に示すように)シンボルの長さ方向に沿って連続的に配置されている。シンボル領域Bは、4つの境界を含む。4つの境界は、開始境界(すなわち、シンボル領域Bを開始シンボルキャラクタAから分離する境界)と、終了境界(すなわち、シンボル領域Bを終了シンボルキャラクタCから分離する境界)と、上境界と、下境界とを含む。PDF417バーコードは、シンボル領域Bにおいて複数のシンボルキャラクタを含み得る。シンボル領域内の複数のシンボルキャラクタのそれぞれは、4つのバーと4つのスペースの組み合わせによって表すことができる。4つのバーと4つのスペースは交互に配置されてもよい。いくつかの実施形態において、4つのバー及び4つのスペースは、17個のブロックによって構成され得る。4つのバーと4つのスペースのそれぞれは、シンボルの長さ方向に沿っているブロックの特定の数又はカウントに対応することができる。シンボルの長さ方向に沿ってバー及びスペースのそれぞれに対応するブロックの特定の数又はカウントの配置は、シンボルキャラクタに対応するコードワード列として表すことができる。シンボルキャラクタに符号化されたデータは、コードワード列に基づいて復号化されることができる。
【0067】
単に例示の目的で、例示的なシンボルキャラクタが
図7に提供される。
図7に示すように、シンボルキャラクタ700は、点線ボックス内にあってもよい。シンボルキャラクタ700は、4つのバーと4つのスペースとを含む。4つのバー及び4つのスペースは、それぞれ点線ボックス内の黒い部分及び白い部分によって表すことができる。
【0068】
いくつかの実施形態では、4つのバー及び4つのスペースは、
図7に示すようにシンボルキャラクタ700の上に1から17までの番号が付けられている17個のブロックによって構成されてもよい。17個のブロックは、シンボルの長さ方向(例えば、
図7の水平方向)に沿って同じ幅を有してもよい。各ブロックは、ストライプの形状を有してもよい。各ストライプの長さ方向は、シンボルの長さ方向(例えば、シンボルの幅方向)に対して垂直であってもよい。
【0069】
シンボルキャラクタ700について、1番目のバーが5ブロック分、1番目のスペースが1ブロック分、2番目のバーが1ブロック分、2番目のバーが1ブロック分、3番目のバーが1ブロック分、3番目のスペースが1ブロック分、4番目のバーが2ブロック分、4番目のスペースが5ブロックに対応する。例として、4つのバー及び4つのスペースのそれぞれの幅は、
図7の対応するバー又はスペースの下にラベル付けされ得る。この場合、バーとスペースによって表されるシンボルキャラクタ700は、コードワード列51111125によって表すことができる。シンボルキャラクタ700に符号化されたデータ(例えば、数字、テキストなど)は、コードワード列51111125に基づいて復号化されることができる。
【0070】
シンボル画像内の各ブロックは、シンボル画像の1つ以上のピクセルに対応することができる。本開示をよりよく理解するだけのために、各ブロックは、シンボル画像において1×4ピクセル(すなわち、
図9に示すように行に1ピクセル、列に4ピクセル)によって表され得る。行の方向(行方向とも呼ばれる)は、シンボルの長さ方向に平行であってもよい。列の方向(列方向とも呼ばれる)は、シンボルの幅方向に平行であってもよい。これは例示を目的としており、限定することを意図しないことに留意されさい。ブロックは、1×3ピクセル(つまり、行に1ピクセル、列に3ピクセル)、2×7ピクセル(つまり、行に2ピクセル、行に7ピクセル)など、任意の数又はカウントのピクセルに対応することができる。
【0071】
PDF417バーコードは、第1のクワイエットゾーン(quiet zone)及び第2のクワイエットゾーン(図示せず)をさらに含み得る。第1のクワイエットゾーン及び第2のクワイエットゾーンは、シンボルの長さ方向に沿ってシンボルの両側に配置され得る。第1のクワイエットゾーン及び/又は第2のクワイエットゾーンは、予め設定された幅を有するスペース(すなわち、白い部分)であってもよい。
【0072】
520において、処理デバイス104(例えば、プロセッサ222、行ライン決定モジュール420)は、シンボルの長さ方向に沿って複数の行ラインを決定する。
【0073】
いくつかの実施形態では、シンボル画像を取得すると、処理デバイス104は、位置決めボックスを使用してシンボルの長さ方向を決定することができる。いくつかの実施形態では、位置決めボックスは長方形のボックスであってもよい。いくつかの実施形態では、処理デバイス104は、シンボルのエッジを識別することができる。シンボルのエッジは、シンボル画像内のピクセルに基づいて識別され得る。例えば、処理デバイス104は、シンボル画像内のすべてのピクセルのグレー値を取得することができる。シンボル内の開始シンボルキャラクタ、終了シンボルキャラクタ、及び複数のシンボルキャラクタのバーの色は黒であるため、バーに対応するピクセルのグレー値は相対的に小さい(例えば、0である)。処理デバイス104は、ピクセルのグレー値に基づいてシンボルのエッジを識別することができる。処理デバイス104は、シンボルの識別されたエッジに基づいて、位置決めボックスのサイズ、位置、及び/又は向きを調整することができる。位置決めボックスの向きは、位置決めボックスの長さ方向と平行であってもよい。いくつかの実施形態では、処理デバイス104は、シンボルのエッジが位置決めボックスのエッジと一致するか、又は実質的に一致するまで、位置決めボックスのサイズ、位置、及び/又は向きを動的に調整することができる。位置決めボックスの向きは、シンボルの長さ方向として決定され得る。
【0074】
シンボルの長さ方向が決定された後、処理デバイス104は、複数の行ラインを決定することができる。いくつかの実施形態では、位置決めボックス内のピクセルは、第1の複数の行及び第2の複数の列にあってもよい。第1の複数の行のそれぞれの行方向は、シンボルの長さ方向に平行であってもよい。第2の複数の列のそれぞれの列方向は、シンボルの長さ方向に対して垂直であってもよい。いくつかの実施形態では、複数の行ラインのそれぞれは、位置決めボックス内の同じ行のピクセルを連結することによって決定され得る。或いは、複数の走査線が決定されてもよい。いくつかの実施形態では、複数の走査線は、シンボルの長さ方向に平行であってもよい。各走査線は、位置決めボックス内の同じ行のピクセルをトラバースする場合がある。複数の走査線は、行ラインとして決定され得る。いくつかの実施形態では、複数の行ラインのうちの少なくとも1つは直線であってもよい。いくつかの実施形態では、複数の行ラインのうちの少なくとも1つは曲線であってもよい。複数の行ラインのうち隣接する2つの行ラインはそれぞれ、同じ距離を有してもよいし、異なる距離を有してもよい。
【0075】
単に例示の目的で、シンボル画像内の例示的な行ラインを
図8に示す。シンボル画像800は、シンボル810を含む。シンボル画像800内のピクセルは、8行である。したがって、同じ行のピクセルを連結することによって、8つの行ラインを決定することができる。
図8に示すように、8本の行ラインL1~L8が決定され得る。L1からL8までは、シンボル810の異なる行のピクセルをトラバースする。
【0076】
530において、処理デバイス104(例えば、プロセッサ222、キャラクタ領域決定モジュール430)は、複数の行ラインに基づいて、複数のシンボルキャラクタ間の複数の列境界を決定する。
【0077】
PDF417バーコードに関しては、シンボル領域内の複数のシンボルキャラクタは、積み重ねられて配列されてもよい。例えば、複数のシンボルキャラクタは、シンボル領域において複数の行及び複数の列に配置されてもよい。列境界は、シンボルキャラクタの隣接する2つの列の間の境界を指す。
【0078】
処理デバイス104は、複数のシンボルキャラクタ間で複数の列境界を決定することができる。複数の列境界のそれぞれは、複数のシンボルキャラクタにおけるシンボルキャラクタの2つの隣接する列に対応することができる。いくつかの実施形態では、複数の列境界は、複数の行ラインに基づいて決定され得る。いくつかの実施形態では、複数の列境界は、複数の行ラインから複数のシンボルキャラクタの2つの隣接する列に対応する列境界の上のピクセルを識別することによって決定され得る。
【0079】
いくつかの実施形態では、処理デバイス104は、複数のシンボルキャラクタに関連付けられている参照シンボルキャラクタの幅を決定することができる。参照シンボルキャラクタは、シンボル内の特定のシンボルキャラクタを指す。参照シンボルキャラクタは、シンボル領域内のシンボルキャラクタの幅を決定するために使用され得る。いくつかの実施形態では、参照シンボルキャラクタは、開始シンボルキャラクタ(例えば、
図6に示すような開始シンボルキャラクタA)又は終了シンボルキャラクタ(例えば、
図6に示すような終了シンボルキャラクタC)であり得る。PDF417バーコードの場合、シンボル領域内の複数のシンボルキャラクタは、同じ幅を有してもよい。開始シンボルキャラクタの幅は、シンボル領域内のシンボルキャラクタの幅と等しくてもよい。終了シンボルキャラクタの幅は、シンボル領域内のシンボルキャラクタの幅に比例し得る。
【0080】
いくつかの実施形態では、処理デバイス104は、シンボル画像から開始シンボルキャラクタ及び終了シンボルキャラクタを識別することができる。開始シンボルキャラクタと終了シンボルキャラクタは、シンボル領域外にある場合がある。開始シンボルキャラクタは、シンボルの行方向に沿っている開始エッジ及び終了エッジを含み得る。PDF417バーコードの場合、開始シンボルキャラクタの終了エッジがシンボル領域の開始境界と一致する場合がある。処理デバイス104は、開始シンボルキャラクタの終了エッジを決定することによって、シンボル領域の開始境界を決定することができる。終了シンボルキャラクタも、シンボルの行方向に沿っている開始エッジ及び終了エッジを含み得る。終了シンボルキャラクタの開始エッジは、シンボル領域の終了境界と一致する場合がある。処理デバイス104は、終了シンボルキャラクタの開始エッジを決定することにより、シンボル領域の終了境界を決定することができる。複数の列境界は、シンボル領域の開始境界と終了境界との間で決定され得る。
【0081】
いくつかの実施形態では、処理デバイス104は、参照シンボルキャラクタの幅に基づいて基準幅範囲を決定することができる。理論的には、PDF417バーコードの場合、開始シンボルキャラクタの幅は、シンボル領域内の各シンボルキャラクタの幅と同じであり得る。終了シンボルキャラクタの幅は、シンボル領域内の各シンボルキャラクタの幅に比例し得る。しかしながら、実際の状況では、シンボル画像の歪みなどの様々な要因により、シンボルキャラクタの幅が変化することがある。したがって、処理デバイス104は、様々な要因を考慮して基準幅範囲を決定することができる。基準幅範囲は、複数のシンボルキャラクタのうちシンボルキャラクタの幅が変化し得る範囲であり得る。いくつかの実施形態では、基準幅範囲は、参照シンボルキャラクタの幅をインクリメント(例えば、0.2ミリメートル、0.5ミリメートル、1ミリメートル、1ピクセル、2ピクセル)だけ増加させること、及び/又は参照シンボルキャラクタの幅をデクリメント(例:0.2ミリ、0.5ミリ、1ミリ、1ピクセル、2ピクセル)だけ減少させることによって決定され得る。インクリメント及び/又はデクリメントは、シンボルキャラクタに対応するエラーとして定義され得る。いくつかの実施形態では、基準幅範囲は、異なる明るさ、異なる画像解像度、異なる画質(例えば、ノイズレベル)などの異なる状況下で調整可能であり得る。
【0082】
処理デバイス104は、隣接するシンボルキャラクタ間の境界特性と基準幅範囲とに基づいて、複数のシンボルキャラクタ間の複数の列境界を決定することができる。PDF417バーコードの場合、現在のシンボルキャラクタの4番目のスペースは、シンボルの行方向に沿って隣接するシンボルキャラクタの第1のバーに連続し得る。行方向に隣接する2つのシンボルキャラクタ間の列境界は、現在のシンボルキャラクタの4番目のスペースの最後のブロックの色と、隣接するシンボルキャラクタの最初のブロックの色とが行方向に沿って白から黒に変化するという特性(列境界特性とも呼ばれる)を持つことができる。したがって、ブロックのピクセルのグレー値は、行方向に沿って、例えば、255から0に減少することがある。複数の列境界の決定に関するより多くの説明は、本開示の他の場所、例えば、
図12とその説明から見出すことができる。
【0083】
540において、処理デバイス104(例えば、プロセッサ222、キャラクタ領域決定モジュール430)は、複数の行ラインに基づいて、複数のシンボルキャラクタ間の複数の行境界を決定する。
【0084】
複数の列境界のそれぞれについて、処理デバイス104は、複数の行ラインと列境界との複数の交点(例えば、ピクセル)を決定することができる。処理デバイス104は、上向きのトラバースを実行し、複数の交点の中から上方交点を識別することができる。上向きのトラバースは、列境界に沿って交点を一つずつ上向きにトラバースする操作を指す。列境界に沿っている上方交点より上のピクセル(上ピクセルとも呼ばれる)と、上ピクセルの同じ行の行方向に沿っている次のピクセル(上ピクセルの後続ピクセルとも呼ばれる)が決定され得る。上ピクセルと上ピクセルの後続ピクセルは、列境界の異なる側に位置されることがある。
【0085】
PDF417バーコードの場合、シンボル領域の上境界は、上ピクセルと上ピクセルの行方向に沿っている後続ピクセルとが列境界特性を満たさない、かつ、参照ピクセル(例えば交点)と参照ピクセルの行方向に沿っている後続ピクセルとが列境界特性を満たすという特性(上境界特性とも呼ばれる)を有し得る。参照ピクセルと参照ピクセルの後続ピクセルは、シンボル領域の上境界の上にあってもよい。
【0086】
処理デバイス104は、上方交点と上方交点の後続ピクセルと、並びに上ピクセルと上ピクセルの後続ピクセルが列境界特性を満たすかどうか(すなわち、上ピクセルの色は白であり、上ピクセルの後続ピクセルが黒であり、この2つのピクセルの色が行方向に沿って白から黒に変化するかどうか)を判定することができる。上ピクセルと上ピクセルの後続ピクセルが列境界特性を満たさず、かつ、上方交点と上方交点の行方向に沿っている後続ピクセルが列境界特性を満たす(上ピクセルと上方交点とが上境界特性を満たすことともいう)場合、これは、上方交点と上ピクセルの後続の交点がシンボル領域の上境界の上にある場合があることを示す。
【0087】
いくつかの実施形態では、RANSANアルゴリズムを使用して、複数の列境界のそれぞれに対応する上ピクセルと上ピクセルの後続ピクセルとに基づいて、シンボル領域の上境界を決定することができる。
【0088】
同様に、複数の列境界のそれぞれについて、処理デバイス104は、下向きのトラバースを実行し、複数の交点の中から下方交点を識別することができる。下向きのトラバースは、列境界に沿って交点を1つずつ下向きにトラバースする操作を指す。下方交点の列境界に沿っている下のピクセル(下ピクセルとも呼ばれる)と、下方ピクセルの同じ行において行方向に沿っている後続のピクセル(下ピクセルの後続ピクセルとも呼ばれる)とが決定され得る。下ピクセルと下ピクセルの後続ピクセルは、列境界の異なる側に位置され得る。
【0089】
PDF417バーコードの場合、シンボル領域の下境界は、下ピクセルと下ピクセルの行方向に沿っている後続ピクセルとが列境界特性を満たさない、かつ、下ピクセルの列境界に沿って上にある参照ピクセル(例えば交点)と参照ピクセルの行方向に沿っている後続ピクセルとが列境界特性を満たすという特性(下境界特性とも呼ばれる)を有し得る。参照ピクセル及び参照点の後続ピクセルは、シンボル領域の下境界の上にあってもよい。
【0090】
処理デバイス104は、下方交点と下方交点の後続ピクセルと、並びに下ピクセルと下ピクセルの後続ピクセルとが列境界特性を満たすかどうかを判定することができる。下ピクセルと下ピクセルの後続ピクセルが列境界特性を満たさず、かつ、下方交点と下方交点の行方向に沿っている後続ピクセルが列境界特性を満たす場合(下ピクセルと下方交点が下境界特性を満たすことともいう)、これは、下方交点及び下方交点の後続ピクセルがシンボル領域の下境界の上にある場合があることを示す。
【0091】
いくつかの実施形態では、RANSANアルゴリズムを使用して、複数の列境界のそれぞれに対応する下ピクセル及び下ピクセルの後続ピクセルに基づいて、シンボル領域の下境界を決定することができる。
【0092】
シンボル領域の上境界及び下境界が決定された後、シンボル領域の上境界と下境界との間の複数の行境界が決定され得る。本明細書で使用される場合、行境界は、シンボルキャラクタの2つの隣接する行の間の境界を指す。
【0093】
処理デバイス104は、複数のシンボルキャラクタ間で複数の行境界を決定することができる。複数の行境界のそれぞれは、複数のシンボルキャラクタにおけるそれぞれのシンボルキャラクタの2つの隣接する行に対応することができる。いくつかの実施形態では、複数の行境界は、複数の行ラインに基づいて決定され得る。いくつかの実施形態では、複数の行境界は、隣接するシンボルキャラクタ間の境界特性に基づいて、複数の行ラインから複数の行境界を識別することによって決定され得る。
【0094】
いくつかの実施形態では、列方向に隣接する2つのシンボルキャラクタ間のバー及びスペースの幅が異なってもよい。したがって、列方向に隣接する2つのシンボルキャラクタ間の行境界は、行境界上のすべてのピクセルの色が、行境界の第1の隣接する行ライン上の対応するピクセルの色と同じであり、かつ、行境界上の少なくとも1つのピクセルの色が、行境界の第2の隣接する行ライン上の対応するピクセルの色と異なるという特性(行境界特性とも呼ばれる)を有し得る。いくつかの実施形態では、第1の隣接する行ラインは行境界の上にあってもよく、第2の隣接する行ラインは行境界の下にあってもよい。代替として、第1の隣接する行ラインは行境界の下にあってもよく、第2の隣接する行ラインは行境界の上にあってもよい。この場合、行境界上のすべてのピクセルのグレー値は、行境界の第1の隣接する行ライン上の対応するピクセルのグレー値と同じか、又はそれに近い場合があり、行境界上の少なくとも1つのピクセルのグレー値は、行境界の第2の隣接する行ライン上の対応するピクセルのグレー値と異なる場合がある。
【0095】
図10は、本開示のいくつかの実施形態による、2つの隣接するシンボルキャラクタ間の例示的な行境界を示す模式図である。
図10において、シンボルキャラクタPを、41111144と表すことができる。シンボルキャラクタPについて、同一行のピクセルを連結する行ラインL1~L4を決定することができる。シンボルキャラクタQを、41111315と表すことができる。シンボルキャラクタQについて、同一行のピクセルを連結する行ラインL5~L8を決定することができる。行ラインL4に関しては、行ラインL3上のすべてのピクセルのグレー値は、行ラインL4上の対応するピクセルのグレー値と同じか又は近いものであり得る。行ラインL5上の少なくとも1つのピクセル(例えば、
図10に示される長方形のボックス内のピクセル)のグレー値は、行ラインL4上の対応するピクセルのグレー値とは異なる。行ラインL4上のピクセルは、行境界特性を満たす。したがって、行ラインL4は、シンボルキャラクタPとシンボルキャラクタQとの間の行境界として決定され得る。
【0096】
いくつかの実施形態では、シンボル画像内のピクセルの数又はカウントは比較的大きくてもよい(すなわち、シンボル画像は高解像度(例えば、7680×4320ピクセル)であってもよい)。いくつかの実施形態では、各行ライン上のすべてのピクセルをトラバースする代わりに、処理デバイス104は、各行ライン上のすべてのピクセルから特定の数又はカウントのピクセルを各行ライン上でサンプリングし、各行ライン上のサンプリングされたピクセルに基づいて、複数のシンボルキャラクタ間の複数の行境界を決定することができる。いくつかの実施形態では、すべての複数の行ラインをトラバースする代わりに、処理デバイス104は、複数の行ラインから特定の数又はカウントの行ラインをサンプリングし、サンプリングされた行に基づいて、複数のシンボルキャラクタ間の複数の行境界を決定することができる。
【0097】
550において、処理デバイス104(例えば、プロセッサ222、キャラクタ領域決定モジュール430)は、複数の列境界及び複数の行の境界に基づいて、複数のシンボルキャラクタのそれぞれについて、シンボルキャラクタに対応するキャラクタ領域を決定する。
【0098】
シンボル領域の開始境界、終了境界、上境界、及び下境界が決定されるので、複数の列境界及び複数の行境界は、シンボル領域を複数のキャラクタ領域に分割することができる。複数のキャラクタ領域のそれぞれは、複数のシンボルキャラクタのうちの1つに対応することができる。
【0099】
560において、処理デバイス104(例えば、プロセッサ222、復号化モジュール440)は、シンボルキャラクタに対応するキャラクタ領域に関連付けられているグレー値に基づいて、各シンボルキャラクタを復号化する。
【0100】
各キャラクタ領域に関して、処理デバイス104は、キャラクタ領域を複数のブロックに分割することができる。いくつかの実施形態において、キャラクタ領域は、行方向に沿って複数のブロック(例えば、17個のブロック)に分割され得る。処理デバイス104は、複数のブロックのそれぞれのグローバルグレー値を決定することができる。複数のブロックのそれぞれは、1つ以上のピクセル(例えば、1×4ピクセル(すなわち、行に1ピクセル、列に4ピクセル))を含み得る。ブロックのこの1つ以上のピクセルのグレー値を取得することができる。ブロックのグローバルグレー値は、ブロックのこの1つ以上のピクセルのグレー値の全体的な表現であり得る。一部の実施形態では、ブロックのグローバルグレー値は、ブロックの1つ以上のピクセルのグレー値の平均値であってもよい。
【0101】
いくつかの実施形態では、処理デバイス104は、複数のブロックのグローバルグレー値に基づいて、キャラクタ領域に対応するシンボルキャラクタのコントラスト値を決定することができる。いくつかの実施形態では、処理デバイス104は、キャラクタ領域における複数のブロックから第1タイプのブロック(例えば、シンボルキャラクタのスペースに属するブロック)及び第2タイプのブロック(例えば、シンボルキャラクタのバーに属するブロック)を識別し得る。シンボルキャラクタのコントラスト値は、少なくとも第1タイプのブロックのグローバルグレー値及び第2タイプのブロックのグローバルグレー値に基づいて決定され得る。
【0102】
キャラクタ領域に対応するシンボルキャラクタのコントラスト値が決定された後、処理デバイス104は、コントラスト値に基づいてシンボルキャラクタに対応するコードワードを決定することができる。いくつかの実施形態では、処理デバイス104は、複数の予め設定されたコードワード(例えば、2787個のコードワード)を取得することができる。複数のコードワードのそれぞれは、所定のコードワード列に対応し得る。複数の予め設定されたコードワードのそれぞれの基準コントラスト値は、対応する所定のコードワード列に基づいて決定され得る。次いで、処理デバイス104は、各コードワードの基準コントラスト値及びシンボルキャラクタのコントラスト値に基づいて、複数の予め設定されたコードワードのそれぞれとシンボルキャラクタとの間の類似値を決定することができる。処理デバイス104は、類似値に基づいて、シンボルキャラクタに対応するコードワードを決定することができる。シンボルキャラクタに対応するコードワードは、シンボル画像内のシンボルに対応する復号化されたデータ(例えば、数字、テキスト、ベクトルなど)であるか、又はそれを含み得る。シンボルキャラクタの復号化に関する詳細は、本開示の他の箇所、例えば、
図14とその説明から見出すことができる。
【0103】
いくつかの実施形態では、復号化されたデータは、ネットワーク112を介して送信機107によって端末108に送信されてもよい。端末108は、ネットワーク112を介してシンボル画像内のシンボルに対応する復号化されたデータを受信し、復号化されたデータをユーザーに表示したり、又は支払い、身元認証、登録などのさらなる操作を実行したりしてもよい。
【0104】
本開示のいくつかの実施形態によれば、処理デバイス104は、行ラインと、列境界特性と、行境界特性とに基づいて、複数のシンボルキャラクタ間の複数の列境界及び複数のシンボルキャラクタ間の複数の行境界を決定することができる。シンボル領域を、複数のシンボルキャラクタ間の複数の列境界及び複数のシンボルキャラクタ間の複数の行境界に基づいて、複数のキャラクタ領域に分割してもよい。次いで、処理デバイス104は、シンボルキャラクタに対応するキャラクタ領域に関連付けられているグレー値に基づいて、複数のキャラクタ領域のそれぞれに対応するシンボルキャラクタを復号化することができる。これにより、複数のシンボルキャラクタのそれぞれの位置をより正確に決定することができ、シンボルキャラクタに対応するコードワードを、予め設定された複数のコードワードに基づいてより効率的かつ正確に決定することができ、また、画像の歪み、不均一な光などの要因によって復号化プロセスのエラーが引き起こされることが軽減又は排除されるため、復号化処理の有効性と精度が向上する。
【0105】
上記の説明は、単に例示の目的で提供されたものであり、本開示の範囲を限定することを意図しないことに留意されたい。当業者であれば、本開示の教示に基づいて、数多くの変形及び修正を行うことができる。但し、それらの変形及び修正は、本開示の範囲から逸脱するものではない。
【0106】
いくつかの実施形態では、シンボル領域の上境界及び下境界は、さまざまな方法で決定され得る。
図11に示すように、シンボル1110を含むシンボル画像1100が提供される。複数の走査線L
1~L
nがシンボル画像1100内で決定され得る。複数の走査線L
1~L
nにおける隣接する各2本の走査線は、同じ距離を有してもよいし、又は異なる距離を有してもよい。複数の走査線L
1~L
nは、シンボル1110の長さ方向に平行であってもよい。複数の走査線L
1~L
nのそれぞれは、シンボル領域ABCD内の同じ行のピクセルをトラバースし得る。処理デバイス104は、シンボル領域ABCD内の複数のシンボルキャラクタの中から複数の列境界S
1~S
nを決定することができる。いくつかの実施形態では、複数の列境界S
1~S
nは、複数の走査線L
1~L
nに基づいて決定され得る。
【0107】
複数の列境界S1~Snのそれぞれについて、処理デバイス104は、複数の走査線と列境界との複数の交点を決定することができる。処理デバイス104は、複数の交点のうち最も高い位置にある交点(上方交点(upper intersection)とも呼ばれる)を特定することができる。処理デバイス104はさらに、最上点(upper point)が識別されるまで、最も高い位置の交点から上向きのトラバースを実行することができる。上向きのトラバースは、最も高い位置の交点より上を列境界に沿って1つずつ上向きでトラバースする操作である。PDF417バーコードの場合、シンボル領域ABCDの上境界Luは、行方向に沿っている最上点と最上点の後続点とが列境界特性を満たさない、かつ、最上点の列境界に沿ってより下の参照点と参照点の行方向に沿っている後続点とが列境界特性を満たすという特性(上境界特性とも呼ばれる)を有し得る。参照点及び参照点の後続点は、シンボル領域ABCDの上境界Luの上にあってもよい。いくつかの実施形態では、最上点、参照点、最上点の後続点、及び/又は参照点の後続点は、最も高い位置の交点とは異なる場合がある。いくつかの実施形態では、最上点、参照点、最上点の後続点、及び/又は参照点の後続点は、ピクセルであってもよい。
【0108】
上境界特性に従って、最上点及び最上点の行方向に沿っている後続点(最上点の後続点ともいう)を決定することができる。最上点と最上点の後続点は、列境界の異なる側に配置されることがある。処理デバイス104は、最上点と最上点の後続点と、並びに最上点より下の参照点と参照点の後続点とが列境界特性を満たすかどうかを判定することができる。最上点と最上点の後続点と、並びに最上点より下の参照点と参照点の後続点とが列境界特性を満たす場合(つまり、最上点と参照点とが上境界特性を満たす場合)、それは、参照点及び参照点の後続点がシンボル領域ABCDの上境界Lu上にある場合があることを示す。いくつかの実施形態では、シンボル領域ABCDの上境界Luは、複数の列境界S1~Snに対応する複数の参照点に基づいて決定され得る。いくつかの実施形態では、RANSANアルゴリズムを使用して、複数の参照点に基づいてシンボル領域ABCDの上境界Luを決定することができる。同様に、シンボル領域ABCDの下境界Ldを決定することができる。
【0109】
図12は、本開示のいくつかの実施形態による、シンボルのシンボル領域内の複数のシンボルキャラクタ間の複数の列境界を決定するための例示的なプロセスを示すフローチャートである。いくつかの実施形態では、プロセス1200は、
図1に示す画像処理システム100上で実施され得る。例えば、プロセス1200は、記憶媒体(例えば、ネットワーク記憶装置113、又はコンピューティングデバイス220の記憶装置227)に命令の形で記憶され、処理デバイスによって呼び出され、及び/又は実行されてもよい。以下に示すプロセス1200の操作は、例示を意図したものである。いくつかの実施形態では、プロセス1200は、説明されていない1つ以上の追加の操作で、及び/又は議論された操作の1つ以上なしで達成され得る。さらに、
図12及び以下の説明に示されるプロセス1200の操作の順序を、限定することを意図しない。
【0110】
1210において、処理デバイス104は、複数のシンボルキャラクタに関連付けられている参照シンボルキャラクタの幅を決定する。
【0111】
いくつかの実施形態では、参照シンボルキャラクタは、開始シンボルキャラクタ又は終了シンボルキャラクタであってもよい。PDF417バーコードの場合、シンボル領域内の複数のシンボルキャラクタは、同じ幅を有してもよい。開始シンボルキャラクタの幅は、シンボル領域内のシンボルキャラクタの幅と等しくてもよい。終了シンボルキャラクタの幅は、シンボル領域内のシンボルキャラクタの幅に比例し得る。
【0112】
いくつかの実施形態では、処理デバイス104は、参照シンボルキャラクタに対応するコードワード列を取得することができる。参照シンボルキャラクタに対応するコードワード列を、所定のコードワード列と呼ぶこともある。いくつかの実施形態では、所定のコードワード列は、標準コードワード列であってもよい。いくつかの他の実施形態では、参照シンボルキャラクタに対応する所定のコードワード列は、画像処理システム100のデフォルト設定などに従って、ユーザーによって決定され得る。
【0113】
いくつかの実施形態では、処理デバイス104は、所定のコードワード列に基づいて、参照シンボルキャラクタのバー及びスペースの配置及び/又は幅を決定することができる。いくつかの実施形態では、処理デバイス104はさらに、参照シンボルキャラクタのバー及びスペースに対応するピクセルの少なくとも一部のグレー値を決定することができる。単に例示の目的で、ピクセルの少なくとも一部は、例えば、参照シンボルキャラクタのバー及びスペースに対応する少なくとも1行のピクセルである。この少なくとも一部のピクセルのグレー値は、所定のグレー値と呼ばれることもある。
【0114】
所定のグレー値が決定された後、処理デバイス104は、参照シンボルキャラクタに対応する所定のグレー値を、複数の行ラインのうちの少なくとも1つの行ラインの上のピクセルのグレー値と比較することができる。この比較に基づいて、処理デバイス104は、当該少なくとも1つの行ラインの上の少なくとも1つの線分を識別することができる。この少なくとも1つの線分のピクセルのグレー値は、所定のグレー値に一致する。処理デバイス104は、この少なくとも1つの線分の長さを参照シンボルキャラクタの幅として指定することができる。
【0115】
PDF417バーコードの場合、開始シンボルキャラクタに対応する所定のコードワード列(開始コードワード列とも呼ばれる)は、81111113であり得る。単に例示の目的で、シンボルキャラクタを構成する17個のブロックのそれぞれは、シンボル画像内の1つのピクセルによって表される。これらのピクセルは、
図13に示すような黒と白の点で表されることができる。開始シンボルキャラクタ1310は、1番目のバーとして8ピクセル、1番目のスペースとして1ピクセル、2番目のバーとして1ピクセル、2番目のスペースとして1ピクセル、3番目のバーとして1ピクセル、3番目のスペースとして1ピクセル、4番目のバーとして1ピクセル、4番目のスペースとして3ピクセルを含む。開始シンボルキャラクタ1310に対応するピクセルのグレー値(すなわち、所定のグレー値)を決定することができる。処理デバイス104は、所定のグレー値に基づいて、行ライン1320上の少なくとも1つの線分1030を識別することができる。少なくとも1つの線分1330のピクセルのグレー値は、所定のグレー値に一致することができる。処理デバイス104は、線分1320の長さを開始シンボルキャラクタの幅として指定することができる。終了シンボルキャラクタに対応する所定のコードワード列(終了コードワード列とも呼ばれる)は、711311121とすることができる。終了シンボルキャラクタの幅も同様に決定することができる。
【0116】
いくつかの実施形態では、処理デバイス104は、少なくとも1つの線分が決定されると、シンボル画像から参照シンボルキャラクタを識別することができる。各線分は、始点と終点を含み得る。2つ以上の線分の始点は、参照シンボルキャラクタの開始エッジを形成することができる。2つ以上の線分の終点は、参照シンボルキャラクタの終了エッジを形成することができる。
【0117】
具体的には、処理デバイス104は、複数の行ライン上の開始シンボルキャラクタに対応する2つ以上の線分を識別することができる。開始シンボルキャラクタに対応する2つ以上の線分の終点(開始シンボルキャラクタの終点ともいう)は、開始シンボルキャラクタの終了エッジを形成することができる。いくつかの実施形態では、ランダムサンプル一致(RANSAN)アルゴリズムを使用して、開始シンボルキャラクタに対応する2つ以上の線分の終点に基づいて開始シンボルキャラクタの終了エッジを決定することができる。いくつかの実施形態では、開始シンボルキャラクタの終了エッジは、開始シンボルキャラクタに対応する2つ以上の線分の終点に基づいて、RANSANアルゴリズムに従って線をフィッティングすることによって決定され得る。PDF417バーコードの場合、開始シンボルキャラクタがシンボル領域外にある場合がある。開始シンボルキャラクタの終了エッジは、シンボル領域の開始境界と一致する場合がある。この場合、シンボル領域の開始境界が決定され得る。
【0118】
同様に、処理デバイス104は、複数の行ライン上の終了シンボルキャラクタに対応する2つ以上の線分を識別することができる。終了シンボルキャラクタに対応する2つ以上の線分の始点(終了シンボルキャラクタの始点ともいう)は、終了シンボルキャラクタの開始エッジを形成することができる。いくつかの実施形態では、RANSANアルゴリズムを使用して、終了シンボルキャラクタに対応する2つ以上の線分の始点に基づいて、終了シンボルキャラクタの開始エッジを決定することができる。PDF417バーコードの場合、終了シンボルキャラクタがシンボル領域外にある場合がある。終了シンボルキャラクタの開始エッジは、シンボル領域の終了境界と一致する場合がある。この場合、シンボル領域の終了境界を決定することができる。複数の列境界は、シンボル領域の開始境界と終了境界との間で決定され得る。
【0119】
1220において、処理デバイス104は、参照シンボルキャラクタの幅に基づいて基準幅範囲を決定する。
【0120】
いくつかの実施形態では、基準幅範囲は、参照シンボルキャラクタの幅をインクリメント(例えば、0.2ミリメートル、0.5ミリメートル、1ミリメートル、1ピクセル、2ピクセルなど)だけ増加させること、及び/又は参照シンボルキャラクタの幅をデクリメント(例:0.2ミリメートル、0.5ミリメートル、1ミリメートル、1ピクセル、2ピクセルなど)だけ減少させることによって決定され得る。インクリメント及び/又はデクリメントは、シンボルキャラクタに対応するエラーとして定義され得る。いくつかの実施形態では、複数のシンボルキャラクタのそれぞれは、同じエラーに対応することができる。いくつかの実施形態では、複数のシンボルキャラクタのうちの少なくとも1つは、異なるエラーに対応し得る。
【0121】
参照シンボルキャラクタが開始シンボルキャラクタである場合、処理デバイス104は、開始シンボルキャラクタの幅及びシンボルキャラクタに対応する誤差に基づいて、シンボル領域内の複数のシンボルキャラクタのそれぞれについて基準幅範囲を決定することができる。参照シンボルキャラクタが終了シンボルキャラクタである場合、処理デバイス104は、終了シンボルキャラクタの幅、幅比率、及びシンボルキャラクタに対応する誤差に基づいて、シンボル領域内の複数のシンボルキャラクタのそれぞれについて基準幅範囲を決定することができる。幅比率は、シンボルキャラクタの幅の終了シンボルキャラクタの幅に対する比率であってもよい。
【0122】
図9は、本開示のいくつかの実施形態によるPDF417バーコードの部分拡大図である。部分拡大図には、2つのシンボルキャラクタM、Nが含まれている。基準幅範囲は、開始シンボルキャラクタの幅と誤差とに基づいて決定されることができる。
図9に示すように、エラーは、複数の行ラインのそれぞれについて、括弧910で示される2つのピクセルのインクリメント及び2つのピクセルのデクリメントによって表されることができる。
1230において、処理デバイス104は、隣接するシンボルキャラクタ間の境界特性と基準幅範囲とに基づいて、複数のシンボルキャラクタ間の複数の列境界を決定する。
【0123】
図9に示すように、シンボルキャラクタMとシンボルキャラクタNとの列境界S2は、隣接するシンボルキャラクタ間の列境界特性と基準幅範囲とに基づいて決定される。シンボルキャラクタMの最後のブロック920(列における4つのピクセルで表される)の色とシンボルキャラクタNの最初のブロック930(列における4つのピクセルで表される)の色は、行方向に沿って白から黒に変化する。したがって、ブロック920及び930のピクセルのグレー値は、行方向に沿って(例えば、255から0に)減少する。
【0124】
いくつかの実施形態では、複数の行ラインのうちの2つ以上について、処理デバイス104は、隣接するシンボルキャラクタ間の列境界特性及び基準幅範囲を満たすシンボル領域内の複数の行ラインのうちの少なくとも2つの行ラインの上の複数のピクセル又は点(例えば、ピクセル、2つの連続するピクセルの間にあるそれぞれの中点など)を識別し得る。RANSANアルゴリズムを使用して、複数の点に基づいて複数の列境界を決定することができる。RANSANアルゴリズムは、説明を目的として提供されており、限定することを意図しないことに留意されたい。複数のシンボルキャラクタ間の列境界を決定するために、曲線適合のための任意のアルゴリズム又はモデルを使用することができる。
【0125】
単に例示の目的で、
図8に示すように、シンボル方向に沿っている複数の行ラインL1~L8は、シンボル画像800の歪みにより湾曲する場合がある。いくつかの実施形態では、隣接するシンボルキャラクタ間の列境界特性と基準幅範囲とを満たす複数の行ラインL1~L8上の複数のピクセルは、識別されることができる。列境界S1~S5は、識別された複数のピクセル及びRANSANアルゴリズムに基づいて形成され得る。
【0126】
図14は、本開示のいくつかの実施形態による、シンボルキャラクタに対応するキャラクタ領域に関連付けられているグレー値に基づいてシンボルキャラクタを復号化するための例示的なプロセスを示すフローチャートである。いくつかの実施形態では、プロセス1400は、
図1に示す画像処理システム100上で実施されることができる。例えば、プロセス1400は、命令の形で記憶媒体(例えば、ネットワーク記憶装置113、又はコンピューティングデバイス200の記憶装置227)に記憶され、処理デバイスによって呼び出され、及び/又は実行されてもよい。以下に示すプロセス1400の操作は、例示を意図したものである。いくつかの実施形態では、プロセス1400は、説明されていない1つ以上の追加の操作で、及び/又は議論された操作の1つ以上なしで達成され得る。さらに、
図14及び以下の説明に示されるプロセス1400の操作の順序は、限定することを意図しない。いくつかの実施形態では、
図5のプロセス500の操作560は、プロセス1400に従って実行され得る。
【0127】
1410において、処理デバイス104は、行方向に沿って、シンボルキャラクタに対応するキャラクタ領域を複数のブロックに分割する。
【0128】
いくつかの実施形態では、処理デバイス104は、行方向に沿って、シンボルキャラクタに対応するキャラクタ領域を予め設定された数又はカウントのブロックに均一に分割することができる。PDF417バーコードの場合、予め設定された数又はカウントが17であってもよい。
【0129】
1420において、処理デバイス104は、複数のブロックのそれぞれのグローバルグレー値を決定する。
【0130】
複数のブロックのそれぞれは、1つ以上のピクセルを含み得る。単なる例として、ブロックは、1×4ピクセル(すなわち、行に1ピクセル、列に4ピクセル)、1×3ピクセル(すなわち、行に1ピクセル、列に3ピクセル)、2×7ピクセル(すなわち、行に2ピクセル、列に7ピクセル)などによって表されることができる。ブロックのこの1つ以上のピクセルのグレー値を取得することができる。ブロックのグローバルグレー値は、ブロックのこの1つ以上のピクセルのグレー値の全体的な表現であり得る。一部の実施形態では、ブロックのグローバルグレー値は、ブロックのこの1つ以上のピクセルのグレー値の平均値であってもよい。平均値は、例えば、算術平均値、調和平均値、二次平均値などであってもよい。いくつかの実施形態では、ブロックの特定のピクセルのグレー値が、そのブロックのグローバルグレー値として決定されてもよい。いくつかの実施形態では、データイメージングシステム100のデフォルト設定などに従って、特定のピクセルをユーザーが指定することができる。いくつかの実施形態では、特定のピクセルを1つ以上のピクセルからランダムに選択することができる。
【0131】
1430において、処理デバイス104は、複数のブロックのグローバルグレー値に基づいて、シンボルキャラクタのコントラスト値を決定する。
【0132】
いくつかの実施形態では、処理デバイス104は、キャラクタ領域内の複数のブロックから第1タイプのブロック及び第2タイプのブロックを識別することができる。いくつかの実施形態では、第1タイプのブロックは、シンボルキャラクタのスペースに属するブロックを指し、第2タイプのブロックは、シンボルキャラクタのバーに属するブロックを指す。この場合、第1タイプのブロックは白色であり、第2タイプのブロックは黒色であることがある。或いは、シンボルキャラクタのバーに属するブロックを第1タイプのブロックとし、シンボルキャラクタのスペースに属するブロックを第2タイプのブロックとしてもよい。
【0133】
いくつかの実施形態では、処理デバイス104は、複数のブロックのグローバルグレー値に基づいて、キャラクタ領域内の複数のブロックから第1タイプのブロック及び第2タイプのブロックを識別し得る。第1タイプのブロックがシンボルキャラクタのスペースに属するブロックを含み、第2タイプのブロックがシンボルキャラクタのバーに属するブロックを含む場合、第1タイプのブロックはより大きなグローバルグレー値(例えば、255、240、230、220など)を有し、第2タイプのブロックはより小さなグローバルグレー値(例えば、0、10、20、30など)を有する。
【0134】
いくつかの実施形態では、シンボルキャラクタのコントラスト値は、少なくとも第1タイプのブロックのグローバルグレー値及び第2タイプのブロックのグローバルグレー値に基づいて決定され得る。例えば、処理デバイス104は、キャラクタ領域内の第1タイプのブロックのグレー値の第1タイプのブロックのカウントに対する第1比率を決定することができる。同様に、処理デバイス104は、キャラクタ領域内の第2タイプのブロックのグレー値の第2タイプのブロックのカウントに対する第2比率を決定することができる。シンボルキャラクタのコントラスト値は、第1比率と第2比率との間の差分値に基づいて決定され得る。単なる例として、シンボルキャラクタのコントラスト値は、式(1)に従って決定されることができる:
ただし、「contrast」はシンボルキャラクタのコントラスト値を表し、「spaceGraySum」はシンボルキャラクタのスペース内のブロックのグローバルグレー値の合計を表し、「spaceNum」はスペース内のブロックの数又はカウントを表し、「barGrayNum」はブロックのグローバルグレー値の合計を表し、「barNum」は、バー内のブロックの数又はカウントを表す。
【0135】
1440において、処理デバイス104は、コントラスト値に基づいて、シンボルキャラクタに対応するコードワードを決定する。
【0136】
いくつかの実施形態では、処理デバイス104は、複数の予め設定されたコードワード(例えば、2787個のコードワード)を取得することができる。複数の予め設定されたコードワードは、例えば、画像処理システム100の記憶装置デバイス(例えば、ネットワーク記憶装置113、又はコンピューティングデバイス228の記憶装置227など)又は外部デバイス(例えば、クラウドデータベース)から取得することができる。いくつかの実施形態では、複数の予め設定されたコードワードは数(例えば、自然数)であってもよい。複数のコードワードのそれぞれは、所定のコードワード列に対応し得る。複数の予め設定されたコードワードと複数の所定のコードワード列との間の対応関係は、マトリックス、ベクトル、データアレイ、テーブルなどで提供され得る。単に説明の目的で、表1には、複数の予め設定されたコードワードと複数の所定のコードワード列とが示される。
表1
【0137】
いくつかの実施形態では、複数の予め設定されたコードワードのそれぞれの基準コントラスト値を決定することができる。いくつかの実施形態では、複数の予め設定されたコードワードのそれぞれの基準コントラスト値の決定は、1430で説明されたシンボルキャラクタのコントラスト値の決定と類似又は同じであり、式(1)に従ってよいため、説明の繰り返しを省略する。
【0138】
いくつかの実施形態では、複数の予め設定されたコードワードのそれぞれとシンボルキャラクタとの間の類似値は、各コードワードの基準コントラスト値とシンボルキャラクタのコントラスト値とに基づいて決定され得る。処理デバイス104は、類似値に基づいてシンボルキャラクタに対応するコードワードを決定することができる。いくつかの実施形態では、類似値を(例えば、昇順又は降順で)ランキングすることができる。処理デバイス104は、決定された類似値から最大の類似値を識別することができる。識別された類似値に対応する予め設定されたコードワードが、シンボルキャラクタに対応するコードワードとして決定され得る。
【0139】
図15は、本開示のいくつかの実施形態による、シンボル画像内のシンボルのシンボルキャラクタを復号化するための例示的なプロセスを示すフローチャートである。いくつかの実施形態では、プロセス1500は、
図1に示される画像処理システム100上で実施されることができる。例えば、プロセス1500は、記憶媒体(例えば、ネットワーク記憶装置113、又はコンピューティングデバイス200の記憶装置227)に命令の形で記憶され、処理デバイス104によって呼び出され、及び/又は実行されてもよい。以下に示すプロセス1500の操作は、例示を意図したものである。いくつかの実施形態では、プロセス1500は、説明されていない1つ以上の追加の操作で、及び/又は議論された操作の1つ以上なしで達成され得る。さらに、
図15及び以下の説明に示されるプロセス1500の操作の順序は、限定することを意図しない。本開示をよりよく理解するために、シンボルキャラクタを復号化するためのプロセス1500を、例示的なPDF417バーコードの模式図である
図16と合わせて説明する。
【0140】
1505において、処理デバイス104は、シンボル領域において複数のシンボルキャラクタが含まれるシンボルのシンボル画像を取得する。いくつかの実施形態では、シンボル画像1600は、画像処理システム100の画像ソース101から取得されることができる。
図15に示すように、シンボル画像1600内のPDF 417バーコードは、領域EADFにおける開始シンボルキャラクタ、シンボル領域ABCD、及び終了シンボルキャラクタBGHCを含み得る。PDF417バーコードは、シンボル領域ABCDにおいて複数のシンボルキャラクタを含む。
【0141】
1510において、処理デバイス104は、シンボルの長さ方向に沿って複数の行ラインを決定する。
【0142】
いくつかの実施形態では、位置決めボックス内で複数の走査線を決定することができる。位置決めボックスを使用して、PDF417バーコードの長さ方向(例えば、
図16に示す水平方向)を決定することができる。複数の走査線のそれぞれは、PDF417バーコードの長さ方向に沿って同じ行におけるピクセルをトラバースすることができる。複数の走査線は、行ラインとして決定され得る。
図16を参照すると、複数の行ラインP1~P19が決定される。複数の行ラインP1~P19のそれぞれは、シンボル画像1600内の同じ行のピクセルをトラバースすることができる。或いは、複数の行ラインP1~P19のそれぞれは、シンボル画像1600の同じ行のピクセルをPDF417バーコードの長さ方向に沿って連結することによって決定されることができる。
【0143】
1515において、処理デバイス104は、シンボル領域の開始境界及び終了境界を決定する。
【0144】
いくつかの実施形態では、処理デバイス104は、開始シンボルキャラクタ及び/又は終了シンボルキャラクタのバー及びスペースの配置及び/又は幅を決定することができる。処理デバイス104はさらに、開始シンボルキャラクタ及び/又は終了シンボルキャラクタのバー及びスペースに対応するピクセルの少なくとも一部のグレー値(開始シンボルキャラクタ及び/又は終了シンボルキャラクタに対応する所定のグレー値とも呼ばれる)を決定することができる。開始シンボルキャラクタ及び/又は終了シンボルキャラクタに対応する所定のグレー値は、複数の行ラインのうちの少なくとも1つの行ラインの上のピクセルのグレー値と比較され得る。この比較に基づいて、処理デバイス104は、開始シンボルキャラクタ及び/又は終了シンボルキャラクタに対応する複数の行ラインのうちの少なくとも1つの行ラインの上の少なくとも1つの線分を識別し得る。
【0145】
いくつかの実施形態では、処理デバイス104は、複数の行ライン上の開始シンボルキャラクタに対応する2つ以上の線分を識別することができる。2つ以上の線分のそれぞれは、始点と終点を含む。
図16を参照すると、PDF417バーコードの開始シンボルキャラクタの始点は、線分EFと複数の行ラインP1~P19との間の交点である。PDF417バーコードの開始シンボルキャラクタの終点は、線分ADと複数の行ラインP1~P19との間の交点である。
【0146】
開始シンボルキャラクタに対応する2つ以上の線分の始点は、開始シンボルキャラクタの開始エッジを形成することができる。開始シンボルキャラクタに対応する2つ以上の線分の終点は、開始シンボルキャラクタの終了エッジを形成することができる。いくつかの実施形態では、ランダムサンプル一致(RANSAN)アルゴリズムを使用して、開始シンボルキャラクタに対応する2つ以上の線分の終点に基づいて開始シンボルキャラクタの終了エッジを決定することができる。いくつかの実施形態では、開始シンボルキャラクタの終了エッジは、開始シンボルキャラクタに対応する2つ以上の線分の終点に基づいて、RANSANアルゴリズムに従って曲線適合によって決定され得る。PDF417バーコードの場合、開始シンボルキャラクタがシンボル領域外にある場合がある。開始シンボルキャラクタの終了エッジは、シンボル領域の開始境界と一致する場合がある。この場合、シンボル領域の開始境界が決定され得る。
図16を参照すると、シンボル領域の開始境界はA1である。
【0147】
同様に、処理デバイス104は、複数の行ライン上の終了シンボルキャラクタに対応する2つ以上の線分を識別することができる。2つ以上の線分のそれぞれは、始点と終点を含む。
図16を参照すると、PDF417バーコードの終了シンボルキャラクタの始点は、線分BCと複数の行ラインP1~P19との間の交点である。PDF417バーコードの終了シンボルキャラクタの終点は、線分GHと複数の行ラインP1~P19との間の交点である。
【0148】
終了シンボルキャラクタに対応する2つ以上の線分の始点は、終了シンボルキャラクタの開始エッジを形成することができる。終了シンボルキャラクタに対応する2つ以上の線分の終点は、終了シンボルキャラクタの終了エッジを形成することができる。いくつかの実施形態では、ランダムサンプル一致(RANSAN)アルゴリズムを使用して、終了シンボルキャラクタに対応する2つ以上の線分の始点に基づいて、終了シンボルキャラクタの開始エッジを決定することができる。いくつかの実施形態では、終了シンボルキャラクタの開始エッジは、終了シンボルキャラクタに対応する2つ以上の線分の始点に基づいて、RANSANアルゴリズムに従って曲線適合によって決定され得る。PDF417バーコードについては、終了シンボルキャラクタがシンボル領域外にある場合がある。終了シンボルキャラクタの開始エッジは、シンボル領域の終了境界と一致する場合がある。この場合、シンボル領域の終了境界を決定することができる。
図16を参照すると、シンボル領域の終了境界はA5である。
【0149】
1520において、処理デバイス104は、複数の行ラインに基づいて、シンボル領域の開始境界と終了境界との間の複数のシンボルキャラクタの中の複数の列境界を決定する。
【0150】
処理デバイス104は、開始シンボルキャラクタに対応する少なくとも1つの線分の長さを取得することができる。開始シンボルキャラクタに対応する少なくとも1つの線分の長さは、開始シンボルキャラクタの幅として指定され得る。例えば、
図16を参照すると、行ラインP1と線分BCとの交点O1と、行ラインP1と線分ADとの交点O2との間の線分は、PDF417バーコード1600の開始シンボルキャラクタに対応する線分である。線分O1O2の長さを開始シンボルキャラクタの幅として指定することができる。
【0151】
処理デバイス104は、隣接するシンボルキャラクタ間の境界特性と基準幅範囲とに基づいて、複数のシンボルキャラクタ間の複数の列境界を決定することができる。基準幅範囲は、インクリメント(例えば、2ピクセル)及びデクリメント(例えば、2ピクセル)で定義される範囲であってもよい。
【0152】
いくつかの実施形態では、複数の行ラインのうちの2つ以上の行ラインについて、処理デバイス104は、隣接するシンボルキャラクタ間の列境界特性と基準幅範囲とを満たすシンボル領域において複数の行ライン(例えば、P1~P19)のうちの少なくとも2つの行ラインの上の複数のピクセル又は点(例えば、ピクセル、2つの連続するピクセルの間のそれぞれの中点など)を識別し得る。RANSANアルゴリズムを使用して、複数の点に基づいて複数の列境界を決定することができる。単に例示の目的で、複数の列境界A2、A3、A4、及びA5を決定することができる。
【0153】
1525において、処理デバイス104は、シンボル領域の上境界及び下境界を決定する。
【0154】
複数の列境界のそれぞれについて、処理デバイス104は、複数の行ラインと列境界との複数の交点(例えば、ピクセル)を決定することができる。処理デバイス104は、上向きのトラバースを実行し、複数の交点の中から上方交点を識別することができる。列境界に沿って上方交点より上のピクセル(上ピクセルとも呼ばれる)と、上ピクセルの同じ行の行方向に沿って後続するピクセル(上ピクセルの後続ピクセルとも呼ばれる)が決定され得る。上ピクセルと上ピクセルの後続ピクセルは、列境界の異なる側に位置されることがある。
【0155】
処理デバイス104は、上方交点と上方交点の後続ピクセルと、並びに上ピクセルと上ピクセルの後続ピクセルとが列境界特性を満たすかどうか(すなわち、上ピクセルの色が白であり、上ピクセルの後続ピクセルの色が黒であり、この2つのピクセルの色が行方向に沿って白から黒に変化するかどうか)を判定することができる。上ピクセルと上ピクセルの後続ピクセルが列境界特性を満たさず、かつ、上方交点と上方交点の行方向に沿っている後続ピクセルが列境界特性を満たす(上ピクセルと上方交点とが上境界特性を満たす)場合、これは、上方交点と上方交点の後続ピクセルがシンボル領域の上境界の上にある場合があることを示す。
【0156】
図16を参照すると、列境界A2と行ラインP1との交点であるピクセルO3が上方交点として決定される。上方交点O3の行方向に沿っている後続ピクセル(上方交点の後続ピクセルともいう)は、O6である。上方交点O3と上方交点の後続ピクセルO6は列境界特性を満たし、上方交点O3の上ピクセルO4と上ピクセルの後続ピクセルO5は列境界特性を満たさない(すなわち、ピクセルO4及び上方交点O3が上境界特性を満たす)。これは、上方交点O3及び上方交点の後続ピクセルO4がシンボル領域の上境界の上にある場合があることを示す。同様に、シンボル領域の上境界の上のピクセルは、列境界A3、A4、及びA5に従って決定され得る。
【0157】
いくつかの実施形態では、RANSANアルゴリズムを使用して、複数の列境界のそれぞれに対応する上方交点及び上方交点の後続ピクセルに基づいて、シンボル領域の上境界を決定することができる。上境界は、
図16に示されるP1であり得る。
【0158】
同様に、複数の列境界のそれぞれについて、処理デバイス104は、下向きのトラバースを実行し、複数の交点の中から下方交点を識別することができる。下方交点の列境界に沿っている下のピクセル(下ピクセルとも呼ばれる)と、下ピクセルの同じ行の行方向に沿って後続するピクセル(下ピクセルの後続ピクセルとも呼ばれる)が決定され得る。下ピクセルと下ピクセルの後続ピクセルは、列境界の異なる側に位置されることがある。
【0159】
処理デバイス104は、下方交点と下方交点の後続ピクセルと、並びに下ピクセルと下ピクセルの後続ピクセルとが列境界特性を満たすかどうかを判定することができる。下ピクセルと下ピクセルの後続ピクセルが列境界の特性を満たさず、かつ、下方交点と下方交点の行方向に沿っている後続ピクセルが列境界特性を満たす(下ピクセルと下方交点とが下境界特性を満たす)場合、下方交点及び下方交点の後続ピクセルがシンボル領域の下境界の上にある場合があることを示す。
【0160】
図16を参照すると、列境界A2と行ラインP19との交点であるピクセルO7が下方交点として決定される。下方交点O7の行方向に沿って後続するピクセル(下方交点の後続ピクセルともいう)はO8である。下方交点O7と下方交点の後続ピクセルO8は列境界特性を満たし、下方交点O7の下ピクセルO9と下ピクセルの後続ピクセルO10は列境界特性を満たさない(すなわち、下ピクセルO9及び下方交点O7が下境界特性を満たす)。これは、下方交点O7及び下方交点の後続ピクセルO8がシンボル領域の下境界の上にある場合があることを示す。同様に、シンボル領域の下境界の上のピクセルは、列境界A3、A4、及びA5に従って決定され得る。
【0161】
いくつかの実施形態では、RANSANアルゴリズムを使用して、複数の列境界のそれぞれに対応する下方交点及び下方交点の後続ピクセルに基づいて、シンボル領域の下境界を決定することができる。下境界は、
図16に示されるP19あり得る。
【0162】
1530において、処理デバイス104は、シンボル領域の上境界と下境界との間の複数のシンボルキャラクタの中から複数の行境界を決定する。
【0163】
いくつかの実施形態では、複数の行境界は、隣接するシンボルキャラクタ間の境界特性に基づいて、複数の行ラインから複数の行境界を識別することによって決定され得る。いくつかの実施形態では、列方向に隣接する2つのシンボルキャラクタ間のバー及びスペースの幅が異なってもよい。したがって、列方向に隣接する2つのシンボルキャラクタ間の行境界は、行境界上のすべてのピクセルの色が、行境界の第1の隣接する行ライン上の対応するピクセルの色と同じであり、かつ、行境界上の少なくとも1つのピクセルの色が、行境界の第2の隣接する行ライン上の対応するピクセルの色と異なるという特性(行境界特性とも呼ばれる)を有し得る。いくつかの実施形態では、第1の隣接する行ラインは行境界の上にあってもよく、第2の隣接する行ラインは行境界の下にあってもよい。代替として、第1の隣接する行ラインは行境界の下にあってもよく、第2の隣接する行ラインは行境界の上にあってもよい。この場合、行境界上のすべてのピクセルのグレー値は、行境界の第1の隣接する行ライン上の対応するピクセルのグレー値と同じか、又はそれに近い場合があり、また、行境界上の少なくとも1つのピクセルのグレー値は、行境界の第2の隣接する行ライン上の対応するピクセルのグレー値とは異なる場合がある。
【0164】
図16を参照すると、行ラインP4、P7、P10、P13、P16は行境界特性を満たす。行ラインP4、P7、P10、P13、及びP16は、複数のシンボルキャラクタ間の行境界として指定され得る。
【0165】
1535において、処理デバイス104は、複数の列境界及び複数の行境界に基づいて、複数のシンボルキャラクタのそれぞれについて、シンボルキャラクタに対応するキャラクタ領域を決定する。
【0166】
図16を参照すると、シンボルキャラクタに対応する複数のキャラクタ領域は、行境界P4、P7、P10、P13、P16と列境界A2、A3、A4とに基づいて決定される。
【0167】
1540において、処理デバイス104は、シンボルキャラクタに対応するキャラクタ領域に関連付けられているグレー値に基づいて、各シンボルキャラクタを復号化する。いくつかの実施形態では、各シンボルキャラクタを復号化するための操作は、
図14に示されるプロセス1400の操作1410から1440と同様又は同じであり得るため、ここでは説明の繰り返しを省略する。
【0168】
このように基本的な概念を説明したが、この詳細な開示を読んだ後、当業者には、前述の詳細な開示が単なる例として提示されることを意図しており、限定するものではないことが明らかになるであろう。本明細書では明確にしていないが、様々な変更、改良、及び修正が可能であり、当業者に意図されている。これらの変更、改良、及び修正は、本開示によって示唆されることを意図しており、本開示の例示的な実施形態の精神及び範囲内にある。
【0169】
さらに、本開示の実施形態を説明するために特定の用語が使用されている。例えば、「一つの実施形態」、「一実施形態」、及び「いくつかの実施形態」という用語は、その実施形態に関連して説明された特定の特徴、構造、又は特性が、本開示の少なくとも一つの実施形態に含まれることを意味する。したがって、本明細書の様々な部分における「一つの実施形態」又は「一実施形態」又は「代替的な実施形態」への複数の言及は、必ずしもすべてが同じ実施形態を指すとは限らないことが強調され、理解されるべきである。さらに、特定の特徴、構造、又は特性を、本開示の1つ以上の実施形態において適切に組み合わせることができる。
【0170】
さらに、当業者には理解されるであろうが、本開示の態様は、任意の新規かつ有用なプロセス、機械、製造、又は組成物を含む、特許可能な多くのクラス又はコンテキスト、又はその新しい有用な改善のいずれかで本明細書に例示及び説明され得る。したがって、本開示の態様は、完全にハードウェア、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又は「ユニット」、「コンポーネント」、「デバイス」、又は「システム」と一般的に呼ばれるソフトウェアとハードウェアの組み合わせで実装することができる。さらに、本開示の態様は、コンピューター可読プログラムコードが具現化された1つ以上のコンピューター可読媒体で具現化されたコンピュータープログラム製品の形を取ることができる。
【0171】
コンピューター可読信号媒体は、例えばベースバンドで、又は搬送波の一部として、コンピューター可読プログラムコードが組み込まれた伝播データ信号を含み得る。そのような伝搬信号は、電磁、光学など、又はそれらの任意の適切な組み合わせを含む、さまざまな形式のいずれかを取ることができる。コンピューター可読信号媒体は、コンピューター可読記憶媒体ではなく、命令実行システム、装置、又はデバイスによって、又はこれらに関連して使用するためのプログラムを通信、伝達、又は転送することができる任意のコンピューター可読媒体であり得る。コンピューター可読信号媒体に具現化されたプログラムコードは、無線、有線、光ファイバーケーブル、RFなど、又はこれらの任意の適切な組み合わせを含む任意の適切な媒体を使用して送信され得る。
【0172】
本開示の態様の操作を実行するためのコンピュータープログラムコードは、Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Pythonなど、「C」プログラミング言語などの従来の手続き型プログラミング言語、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP、Python、Ruby、Groovyなどの動的プログラミング言語、又はその他のプログラミング言語で書き出すことができる。プログラムコードは、完全にユーザーのコンピューター上で、部分的にユーザーのコンピューター上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザーのコンピューター上で部分的にリモートコンピューター上で、又は完全にリモートコンピューター又はサーバー上で実行することができる。後者のシナリオでは、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)など、任意のタイプのネットワークを介してリモートコンピューターをユーザーのコンピューターに接続するか、外部コンピューターに接続することができ(例えば、インターネットサービスプロバイダーを使用してインターネット経由で)、又はクラウドコンピューティング環境で、又はサービスとしてのソフトウェア(SaaS)などのサービスとして提供されることもできる。
【0173】
さらに、処理要素又はシーケンスの列挙された順序、又は数値、文字、又はその他の指定の使用は、請求項で指定される場合を除き、請求されたプロセス及び方法をいずれの順序に限定することを意図しない。上記の開示は、開示の様々な有用な実施形態であると現在考えられるものを様々な例を通して論じるが、そのような詳細は、単に例示の目的であり、添付の特許請求の範囲は開示された実施形態に限定されないことを理解されたい。しかし、逆に、そのような詳細は、開示された実施形態の精神及び範囲内にある変更及び同等の構成を包含することに留意されたい。例えば、上述の様々な構成要素の実装はハードウェアデバイスで実施することもできるし、ソフトウェアのみのソリューション(例えば、既存のサーバー又はモバイルデバイスへのインストールなど)として実装することもできる。
【0174】
同様に、本開示の実施形態の前述の説明において、様々な特徴が、様々な実施形態の理解を助ける開示を簡素化する目的で、単一の実施形態、図面、又はその説明にグループ化されることがあることが理解されるべきである。ただし、この開示の方式は、請求された主題が各請求項で明示的に列挙されているよりも多くの機能を必要とするという意図を反映していると解釈されるべきではない。むしろ、請求項の主題は、前述の開示された単一の実施形態のすべての特徴よりも少ない特徴に係る。