JP5393428B2 - コード検出及び復号化システム - Google Patents
コード検出及び復号化システム Download PDFInfo
- Publication number
- JP5393428B2 JP5393428B2 JP2009285726A JP2009285726A JP5393428B2 JP 5393428 B2 JP5393428 B2 JP 5393428B2 JP 2009285726 A JP2009285726 A JP 2009285726A JP 2009285726 A JP2009285726 A JP 2009285726A JP 5393428 B2 JP5393428 B2 JP 5393428B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- finder
- detected
- angle
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1452—Methods for optical code recognition including a method step for retrieval of the optical code detecting bar code edges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1456—Methods for optical code recognition including a method step for retrieval of the optical code determining the orientation of the optical code with respect to the reader and correcting therefore
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Description
(a)前記検出されたファインダパターンの特性に基づいてパターンマッチングテンプレートを形成するステップと、
(b)前記QRコードの中の前記検出されたファインダパターンの相対位置に少なくとも基づかれる候補領域であり、前記検出されたファインダパターンに関して少なくとも1つの候補領域を決定するステップと、
(c)前記候補領域のコンテンツを前記パターンマッチングテンプレートと相関することにより前記少なくとも1つの候補領域の中の前記QRコードの先に検出されなかった第3のファインダパターンの位置を特定するステップと、
(d)前記2つの最初に検出されたファインダパターンの各々及び前記第3のファインダパターンを使用して前記QRコードを復号化するステップと、
を有することを特徴とする方法が提供される。
動作環境
図33A及び図33Bは、説明する種々の構成が実現される汎用コンピュータシステム3300の概略ブロック図を集合的に形成する。
(a)記憶位置3328から命令3331を取り出すか又は読み出す取り出し動作;
(b)制御ユニット3339が取り出された命令を判定する復号化動作;
(c)制御ユニット3339及び/又はALU3340が命令を実行する実行動作。
QRコード復号化システム
図33Aに示すように、一般にQRコード復号化に対して、少なくとも1つのQRコードが形成された文書3390がスキャナ3326により走査されるか又はカメラ3327により取り込まれ、その文書3390の取得された画像をインタフェース3313を介してコンピュータ3301に出力する。画像は、入力変数3355としてメモリ3334に格納される。QRコード復号化は、その記憶位置及び上述の記憶位置を含む他の記憶位置に格納された画像を使用して、次に説明するようにプロセッサ3305により実行される処理及びアプリケーションプログラムの制御下で進行する。
復号化フロー及び2値化
取得された画像中の1つ以上のQRコードを復号化する方法400を、図4を参照して説明する。方法400は、プロセッサ3305により実行されるようなアプリケーションプログラムの基礎を形成する。
連結成分解析(CCA)
次に、復号化処理400のステップ403で採用される連結成分解析(CCA)の処理を詳細に説明する。
(1)FPの中心の座標(FP100の黒色の連結成分101及び103の平均の中心の座標)
(2)FP100の黒色モジュールのサイズ(黒色連結成分101の線幅)
(3)FP100の白色モジュールのサイズ(白色連結成分102の線幅)
(4)FP100の回転(この角度は、90°を法とし、本質的に、使用中の座標系に対して0〜90°であるCC101及び102の辺の角度に対応する)
(5)FP100の信頼度(これは、FPの外形を理論上予想される外形100と比較することにより計算される。予想された外形に非常に類似するFPは、100%に近い信頼度を有する)
(6)FP100のバウンディングボックス(外側の黒色CC101の最も左側、最も右側、一番上及び一番下の範囲)
CCA方法403により識別されたFPをリスト414に形成する。各リストエントリには、関連付けられるメタデータの一部又は全てを補足しても良い。
一般的な分解
次に、分解処理404の詳細について図5を参照して説明する。分解処理404は初期ステップ501から開始し、検出されたFPのリストが入力される。
3/3分解
ステップ502において採用されるような候補3/3コード領域を形成する処理を、図6、図7及び図9を参照して説明する。この時点において、2つの事前定義済みパラメータが導入され、分解方法における反り及び位置ずれに対する許容差を与える。これらのパラメータは、toleranceangle及びtolerancemagnitudeで示され、双方とも0.2に設定されても良い。これらの許容差は、角度及び距離が20%だけ変動することに対応し、更にQR領域が分解され且つQRコードが検出されることを可能にする。これにより、反りがある状態における検出が可能になる一方で、偽陽性検出は制限される。許容差は、システムの所望の精度に基づいて必要に応じて変動しても良い。
潜在的な3/3領域の検出
潜在的な3/3領域のリスト606を形成する処理602を、図7を参照して説明する。
****擬似コード1****ステップ704****
if
(
(
abs(module_sizetl - module_sizetr)
/
min(module_sizetl, module_sizetr)
) <= tolerancemagnitude
and
(
abs(module_sizetl - module_sizebl)
/
min(module_sizetl, module_sizebl)
) <= tolerancemagnitude
and
(
abs(module_sizebl - module_sizetr)
/
min(module_sizebl, module_sizetr)
) <= tolerancemagnitude
):
check passed
else:
check failed
次のステップ705において、3つのFPの角度方向がほぼ同一であるかを判定するためにFPの相対的な角度がチェックされる。上述のように、FP毎に計算された回転角はp/2ラジアン(90°)を法とする。従って、FPの回転角の間の最小偏差を判定するために調整が必要である。図8Bに、FPの角度方向がほぼ同一でないために、このチェックが失敗する3つのFPの例802を示す。このチェックは、擬似コード2を実行することにより行われても良い。
****擬似コード2****ステップ705****
if
(
(
abs(angletl - angletr) <= toleranceangle x pi / 2
or
(
pi / 2 - max(angletl, angletr) + min(angletl, angletr)
) <= toleranceangle x pi / 2
)
and
(
abs(angletl - anglebl) <= toleranceangle x pi / 2
or
(
pi / 2 - max(angletl, anglebl) + min(angletl, anglebl)
) <= toleranceangle x pi / 2
)
and
(
abs(anglebl - angletr) <= toleranceangle x pi / 2
or
(
pi / 2 - max(anglebl, angletr) + min(anglebl, angletr)
) <= toleranceangle x pi / 2
)
):
check passed
else:
check failed
尚、「pi」は数学的定数pを示す。
****擬似コード3****ステップ706−第1部****
vector_xtl-tr = xtl - xtr
vector_ytl-tr = ytl - ytr
vector_magtl-tr = sqrt(vector_xtl-tr 2 + vector_ytl-tr 2)
vector_xtl-bl = xtl - xbl
vector_ytl-bl = ytl - ybl
vector_magtl-bl = sqrt(vector_xtl-bl 2 + vector_ytl-bl 2)
min_vector_mag = min(vector_magtl-bl, vector_xtl-bl)
max_vector_mag = max(vector_magtl-bl, vector_xtl-bl)
if max_vector_mag <= (min_vector_mag x (1 + tolerancemagnitude)):
check passed
else:
check failed
左上のFPと右上のFPとの間のベクトルの長さ及び左上のFPと左下のFPとの間のベクトルの長さがほぼ同一であることが確認されると、次のステップでは、FPのモジュールサイズを仮定して、それらのベクトルの長さが適切であることがチェックされる。本質的には、これは、ベクトルの長さがバージョン1(最小)〜40(最大)のQRコードに対して予想される長さ以下であることをチェックする。このチェックは、擬似コード4で実現可能である。
****擬似コード4****ステップ706−第2部****
module_size_average =
(module_sizetl + module_sizetr + module_sizebl)
/
3
if
(
(
vector_magtl-tr x (1 + tolerancemagnitude)
<
14 x module_size_average
)
or
(
vector_magtl-tr x (1 - tolerancemagnitude)
>
170 x module_size_average
)
or
(
vector_magtl-bl x (1 + tolerancemagnitude)
<
14 x module_size_average
)
or
(
vector_magtl-bl x (1 - tolerancemagnitude)
>
170 x module_size_average
)
):
check failed
else:
check passed
検出されたFPの正確な構成に対するチェックは、FPのほぼ直交する構成に対するチェック及びQRコード領域の右上の位置及び左下の位置に対する検出されたFPの仮定された割り当てが正確であることのチェックを含む。これらのチェックは、擬似コード5を実行することにより行われても良い。
****擬似コード5****ステップ706−第3部****
dot_product =
(vector_xtl-tr x vector_xtl-bl)
+
(vector_ytl-tr x vector_ytl-bl)
cross_product_k =
(vector_xtl-tr x vector_ytl-bl)
+
(vector_ytl-tr x vector_xtl-bl)
cos_theta = dot_product / (vector_magtl-tr x vector_magtl-bl)
if cos_theta <= toleranceangle and cross_product_k > 0:
check passed
else:
check failed
次のステップ707において、領域の回転がFPの角度にマッチングするかを判定するためのチェックが実行される。候補領域の回転角は、左上のFPと右上のFPとの間のベクトルの角度として規定される。図8Cに、FPの角度方向が領域の向きとマッチングしないためにこのチェックが失敗する3つのFPの例803を示す。このチェックは、擬似コード6を実行することにより行われても良い。
****擬似コード6*****ステップ707****
vector_angletl-tr = arctan2(vector_ytl-tr, vector_xtl-tr)
if vector_angletl-tr < 0:
vector_angletl-tr = vector_angletl-tr + (2 x pi)
vector_angletl-tr = ((4 x vector_angletl-tr)mod(2 x pi) / 4)
if
(
(
abs(angletl - vector_angletl-tr) <= toleranceangle x pi / 2
or
(
pi / 2
- max(angletl, vector_angletl-tr)
+ min(angletl, vector_angletl-tr)
) <= toleranceangle x pi / 2
)
and
(
abs(angletr - vector_angletl-tr) <= toleranceangle x pi / 2
or
(
pi / 2
- max(angletr, vector_angletl-tr)
+ min(angletr, vector_angletl-tr)
) <= toleranceangle x pi / 2
)
and
(
abs(anglebl - vector_angletl-tr) <= toleranceangle x pi / 2
or
(
pi / 2
- max(anglebl, vector_angletl-tr)
+ min(anglebl, vector_angletl-tr)
) <= toleranceangle x pi / 2
)
):
check passed
else:
check failed
ステップ714でテストされるように上記チェック704〜707の全てが成功する場合、FPのトリプレット712は、ステップ708において潜在的な3/3領域の出力リスト606に追記される。尚、出力される潜在的な領域の各々は、領域の3つのFPの信頼度に基づいて信頼度値と関連付けられる。この信頼度は、擬似コード7を実行することにより計算される。
****擬似コード7****
confidenceregion = (confidencetl + confidencetr + confidencebl) / 3
信頼度値は、潜在的なFPのリスト中の各FPに対するメタデータに追記される。
真の領域の検出
真の3/3領域のリストを形成する処理603を、図9を参照して説明する。有効なQRコード領域は、追加の検出されたファインダパターンを含むことができない。この要求に基づくと、領域1000の範囲1001内に追加の検出されたファインダパターンが存在しないため、図10AのQRコード領域1000は有効な領域である。図10Bに示されるQRコード領域1010は、領域範囲1011により追加の検出されたFP1012を含むため有効なQRコード領域ではない。「内部」FPの信頼度が領域の3つのFPの信頼度より非常に低い場合は例外となる。これは、いくつかの稀な例において、図10Cの1020で示されるように位置決めパターン1022がファインダパターンとして検出されるためである。この状況において、位置決めパターン1022の信頼度は、検出されたファインダパターン1023、1024及び1025の信頼度より非常に低い。
****擬似コード8****
vector_xtl-tr = xtl - xtr
vector_ytl-tr = ytl - ytr
vector_xtl-bl = xtl - xbl
vector_ytl-bl = ytl - ybl
領域の未知の隅の位置1104は、擬似コード9に示すように計算される。
****擬似コード9****
xbr = xtl + vector_xtl-bl + vector_xtl-tr
ybr = ytl + vector_ytl-bl + vector_ytl-tr
次に、領域の右下の隅1104と右上のFP1101との間のベクトル1107及び右下の隅1104と左下の隅1102との間のベクトル1108のそれぞれが計算される。これは、擬似コード10を実行することにより達成される。
****擬似コード10****
vector_xbr-tr = -vector_xtl-bl
vector_ybr-tr = -vector_ytl-bl
vector_xbr-bl = -vector_xtl-tr
vector_ybr-bl = -vector_ytl-tr
領域の左上の隅1103からチェックされる追加のファインダパターン1109までのベクトル1110及び右下の隅1104の隅1104から追加のファインダパターン1109までのベクトル1111が構成される。これは、擬似コード11により達成される。
****擬似コード11****
vector_xtl-fp = xfp - xtl
vector_ytl-fp = yfp - ytl
vector_xbr-fp = xfp - xbr
vector_ybr-fp = yfp - ybr
最後に、以下の条件を判定することにより、追加のFP1109が領域1100内に存在するかが判定される。
****擬似コード12****
vector_angletl-tr = arctan2(vector_ytl-tr, vector_xtl-tr)
if vector_angletl-tr < 0:
vector_angletl-tr = vector_angletl-tr + (2 x pi)
vector_angletl-bl = arctan2(vector_ytl-bl, vector_xtl-bl)
if vector_angletl-bl < 0:
vector_angletl-bl = vector_angletl-bl + (2 x pi)
vector_anglebr-tr = arctan2(vector_ybr-tr, vector_xbr-tr)
if vector_anglebr-tr < 0:
vector_anglebr-tr = vector_anglebr-tr + (2 x pi)
vector_anglebr-bl = arctan2(vector_ybr-bl, vector_xbr-bl)
if vector_anglebr-bl < 0:
vector_anglebr-bl = vector_anglebr-bl + (2 x pi)
vector_anglebr-fp = arctan2(vector_ybr-fp, vector_xbr-fp)
if vector_anglebr-fp < 0:
vector_anglebr-fp = vector_anglebr-fp + (2 x pi)
vector_angletl-fp = arctan2(vector_ytl-fp, vector_xtl-fp)
if vector_angletl-fp < 0:
vector_angletl-fp = vector_angletl-fp + (2 x pi)
min_vector_angletl = min(vector_angletl-tr, vector_angletl-bl)
max_vector_angletl = max(vector_angletl-tr, vector_angletl-bl)
min_vector_anglebr = min(vector_anglebr-tr, vector_anglebr-bl)
max_vector_anglebr = max(vector_anglebr-tr, vector_anglebr-bl)
if
(
max_vector_angletl - min_vector_angletl
<
(
2 x pi
-
max_vector_angletl
+
min_vector_angletl
)
):
if
(
vector_angletl-fp >= min_vector_angletl
and
vector_angletl-fp <= max_vector_angletl
):
top left check passed
else:
top left check failed
else:
if
(
vector_angletl-fp >= max_vector_angletl
or
vector_angletl-fp <= min_vector_angletl
):
top left check passed
else:
top left check failed
if
(
max_vector_anglebr - min_vector_anglebr
<
(
2 x pi
-
max_vector_anglebr
+
min_vector_anglebr
)
):
if
(
vector_anglebr-fp >= min_vector_anglebr
and
vector_anglebr-fp <= max_vector_anglebr
):
bottom right check passed
else:
bottom right check failed
else:
if
(
vector_anglebr-fp >= max_vector_anglebr
or
vector_anglebr-fp <= min_vector_anglebr
):
bottom right check passed
else:
bottom right check failed
if
(
top left check passed
and
bottom right check passed
):
check passed
else:
check failed
QRコードがそれらを取り囲む4モジュールサイズ分の静穏領域を含む必要があるということは、ステップ903の内部FPチェックの目的で潜在的な3/3コード領域を拡大するために活用される。これにより、真の3/3領域として識別される偽陽性3/3領域の数は減少する。一般に、追加のファインダパターンは、コード領域の検出されたファインダパターンの中心の約11モジュールサイズ内では発生不可能である。これは、4モジュール分の静穏ゾーン及び2つのハーフファインダパターンの幅(7モジュール)の双方を考慮に入れる。内部FPチェックに使用される潜在的な3/3領域のサイズは、領域の四隅を約11モジュールサイズ分だけ外側に移動することにより拡大される。
****擬似コード13****
if
(
confidencefp
<
(
0.75
X
min(confidencetl, confidencetr, confidencebl)
)
):
check passed
else:
check failed
図9に戻ると、潜在的な3/3領域が潜在的な領域の検出されたファインダパターンに類似する信頼度の追加の検出されたファインダパターンを含まないことがステップ903で判定された場合、次のステップ904において、潜在的な3/3領域は真の3/3領域として保存される。保存は、図33Bの変数レジスタ3360等の中間変数の1つに対して実行される。これらの保存の蓄積により、リスト608の形成が開始される。
2/3分解
候補2/3領域を形成する処理503の詳細を、図12、図13、図16及び図19を参照して説明する。3/3分解、toleranceangle及びtolerancemagnitudeの先の説明において使用された同一の2つの事前定義済み許容差パラメータを2/3領域の分解時にも使用する。双方のパラメータに対して、同一の値0.2が使用される。
ファインダパターン対の検出
次に、ファインダパターン対を見つける処理1202について、図13を参照して更に詳細に説明する。初期ステップ1301において、検出されたファインダパターンのリスト414が入力される。
****擬似コード14****ステップ1304****
if
(
(
abs(module_sizeA - module_sizeB)
/
min(module_sizeA, module_sizeB)
) <= tolerancemagnitude
):
check passed
else:
check failed
次のステップ1305において、FPの角度がチェックされ、2つのFPの角度方向がほぼ同一であるかが判定される。尚、各ファインダパターンに対する回転角はp/2ラジアンを法とする。従って、2つのファインダパターンの回転角の間の最小偏差を判定するために調整が必要である。図14Bは、このチェックを通過しない例1410を示す。ファインダパターン1411及び1412の角度が非常に異なることが分かる。このチェックは、擬似コード15を実行することにより行われても良い。
****擬似コード15****ステップ1305****
if
(
(
abs(angleA - angleB) <= toleranceangle x pi / 2
or
(
(pi / 2) - max(angleA, angleB) + min(angleA, angleB)
<=
toleranceangle x pi / 2
)
)
):
check passed
else:
check failed
尚、「pi」は数学的定数pを示す。
****擬似コード16****
vector_xA-B = xB - xA
vector_yA-B = yB - yA
vector_magA-B = sqrt(vector_xA-B 2 + vector_yA-B 2)
vector_angleA-B = arctan2(vector_yA-B, vector_xA-B)
if vector_angleA-B < 0:
vector_angleA-B = vector_angleA-B + (2 x pi)
vector_angleA-B' = ((4 x vector_angleA-B)mod(2 x pi) / 4)
anglediffA = abs(angleA - vector_angleA-B')
anglediffA =
min
(
anglediffA,
(
pi / 2
-
max(angleA, vector_angleA-B')
+
min(angleA, vector_angleA-B')
)
)
anglediff_45A = abs(anglediffA - pi / 4)
anglediffB = abs(angleB - vector_angleA-B')
anglediffB =
min
(
anglediffB,
(
pi / 2
-
max(angleB, vector_angleA-B')
+
min(angleB, vector_angleA-B')
)
)
anglediff_45B = abs(anglediffB - pi / 4)
if
(
(
anglediffA < toleranceangle x pi / 2
and
anglediffB < toleranceangle x pi / 2
)
or
(
anglediff_45A < toleranceangle x pi / 2
and
anglediff_45B < toleranceangle x pi / 2
)
):
if
(
anglediff_45A < anglediffA
and
anglediff_45B < anglediffB
):
region_type = diagonal
else:
region_type = normal
check passed
else:
check failed
次のステップ1307において、2つのFP間のベクトルの長さがQRコードバージョン1〜40の制限内であるかを判定するためのチェックが行われ、大きさの許容差を与える。このチェックは、擬似コード17を実行することにより行われる。
****擬似コード17****
module_size_average = (module_sizeA + module_sizeB) / 2
if (region_type == normal):
if
(
(
vector_magA-B x (1 + tolerancemagnitude)
<
14 x module_size_average
)
or
(
vector_magA-B x (1 - tolerancemagnitude)
>
170 x module_size_average
)
):
check failed
else
check passed
else:
if
(
(
vector_magA-B x (1 + tolerancemagnitude)
<
1.41 x 14 x module_size_average
)
or
(
vector_magA-B x (1 - tolerancemagnitude)
>
1.41 x 170 x module_size_average
)
):
check failed
else
check passed
ステップ1310でテストされるように、上記チェック1304〜1307が成功した場合、ステップ1308において、FPの対1314はFP対の出力リスト1210に追記される。ステップ1311でテストされるように、ステップ1302で生成されたリスト1312のFP対が残っている場合、ステップ1303に戻る。残っていない場合、FP対を見つける処理1202は最後のステップ1309で終了する。
潜在的な2/3領域の検出
次に、潜在的な2/3領域を見つける処理1203について、図16を参照して更に詳細に説明する。初期ステップ1601において、先に見つけられたファインダパターン対のリスト1210が入力される。
****擬似コード18****
confidenceregion = (confidenceA + confidenceB) / 2
ステップ1607で判定されるように、未処理のファインダパターン対が更に存在する場合、ステップ1602に戻る。存在しない場合、潜在的な2/3領域を見つける処理1203は最後のステップ1605で終了する。ステップ1203の処理は、メモリ3334に格納されてもよい判定された潜在的な2/3領域のリスト1212を設定する。
****擬似コード19****
vector_mag4604 = vector_mag4603 / 1.41
vector_mag4606 = vector_mag4603 / 1.41
尚、定数1.41は、上記擬似コードにおいて2の平方根を近似する。
真の2/3領域の検出
次に、真の2/3領域を見つける処理1204について、図19を参照して更に詳細に説明する。3/3分割の説明において示したように、有効なQRコード領域は追加の検出されたファインダパターンを含むことができないが、「内部」FPの検出信頼度がコード領域の検出されたファインダパターン対よりかなり低い場合は例外である。
(1)左上のFP2003と右上のFP2001との間のベクトル2005及び左上のFP2003と左下のFP2002との間のベクトル2006
(2)右下のFP2004と右上のFP2001との間のベクトル2007及び右下のFP2004と左下のFP2002との間のベクトル2008
(3)左上のFP2003からチェックされる追加のファインダパターン2009までのベクトル2010及び右下のFP2004から追加のファインダパターン2009までのベクトル2011。
(1)左上のFP2023と右上のFP2021との間のベクトル2025及び左上のFP2023と左下のFP2022との間のベクトル2026
(2)右下のFP2024と右上のFP2021との間のベクトル2027及び右下のFP2024と左下のFP2022との間のベクトル2028
(3)左上のFP2023からチェックされる追加のファインダパターン2029までのベクトル2030及び右下のFP2024から追加のファインダパターン2029までのベクトル2031。
****擬似コード20****
if
(
confidencefp
<
(
0.75
X
min(confidenceA, confidenceB)
)
):
check passed
else:
check failed
図19に戻ると、潜在的な2/3領域が潜在的な領域の検出されたファインダパターンに類似する信頼度の追加の検出されたファインダパターンを含まないことがステップ1903で判定された場合、次のステップ1904において、潜在的な2/3領域は真の2/3領域としてメモリ3334に保存される。
復号化処理
復号化処理405について、図21を参照して説明する。復号化処理405は、3/3領域(608)及び2/3領域(1214)の各々から情報を抽出しようとする。検出されたファインダパターンは、複数の3/3領域及び2/3領域により共有されても良い。これは、ステップ404の結果、3/3領域及び2/3領域の各々における符号化データの存在がまだ未知であるためである。即ち、ステップ404で生成される領域416はQRコードとして確定されていないが、領域はQRコードを含む可能性が高い。
損失するFPの検出
テンプレート相関は、画像中の特徴を検出し且つそれらの位置を特定する周知の非常に高いロバスト性を有する方法である。本発明の状況において、QR FPを検出し且つそれらの位置を特定するのが望ましい。しかし、テンプレート相関は、いくつかの基本的な欠点を有する。第1に、本発明の状況において、テンプレート相関は、QR FPのサイズが事前に決定されることを必要とする。第2に、テンプレート相関は、QR FPの回転の向きが事前に決定されることを必要とする。これらの2つの制約は、テンプレート相関を実現する任意のQR FP検出システムの機能性を大きく制限する。印刷/走査されたQRコードの特定の例において、走査済画像にはQRコードの回転位置ずれがほぼ常に存在する。
テンプレートの形成−メタデータから
ステップ2402で採用されても良いCCA情報からパターンマッチングテンプレートを形成する1つの処理について、ステップ2402aとして図25を参照して詳細に説明する。
(1)FPの中心の座標
(2)FPの黒色モジュールのサイズ
(3)FPの白色モジュールのサイズ
(4)FPの回転
(5)FPの信頼度
(6)FPのバウンディングボックス
FPを形成する黒色及び白色モジュールのサイズは、ドットゲインの効果の指示を与える。従って、QRコード領域の3つのFPのうちの2つが検出された場合、ドットゲイン情報は第3の損失するFPの位置を特定するために使用される。2つの検出されたFPの間のモジュールサイズの平均を取得するのが有用である。これらの平均は、擬似コード21を実行することにより計算されても良い。
****擬似コード21****
average_module_sizeblack =
(module_sizeblack, fp0 + module_sizeblack, fp1) / 2
average_module_sizewhite =
(module_sizewhite, fp0 + module_sizewhite, fp1) / 2
次のステップ2503において、CCAから取得される情報は、パターンマッチングテンプレートを生成するために使用される。ステップ2503において、QR FPのテンプレート2700(図27から分かる)は、擬似コード22のように以下の黒色の幅及び白色の幅の比率に準拠してメモリ3334に形成される。ラベル「average_module_size」は、表現の便宜上「ams」と略される。
****擬似コード22****
amsblack : amswhite : 3 x amsblack : amswhite : amsblack
****擬似コード22****
average_module_sizeblack:
average_module_sizewhite:
3 x average_module_sizeblack:
average_module_sizewhite:
average_module_sizeblack
図27で分かるように、FPテンプレート2700の外側の黒色領域2701は、average_module_sizeblackの線幅2704を有する。更に白色領域2702はaverage_module_sizewhiteの幅2705を有する。最後に、内側の黒色領域2703は、average_module_sizeblackの3倍の幅2706を有する。
****擬似コード23****
if
(
abs(anglefp0 - anglefp1)
>
(
pi / 2
-
max(anglefp0, anglefp1)
+
min(anglefp0, anglefp1)
)
):
angleaverage =
(
min(anglefp0, anglefp1)
-
(
pi / 2
-
max(anglefp0, anglefp1)
)
)
/
2
if angleaverage < 0:
angleaverage = pi / 2 + angleaverage
else:
angleaverage =
(
anglefp0
+
anglefp1
)
/
2
指定された角度だけテンプレートを回転することの詳細な説明は、補間を含むアフィン変換等の種々の周知の方法が採用されてもよいため本明細書において提供しない。
テンプレートの形成−切り抜き及び平均化
図26は、ステップ2402で採用されてもよいパターンマッチングテンプレートを形成する別の方法2402bを示す。本明細書において、テンプレートは、入力画像又は2値化画像410、412から既に検出されている2つのFPを切り抜き、それらの既に検出されている2つのFPを変倍及び平均することにより作成される。
探索領域
次に、第3のファインダパターンを潜在的に含む候補探索領域を形成する処理2403について、図29A〜図30を参照して詳細に説明する。
****擬似コード24****
Dnom, normal = distance(第1の検出されたFPから第2の検出されたFP)
コード領域2900等の対角に配向されたコード領域において、公称距離Dnomは、線2906に沿うファインダパターン2901及び2902の中心の間の距離を1.41で除算したものである。これは、擬似コード25により表される。
****擬似コード25****
Dnom, diagonal =
distance(第1の検出されたFPから第2の検出されたFP)
/
1.41
尚、上記で使用される定数1.41は2の平方根を近似する。
****擬似コード26****
Dmax = (1 + tolerancemagnitude) x Dnom
点3012は、ファインダパターン3001から距離Dmin3014のところでベクトル3004に沿う点として見つけられる。距離Dminは、以下のように計算される。
****擬似コード27****
Dmax = (1 - tolerancemagnitude) x Dnom
ベクトル3003は、ベクトル3004を線3002からtoleranceangle x pi / 2 3006だけ回転させることにより見つけられる。点3007及び3008は、このベクトルに沿って距離Dmin及びDmaxのところでそれぞれ見つけられる。点3010及び3011は、線3002から異なる方向にtoleranceangle x pi / 2 3006だけ回転されたベクトル3005に沿って同様に見つけられる。
テンプレートの適用
ステップ2404において、ステップ2402で形成されたテンプレートは、テンプレート相関処理の際にステップ2403で識別された探索領域に適用される。
別の実現例
QRコード検出及び復号化に対する別の実現例は、QRコードの固有の特徴を利用し、2/3領域において損失するFPを検出する処理を助長する。
結論
CCA自体は、ファインダパターン検出に対する不完全なツールである。CCAは、高速で安価である一方、トポロジにおける損失があるファインダパターン、例えば内部の構成要素103が外部の構成要素101に連結されることが見つけられるか又は外側の構成要素と切断又は中断されているファインダパターンを検出できない。しかし、CCAをテンプレートマッチングと組み合わせ且つその組み合わせをファインダパターンが予想される領域に限定することにより、本発明者は、CCAの利点(サイズ、回転及びドットゲインに対するロバスト性)がテンプレートマッチングの利点(トポロジの損失に対するロバスト性)と組み合わされる一方でそれらの対応する欠点を回避することを見つけた。この方法により、損失するファインダパターンの位置は確実に特定され、効率的なQRコード復号化を可能にする。先の復号化は、計算に費用がかかるか又は誤差の影響を受け易かった。
目標特徴検出システム
テキスト又は図等の他のコンテンツを含んでもよい画像において目標特徴の存在を検出し且つその場所を判定するための構成が開示される。
有効な目標特徴の説明
次に、有効な目標特徴を、図1を参照して説明する。図1は、2つの異なる輝度レベルの領域を有する目標特徴100として考えられてもよいものを示す。簡潔にするために、より低い輝度の領域は黒色で示され、より高い輝度の領域は白色で示される。目標特徴100は、連続した白色領域102により全体を囲まれる連続した黒色領域103から構成され、白色領域102全体は、連続した黒色領域101内に囲まれる。しかし、本発明は、図示する構成に限定されない。最も内側の領域103は白色であってもよく、その外側の領域102は黒色であってもよいことが理解されるべきである。従って、このように黒色領域及び白色領域(即ち、より暗い領域及びより明るい領域)が交互に維持される限り、構成は有効な目標特徴である。更に有効な目標は、目標特徴100に示すような3つの交互になった黒色領域及び白色領域に限定されず、4つ以上の別個の領域から構成されても良い。例えば図34の特徴3400は有効な目標特徴であり、6つの別個の黒色領域及び白色領域(3401、3402、3403、3404、3405、3406)を含む。
目標特徴検出の説明
図1の目標特徴100は、テキスト又は図等の他のコンテンツを含む文書に埋め込まれても良い。更に文書は、複数の関心目標特徴を含んでも良い。この文書は、図35に示すデジタル画像3500を形成するために印刷及び走査されても良い。デジタル画像3500は、デジタルカメラから等、走査以外の方法で取得されても良い。印刷/走査処理は、デジタル画像3500が原稿の不完全な表現になるようにノイズ及び歪みを導入する可能性がある。従って、デジタル画像3500の目標特徴3501の表現には、ノイズ及び歪みがある可能性がある。上述した構成は、目標特徴3501がノイズ及び歪みに影響を受けた場合でもデジタル画像3500において目標特徴を検出し且つそれらの位置を特定する。
閾値処理の説明
画像の2値化ステップ3602を実行する種々の方法が存在する。例示的な一実現例において、2値化画像3700がデジタル画像300から作成されるステップ3602は、適応方法を使用して実行され、その詳細については図38を参照して次に説明する。説明した2値化ステップ3602は、画像をモザイク状の画素のタイルに分割し、タイルの近傍の画素毎に適切な閾値を計算する。最小輝度値mintile及び最大輝度値maxtileがタイル毎に格納される。一例として、デジタル画像3500は、幅が32画素及び高さが32画素のタイルに分割される。図39は、デジタル画像3500がタイル3901に分割される方法を示す。本明細書で説明する2値化ステップ3602は、プロセッサ3305によりソフトウェアで実現されてもよく、或いはASIC等のコンピュータ3301の一部として形成されるハードウェア論理を使用し且つプロセッサ3305の制御下で動作することにより実現されてもよいロバスト性を有する効率的なアルゴリズムである。ここでも、入力画像から2レベル画像を生成する任意の2値化方法がこのステップにおいて使用されてもよいことが理解されるべきである。
ytile = floor((ypixel - heightforward)/heighttile)
更新されるタイルは、xtile及びytileにより一意に識別され、タイルバッファ4000の対応するタイルメモリ4001はアクセスされる。
スライディングウィンドウ4100の一番下の範囲に対応するタイルのy指標ytileは、以下のように計算されても良い。
スライディングウィンドウの最も左側の範囲に対応するタイルのx指標xindexは、以下のように計算されても良い。
スライディングウィンドウ4100の最も右側の範囲に対応するタイルのx指標xindexは、プロセッサ3305により以下のように計算されても良い。
対象画素の対応するスライディングウィンドウ4100が取得されると、対象画素の閾値は、スライディングウィンドウ4100内の各タイル4101の最小輝度値mintile及び最大輝度値maxtileから計算されても良い。
更にタイル重みweightthrは、タイル4101毎に以下の式から計算される。
従って、対象画素に対する適切な閾値thrfinalは以下の式から見つけられる。
連結成分解析(CCA)の説明
ステップ3603は、ステップ3602で作成された2値化画像に対して連結成分解析(CCA)を実行する。本明細書において説明されるCCAの方法は、所定の目標特徴を検出するように特に構成される効率的なアルゴリズムである。説明するCCA方法は、2値化画像3700で見つけられる黒色連結成分(CC)のグループを出力する。特徴100等の目標特徴が検出される場合、CCAはCCの対を出力する。CCの対において、一方のCCは他方のCC内に完全に含まれ且つ他方のCCと区別される。目標特徴3400が使用される場合、CCAはCCのトリプレットを出力する。CCのトリプレットにおいて、1つのCCは第2のCC内に完全に含まれ且つ第2のCCと区別され、第2のCCは第3のCC内に完全に含まれ且つ第3のCCと区別される。更に本明細書で説明するCCA方法は、各CCと関連付けられる低レベル計測値を収集する。簡潔にするために、目標特徴100を検出する方法について説明するが、そのような方法は上述したように全ての有効な目標特徴を検出するために容易に拡張できる。
−CCの最も左側の範囲xcc_left
−CCの最も右側の範囲xcc_right
−CCの一番上の範囲ycc_top
−CCの一番下の範囲ycc_bottom
−CCの大きさmasscc
−CCの穴部の大きさmasscc_hole
−CCの傾斜の正弦成分sincc
−CCの傾斜の余弦成分coscc
−CCの傾斜の累積重みweightcc。
****擬似コード28****
if xstart_run < xcc_left:
xcc_left = xstart_run
if xend_run > xcc_right:
xcc_right = xend_run
ycc_bottom = yscanline
masscc = masscc + (xend_run - xstart_run + 1)
CCの穴部の大きさは、CCにより囲まれる白画素数の近似値である。CCが現在更新されているクレーム(例えば、現在の走査線上の最も左側の範囲xstart_runを有するclaimcurrent)の左側にクレーム(例えば、現在の走査線上の最も右側の範囲xclaim_left_endを有するclaimleft)を有する場合、CCの穴部の大きさは単純に以下の擬似コードにより更新される。
****擬似コード29****
masscc_hole = masscc_hole + (xstart_run - xclaim_left_end - 1)
所定の画素位置におけるCCの傾斜は、取得されるか又は例えばプロセッサ3305により実行されるソフトウェアで実現されるソーベルフィルタ等の周知の方法を使用して判定される。ソーベルフィルタは、対象画素の近傍の1画素内の画素輝度を検査し、画素位置における傾斜を近似する。水平方向の傾斜gradienthorz、垂直方向の傾斜gradientvert及び傾斜ベクトルの大きさgradientmagnitudeは、ソーベルフィルタを使用して従来技術において周知の式により計算されても良い。
****擬似コード30****
theta_first_quadrant =
(4 x arctan(gradientvert / gradienthoriz))mod(2 x pi)
sincc = sincc + (sin(theta_first_quadrant) x gradientmagnitude)
coscc = coscc + (cos(theta_first_quadrant) x gradientmagnitude)
weightcc = weightcc + gradientmagnitude
ステップ4504において、ランが2つ以上のクレームと重なり合う場合、CC及びクレームはマージされる。実質上、低レベルCC計測値は全てのCCから集約され、重なり合うクレームは見つけられたランの範囲とマッチングする単一のクレームで置換される。
形状計測値の評価の説明
図36のステップ3603の出力は、潜在的に目標特徴100であっても良い候補特徴のリストである。ステップ3603により出力される各候補特徴は、上述のように収集及び更新される対応する低レベル計測値を有する。ステップ3604において、低レベル計測値は高レベル形状計測値を計算するために使用される。形状計測値は、候補特徴の幾何的配置に密接に関連付けられる。
xchild = xchild_cc_left + (xchild_cc_right - xchild_cc_left + 1) / 2
ychild = ychild_cc_top + (ychild_cc_bottom - ychild_cc_top + 1) / 2
xparent = xparent_cc_left + (xparent_cc_right - xparent_cc_left + 1) / 2
yparent = yparent_cc_top + (yparent_cc_bottom - yparent_cc_top + 1) / 2
候補特徴のx及びyの場所であるxcandidate_feature及びycandidate_featureは、以下の式を評価してプロセッサ3305により判定されても良い。
ycandidate_feature = (ychild_centre + yparent_centre) / 2
目標特徴のモジュールサイズ(画素数)は、外側の黒色領域101の線幅と同等であり、これは囲まれた白色領域102の幅と同等であるべきである。従って、後処理の目的で検出された候補特徴のモジュールサイズを判定するのが望ましい。しかし、ある程度歪みのある画像において、黒色領域及び白色領域のモジュールサイズは等しくないため、平均モジュールサイズはプロセッサ3305により黒色領域及び白色領域から計算される。
module_size_white = sqrt((hole_massparent - masschild)/16)
module_size = (module_size_black + module_size_white)/2
尚、「sqrt」は平方根関数を示す。
子CCの高さ4704であるheightchildは、以下の式により判定される。
子CCの平均の辺の長さaverage_sidechildは、以下の式により判定される。
親CCの幅4705であるwidthparentは、以下の式を使用してプロセッサ3305により判定される。
親CCの高さ1506であるheightparentは、以下の式を実行してプロセッサ3305により判定される。
親CCの平均の辺の長さaverage_sideparentは、以下の式により判定される。
更に、候補特徴4700の回転角1507であるanglecandidate_featureは、以下の擬似コードの例示的なコードを実行してプロセッサ3305により判定されても良い。
****擬似コード31****
sin anglecandidate_feature = sin anglechild_cc + sin angleparent_cc
cos anglecandidate_feature = cos anglechild_cc + cos angleparent_cc
weightcandidate_feature = weightchild_cc + weightparent_cc
averaged_sin anglecandidate_feature =
sin anglecandidate_feature
/
weightcandidate_feature
averaged_cos anglecandidate_feature =
cos anglecandidate_feature
/
weightcandidate_feature
anglecandidate_feature =
(
arctan
(
averaged_sin anglecandidate_feature
/
averaged_cos anglecandidate_feature
)
/
4
)
if anglecandidate_feature < 0:
anglecandidate_feature = anglecandidate_feature + (pi / 2)
尚、「arctan」は逆正接関数を示し、「pi」は数学的定数pを示す。
side_ratioparent = widthparent / heightparent
候補特徴の幅及び高さの比であるwidth_raio及びheight_ratioは、以下の式により判定されても良い。
height_ratio = heightchild / heightparent
候補特徴の平均の辺長比であるside_ratioは、以下の式により判定されても良い。
候補特徴の大きさの比であるmass_raioは、以下の式を評価してプロセッサ3305により判定されても良い。
子CC及び親CCの閉じた大きさであるclosed_masschild及びclosed_massparentは、以下の式により判定されても良い。
closed_massparent = massparent + hole_massparent
子CC及び親CCの剛率であるsoliditychild及びsolidityparentは、以下の式により判定されても良い。
solidityparent = massparent / closed_massparent
候補特徴の同心性は、以下の擬似コードの例示的なコードを実行してプロセッサ3305により判定されても良い。
****擬似コード32****
xchild_centre = (xchild_cc_right + xchild_cc_left) / 2
ychild_centre = (ychild_cc_bottom + ychild_cc_top) / 2
xparent_centre = (xparent_cc_right + xparent_cc_left) / 2
yparent_centre = (yparent_cc_bottom + yparent_cc_top) / 2
x_distbetween_centres = xchild_centre - xparent_centre
y_distbetween_centres = ychild_centre - yparent_centre
concentricity = sqrt(x_distbetween_centres 2 + y_distbetween_centres 2)
尚、「sqrt」は平方根関数を示し、上付き文字の数字「2」は2乗を示す。
rectilinearitychild = sqrt(sin2 anglechild_cc + cos2 anglechild_cc) / weightchild_cc
候補特徴の平均の直線性であるrectilinearitycandidate_featureは、以下の式を表すコードを実行してプロセッサ3305により判定されても良い。
sqrt(sin2 anglecandidate_feature + cos2 anglecandidate_feature)
/
weightcandidate_feature
子CCの「バウンディングボックス」剛率は、子CCのバウンディングボックスのサイズが周知の大きさを有する回転された子CCの好適なバウンディングボックスとどの程度マッチングするかの尺度である。実際には、子CCの大きさ及び候補特徴の回転角は、予想されるバウンディングボックスのサイズを計算するために使用される。この予想されるサイズは、実際のバウンディングボックスのサイズと比較され、「バウンディングボックス」剛率計測値を与える。子CCのバウンディングボックス剛率であるbounding_box_soliditychildを計算する方法は、以下の擬似コードにより表される。
****擬似コード33****
expected_BB_side_length = (widthchild + heightchild) / 2
sin_theta_plus_45 = sin(anglecandidate_feature + (pi / 4))
expected_CC_side_length =
expected_BB_side_length
/
(sqrt(2.0) x sin_theta_plus_45)
expected_CC_mass = expected_CC_side_length2
bounding_box_soliditychild = masschild / expected_CC_mass
同様の「バウンディングボックス」剛率計測値がclosed_massparentを使用して親CCに対して計算されることは、当業者には認識されるだろう。
QRコード復号化における目標特徴検出
目標特徴検出の第1の実現例において、目標特徴を検出する処理3600が適用され、図48の4800として示すQRコードを検出及び復号化する。QRコード4800は、最初に3つの「ファインダパターン」4801、4802及び4803の各々の場所を取得することにより復号化される。
┌─────────────┬───┬───┬─────────┐
│計測値 │最小値│理想値│最大値 │
├─────────────┼───┼───┼─────────┤
│mass_ratio │ 0 │0.375 │0.75 │
├─────────────┼───┼───┼─────────┤
│width_ratio │ 0 │0.43 │1.0 │
├─────────────┼───┼───┼─────────┤
│height_ratio │ 0 │0.43 │1.0 │
├─────────────┼───┼───┼─────────┤
│concentricity │ 0 │0 │concentricity_max │
├─────────────┼───┼───┼─────────┤
│side_ratiochild │ 0.5 │1.0 │2.0 │
├─────────────┼───┼───┼─────────┤
│side_ratioparent │ 0.5 │1.0 │2.0 │
├─────────────┼───┼───┼─────────┤
│soliditychild │ 0 │1.0 │1.0 │
├─────────────┼───┼───┼─────────┤
│bounding_box_soliditychild│ 0 │1.0 │2.0 │
├─────────────┼───┼───┼─────────┤
│solidityparent │ 0 │0.49 │1.0 │
└─────────────┴───┴───┴─────────┘
直線性等の上記表に一覧表示されていない計測値は正規化されない。
****擬似コード34****
max_dist_x = widthchild / 2
max_dist_y = heightchild / 2
max_concentricity = sqrt(max_dist_x2 + max_dist_y2)
正規化された形状計測値は、以下の擬似コードに従って各形状計測値から生成される。
****擬似コード35****
if metric < metric_ideal:
normalized_metric =
(metric - metric_mininum)
/
(metric_ideal - metric_minimum)
else:
normalized_metric =
1
-
(
(metric - metric_ideal)
/
(metric_maximum - metric_ideal)
)
ステップ4605において、正規化された形状計測値は、数学的に組み合わされ(乗算及び加算により)、単一の類似性スコアを生成する。以下の擬似コードは、形状計測値を組み合わせる処理を表す。
****擬似コード36****
rectilinearity_parent_combined =
norm_solidityparent x rectilinearityparent
side_ratios_combined =
norm_side_ratiochild x norm_side_ratioparent
weighted_metrics =
(mass_ratio_weight x norm_mass_ratio)
+
(width_ratio_weight x norm_width_ratio)
+
(height_ratio_weight x norm_height_ratio)
+
(concentricity_weight x norm_concentricity)
+
(
rectilinearity_parent_combined_weight
x
rectilinearity_parent_combined
)
+
(
side_ratios_combined_weight
x
side_ratios_combined
)
similarity_score =
weighted_metrics
x
soliditychild
x
norm_bounding_box_soliditychild
尚、正規化された計測値は、「norm」を頭に付けられており、例示的な一実現例においては、重みが以下の表において規定される。
┌───────────────────┬────┐
│ 重み │ 値 │
├───────────────────┼────┤
│mass_ratio_weight │0.2978 │
├───────────────────┼────┤
│width_ratio_weight │0.2256 │
├───────────────────┼────┤
│height_ratio_weight │0.1799 │
├───────────────────┼────┤
│concentricity_weight │0.0887 │
├───────────────────┼────┤
│rectilinearity_parent_combined_weight │0.0599 │
├───────────────────┼────┤
│side_ratios_combined_weight │0.1481 │
└───────────────────┴────┘
上記で規定された重みは、大きなデータセットの統計分析により取得された。データセットは、ポジティブセットとして周知の実際の目標特徴を含む画像及びネガティブセットとして周知の目標特徴に類似する特徴を含む画像を含む。上記重み(類似性スコアを生成するために適用される場合)は、ポジティブテストセットとネガティブテストセットとの間の類似性スコア平均値の有用な分離を提供する。
****擬似コード37****
if
(
(
abs(module_sizetl - module_sizetr)
/
min(module_sizetl, module_sizetr)
) <= tolerancemagnitude
and
(
abs(module_sizetl - module_sizebl)
/
min(module_sizetl, module_sizebl)
) <= tolerancemagnitude
and
(
abs(module_sizebl - module_sizetr)
/
min(module_sizebl, module_sizetr)
) <= tolerancemagnitude
):
check passed
else:
check failed
次のステップ5004において、正方形のQRコードに準拠して、候補特徴の間の距離が等しいかを判定するためのチェックが行われる。このチェックは、以下の擬似コードを実行することにより行われても良い。
****擬似コード38****
vector_xtl-tr = xtl - xtr
vector_ytl-tr = ytl - ytr
vector_magtl-tr = sqrt(vector_xtl-tr 2 + vector_ytl-tr 2)
vector_xtl-bl = xtl - xbl
vector_ytl-bl = ytl - ybl
vector_magtl-bl = sqrt(vector_xtl-bl 2 + vector_ytl-bl 2)
min_vector_mag = min(vector_magtl-bl, vector_xtl-bl)
max_vector_mag = max(vector_magtl-bl, vector_xtl-bl)
if max_vector_mag <= (min_vector_mag x (1 + tolerancemagnitude):
check passed
else:
check failed
次のステップ5005において、左上の候補特徴から他の2つの候補特徴にわたるベクトルが適切に直交するかを判定するためのチェックが行われる。候補領域中の右上の位置及び左下の位置への候補特徴の仮定される割り当てが正確であるかを判定するための更なるチェックが行われる。これらのチェックは、以下の擬似コードを実行することにより行われても良い。
****擬似コード39****
dot_product =
(vector_xtl-tr x vector_xtl-bl)
+
(vector_ytl-tr x vector_ytl-bl)
cross_product_k =
(vector_xtl-tr x vector_ytl-bl)
+
(vector_ytl-tr x vector_xtl-bl)
cos_theta = dot_product / (vector_magtl-tr x vector_magtl-bl)
if cos_theta <= toleranceangle and cross_product_k > 0:
check passed
else:
check failed
次のステップ5006において、候補特徴の回転角が同様であるかを判定するためのチェックが行われる。
****擬似コード40****
if
(
(
abs(angletl - angletr) <= toleranceangle x pi / 2
or
(
pi / 2 - max(angletl, angletr) + min(angletl, angletr)
) <= toleranceangle x pi / 2
)
and
(
abs(angletl - anglebl) <= toleranceangle x pi / 2
or
(
pi / 2 - max(angletl, anglebl) + min(angletl, anglebl)
) <= toleranceangle x pi / 2
)
and
(
abs(anglebl - angletr) <= toleranceangle x pi / 2
or
(
pi / 2 - max(anglebl, angletr) + min(anglebl, angletr)
) <= toleranceangle x pi / 2
)
):
check passed
else:
check failed
次のステップ5006において、候補特徴の回転角が候補領域の回転と同様であるかを判定するためのチェックが行われる。候補領域の回転角は、左上の候補特徴と右上の候補特徴との間のベクトルの角度として規定される。このチェックは、以下の擬似コードを実行することにより行われても良い。
****擬似コード41****
vector_angletl-tr = arctan2(vector_ytl-tr, vector_ytl-tr)
if vector_angletl-tr < 0:
vector_angletl-tr = vector_angletl-tr + (2 x pi)
vector_angletl-tr = pi/2 - ((4 x vector_angletl-tr)mod(2 x pi) / 4)
if
(
(
abs(angletl - vector_angletl-tr) <= toleranceangle x pi / 2
or
(
pi / 2
- max(angletl, vector_angletl-tr)
+ min(angletl, vector_angletl-tr)
) <= toleranceangle x pi / 2
)
and
(
abs(angletr - vector_angletl-tr) <= toleranceangle x pi / 2
or
(
pi / 2
- max(angletr, vector_angletl-tr)
+ min(angletr, vector_angletl-tr)
) <= toleranceangle x pi / 2
)
and
(
abs(anglebl - vector_angletl-tr) <= toleranceangle x pi / 2
or
(
pi / 2
- max(anglebl, vector_angletl-tr)
+ min(anglebl, vector_angletl-tr)
) <= toleranceangle x pi / 2
)
):
check passed
else:
check failed
尚、arctan2は、4象限逆正接関数を示す。
著作権記号検出における目標特徴検出
目標特徴検出の第2の実現例において、目標特徴を検出する処理3600が適用され、図53の著作権記号(c)5300を検出する。著作権記号5300が白色領域5302に完全に囲まれる黒色領域5301(即ち、文字「c」)を含み、白色領域5302が黒色領域5303(即ち、円)により完全に囲まれるため、著作権記号5300が有効な目標特徴であることは明らかである。
┌───────────┬───┬───┬─────────┐
│計測値 │最小値│理想値│最大値 │
├───────────┼───┼───┼─────────┤
│mass_ratio │0 │0.4336│0.8672 │
├───────────┼───┼───┼─────────┤
│width_ratio │0 │0.5 │1.0 │
├───────────┼───┼───┼─────────┤
│height_ratio │0 │0.5 │1.0 │
├───────────┼───┼───┼─────────┤
│rectilinearitychild │0 │0.1 │0.5 │
├───────────┼───┼───┼─────────┤
│rectilinearityparent │0 │0 │0.5 │
├───────────┼───┼───┼─────────┤
│concentricity │0 │0 │concentricity_max │
├───────────┼───┼───┼─────────┤
│side_ratiochild │0.5 │1.0 │2.0 │
├───────────┼───┼───┼─────────┤
│side_ratioparent │0.5 │1.0 │2.0 │
├───────────┼───┼───┼─────────┤
│solidityparent │0 │0.3095│1.0 │
└───────────┴───┴───┴─────────┘
正規化された形状計測値が数学的に組み合わされる次のステップ4605は、本実現例においては上記のステップと異なる。本実現例において、全ての正規化形状計測値は最初に所定の重みと乗算される。その後、全ての重み付き正規化形状計測値は合計され、最終的な類似性スコアを生成する。以下の表は、正規化計測値毎に重みを一覧表示する。
┌──────────────┬────┐
│ 重み │ 値 │
├──────────────┼────┤
│mass_ratio_weight │0.2893 │
├──────────────┼────┤
│width_ratio_weight │0.0797 │
├──────────────┼────┤
│height_ratio_weight │0.0975 │
├──────────────┼────┤
│rectilinearitychild _weight│0.0590 │
├──────────────┼────┤
│rectilinearityparent _weight│0.1014 │
├──────────────┼────┤
│concentricity_weight │0.0191 │
├──────────────┼────┤
│side_ratiochild _weight │0.1028 │
├──────────────┼────┤
│side_ratioparent _weight │0.1014 │
├──────────────┼────┤
│solidityparent _weight │0.2009 │
└──────────────┴────┘
本実現例における形状計測値評価処理3604の残りは、先の実現例において説明した処理と同一である。
登録商標記号検出における目標特徴検出
目標特徴検出の第3の実現例において、目標特徴を検出する処理3600が適用され、図55の登録商標記号(R)5500を検出する。登録商標記号5500が白色領域5502により完全に囲まれる黒色領域5501(即ち、文字「R」)を含み、白色領域5502が黒色領域5503により完全に囲まれるため、登録商標記号5500が有効な目標特徴であることは明らかである。
┌───────────┬───┬───┬─────────┐
│計測値 │最小値│理想値│最大値 │
├───────────┼───┼───┼─────────┤
│mass_ratio │0 │0.6261│1.2522 │
├───────────┼───┼───┼─────────┤
│width_ratio │0 │0.6 │1.0 │
├───────────┼───┼───┼─────────┤
│height_ratio │0 │0.6 │1.0 │
├───────────┼───┼───┼─────────┤
│rectilinearityparent │0 │0 │0.5 │
├───────────┼───┼───┼─────────┤
│concentricity │0 │0 │concentricity_max │
├───────────┼───┼───┼─────────┤
│side_ratiochild │0 │1.0 │2.0 │
├───────────┼───┼───┼─────────┤
│side_ratioparent │0.5 │1.0 │2.0 │
├───────────┼───┼───┼─────────┤
│solidityparent │0 │0.3095│1.0 │
└───────────┴───┴───┴─────────┘
ステップ4605において、形状計測値は、単一の類似性スコアを生成するために、重みと乗算され且つ合計される。登録商標記号を検出するために、ステップ4604で正規化される形状計測値は以下の重みと乗算される。
┌──────────────┬────┐
│ 重み │ 値 │
├──────────────┼────┤
│mass_ratio_weight │0.2396 │
├──────────────┼────┤
│width_ratio_weight │0.1407 │
├──────────────┼────┤
│height_ratio_weight │0.1292 │
├──────────────┼────┤
│rectilinearityparent _weight│0.1358 │
├──────────────┼────┤
│concentricity_weight │0.0199 │
├──────────────┼────┤
│side_ratiochild _weight │0.0948 │
├──────────────┼────┤
│side_ratioparent _weight │0.1167 │
├──────────────┼────┤
│solidityparent _weight │0.1234 │
└──────────────┴────┘
上述したように、一般に上記構成は適切にプログラムされたコンピュータシステム3300に実現される。コンピュータシステム3300において、画像は文書から走査されるか又は入力され(通信ネットワーク3320、3322を介して電子ファイルにより)、画像は著作権記号(C)又は登録商標記号(R)などの目標特徴の存在を検出するためにコンピュータシステム3300により処理される。上述の方法は、システムのコンピュータ可読記憶媒体(例えば、HDD3310)に格納され、システムのプロセッサ3305により読み出され且つ実行されて入力画像に対して動作するソフトウェアに組み込まれる。特定の実現例は、著作権で保護される作品又は登録商標を含む作品の不適切な複製を防止するようにそれらの構成を複写機に含むようにしても良い。システム3300は複写機と考えられても良く、例えばスキャナ3327及びプリンタ3315は複写機の電気機械入力及び出力を表し、コンピュータ3301は複写機のコンピュータ化制御器を表す。例えば目標特徴の候補領域が識別されると、目標特徴はプロセッサ3305を使用してHDD3310からの可能な目標特徴の格納されたアレイと比較される。比較の結果は、複写機における走査済画像の印刷により文書をコピーするか又は文書のコピーを中止するために使用される。例えば著作権記号が検出される場合、複写機は、スキャナ3326による文書の走査により行われるコピー動作を中止し、文書の著作権侵害を潜在的に回避する。目標特徴が特別なコードである場合、そのような目標特徴は、HDD3310に格納されるその特別なコードを含む複写機によってのみそのような文書のコピーを許可するために使用されても良い。このように、目標特徴の検出は、複写機機能を選択的に有効又は無効にするために使用される。
Claims (18)
- 2つの最初に検出されたファインダパターンを有するQRコードを復号化する方法を実行するためのプロセッサと前記ファインダパターンを含む画像が格納される関連メモリとを少なくとも含むコンピュータにより実現される方法であって、
(a)前記検出されたファインダパターンの特性に基づいてパターンマッチングテンプレートを形成するステップと、
(b)前記QRコードの中の前記検出されたファインダパターンの相対位置に少なくとも基づく候補領域であり、前記検出されたファインダパターンに関して少なくとも1つの候補領域を決定するステップと、
(c)前記候補領域のコンテンツを前記パターンマッチングテンプレートと相関することにより前記少なくとも1つの候補領域の中の前記QRコードの未検出の第3のファインダパターンの位置を特定するステップと、
(d)前記2つの最初に検出されたファインダパターンの各々及び前記第3のファインダパターンを使用して前記QRコードを復号化するステップと、
を有することを特徴とする方法。 - 前記2つの最初に検出されたファインダパターンは、連結成分解析を使用して検出されることを特徴とする請求項1記載の方法。
- 前記検出されたファインダパターンの前記特性は、回転角及びモジュールサイズを含むことを特徴とする請求項1記載の方法。
- 前記検出されたファインダパターンの前記特性は、黒色モジュールサイズ及び白色モジュールサイズを更に含むことを特徴とする請求項3記載の方法。
- 前記検出されたファインダパターンの前記特性は、前記検出されたファインダパターンの少なくとも一方の画素の輝度値に基づくことを特徴とする請求項1記載の方法。
- ステップ(d)は、前記第3のファインダパターンの場所及び前記2つの最初に検出されたファインダパターンの場所を使用して前記QRコードを復号化することを含むことを特徴とする請求項1記載の方法。
- 2つの最初に検出されたファインダパターンを有するQRコードを復号化するためにコンピュータ装置により実行可能なコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体であって、前記プログラムは、
前記検出されたファインダパターンの特性に基づいてパターンマッチングテンプレートを形成するコードと、
前記QRコードの中の前記検出されたファインダパターンの相対位置に少なくとも基づく候補領域であり、前記検出されたファインダパターンに関して少なくとも1つの候補領域を決定するコードと、
前記候補領域のコンテンツを前記パターンマッチングテンプレートと相関することにより前記少なくとも1つの候補領域の中の前記QRコードの未検出の第3のファインダパターンの位置を特定するコードと、
前記2つの最初に検出されたファインダパターンの各々及び前記第3のファインダパターンを使用して前記QRコードを復号化するコードと、
を含むことを特徴とするコンピュータ読み取り可能な記憶媒体。 - 前記2つの最初に検出されたファインダパターンは、連結成分解析を使用して検出されることを特徴とする請求項7記載のコンピュータ読み取り可能な記憶媒体。
- 前記検出されたファインダパターンの前記特性は、回転角及びモジュールサイズを含むことを特徴とする請求項7記載のコンピュータ読み取り可能な記憶媒体。
- 前記検出されたファインダパターンの前記特性は、黒色モジュールサイズ及び白色モジュールサイズを更に含むことを特徴とする請求項9記載のコンピュータ読み取り可能な記憶媒体。
- 前記検出されたファインダパターンの前記特性は、前記検出されたファインダパターンの少なくとも一方の画素の輝度値に基づくことを特徴とする請求項7記載のコンピュータ読み取り可能な記憶媒体。
- 前記復号化するコードは、前記第3のファインダパターンの場所及び前記最初に検出された2つのファインダパターンの場所を使用して前記QRコードを復号化するコードを含むことを特徴とする請求項7記載のコンピュータ読み取り可能な記憶媒体。
- 2つの最初に検出されたファインダパターンを有するQRコードを復号化するコンピュータ装置であって、
前記検出されたファインダパターンの特性に基づいてパターンマッチングテンプレートを形成する手段と、
前記QRコードの中の前記検出されたファインダパターンの相対位置に少なくとも基づく候補領域であり、前記検出されたファインダパターンに関して少なくとも1つの候補領域を判定する手段と、
前記候補領域のコンテンツを前記パターンマッチングテンプレートと相関することにより前記少なくとも1つの候補領域の中の前記QRコードの未検出の第3のファインダパターンの位置を特定する手段と、
前記2つの最初に検出されたファインダパターンの各々及び前記第3のファインダパターンを使用して前記QRコードを復号化する手段と、
を有することを特徴とするコンピュータ装置。 - 既に検出されている二つのファインダパターンの特性に基づいてパターンマッチングテンプレートを生成する手段と、
前記二つのファインダパターンの相対位置に基づいて、前記二つのファインダパターンと共にQRコードを構成する残り一つのファインダパターンが存在しうる候補領域を決定する手段と、
前記候補領域のコンテンツと前記生成されたパターンマッチングテンプレートとの相関を取ることにより、前記決定された候補領域から、残り一つのファインダパターンを検出する手段と
を有することを特徴とする装置。 - 既に検出されている二つのファインダパターンの相対位置に基づいて、当該二つのファインダパターンと共にQRコードを構成する残り一つのファインダパターンが存在しうる候補領域を決定する手段と、
前記候補領域のコンテンツと前記生成されたパターンマッチングテンプレートとの相関を取ることにより、前記決定された候補領域から、残り一つのファインダパターンを検出する手段と
を有することを特徴とする装置。 - 既に検出されている二つのファインダパターンの特性に基づいてパターンマッチングテンプレートを生成する工程と、
前記二つのファインダパターンの相対位置に基づいて、前記二つのファインダパターンと共にQRコードを構成する残り一つのファインダパターンが存在しうる候補領域を決定する工程と、
前記候補領域のコンテンツと前記生成されたパターンマッチングテンプレートとの相関を取ることにより、前記決定された候補領域から、残り一つのファインダパターンを検出する工程と
を有することを特徴とする方法。 - 既に検出されている二つのファインダパターンの相対位置に基づいて、当該二つのファインダパターンと共にQRコードを構成する残り一つのファインダパターンが存在しうる候補領域を決定する工程と、
前記候補領域のコンテンツと前記生成されたパターンマッチングテンプレートとの相関を取ることにより、前記決定された候補領域から、残り一つのファインダパターンを検出する工程と
を有することを特徴とする方法。 - 請求項16又は17に記載の方法をコンピュータに実行させるためのプログラム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2008261177 | 2008-12-22 | ||
AU2008261179A AU2008261179B2 (en) | 2008-12-22 | 2008-12-22 | QR code decoding system |
AU2008261179 | 2008-12-22 | ||
AU2008261177A AU2008261177B2 (en) | 2008-12-22 | 2008-12-22 | Target feature detection system |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2010170539A JP2010170539A (ja) | 2010-08-05 |
JP2010170539A5 JP2010170539A5 (ja) | 2013-01-10 |
JP5393428B2 true JP5393428B2 (ja) | 2014-01-22 |
Family
ID=42264572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009285726A Active JP5393428B2 (ja) | 2008-12-22 | 2009-12-16 | コード検出及び復号化システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US9355293B2 (ja) |
JP (1) | JP5393428B2 (ja) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100315483A1 (en) * | 2009-03-20 | 2010-12-16 | King Keith C | Automatic Conferencing Based on Participant Presence |
US8542492B2 (en) * | 2009-12-10 | 2013-09-24 | Richard Anthony Dunn, JR. | Scalable up and down nesting integrated electronic enclosures with form factors including asteroids and/or dumbbells and/or approximated tessellation(s)/tiling(s) or combinations thereof with thermal management, wiring, sliding fit, manual and/or automated full range vertical to horizontal positioning, access and structural systems for individual modules and intra-and inter-planar stacks, columns, rows, arrays and associated infrastructures |
US8842153B2 (en) | 2010-04-27 | 2014-09-23 | Lifesize Communications, Inc. | Automatically customizing a conferencing system based on proximity of a participant |
US8786666B2 (en) | 2010-04-27 | 2014-07-22 | Lifesize Communications, Inc. | Providing separate video and presentation streams to a recording server |
AU2010257441B2 (en) * | 2010-12-24 | 2012-09-20 | Canon Kabushiki Kaisha | Method, apparatus and system for identifying candidate pairs of finder patterns of a barcode |
CN102842084A (zh) * | 2011-03-30 | 2012-12-26 | 赛乐得公司 | 使用不支持的交易标识符类型来促进交易 |
US8717400B2 (en) | 2011-07-29 | 2014-05-06 | Lifesize Communications, Inc. | Automatically moving a conferencing based on proximity of a participant |
US20130084004A1 (en) * | 2011-09-30 | 2013-04-04 | Konica Minolta Laboratory U.S.A., Inc. | Image processing of data from scanned display |
US8608074B2 (en) | 2011-12-20 | 2013-12-17 | Seiko Epson Corporation | Method and apparatus for locating and decoding machine-readable symbols |
US9245445B2 (en) * | 2012-02-21 | 2016-01-26 | Ricoh Co., Ltd. | Optical target detection |
JP5908113B2 (ja) * | 2012-11-13 | 2016-04-26 | 共同印刷株式会社 | 二次元コード |
US10394419B2 (en) * | 2012-12-01 | 2019-08-27 | Gspi B.V. | Device, a method and a server for retrieving information using a machine readable image |
JP2015032213A (ja) * | 2013-08-05 | 2015-02-16 | 株式会社東芝 | 情報処理装置、方法、及びプログラム |
CN104517090B (zh) * | 2013-09-29 | 2017-09-05 | 北大方正集团有限公司 | 一种qr码探测图形的检测方法及系统 |
CN104517091A (zh) * | 2013-09-29 | 2015-04-15 | 北大方正集团有限公司 | 一种qr码探测图形的筛选方法及系统 |
US20150161350A1 (en) * | 2013-12-06 | 2015-06-11 | International Business Machines Corporation | Selectable message barcode for healthcare |
WO2015147862A1 (en) * | 2014-03-28 | 2015-10-01 | Hewlett-Packard Development Company, L.P. | Determine presence of quasi-periodic two-dimensional object |
JP6481957B2 (ja) * | 2014-08-20 | 2019-03-13 | 富士ゼロックス株式会社 | 画像処理装置およびプログラム |
US9424504B2 (en) * | 2014-09-15 | 2016-08-23 | Paypal, Inc. | Combining a QR code and an image |
US9460503B2 (en) | 2015-02-02 | 2016-10-04 | Arris Enterprises, Inc. | Automated video testing using QR codes embedded in a video stream |
EP3109823A1 (en) * | 2015-06-22 | 2016-12-28 | Sick IVP AB | Method and arrangements for estimating one or more dominating orientations in a digital image |
US9501681B1 (en) | 2015-07-14 | 2016-11-22 | A9.Com, Inc. | Decoding visual codes |
CN105138943B (zh) * | 2015-09-02 | 2017-10-24 | 福建联迪商用设备有限公司 | Qr码位置探测图形破损时的解码方法及系统 |
US20170078145A1 (en) * | 2015-09-16 | 2017-03-16 | Kodak Alaris, Inc. | Simplified configuration of network devices using scanned barcodes |
WO2017113290A1 (zh) * | 2015-12-31 | 2017-07-06 | 深圳配天智能技术研究院有限公司 | 一种一维码定位的方法及装置 |
CN106384143B (zh) * | 2016-09-20 | 2020-03-17 | 北京兆信信息技术股份有限公司 | 一种动态电子二维码生成方法及识别方法 |
CN106529370B (zh) * | 2016-10-18 | 2019-08-13 | 福州觉感视觉软件科技有限公司 | 一种多qr码识别方法 |
CN106778440B (zh) * | 2016-12-21 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 二维码识别方法及装置 |
CN106874906B (zh) * | 2017-01-17 | 2023-02-28 | 腾讯科技(上海)有限公司 | 一种图片的二值化方法、装置及终端 |
CN112861560B (zh) | 2017-09-27 | 2023-12-22 | 创新先进技术有限公司 | 二维码定位方法及装置 |
CN109960957B (zh) | 2017-12-26 | 2022-12-16 | 阿里巴巴集团控股有限公司 | 残缺二维码及其生成、修复和识别方法、装置及系统 |
US10572783B2 (en) | 2017-12-26 | 2020-02-25 | Paypal, Inc. | Contextual machine readable codes |
CN108388822B (zh) * | 2018-01-25 | 2021-03-23 | 微梦创科网络科技(中国)有限公司 | 一种检测二维码图像的方法和装置 |
CN109359999B (zh) * | 2018-08-21 | 2021-10-29 | 同济大学 | 用于商品外包装的二维线段图形的编解码方法 |
JP2020064374A (ja) | 2018-10-15 | 2020-04-23 | 富士通株式会社 | コード情報読取装置、方法、及びプログラム |
JP2020064373A (ja) | 2018-10-15 | 2020-04-23 | 富士通株式会社 | コード情報読取装置、方法、及びプログラム |
US11212521B2 (en) * | 2018-11-07 | 2021-12-28 | Avago Technologies International Sales Pte. Limited | Control of memory bandwidth consumption of affine mode in versatile video coding |
CN109711223A (zh) * | 2018-12-28 | 2019-05-03 | 福州符号信息科技有限公司 | 一种提升qr码解码率方法及设备 |
CN110020571B (zh) * | 2019-03-18 | 2022-05-13 | 创新先进技术有限公司 | 二维码校正方法、装置及设备 |
US10701353B1 (en) * | 2019-03-20 | 2020-06-30 | United States Of America, As Represented By The Secretary Of The Army | Pattern, method, and apparatus for testing imaging system performance |
CN109977720B (zh) * | 2019-03-28 | 2021-07-20 | 尤尼泰克(嘉兴)信息技术有限公司 | 一种快速解析二维码图像的方法及装置 |
US11301223B2 (en) | 2019-08-19 | 2022-04-12 | International Business Machines Corporation | Artificial intelligence enabled function logic infusion |
WO2021046173A1 (en) | 2019-09-06 | 2021-03-11 | Vitiprints, LLC | Image and quick art response code system |
US11538265B2 (en) | 2020-03-11 | 2022-12-27 | Universal City Studios Llc | Orientation tag for providing orientation information |
CN111597853B (zh) * | 2020-05-26 | 2023-02-24 | 成都鹏业软件股份有限公司 | 一种混凝土标识提取方法 |
CN112199972A (zh) * | 2020-10-28 | 2021-01-08 | 普联技术有限公司 | 一种识别定位点的方法 |
CN113705270B (zh) * | 2021-11-01 | 2022-02-18 | 深圳思谋信息科技有限公司 | 识别二维码定位码区的方法、装置、设备和存储介质 |
EP4332832B1 (de) * | 2022-09-02 | 2024-06-26 | Sick Ag | Lokalisieren eines optischen codes |
CN116739022B (zh) * | 2023-08-15 | 2023-11-07 | 北京紫光青藤微系统有限公司 | 用于条码图像的译码方法、装置和电子设备 |
CN117725943B (zh) * | 2024-02-06 | 2024-06-04 | 浙江码尚科技股份有限公司 | 基于数图处理的点阵码识别方法及系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5726435A (en) | 1994-03-14 | 1998-03-10 | Nippondenso Co., Ltd. | Optically readable two-dimensional code and method and apparatus using the same |
JP2938338B2 (ja) | 1994-03-14 | 1999-08-23 | 株式会社デンソー | 二次元コード |
JP2867904B2 (ja) * | 1994-12-26 | 1999-03-10 | 株式会社デンソー | 2次元コード読取装置 |
EP0766449A3 (en) | 1995-06-21 | 1997-09-24 | Eastman Kodak Co | Copy protection system |
US6267296B1 (en) | 1998-05-12 | 2001-07-31 | Denso Corporation | Two-dimensional code and method of optically reading the same |
JP4122629B2 (ja) | 1998-09-03 | 2008-07-23 | 株式会社デンソー | 2次元コードの生成方法 |
JP2003248792A (ja) * | 2002-02-22 | 2003-09-05 | Seiko Epson Corp | 2次元コードのデコード方法、2次元コードのデコード装置、コンピュータに2次元コードのデコード方法を実行させるためのプログラム、このプログラムを記録した記録媒体 |
US20060050961A1 (en) | 2004-08-13 | 2006-03-09 | Mohanaraj Thiyagarajah | Method and system for locating and verifying a finder pattern in a two-dimensional machine-readable symbol |
CN100347714C (zh) * | 2004-09-07 | 2007-11-07 | 佳能株式会社 | 用于定位二维条形码的方法和设备 |
EP1904952A2 (en) * | 2005-05-23 | 2008-04-02 | Nextcode Corporation | Efficient finder patterns and methods for application to 2d machine vision problems |
KR100828539B1 (ko) | 2005-09-20 | 2008-05-13 | 후지제롯쿠스 가부시끼가이샤 | 이차원 코드의 검출 방법, 검출 장치, 및 검출 프로그램을기억한 기억 매체 |
JP2007094584A (ja) * | 2005-09-27 | 2007-04-12 | Fuji Xerox Co Ltd | 二次元コードの検出方法、検出装置、及び検出プログラム |
JP4670658B2 (ja) | 2006-01-25 | 2011-04-13 | 富士ゼロックス株式会社 | 画像処理装置、画像処理方法及びプログラム |
JP4911340B2 (ja) | 2006-02-10 | 2012-04-04 | 富士ゼロックス株式会社 | 二次元コード検出システムおよび二次元コード検出プログラム |
US7546950B2 (en) * | 2006-03-28 | 2009-06-16 | Seiko Epson Corporation | Method and apparatus for locating and decoding a two-dimensional machine-readable symbol |
-
2009
- 2009-12-01 US US12/628,425 patent/US9355293B2/en active Active
- 2009-12-16 JP JP2009285726A patent/JP5393428B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2010170539A (ja) | 2010-08-05 |
US9355293B2 (en) | 2016-05-31 |
US20100155464A1 (en) | 2010-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5393428B2 (ja) | コード検出及び復号化システム | |
JP6354589B2 (ja) | 物体識別装置、方法及びプログラム | |
JP2010170539A5 (ja) | ||
WO2014160426A1 (en) | Classifying objects in digital images captured using mobile devices | |
EP2974261A2 (en) | Systems and methods for classifying objects in digital images captured using mobile devices | |
JP4522468B2 (ja) | 画像判別装置、画像検索装置、画像検索プログラムおよび記録媒体 | |
JP2000105829A (ja) | 顔パーツ検出方法及びその装置 | |
US8538170B2 (en) | System and method for document location and recognition | |
JP4406027B2 (ja) | バーコード復号方法及び装置 | |
CN113011426A (zh) | 一种识别证件的方法和装置 | |
US8064636B2 (en) | Image processing apparatus and method of controlling the same | |
CN110569845A (zh) | 一种试卷图像的校正方法及相关装置 | |
US20060279767A1 (en) | Method and apparatus for detecting specific pattern and copying machine including the same | |
CN112818983B (zh) | 一种利用图片相识度判断字符倒置的方法 | |
US7155051B2 (en) | Image recognition apparatus, image recognition method and image recognition program for specific pattern | |
JP2006099326A (ja) | 平面4指画像判定装置、平面4指画像判定方法及び平面4指画像判定プログラム | |
Shapiro et al. | On hausdorff distance measures | |
KR100726473B1 (ko) | 이미지 분별 장치 및 그 방법 | |
JPH1125215A (ja) | 帳票種識別方法、装置および記録媒体 | |
US9792485B2 (en) | Systems and methods for coarse-to-fine ridge-based biometric image alignment | |
JP2007140729A (ja) | 物品の位置及び姿勢を検出する方法および装置 | |
AU2008261179B2 (en) | QR code decoding system | |
AU2014277851A1 (en) | Detecting a gap between text columns from text line fragments | |
AU2008261177B2 (en) | Target feature detection system | |
US20150178255A1 (en) | Text line fragments for text line analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121116 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121116 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130730 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130802 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130820 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130917 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131015 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5393428 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |