# ReadIDMax

ReadIDMax 関数は、対象領域内の 1D シンボルまたは 2D シンボルを検出してデコードする場合に使用します。この関数は、さまざまなシンボル、結果の数に合わせて設定でき、高度な回転と遠近歪みを処理できます。オプションで、データマトリックスや QR コードモデルの学習や、品質測定の検証に使用することもできます。

### 1D/スタックドシンボル

ReadIDMax 関数は、以下のタイプを含む、同じ画像内の複数の 1D/スタックドシンボルのデコードをサポートしています。

- Code 128
- Code 39
- Interleaved 2 of 5
- UPC/EAN
- Code 93
- Codabar
- PDF 417

注 : 1D/スタックシンボルは、学習を必要としません。

#### 1D ファインダパターン頂点:

バーコードの場合、ファインダパターン頂点は、シンボルの 4 隅のセルそれぞれの中心に配置されます。点 0 は左上隅のセル、点 1 は左下隅、点 2 は右下隅、点 3 は右上隅です。

### 2D シンボル

ReadIDMax 関数は、2D データマトリックスと QR コードのシンボルの位置を特定してデコードできます。この関数は、複数の 2D シンボルを特定できますが、1D シンボルとは異なり、すべてのシンボルは同じタイプのシンボルでなければなりません。例えば、画像にデータマトリックスシンボルと QR コードシンボルが混在しており、この関数の [シンボルグループ] パラメータが [データマトリックス] に設定されている場合、この関数は QR コードシンボルを無視し、データマトリックスシンボルのみを返します。

この関数は、シンボルのグリッドサイズ、2D シンボルのタイプ、シンボルに含まれるデータの正確性を検証するためにシンボルで使用されるエラーチェック訂正 (ECC) 方式を設定することで、同じタイプの 2D シンボルをデコードするように学習させることができます。

注 : Cognex では、アプリケーションで使用される 2D シンボルがすべて同じ特徴を持っている場合に、関数に学習させることを推奨しています。例えば、2D シンボルのグリッドサイズや極性が変化する可能性がある場合は、関数に学習させずに、2D シンボルのデコード時に考えられるすべての設定が考慮されるようにします。

特にデコードするシンボルがすべて同じ品質である場合に ReadIDMax 関数に学習させると、パフォーマンスが向上しますが、関数に学習させなくても、さまざまなシンボルをデコードでき、再設定する必要もありません。

#### 2D ファインダパターン頂点:

2D データマトリックスシンボル:データマトリックスシンボルの場合、ファインダパターン頂点は、4 隅のセルそれぞれの中心に配置されます。モジュールとも呼ばれるセルは、黒または白の 1 つの正方形です。例えば、10 × 10 のシンボルは 100 の黒と白のセルで構成されています。1 つのセルは、シンボルの 1 ビットのデータに相当します。2 つの実線の交差は「L 境界線」を形成します。学習中は、L の角が左下隅を向くようにする必要があります。点 0 はシンボルの左上隅のセル、点 1 は左下隅 (実線が交差する場所) 、点 2 は右下隅、点 3 は右上隅のセルです。

2D QR シンボル:QR シンボルの場合、ファインダパターン頂点は、シンボルの 4 隅のセルそれぞれの中心に配置されます。シンボル上の 3 つの位置検出パターンが「L」字型を形成します。

学習中は、L の角が左上隅を向くようにする必要があります。点 0 はシンボルの右上隅のセル、点 1 は左上隅 (中間の位置検出パターンが「L」の隅を形成する場所)、点 2 は左下隅、点 3 は右下隅のセルです。

### 1D/2D 画像の要件

ReadIDMax 関数は、1D シンボルをスキャンする場合には最小構成を必要としますが、次のガイドラインを入力画像に使用する必要があります。

- シンボルの長さはすべて 50 ピクセルを超えていなければならず、モジュールの最大幅は 10 ピクセルを超えてはなりません。

注 : ここでモジュールとはシンボルの最も狭いエレメント (スペースまたはバー) です。

- 線形シンボル (モジュールの幅は異なるが高さは均一) の場合、モジュールの幅は 1.6 ピクセル以上、高さは 50 ピクセル以上でなければなりません。
- シンボルのタイプの印刷仕様で指定された最小サイズ以上のクワイエットゾーン (マークのないシンボルの両端のエリア) がなければなりません。
- モジュールと背景のコントラストは、32 グレーレベル以上でなければなりません。
- ピクセルアスペクト比は 1.35:1 以下でなければなりません。

2D シンボルでは、画像の要件が少なくなります。一般的に、シンボルを囲むクワイエットゾーン (またはマージン) があり、その 4 辺がすべてシンボル内の 1 モジュール分の幅に等しい必要があります。

### IDMax および IDQuick

ReadIDMax 関数は、デコードアルゴリズムに関して次の 2 つの処理モードを提供します。

- IDQuick は、形が整っていて高コントラストで表示されるシンボルを高速でデコードする際に使用します。
- IDMax は、難易度の高い画像の高度な画像処理や画像解析に使用します。

デフォルトでは、この関数は IDMax モードを使用しますが、アプリケーションで関数のパフォーマンスにどのように影響するかを判定するには、IDQuick で試してみてください。

#### 結果

検出され、デコードされたシンボルのみから結果が生成されます。画像内で特定されたシンボルごとに、ReadIDMax 関数は Vision Data Access functions によって次の結果を生成します。

- デコードされた文字列。
- 検出されたシンボルの角度方向 (度単位)。
- シンボルの中心の位置 (Y/X)。
- シンボルのコードのタイプ。
- 業界標準に従ってシンボルを一意に識別するための ISO/IEC のコードと修飾子。

注 : デコードされた文字列を超える結果を生成するには、[照合] チェックボックスをオンにする必要があります。デコードされたシンボルに関する追加の検証メトリクスを処理するには、ValidateIDData 関数を使用します。

## ReadIDMax の入力

注 : ReadIDMax 関数のプロパティシートを設定している場合、パラメータ値の更新の影響を確認するには、[OK] ボタンをクリックして変更を受け入れてからプロパティシートを閉じます。ReadIDMax 関数では、プロパティシートを開いたまま更新された結果を表示することはできません。

パラメータ | 説明
画像 | このパラメータは、画像 データ構造体を含むスプレッドシートセルのセル参照を使用する必要があります。デフォルトでは、このパラメータは、 関数によって返された Image データ構造体を含むセル A0 を参照しています。また、このパラメータは、ビジョンツールの画像フィルタ関数によって返された、その他の Image データ構造体も参照できます。
フィクスチャ | Fixture入力、またはビジョンツール関数の画像座標系の出力に関連する対象領域 (ROI) を定義します。フィクスチャに関連する ROI を設定すると、フィクスチャが回転または移動した場合に、フィクスチャに対応して ROI を確実に回転または移動できます。 デフォルト設定は画像の左上隅で、(0, 0, 0) になります。
X | フィクスチャ座標での原点の X オフセット
Y | フィクスチャ座標での原点の Y オフセット
角度 | 画像座標系での画像の X 軸からの回転 (時計回り +/-360 度)。
領域 | これは対象領域 (ROI) とも呼ばれ、解析の対象となる画像の領域を表します。[領域] パラメータをダブルクリックすると、変換と回転が可能な対話型グラフィックスモードを作成できます。このパラメータを選択して、プロパティシートの [ジョブの編集] ツールバーにある [領域の最大化] ボタンを押すと、画像全体が対象になるように領域が自動的に拡張されます。
X | フィクスチャ座標での原点の X オフセット
Y | フィクスチャ座標での原点の Y オフセット
高さ | 領域の X 軸に沿った寸法。 注 : 1D/スタックドシンボルを読み取る場合、ReadIDMax 関数でサポートされる最大領域サイズは 2048 ピクセル (高さ) × 2048 ピクセル (幅) です。[高さ] または [幅] パラメータを 2048 ピクセル以上に設定すると、#ERR を返します。
幅 | 領域の Y 軸に沿った寸法。 注 : 1D/スタックドシンボルを読み取る場合、ReadIDMax 関数でサポートされる最大サイズは 2048 ピクセル (高さ) × 2048 ピクセル (幅) です。[高さ] または [幅] パラメータを 2048 ピクセル以上に設定すると、#ERR を返します。
角度 | フィクスチャ座標での角度
シンボルグループ | 読み取りの対象となるシンボルグループを指定します。
1D/スタックド (デフォルト) | 1D およびスタックドコードの読み取りを選択します。
データマトリックス | データマトリックスの読み取りを選択します。
QR コード | QR コードの読み取りを選択します。
最大結果 | 特定およびデコードの対象となるシンボルの最大数 (1 ～ 128、デフォルト = 1) を指定します。 注 : このパラメータで指定した値が ROI 内のシンボル数を超える場合でも、関数は指定した数のシンボルの検索を続行します。ROI 内のシンボル数が一定ではない場合、[タイムアウト] パラメータ設定の値を小さくして、関数の実行時間を短縮することができます。
詳細デコードモード | データマトリックス、または 1D/スタックドシンボルグループのデコードに使用する設定を指定します。
IDMax® (デフォルト) | 整合シンボルのみを読み取ります。非整合シンボルの読み取りは行われません。
IDQuick™ | ワーピングや歪みが生じる可能性のあるシンボルや非均一な背景に表示されるシンボルに使用します。このモードは、分離されたドットではなく、「連続した」ファインダパターンのコード用に設計されています。
学習の有効化 | 有効な場合、最初に読み込まれたデータマトリックスまたは QR コードシンボルのモデルを学習します。特にデコードするシンボルがすべて同様の特性を持つ場合に関数に学習させると、パフォーマンスが向上する場合があります。 学習情報は、このチェックボックスをオフにするまで保持されます。シンボルを保持するには、チェックボックスをオフにしてから、再度オンにしてください。 ヒント : 学習が有効にされている場合、領域内のシンボルは 1 つのみにすることを推奨します。
OFF (デフォルト) | モデルの学習を行いません。
ON | 最初に読み込まれたシンボルのモデルを学習します。
1D/スタックドシンボル | 読み取りの対象となる 1D/スタックドシンボルを指定します (複数のシンボルを選択して、読み取ることができます)。
Code 128 | Code 128 の読み取りを選択します。Code 128 は、双方向でスキャンできる非常に高密度の英数字シンボル体系です。このシンボル体系は、128 文字の ASCII 文字セット全体と 4 文字の非データ文字をエンコードできます。Code 128 シンボル体系を使用するシンボルは、11 個の黒または白のモジュールを使用して各文字をエンコードし、各シンボルにはチェックサム文字 1 文字が含まれます。
Code 39 | Code 39 の読み取りを選択します。Code 39 (USS Code 39、BC39 および/または Code 3/9 とも呼ばれる) は、非小売環境で使用するために開発され、広く使用されているシンボル体系であり、文字、数字、および「%」や「/」などの特殊文字をエンコードできます。Code 39 シンボル体系を使用するシンボルは、5 個のバーと 4 個のスペースを使用して合計 9 個の要素で各文字をエンコードし、9 個の要素のうち 3 個は常に幅が広くなります。シンボルには、エラー検出用のチェックサム文字を含めることができます。
Interleaved 2 of 5 | Interleaved 2 of 5 の読み取りを選択します。Interleaved 2 of 5 (I2of5、I-2/5 または ITF とも呼ばれる) は、可変長の数字のみのコードで、倉庫管理用途で広く使用されています。Interleaved 2 of 5 シンボル体系を使用するシンボルは、5 個のバーとスペースを 1 単位として 2 文字をエンコードします。ここで、偶数位置の文字はバーにエンコードされ、奇数位置の文字はスペースにエンコードされます。Interleaved 2 of 5 シンボル体系は、偶数の長さのデータのみをエンコードできます。シンボルには、エラー検出用のチェックサム文字を含めることができます。
UPC/EAN | UPC (Universal Product Code) および EAN (European Article Numbering) の読み取りを選択します。UPC は、固定長の数字のみのシンボル体系で、双方向にスキャンすることができます。UPC シンボルのサイズは、さまざまな印刷プロセスに応じて変化することがありますが、シンボルの高さが幅を上回る場合にこのコードは最も効果的です。ヨーロッパの企業は一般的に、同等の EAN システムを使用しています。 UPC は、バージョン A (標準バージョン) およびバージョン E (ゼロ抑制バージョン) の UPC バーコードと、2 文字および 5 文字の補足コードをサポートします。EAN は、EAN-8 および EAN-13 バーコードと同時に、2 文字および 5 文字の補足コードをサポートします。
Code 93 | Code 93 の読み取りを選択します。Code 93 は、Code 39 と同じ文字をエンコードしますが、1 文字あたり使用するバーコード要素は 15 個ではなく 9 個です。
Codabar | Codabar (USD-4 および Code 2 of 7 含む) の読み取りを選択します。Codabar は、数字をエンコードする旧式のシンボル体系です。
PDF 417 | PDF 417 の読み取りを選択します。PDF 417 は、主に輸送、ID カード、在庫管理など、さまざまな用途で使用されるスタック式の線形バーコードシンボル形式です。
スタックドコード | 読み取りの対象となるスタックドコードを指定します (複数のコードを選択して、読み取ることができます)。
PDF 417 | PDF417 の読み取りを選択します。PDF417 は、主に輸送、ID カード、在庫管理など、さまざまな用途で使用されるスタック式の線形バーコードシンボル形式です。
デコード設定 |
遠近補正あり | 遠近歪みを持つデータマトリックスシンボルおよび QR コードシンボルのデコードを指定します。また、必要に応じて、既知の遠近歪みに対するデータマトリックスシンボルを学習することも可能です。
最小 (デフォルト) | 遠近歪みが最小限のデータマトリックスシンボルをデコードします。
中程度 | 遠近歪みを持つデータマトリックスシンボル、QR コードシンボル、および 1D/スタックドシンボルをデコードします。遠近歪みは、モデルの学習中およびランタイムに、個別に予測されます。
強い | 既知の遠近歪みを持つデータマトリックスシンボルをデコードします。遠近歪みは学習されており、ランタイムに、学習された属性を使用して入力画像の遠近歪みが補正されている空間から、このシンボルがサーチされます。このオプションでは、ランタイムシンボルを、学習されたシンボルと同じ平面に配置する必要があります。このオプションを指定すると、既知の遠近歪みを持つひどく損傷したシンボルでもデコードを行うことができます。 注 : ビジョンシステムは入射角 (センサの光軸と、シンボルが存在する平面の法線ベクトルとの間の角度) が 40 度を超えないように、またシンボルの解像度が 1 セルあたり 5 ピクセル以上になるように取り付けることを推奨します。
QR モード | 読み取りの対象となる QR コードの種類を指定します。
QR モデル 1
QRモデル2
QR コードモデル 1 と 2
Micro QR
Micro QR および QR コードモデル 1
Micro QRおよびQRモデル2
すべての QR モード (デフォルト)
極性を無視 | 学習されたシンボルに対して極性が反転しているデータマトリックスシンボルを読み取るかどうかを指定します。 注 : このパラメータは、[学習の有効化] パラメータがオンに設定されている場合にのみ有効です。
OFF (デフォルト) | 学習モデルからの極性の反転を認めません。
ON | 学習モデルからの極性の反転を認めます。
フレキシブルグリッド サイズの許容 | 学習されたシンボルに対してグリッドサイズの異なるデータマトリックスシンボルおよび QR コードシンボルを読み取るかどうかを指定します。 注 : このパラメータは、[学習の有効化] パラメータがオンに設定されている場合にのみ有効です。
OFF (デフォルト) | 学習シンボルと同じグリッドサイズのシンボルのみ、読み取りを認めます。
ON | 学習シンボルとグリッドサイズの異なるシンボルの読み取りを認めます。
チェックサム | 信頼性を保証するためにエラー検出アルゴリズムを使用してシンボルを検証するかどうかを指定します。チェックサムは、シンボルに含まれるオプションのチェックサムアルゴリズムを備えたシンボルのみに適用されます。各シンボルは、固有のチェックサムアルゴリズムを備えています。使用されるチェックサム (使用可能な場合含む) のタイプは、選択したコードのタイプによって異なります。
OFF (デフォルト) | チェックサムを検証しません。
ON | チェックサムの検証に合格する必要があります。
注 : Code 128、Code 93、および UPC/EAN バーコードは、パラメータの選択にかかわらず、チェックサムによって検証されます。その他のバーコードで [チェックサム] を ON にし、チェックサムがエンコードされていない場合、読み取りに失敗します。
極性 | シンボルの色を指定します。
黒 | シンボルは背景よりも暗くなります。
白 | シンボルは背景よりも明るくなります。
自動 (デフォルト) | シンボルの極性を自動的に選択します。
全方向読み取り | バーコードのエレメントをすべて検出するために、領域内に抽出されるスキャンラインの方向を指定します。デコードを成功させるには、バーコードのすべてのエレメント間で、少なくとも 1 つのスキャンラインを抽出する必要があります。
0 = OFF | スキャンラインが 1 つの角度で抽出され、領域に対して平行なバーコードが検出されます。
1 = ON (デフォルト) | スキャンラインが複数の角度で抽出され、領域に対して回転しているバーコードが検出されます。
ソートモード | 順序がある場合、結果を返すときの順序を指定します。 注 : シンボルを正確にソートするために、[最大結果] パラメータは、画像に含まれるシンボル数以上の値に設定する必要があります。
なし (デフォルト) | 最初にデコードされた結果から順にソートします。デコードされなかった結果は、デコードされた結果の後に表示されます。
上→下 | 行の昇順にソートします。
左→右 | 列の昇順にソートします。
アルファベット順 | 結果をアルファベット順にソートします。
文字列長 | 結果を文字列の長さの順に (短いものから長いものへ) ソートします。
行 | シンボルを行にグループ化した後、それらを各行の中で左から右へソートすることで、結果をソートします。行によるソート時に、1 つのシンボルの中心が別のシンボルの一部と垂直にオーバラップする場合、この 2 つのシンボルは同じ行に属するものとみなされます。
列 | シンボルを列にグループ化した後、それらを各列の中で上から下へソートすることで、結果をソートします。列によるソート時に、1 つのシンボルの中心が別のシンボルの一部と水平にオーバラップする場合、この 2 つのシンボルは同じ列に属するものとみなされます。
同一 1D シンボルの許容 | 領域内のすべてのシンボルが同一の場合でも、それらのシンボルをデコードするかどうかを指定します。長さ、シンボルの種類、およびデコードされた文字列が同一の場合、2 つのシンボルは同一とみなされます。
OFF (デフォルト) | 複数のシンボルがデコードされた場合に結果を 1 つだけ返します。
ON | 結果が同一の場合でもすべての結果を返します。
拡張 UPC-E | デコードされたシンボルが 6 桁の UPC-E 文字列を返すか、あるいは拡張された 11 桁の UPC-A 同等文字列を返すかを指定します。
OFF | デコードされたシンボルは、6 桁の UPC-E 文字列を返します。
ON (デフォルト) | デコードされたシンボルは、拡張された 11 桁の UPC-A 同等文字列を返します。
注 : [拡張 UPC-E] パラメータは、1D/スタックドシンボルに対してのみ実装されます。
照合 | 印刷品質テスト (品質検証指標とも呼ばれる) を実行するかどうかを指定します。
OFF (デフォルト) | 品質をテストしません。
ON | 品質をテストし、スプレッドシートに結果を表示します。
注 : 文字列をデコードできなかった場合、スプレッドシートに自動挿入された結果すべてに、#ERR が返されます。 PDF 417 以外のすべてのコード種類は、品質検証指標をサポートしています。
タイムアウト | 関数が有効な ID シンボルを検索する時間をミリ秒単位で指定します (0 ～ 30000)。この時間が経過すると、処理は中止され、#ERR が返されます。値を 0 に設定すると設定値が無効になり、タイムアウトは適用されません。 注 : ReadIDMax 関数が、指定のタイムアウトパラメータ値を超えることがあります。超過の割合は、モデルによって異なります。この状況が発生したら、タイムアウトパラメータ値を低く設定して、過剰分を相殺してください。
表示 | 画像上の ReadIDMax グラフィックスオーバレイの表示モードを指定します。 注 : 表示パラメータは、データマトリックスシンボルと QR コードシンボルに対してのみ実装されます。
非表示 (デフォルト) | ReadIDMax 関数を含んでいるセルがスプレッドシート上でハイライトされている場合を除き、入力領域境界は表示されません。
結果のグラフィックスのみ | 結果のグラフィックス (データマトリックスおよび QR コード用ボックス含む) が常に表示されます。
入力と結果のグラフィックス | 入力グラフィックスと結果のグラフィックスが常に表示されます。

## ReadIDMax の出力

戻り値 | デコードされた英数字文字列を含む IDMax データ構造体。入力パラメータが無効であれば #ERR を返します。
結果 | この関数が初めてセルに挿入されると、スプレッドシート内に結果テーブルが自動的に挿入されます。結果テーブルに返されるインデックス付き文字列の数は、[最大結果] パラメータに入力された値と同じです。シンボルの位置を特定してデコードできない場合、#ERR が返されます。 注 : データマトリックスシンボルの場合、Base 256 ラッチ文字 (10 進数 231、16 進数 E7) によってエンコードされたデータは、(ISO/IEC 16022 データマトリックス仕様に従い) バイト単位で処理されます。GetStringIDMax 関数を使用して、エンコードされたデータを返します。詳細については、「IDMax」を参照してください。

## ReadIDMax Vision Data Access functions

文字列 | GetString(IDMax, [インデックス]) | インデックス付きシンボル内でエンコードされている英数字文字列を返します。

注 :

- データマトリックスシンボルをデコードする場合は、GetString ではなく GetStringIDMax 関数を使用すると、デコードされたシンボルに関するより正確で詳細な情報を取得できます。