HCC2D

HCC2D コード仕様

バージョン 0.9.0 — ドラフト

最終更新日:2026年7月5日

PDF をダウンロード ↓

起源と出版物

HCC2D カラーバーコード形式は、Marco Querini による情報工学(Ingegneria Informatica)の Laurea Specialistica 学位論文(2009/2010年度、2010年7月23日討論)Analisi e progettazione di codici bidimensionali ad alta capacità. Sviluppo del lettore per gli ambienti desktop e mobile(高容量二次元コードの解析と設計。デスクトップ環境およびモバイル環境向けリーダーの開発)から生まれました。論文の期間中に Android 1.6 向けのプロトタイプが開発されており、これは Android オペレーティングシステムの普及がごく初期段階にあった時期のことでした。

本仕様は、HCC2D という名称が付けられる以前、2010年の学位論文で記述された形式に従って生成されたコードと完全に互換性があります。

この形式に関連する会議論文は 2010 年 9 月および 2013 年 9 月に発表されました(それぞれ “High capacity colored two dimensional codes” と “Color classifiers for 2D color barcodes”)。以下に示す学術誌論文は、それらの拡張された査読付きバージョンです。

「HCC2D」という名称が導入され、この形式はその後、初期の会議論文および以下の査読付き学術誌論文で記述され、その特性についてもさらに分析されています:

  • Querini, M. and Italiano, G. F. (2014). Reliability and Data Density in High Capacity Color Barcodes. Computer Science and Information Systems (ComSIS) 特集号, 11(4), 1595–1615.
  • Querini, M., Grillo, A., Lentini, A. and Italiano, G. F. (2011). 2D Color Barcodes for Mobile Phones. International Journal of Computer Science & Applications (IJCSA) 特集号, 8(1), 136–155.

この仕様書は Marco Querini が執筆しました。

この仕様はバージョン 1.0 以前に変更される可能性があります。

ライセンスおよび著作権

Copyright © 2010–2026 Marco Querini. 無断複製・転載を禁じます。

本著作物は、クリエイティブ・コモンズ 表示-改変禁止 4.0 国際ライセンス(CC BY-ND 4.0)の下でライセンスされています。

このライセンスの概要については、次の URL をご覧ください:https://creativecommons.org/licenses/by-nd/4.0/

原著者への適切なクレジット表示を行い、改変版を配布しない限り、いかなる媒体・形式でも、商用目的を含む任意の目的で本仕様書を自由に共有、複製、再配布することができます。本仕様に定義された技術要件に準拠したソフトウェア、ハードウェア、またはシステムの実装は完全に許可されており、本文書の派生著作物とはなりません。

本仕様は公開されています。HCC2D の公式ソフトウェア実装は、別個の独占的条件の下で配布されます。

本仕様は「現状のまま」提供され、いかなる種類の保証もありません。著者は、本書に含まれる情報の正確性、完全性、または特定目的への適合性について、いかなる表明または保証も行いません。

HCC2D™(未登録商標)



はじめに

HCC2D はカラー二次元バーコード形式です。QR Code の正方行列構造を再利用しながら、カラーエンコーディング、ペイロードフレーミング、シンボル境界セマンティクス、バージョン容量、コードワード構成に関する独自の HCC2D 固有ルールを定義します。特に HCC2D は、ファインダーパターン、アライメントパターン、タイミングパターン、フォーマット情報、バージョン情報、マスク計算式、および Reed-Solomon 誤り訂正動作を QR Code / ISO/IEC 18004:2006 と互換性のある形で再利用します。ただし、本仕様が明示的に異なる動作を定義している箇所を除きます。

QR Code は DENSO WAVE INCORPORATED の日本およびその他の国における登録商標です。HCC2D は DENSO WAVE INCORPORATED による後援、推奨、または提携を受けたものではありません。QR Code / ISO/IEC 18004:2006 で定義される構造要素、すなわち finder patterns、alignment patterns、timing patterns、format information、version information、および masking は、本書では公開技術標準の要素として使用しています。本文書は HCC2D 固有の要素のみを記述し、それらの要素を意図的に再掲しません。

HCC2D は QR コードの代替ではなく、その拡張です。HCC2D デコーダーは QR コードリーダーでもなければなりません。実際には、HCC2D デコーダーは、色付きモジュールを認識してデコードするための追加機能を備えた、標準的な QR コードデコーダーそのものです。デコーダーは、標準的な QR Code の検出フェーズを用いてシンボル構造を検出します。検出後、ペイロードのデコード前に、モジュールを白黒モジュールとして解釈する標準 QR Code のデコード経路をたどるか、あるいはモジュールを 4 色または 8 色モジュールとして解釈する HCC2D のデコード経路をたどるかを判断します。この選択は、HCC2D の Color Palette Patterns がシンボルの外周上に存在するかどうかを確認することで行われます。Color Palette Patterns が存在しない場合、デコーダーはそのシンボルを標準 QR Code としてデコードします。Color Palette Patterns が存在する場合、デコーダーは適用される HCC2D のカラー規則に従って、そのシンボルを HCC2D コードとしてデコードします。HCC2D エンコーダーは QR コードと同じ構造的基盤を共有するシンボルを生成し、QR コードと HCC2D コードの両方をエンコードできる必要があります。

本文書は、HCC2D 四色コード形式および HCC2D 八色コード形式を規定します。

1. 適用範囲

本文書が対象とするもの:

  • hcc2d4:4色 HCC2D
  • hcc2d8:8色 HCC2D

本仕様が定義するもの:

  • 正方シンボルのみ
  • バージョン 1..40
  • 誤り訂正レベル LMQH
  • バイトモードのペイロードエンコーディングのみ

本仕様は、一つの BYTE セグメントを使用した HCC2D ペイロードフレーミングを定義します。

1.1 用語と略語

  • Color Palette Pattern:パレットカラーの循環シーケンスを含み、カラーレジェンドとして機能する HCC2D コードの外枠
  • EC:誤り訂正
  • EC level:誤り訂正レベル
  • ECPB:ブロックあたりの誤り訂正コードワード数
  • MSB:最上位ビット
  • LSB:最下位ビット
  • RS:Reed-Solomon
  • RGB:赤、緑、青
  • ISO/IEC:国際標準化機構 / 国際電気標準会議

行列用語:

  • module:シンボルを構成する論理的な正方セル一つ
  • inner grid または inner matrix:HCC2D 境界を追加する前の QR 互換 N×N 行列
  • full symbol:HCC2D 境界を追加した後に生成される N+2 の正方形
  • function module:ファインダー、アライメント、タイミング、フォーマット、またはバージョン構造に属する非データモジュール
  • data module:状態がエンコードされたペイロードと誤り訂正ビットストリームによって決定されるモジュール
  • plane:最終インターリーブビットストリームから抽出された二値行列

1.2 高レベル構造

高レベルでは、HCC2D エンコーディングは次の手順で進みます:

  1. ペイロードを一つの BYTE モードセグメントとしてフレーム化する
  2. バージョンと誤り訂正レベルを選択する
  3. データコードワード、誤り訂正コードワード、および最終インターリーブビットストリームを生成する
  4. その最終ビットストリームを二つまたは三つの二値プレーンに分割する
  5. 共有マスクパターンを使用して、プレーンごとに QR 互換の内部行列を構築する
  6. プレーンビットをデータモジュールのカラーインデックスに結合する
  7. ファンクションモジュールを白黒でレンダリングする
  8. HCC2D の Color Palette Pattern 境界を追加する

HCC2D はプレーンごとに個別の誤り訂正処理を行いません。最初に結合されたビットストリームが生成され、プレーン抽出はその後のみ行われます。

2. 適合性の基盤

適合する実装は、公式 HCC2D Decoder でデコード可能なコードを生成します。アプリは Google PlayHuawei AppGallery、および App Store で入手できます。

本仕様への適合性を主張する実装は、以下を組み合わせなければなりません:

  1. 本文書が定義する HCC2D 固有レイヤー;および
  2. 再利用されるすべての部分において QR Code / ISO/IEC 18004:2006 と互換性のある再利用正方行列コーディングレイヤー。

既存の HCC2D デコーダーとの相互運用性のため、再利用レイヤーは少なくとも以下を提供しなければなりません:

  • モデル2形式の正方バージョン 1..40
  • 誤り訂正レベル LMQH
  • finder pattern の配置
  • HCC2D テーブルに記載された座標による alignment pattern の配置
  • timing pattern の配置
  • フォーマット情報の生成と配置
  • 該当する場合のバージョン情報の生成と配置
  • 内部行列における BYTE モードデータ配置順序
  • mask index 0..7 の mask 計算式
  • セクション10で規定する HCC2D 固有ルール(反転プレーン0のみを使用)を除き、QR Code / ISO/IEC 18004:2006 と互換性のある mask penalty 評価
  • セクション20および21で定義する HCC2D 固有のコードワード総数とブロック多重度を除き、QR Code / ISO/IEC 18004:2006 と互換性のある Reed-Solomon パリティ生成とコードワードインターリーブ

したがって:

  • 本仕様は完全に独立したものではありません
  • 当該再利用 QR Code / ISO/IEC 18004:2006 互換の動作をすでに持つ実装は、本仕様から相互運用可能な HCC2D シンボル生成を実装できます
  • 本仕様と再利用部分に関する QR Code 仕様を合わせて持つ実装は、相互運用可能な HCC2D シンボル生成を実装するのに必要な情報を持っています

実際のところ、HCC2D は QR 形式の正方行列構築の代替品ではありません。再利用された QR 互換の内部シンボルの上に構築されたカラー容量およびフレーミングレイヤーです。したがって HCC2D の規範的な差異は以下に集中しています:

  • ペイロードフレーミング
  • コードワード総容量とブロック多重度
  • ビットプレーン抽出とカラー解釈
  • データマスキングアルゴリズムへの入力選択:反転プレーン0のみ
  • ファンクションモジュールレンダリングルール
  • HCC2D 外枠セマンティクス

フォーマットまたはシンボルを HCC2D と呼称できるのは、本仕様に準拠している場合に限ります。非準拠のフォーマットまたはシンボルに HCC2D という名称を使用することは誤解を招くものであり、本仕様では認められていません。

3. エンコーディングパラメーター

適合する HCC2D シンボル生成プロセスは以下によってパラメーター化されます:

  • payload:必須、空でないバイト配列
  • modehcc2d4 または hcc2d8
  • ec_levelLMQH のいずれか
  • version0 は自動選択を意味する;それ以外は 1..40
  • scale:ラスタレンダリング用のモジュールあたりピクセル数
  • quiet_zone:レンダリングされたシンボル周囲の白色マージンのモジュール数
  • palette_rgb:オプションの RGB オーバーライド

最初の4つのパラメーターは論理的な HCC2D シンボルに影響します。残りの3つは視覚的なレンダリングにのみ影響します。

デフォルト値、ユーザーインターフェースの動作、コマンドライン規約は本仕様の範囲外です。

パラメーターに関する追加注記:

  • payload は生バイトとして厳密に解釈されます
  • 本仕様はテキストトランスコーディング、マルチセグメント最適化、数字モード、英数字モードを定義しません
  • mode はプレーン数とパレットファミリーを決定します
  • ec_level は選択されたバージョン内の規範的テーブル行を選択します
  • version は容量、内部寸法、アライメント座標、およびブロック構造を制御します
  • scalequiet_zone、および palette_rgb はエンコードされた論理ビットストリームを変更しません

4. シンボルジオメトリ

両方の HCC2D モードにおいて、バージョン v は次元 N = 17 + 4*v の内部正方グリッドを使用します。

例:

  • バージョン1 → 21 × 21
  • バージョン10 → 57 × 57
  • バージョン40 → 177 × 177

内部グリッドは、QR Code / ISO/IEC 18004:2006 互換のルールに従う finder pattern、alignment pattern、timing pattern、フォーマット情報、バージョン情報の構造を再利用します。

HCC2D はその上に、四辺すべてに独自の一モジュール外枠を追加します:

  • 内部寸法 = N
  • 完全寸法 = N + 2

この HCC2D 固有の外枠が Color Palette Pattern です。

内部グリッドと完全シンボルの区別は規範的です:

  • 再利用されるすべての QR 互換配置ロジックは内部 N × N 行列に対して動作します
  • HCC2D Color Palette Pattern はその内部行列の外側に位置します
  • レンダリングおよびラスタ出力は完全な N + 2 寸法を使用します

したがって、本文書がファンクションパターン、データ配置、マスキング、またはバージョンジオメトリについて言及する場合、それらのルールはまず内部行列に適用され、その後に HCC2D 境界が追加されます。

5. カラーインデックスとデフォルトパレット

このセクションでは、HCC2D4 と HCC2D8 のカラーインデックスのビットレイアウト、2 つの標準カラーパレット モデル(モデル 1 は画面表示用、モデル 2 は印刷用)、パレット モデルの分類、およびパレットのカスタマイズルールを定義します。

5.1 HCC2D4 — カラーパレット モデル 1 — 定義

カラーパレット モデル 1 を使用した HCC2D4 コードは、パレットインデックス 0..3 に対して次の色を使用しなければなりません。輝度は近似値であり、Y = 0.299R + 0.587G + 0.114B として計算されます。

表1 — HCC2D4 カラーパレット、モデル1(スクリーン)
インデックスRGB輝度 (Y)
0RGB(0, 0, 0)≈ 0
1RGB(220, 0, 0)≈ 66
2シアンRGB(0, 200, 220)≈ 142
3RGB(255, 255, 255)≈ 255

カラーインデックスのビットレイアウト:

  • ビット 1 = MSB プレーン
  • ビット 0 = LSB プレーン

したがって:

  • 00 → 0 → 黒
  • 01 → 1 → 赤
  • 10 → 2 → シアン
  • 11 → 3 → 白

このインデックス順序は論理的なものであり、単に視覚的なものではありません。インデックス 0 は暗いアンカー、インデックス 3 は4色ファミリーの白いアンカーです。

5.2 HCC2D8 — カラーパレット モデル 1 — 定義

カラーパレット モデル 1 を使用した HCC2D8 コードは、パレットインデックス 0..7 に対して次の色を使用しなければなりません。輝度は近似値であり、Y = 0.299R + 0.587G + 0.114B として計算されます。

表2 — HCC2D8 カラーパレット、モデル1(スクリーン)
インデックスRGB輝度 (Y)
0RGB(0, 0, 0)≈ 0
1ダークレッドRGB(200, 0, 0)≈ 60
2ダークグリーンRGB(0, 130, 0)≈ 76
3ダークネイビーRGB(0, 60, 180)≈ 56
4ライトシアンRGB(0, 215, 235)≈ 153
5ライトイエローRGB(255, 220, 50)≈ 211
6ライトマゼンタRGB(255, 130, 230)≈ 179
7RGB(255, 255, 255)≈ 255

カラーインデックスのビットレイアウト:

  • ビット 2 = プレーン 0 / MSB プレーン
  • ビット 1 = プレーン 1
  • ビット 0 = プレーン 2 / LSB プレーン

したがってカラーインデックスは、3つのプレーンビットで形成される3ビット値と等しくなります。

同様に、このインデックス順序は論理的なものです。インデックス 0 は暗いアンカー、インデックス 7 は8色ファミリーの白いアンカーです。

5.3 カラーパレット モデル 1 — 設計の根拠

カラーパレット モデル 1 の RGB 値(セクション 5.1 および 5.2 で定義)は、異なるディスプレイプロファイルとハードウェアカラーガマットの差異が最も大きくなる sRGB ガマットの境界付近を意図的に避けるよう選択されました。デコーダーはデコード実行時に実際のディスプレイ画面上で Color Palette Pattern をサンプリングします。その画面は sRGB、広色域、AMOLED、LCD のいずれかであり、ほぼ確実にキャリブレーションされていません。境界付近のチャンネル値(0 または 255 に近い値)はディスプレイの種類によって異なる色として表示されます。アクティブチャンネルを 255 ではなく 200–220 に抑えることで、パレットカラーは sRGB ガマットの内部に収まり、異なる画面間で知覚される色がより確実に一致します。これにより、ディスプレイ間のカラードリフトが低減され、デコード中の色サンプリングの安定性が向上します。

この RGB チャンネル制限の選択は、セクション 5.9 の順序要件と整合する輝度分布も生み出します。HCC2D8(セクション 5.2)では、インデックス 0–3(黒、ダークレッド、ダークグリーン、ダークネイビー)はすべて輝度の中間点未満(Y < 128)であり、インデックス 4–7(ライトシアン、ライトイエロー、ライトマゼンタ、白)はすべて中間点超(Y > 128)です。インデックス 3(ダークネイビー、Y ≈ 56)とインデックス 4(ライトシアン、Y ≈ 153)の差は約 97 輝度単位です。

カラーパレット モデル 1 はスクリーン用途で検証されたベースラインです。印刷に最適であることを主張するものではありません。

5.4 HCC2D4 — カラーパレット モデル 2 — 定義

HCC2D4 では、すべての中間色が単一インクチャンネルです。黄色は白い用紙との対比が不十分なため除外されています:

表3 — HCC2D4 カラーパレット、モデル2(印刷)
インデックスRGBインクチャンネル輝度 (Y)
0RGB(0, 0, 0)K≈ 0
1マゼンタRGB(255, 0, 255)M≈ 105
2シアンRGB(0, 255, 255)C≈ 179
3RGB(255, 255, 255)インクなし(用紙)≈ 255

5.5 HCC2D8 — カラーパレット モデル 2 — 定義

HCC2D8 では、パレットは 3 つの単一インク CMYK プライマリすべてとその 3 つの全飽和度バイナリ組み合わせを使用します。3 チャンネル組み合わせは使用しません:

表4 — HCC2D8 カラーパレット、モデル2(印刷)
インデックスRGBインクチャンネル輝度 (Y)
0RGB(0, 0, 0)K≈ 0
1RGB(0, 0, 255)C + M(100%)≈ 29
2RGB(255, 0, 0)M + Y(100%)≈ 76
3マゼンタRGB(255, 0, 255)M≈ 105
4RGB(0, 255, 0)C + Y(100%)≈ 150
5シアンRGB(0, 255, 255)C≈ 179
6RGB(255, 255, 0)Y≈ 226
7RGB(255, 255, 255)インクなし(用紙)≈ 255

5.6 カラーパレット モデル 2 — 設計の根拠

カラーパレット モデル 2 は HCC2D4 と HCC2D8 の両方に対応した印刷最適化パレットです。印刷の場合、問題はスクリーンとは異なります:インクのガマット、用紙の白色点、スキャン時の照明条件が、それぞれ異なる変動要因をもたらします。カラーパレット モデル 2 は、モジュールカラーごとのインクチャンネル数を最小化するという原則に基づいています。単一インクチャンネルのカラーはプリンター間で最も安定しており、チャンネルが増えるごとにプリンター・用紙・インク濃度によって異なるドットゲイン相互作用が生じます。

カラーパレット モデル 2 のどちらのパレットも、セクション 5.9 の明暗順序を満たしています。HCC2D8 では、その分割が特に明確です:インデックス 0–3(黒、青、赤、マゼンタ)はすべて輝度の中間点未満(Y < 128)であり、インデックス 4–7(緑、シアン、黄、白)はすべて中間点超(Y > 128)で、インデックス 3(マゼンタ、Y ≈ 105)とインデックス 4(緑、Y ≈ 150)の差は約 45 輝度単位です。

5.7 カラーパレット モデル分類

HCC2D コードはカラーパレットによって分類されます。モデル番号はパレットの属性であり、コード形式の属性ではありません。デコーダーはパレットに依存しません。

  • カラーパレット モデル 1:セクション 5.1 および 5.2 で定義された正確なデフォルトパレットを使用するコード。これが標準かつ完全に相互運用可能なパレットです。カラーパレット モデル 1 は、コードがスクリーン(コンピューターモニター、スマートフォン、類似デバイス)に表示される場合に良好に動作することが検証されています。追加の修飾なしに HCC2D 適合性を主張するすべての実装はカラーパレット モデル 1 を意味します。
  • カラーパレット モデル 2:セクション 5.4 および 5.5 で定義する印刷最適化パレットを使用するコードです(HCC2D4 と HCC2D8 の両方に対応)。印刷・スキャンワークフロー向けに設計されています。
  • 無効なパレット:インデックス 0 に黒がないか、最後のインデックスに白がないパレット。このようなパレットを使用するコードは有効な HCC2D コードではありません。適合エンコーダーはこのような設定を拒否しなければなりません(セクション 5.8 参照)。
  • 非標準 / 実験的パレット:インデックス 0 に黒、最後のインデックスに白を保持しているが、中間の色が異なるパレット。このようなパレットで生成されたコードは、選択した色がどれだけ色彩的に区別できるかによって、デコードできる場合とできない場合があります。デコードに失敗したコードについての責任は、エンコード実装が単独で負います。

カラーパレットのモデル番号は、本仕様によってのみ割り当てられます。コンピューターからスマートフォンへのスキャンやスマートフォン同士のスキャンなど、特定のユースケースで良好に動作することが実験的に検証された場合、将来のバージョンの本仕様において追加のカラーパレットモデル(カラーパレット モデル 3 以降)が定義される可能性があります。

パレットの変更は実験目的に限るべきです。本番環境での使用には、コードをスクリーン(コンピューターモニター、スマートフォン、類似デバイス)に表示する場合はカラーパレット モデル 1 を使用すべきであり、コードを印刷する必要がある場合はカラーパレット モデル 2 を使用すべきです。

非標準パレットを使用するコードを生成する実装は、コードが非標準パレットを使用しており、すべての HCC2D デコーダーでデコードできない可能性があることをユーザーに明示的に開示しなければなりません。

5.8 パレットオーバーライド

パレットの先頭エントリと末尾エントリは規範的なアンカーであり、変更してはなりません:

  • hcc2d4 では、インデックス 0 は黒のまま、インデックス 3 は白のままでなければなりません
  • hcc2d8 では、インデックス 0 は黒のまま、インデックス 7 は白のままでなければなりません

したがって:

  • hcc2d4 では、インデックス 12 のみカスタマイズ可能
  • hcc2d8 では、インデックス 1 から 6 のみカスタマイズ可能

パレットオーバーライドが提供される場合:

  • 4色モードは正確に 12 バイト(4 * 3)が必要です
  • 8色モードは正確に 24 バイト(8 * 3)が必要です
  • バイトレイアウトは、パレットインデックス順の完全なパレット、次にRGBコンポーネント順です
  • ただし、適合エンコーダーは先頭エントリが黒でないまたは末尾エントリが白でないオーバーライドを拒否しなければなりません

バイト順序はパレットエントリ順、次にRGBコンポーネント順です:

  • HCC2D4:R0 G0 B0 R1 G1 B1 R2 G2 B2 R3 G3 B3
  • HCC2D8:R0 G0 B0 ... R7 G7 B7

規範的アンカー値:

  • hcc2d4R0 G0 B0 = 0 0 0 および R3 G3 B3 = 255 255 255
  • hcc2d8R0 G0 B0 = 0 0 0 および R7 G7 B7 = 255 255 255

シンボルロジックはインデックスのみを使用します。カスタムRGB値はcodewords、ビットストリーム構築、バージョン選択、mask selection、または行列レイアウトに影響しませんが、レンダリング外観には影響します。

等価的に言えば、HCC2D はまず各モジュールの論理的なカラーインデックスを決定し、その後にそのインデックスをレンダリング用のRGBトリプルにマッピングします。

5.9 カスタマイズされたパレットの輝度順序の推奨事項

この小節は参考情報です。

カスタマイズされたパレットを使用する場合、実装は下半分が暗く上半分が明るい輝度順序を保持することを推奨します。この推奨は、後述する HCC2D の mask selection rule によって動機付けられています。

HCC2D の mask selection は、最終的なフルカラーレンダリングシンボルに対して実行されません。代わりに、1つのビットプレーンのみから導出されたバイナリプロキシに対して実行されます:

  • mask selection に参加するのはプレーン 0 のみです
  • hcc2d4 では、プレーン 0 はカラーの最上位ビットです
  • hcc2d8 では、プレーン 0 はカラーの最上位ビット(ビット 2)です
  • そのプレーンは最終インターリーブビットストリームから抽出されます
  • そのプレーンは反転されます
  • QR互換の mask penalty rules が、その反転された単一プレーンプロキシに対して評価されます

したがって、モジュールごとに1ビットのみが mask choice に直接影響します。

これには重要な実際的な結果があります。mask は QR スタイルのバイナリペナルティルールを使用して選択されますが、最終的な HCC2D シンボルはマルチカラーシンボルです。HCC2D において QR スタイルの mask selection プロセスが意味を持ち続けるためには、mask choice に使用されるバイナリプロキシが、最終レンダリングシンボルの見かけの暗さの構造と合理的な相関を持つべきです。

その相関は、下位パレットインデックスが暗く上位パレットインデックスが明るい場合に改善されます。その配置では、mask selection に使用される単一プレーンが、最終 HCC2D シンボルにおける暗い領域と明るい領域の分布の有用な粗い近似として機能し続けます。

したがって、パレットのカスタマイズは、下半分が全体的に暗く上半分が全体的に明るいレンダリング輝度順序を保持すべきであり、カラーインデックスの論理的な有意性順序と一致させるべきです。

実際の観点から:

  • 下位パレットインデックスは暗い色に対応すべきです
  • 上位パレットインデックスは明るい色に対応すべきです
  • 先頭エントリは黒のままでなければなりません
  • 末尾エントリは白のままでなければなりません

hcc2d4 の推奨順序:

  • インデックス 0 は黒でなければなりません
  • インデックス 1 はインデックス 2 より視覚的に暗くあるべきです
  • インデックス 3 は白でなければなりません
  • 4色ファミリーレベルのガイドラインとして、インデックス 01 はパレットの暗い半分を形成し、インデックス 23 は明るい半分を形成すべきです

hcc2d8 の推奨順序:

  • インデックス 0 は黒でなければなりません
  • インデックス 7 は白でなければなりません
  • インデックス 123 はパレットの暗い半分にとどまるべきです
  • インデックス 456 はパレットの明るい半分にとどまるべきです
  • 8色ファミリーレベルのガイドラインとして、インデックス 0 から 3 は全体的にインデックス 4 から 7 より暗いべきです

この推奨はシンボルロジックを変更しません。HCC2D はシンボル構築時に輝度値ではなくパレットインデックスを使用するためです。推奨される暗い下半分/明るい上半分のバランスに違反するパレットでも、デコード可能なシンボルを生成できる場合があります。ただし、そうすることで次の間の意図された関係が弱まります:

  • mask selection 中に使用されるプロキシ
  • 最終レンダリングシンボルの見かけの暗さの分布
  • さまざまなスキャン条件におけるカスタマイズされたパレットの視覚的安定性

暗い対明るいのバランスが保たれていれば、再利用された QR スタイルの mask rules は HCC2D でも合理的かつ有用なヒューリスティックとして機能し続けます。

そのバランスが保たれていない場合:

  • エンコーダーは有効なシンボルを生成できる場合があります
  • デコーダーはそれらのシンボルをデコードできる場合があります
  • しかし選択された mask は、知覚される暗さが同じ構造に従う最終的なカラー配置ではなく、QR スタイルのバイナリプロキシに対して最適化されます

その場合、mask selection は mask が選択されるという狭い意味では機能し、結果として得られるシンボルはデコード可能なままかもしれませんが、QR スタイルのペナルティモデルは実際の HCC2D シンボルの視覚的特性をあまり代表しなくなります。

そのため、カスタマイズされたパレットは下位インデックスに暗い色を、上位インデックスに明るい色を保持すべきです。

6. ペイロードフレーミング

HCC2D ペイロードフレーミングは一つの BYTE セグメントを使用します:

  • セグメントマーカービット:0100
  • カウントフィールド幅:16 ビット(全バージョン、両モード)
  • カウント値:バイト単位のペイロード長
  • ペイロードバイトを MSB 先頭でそのまま付加

論理ペイロードビットストリームは次のとおりです:

0100 || byte_count_16 || payload_bytes

終端ビット、バイトアライメント、パッドバイト、Reed-Solomon パリティ生成、および最終インターリーブは、本仕様が HCC2D 固有の動作を明示的に定義している箇所を除き、QR Code / ISO/IEC 18004:2006 互換のルールに従います。

このフレーミングルールの重要な結果:

  • カウントフィールドはバージョンに関係なく HCC2D では常に16ビットです
  • カウント値はビット数でも文字数でもなく、バイト数です
  • ペイロードバイトは最上位ビット先頭の順序でそのまま付加されます
  • 本仕様は HCC2D シンボルごとに正確に1つの BYTE セグメントを定義します

7. バージョン選択

バージョンが明示的に指定された場合、ペイロードが収まる場合にのみ使用されます。

自動バージョン選択を使用する場合、ペイロードが収まる最小バージョンが選択されます。

特定の HCC2D モード、バージョン、誤り訂正レベルについて:

  • total_codewordsdata_codewordsec_codewords、およびブロックレイアウトはセクション20および21の明示的な HCC2D テーブルで与えられます
  • ペイロードが収まるのは、そのフレーム化ビットストリームを終端処理してちょうど data_codewords バイトにパディングできる場合に限ります

この目的のために、終端処理前のフレーム化ビットストリーム長は:

4 + 16 + 8 * payload_length

ここで 4 は BYTE モードインジケーター、16 は HCC2D バイトカウントフィールド幅です。

ペイロードが収まるのは、そのフレーム化ビットストリームを以下の処理ができる場合です:

  1. 任意に最大4ビットのゼロビットで終端処理
  2. 次のバイト境界までゼロビットでパディング
  3. 正確なデータコードワード容量に達するまで交互パッドバイトでパディング

選択されたモード、バージョン、および誤り訂正レベルで利用可能なデータコードワード数を超えることなく。

8. HCC2D コードワード構成

セクション20および21の HCC2D パラメーターテーブルは規範的です。

誤り訂正構造は、本仕様が HCC2D 固有の動作を明示的に定義している箇所を除き、ISO/IEC 18004:2006 互換のルールに従います。

各テーブル行は以下を提供します:

  • dim:内部寸法
  • align:alignment pattern の中心座標
  • total:コードワード総数
  • data:データコードワード数
  • ec:誤り訂正コードワード数
  • ecpb:ブロックあたりの誤り訂正コードワード数
  • blocks:ブロック多重度とブロックあたりのデータコードワード数

これらの値が、各バージョンおよびレベルの HCC2D コードワード構成を完全に決定します。

hcc2d4 の場合、各バージョンおよびレベルのコードワード総数は、対応する再利用 QR Code / ISO/IEC 18004:2006 互換の基本構造のちょうど 2 倍です。

hcc2d8 の場合、各バージョンおよびレベルのコードワード総数は、対応する再利用 QR Code / ISO/IEC 18004:2006 互換の基本構造のちょうど 3 倍です。

より正確には:

  • hcc2d4 は再利用 QR Code / ISO/IEC 18004:2006 互換のブロックあたりコードワード数を維持し、ブロック多重度を 2 倍にします
  • hcc2d8 は再利用 QR Code / ISO/IEC 18004:2006 互換のブロックあたりコードワード数を維持し、ブロック多重度を 3 倍にします

これが、HCC2D が再利用 QR 互換の Reed-Solomon 手順を引き続き使用しながらビット容量の合計を増加させるメカニズムです。

9. プレーン構築

最終インターリーブコードワードビットストリームを B とします。

プレーン構築は以下の処理が完了した後にのみ実行されます:

  • データコードワードが形成された後
  • 誤り訂正コードワードが生成された後
  • 最終インターリーブが完了した後

HCC2D はプレーンごとに個別の誤り訂正ストリームを作成しません。代わりに、まず1つの結合された最終ビットストリームが生成され、次にストライドによってプレーンに分割されます。

9.1 HCC2D4 — 2プレーン

hcc2d4 は2つのプレーンを使用します。

プレーン抽出は最終ビットストリームからのビットデインターリーブにより行われます:

  • プレーン 0 は位置 0, 2, 4, ... のビットを取ります
  • プレーン 1 は位置 1, 3, 5, ... のビットを取ります

プレーン 0 は MSB プレーンです。プレーン 1 は LSB プレーンです。

データモジュールのカラーインデックス:

color = (plane0_bit << 1) | plane1_bit

等価的に、最終インターリーブビットストリームが B[0], B[1], B[2], ... の場合、シンボルモジュールの色はビットペアによって決定されます:

(B[0], B[1]), (B[2], B[3]), (B[4], B[5]), ...

9.2 HCC2D8 — 3プレーン

hcc2d8 は3つのプレーンを使用します。

プレーン抽出は以下のとおりです:

  • プレーン 0 は位置 0, 3, 6, ... のビットを取ります
  • プレーン 1 は位置 1, 4, 7, ... のビットを取ります
  • プレーン 2 は位置 2, 5, 8, ... のビットを取ります

プレーン 0 は MSB プレーンです。プレーン 2 は LSB プレーンです。

データモジュールのカラーインデックス:

color = (plane0_bit << 2) | (plane1_bit << 1) | plane2_bit

等価的に、最終インターリーブビットストリームが B[0], B[1], B[2], ... の場合、シンボルモジュールの色はビットトリプルによって決定されます:

(B[0], B[1], B[2]), (B[3], B[4], B[5]), (B[6], B[7], B[8]), ...

プレーン順序は規範的であり、並べ替えてはなりません。hcc2d4 では、プレーン 0 が最上位ビット、プレーン 1 が最下位ビットです。hcc2d8 では、プレーン 0 がビット 2、プレーン 1 がビット 1、プレーン 2 がビット 0 です。

10. マスク選択

0..7 の中から選択した1つの mask pattern を、シンボルのすべてのプレーンに使用しなければなりません。

mask selection は、本仕様が HCC2D 固有の動作を明示的に定義している箇所を除き、ISO/IEC 18004:2006 互換のルールに従います。

候補評価における HCC2D 固有の動作:

  • プレーン 0 のみからプロキシビットストリームを構築する
  • そのプレーン0ストリームのすべてのビットを反転させる
  • その反転されたストリームを mask penalty 評価に使用する

mask selection 手順:

  1. 0..7 の各候補 mask index について、その mask を反転プレーン0ビットストリームに適用し、候補内部行列を構築します
  2. その候補行列の mask penalty を計算します
  3. 最小ペナルティの mask index を選択します

タイブレークは最初に出会った最小値、つまり最も小さい mask index によって行われます。

最適な mask index を選択した後は、その1つのインデックスをシンボルのすべてのプレーンで再利用しなければなりません。HCC2D はプレーンごとに異なる mask pattern を選択しません。

11. 内部行列の構築

各プレーンは、選択されたバージョンと選択された共通 mask pattern を使用して内部行列に変換されます。

重要:すべてのプレーンは同じファンクションパターンジオメトリ、同じバージョン、同じフォーマットビット、同じ mask index を使用します。データビットのみが異なります。

本文書は、再利用されている finder pattern、alignment pattern、timing pattern、フォーマット情報、バージョン情報、Reed-Solomon、または mask 計算式を完全に再掲することはしません。

したがって、HCC2D の内部行列構築は、同じジオメトリで行われる QR 互換の行列構築をプレーンごとに繰り返したものと理解できます。プレーンのビットストリームのみが各パスで変わります。

12. ファンクションモジュールの着色

hcc2d4 および hcc2d8 では、データモジュールは上述のマルチプレーンカラーマッピングを使用しますが、ファンクションモジュールは白黒のみでレンダリングされます:

  • そのファンクションモジュール座標でのプレーン 0 が 1 の場合、黒をレンダリングする
  • それ以外の場合は白をレンダリングする

実際には、ファンクションモジュールはすべてのプレーンで同一であるため、これは安全です。

このルールは、finder pattern、alignment pattern、timing pattern、フォーマット情報、および該当する場合のバージョン情報を含む、内部行列の再利用されるすべての構造モジュールに適用されます。

13. Color Palette Pattern

Color Palette Pattern は仕様どおりに正確に実装されなければなりません。デコーダーはそのモジュールをサンプリングしてカラーパレットを再構築します。デコーダーは、先頭エントリが黒で末尾エントリが白であることを除き、パレットカラーの事前知識を持ちません。Color Palette Pattern はそのためデコードに必要です。

内部寸法を N とします。

HCC2D 境界は内部グリッドの外側に一モジュール分配置されます:

  • 上端行は論理行 -1
  • 下端行は論理行 N
  • 左端列は論理列 -1
  • 右端列は論理列 N

HCC2D コードはそれらの論理座標を両軸で +1 シフトし、(N+2) × (N+2) のグリッドを生成します。

Color Palette Pattern は HCC2D の構造的な部分であり、オプションの装飾ではありません。そのジオメトリとカラーインデックス順序はフォーマット定義の一部です。

13.1 Color Palette Pattern の周期

  • hcc2d4:周期 P = 4
  • hcc2d8:周期 P = 8

各辺のアクティブなセグメントはすべての P 個のパレットインデックスを繰り返しサイクルします。各辺の正確な計算式(開始インデックスとサイクル方向を含む)はセクション13.2で示されます。

サイクルは実際の RGB 値ではなく、論理的なパレットインデックスで定義されます。

13.2 Color Palette Pattern カラー計算式

row および col を上記の境界座標系における論理座標とします。

Color Palette Pattern の境界はこれらの正確なルールを使用しなければなりません:

  1. 上端:row == -1 かつ 8 ≤ col < N - 8 の場合、color = (col - 8) mod P
  2. 下端:row == N かつ 8 ≤ col < N の場合、color = (col - 8) mod P
  3. 左端:col == -1 の場合、start = N - 9 とする。8 ≤ row ≤ start の場合、color = (start - row) mod P
  4. 右端:col == N かつ 8 ≤ row < N の場合、color = (row - 8) mod P
  5. 残りのすべての境界セル:color = P - 1

これは、コーナーと finder pattern 近傍の除外スパンを含む非サイクル境界セルが常に最高パレットインデックスになることを意味します:

  • HCC2D4 では 3 → 白
  • HCC2D8 では 7 → 白

13.3 Color Palette Pattern のモード別レプリカ

すべての境界モジュールがパレットカラーを持つわけではありません。コーナーおよび finder pattern 近傍のモジュールは固定の白(color = P − 1、セクション13.2で定義)です。各辺でパレットカラーを循環的に複製するセグメントの長さは:

  • 上端:N − 16 モジュール
  • 下端:N − 8 モジュール
  • 左端:N − 16 モジュール
  • 右端:N − 8 モジュール

HCC2D8(P = 8)でも同じ長さが適用されます。

各辺の正確なシーケンス(開始インデックスと方向を含む)はセクション13.2の計算式によって決まります。上端、下端、右端はスキャン座標と共に増加します。左端ではパレットインデックスが行の増加とともに減少します。各バージョンにおける正確な開始インデックスはセクション13.2の計算式によって決まります。

13.4 デコーダー向けの解釈

デコーダーはこれらのストリップをサンプリングしてパレット統計を復元します。したがって境界はシンボルフォーマットの一部であり、単なる装飾ではありません。

Color Palette Pattern のスパンジオメトリ、サイクル方向、またはフォールバック白セルを変更する実装は非準拠のシンボルを生成します。

14. レンダリング出力座標

このセクションは論理的な HCC2D シンボルのラスタレンダリングを定義します。論理シンボルは特定のピクセルサイズを固定せずに完全に定義されます。

14.1 モジュール座標

HCC2D モードの場合:

  • 完全なモジュールグリッドサイズ = N + 2
  • 内部モジュール (x, y) はレンダリングモジュール (x + 1, y + 1) にマッピングされます

14.2 クワイエットゾーン

ラスタ化された画像は四辺すべてに quiet_zone モジュール分の背景色を追加します。

背景カラーインデックス:

  • HCC2D4:3(白)
  • HCC2D8:7(白)

14.3 ピクセル単位の画像サイズ

F を完全なモジュール寸法とします:

F = N + 2

そして:

  • 画像幅 = (F + 2 * quiet_zone) * scale
  • 画像高さ = 同じ

各論理モジュールは scale × scale の単色正方形としてラスタ化されます。

HCC2D シンボルでは、クワイエットゾーンは最高パレットインデックスを使用します:

  • hcc2d4 では 3
  • hcc2d8 では 7

デフォルトパレットでは、これは白に対応します。

15. デコーダー関連の構造ルール

15.1 HCC2D カウントフィールド

BYTE カウントフィールドは両方の HCC2D モードで 16 ビットです。

15.2 プレーン順序

4色 HCC2D の場合:

  • プレーン 0 はカラー MSB
  • プレーン 1 はカラー LSB

8色 HCC2D の場合:

  • プレーン 0 はカラーの最上位ビット(ビット 2)
  • プレーン 1 はビット 1
  • プレーン 2 はカラーの最下位ビット(ビット 0)

15.3 共通マスク

すべてのプレーンは同じ mask pattern を使用しなければなりません。

これらのルールはデコーダーに関連します。QR スタイルの可変 BYTE カウントフィールド幅、異なるプレーン有意性順序、またはプレーンごとの独立したマスクを前提とするデコーダーは、適合する HCC2D シンボルを正しく解釈できないためです。

16. エンコーディング手順

適合する HCC2D エンコーディング手順は以下のステップを実行しなければなりません:

  1. 入力を検証する。
  2. シンボルファミリーを選択する(hcc2d4 または hcc2d8)。
  3. 誤り訂正レベルを選択する(L/M/Q/H)。
  4. バージョンを選択する:ペイロードが収まる場合は明示的に指定されたバージョンを使用する;それ以外の場合、自動選択を使用するときは、収まる最小バージョンを選択する。
  5. 論理ペイロードビットストリームを構築する:0100 || byte_count_16 || payload_bytes
  6. 選択されたモード、バージョン、レベルの明示的な HCC2D テーブルからファミリー固有の容量とブロックレイアウトを決定する。
  7. 終端とパッドバイトを適用する。
  8. 再利用された誤り訂正構造を使用してパリティを生成しコードワードをインターリーブする。
  9. ストライド抽出によって最終ビットストリームを 2 または 3 プレーンに分割する。
  10. 一つの共通 mask index を選択する:HCC2D モードでは、反転プレーン0のみを使用してペナルティを評価する。
  11. 共通バージョン、EC レベル、マスクを使用してプレーンごとに一つの内部行列を構築する。
  12. データモジュールをレンダリングする:
    • HCC2D4:2つのプレーンビットからのカラーインデックス
    • HCC2D8:3つのプレーンビットからのカラーインデックス
  13. プレーン 0 からファンクションモジュールを黒/白でレンダリングする。
  14. セクション13の座標計算式を使用して正確な一モジュールの Color Palette Pattern 境界を追加する。
  15. 白のクワイエットゾーンを追加する。
  16. ラスタ画像出力が必要な場合はモジュールをピクセルにラスタ化する。

操作の順序が重要です。特に:

  • 誤り訂正とインターリーブはプレーン抽出より前に行われます
  • mask selection は一度だけ行われ、すべてのプレーンで共有されます
  • 内部行列構築は Color Palette Pattern 境界が追加される前に行われます
  • クワイエットゾーンは完全な HCC2D シンボルの外側にあり、論理ペイロード構造の一部ではありません

17. HCC2DF ペイロードラッパー

このセクションは HCC2D コード自体を定義しません。

アプリケーションがファイル名とファイルコンテンツを一緒に運びたい場合に、HCC2D シンボルエンコーディングの前に使用できるオプションのペイロードラッパー形式 HCC2DF を定義します。使用する場合、HCC2DF バイトストリームが本仕様のセクション3、6、16で定義されるペイロードになります。

HCC2DF は HCC2D ペイロードバイトの上に重なるアプリケーションレベルラッパーです。HCC2D シンボルジオメトリまたはカラーロジックの一部ではありません。

17.1 HCC2DF バイトレイアウト

HCC2DF ペイロードバイトは:

  1. ASCII マジック:"HCC2DF" → 6バイト
  2. ラッパーバージョンバイト:0x01
  3. 圧縮フラグバイト:
    • 0x00 = 生コンテンツ
    • 0x01 = zlib 圧縮コンテンツ
  4. ファイル名長:1バイト
  5. ファイル名バイト:UTF-8、正確に filename_length バイト
  6. コンテンツバイト:生ファイルバイトまたは圧縮ファイルバイト

このラッパーはチェックサムフィールド、フッター、またはネストされたメタデータ構造を定義しません。

17.2 ファイル名の制約

  • ファイル名は空であってはなりません
  • ファイル名は最大 127 UTF-8 バイトでなければなりません
  • ファイル名に / を含んではなりません
  • ファイル名に \ を含んではなりません

17.3 圧縮ルール

圧縮を試みる場合、コンテンツは zlib compress2(..., Z_DEFAULT_COMPRESSION) を使用して圧縮されます。

圧縮は以下のすべてが真の場合にのみ使用することを推奨します:

  • 圧縮が成功する
  • 元のファイルサイズが 128 バイト以上である
  • 圧縮後のサイズが元のサイズの 90% より厳密に小さい

それ以外の場合は生ファイルバイトを格納し、圧縮フラグは 0x00 とすることを推奨します。

128 バイトという最小値は、zlib 圧縮が常に導入する固定オーバーヘッドを反映しています。zlib ラッパーだけで 6 バイト(2 バイトのヘッダー + 4 バイトの Adler-32 チェックサム)が加算され、deflate ブロックヘッダーもさらにオーバーヘッドを加えます。格納ブロックは 5 バイト、動的ハフマンブロックは小さい入力で 20〜50 バイトのコードテーブル記述が加わり、合計で現実的なオーバーヘッドは約 36 バイトになります。なぜ 128 バイトが適切なしきい値かを理解するために、2 つのケースを考えます:

  • 64 バイトの入力:90% ルールを通過するための余裕 = 64 × 0.9 − 36 = 21.6 バイト — データは ~34% まで圧縮される必要があり、非常に反復性の高いデータでのみ達成可能です。
  • 128 バイトの入力:余裕 = 128 × 0.9 − 36 = 79 バイト — データは ~62% まで圧縮される必要があり、一般的なテキスト、JSON、URL では現実的な値です。

128 バイト未満では、オーバーヘッドが利用可能な余裕の大部分を消費するため、実際のペイロードでしきい値を下回ることはほぼ見込めません。

このルールは明確なサイズメリットがある場合にのみ圧縮を優先します。実装は別のしきい値(例:95%)を使用することもできますが、推奨されません。しきい値を高くすると、わずか数パーセントしか節約できないデータを圧縮することになり、意味のある効果はありません。生のバイト列をそのまま格納する方がシンプルであり、結果のサイズもほぼ変わらない可能性があります。いずれにせよ、この推奨から外れた実装であっても、圧縮フラグとコンテンツが一貫している限り、公式 HCC2D Decoder でデコード可能なコードを生成できます。フラグが 0x01 の場合はコンテンツが有効な zlib 圧縮データでなければならず、0x00 の場合はコンテンツが生のバイト列でなければなりません。

17.4 HCC2D との範囲の関係

HCC2DF は HCC2D ペイロードバイト内に運ばれるオプションのラッパーです。HCC2D コード構造、カラーエンコーディング、コードワード構成、またはシンボルジオメトリの一部ではありません。

18. HCC2DSTストリーミング転送プロトコル

HCC2DSTは、複数のHCC2Dシンボルを使用して単一のファイルを転送するためのアプリケーション層プロトコルです。各シンボルには、Reed-Solomon符号化されたファイルのシャードが1つ格納され、HCC2DFコンテナ(§17)でカプセル化されます。HCC2DSTはオプションであり、コード構造、色符号化、コードワードの構成、シンボルの幾何学的形状には影響しません。

本プロトコルの完全な技術詳細は、本仕様の将来のバージョンで説明されます。

19. 実装上の推奨事項

以下は実装者向けの助言的な推奨事項です。本仕様の規範的要件ではありません。本仕様全体において、規範的要件は「しなければなりません」および「してはなりません」、推奨事項は「すべきです」および「すべきではありません」、許容される選択肢は「してもかまいません」または同等の許容表現で示します。

推奨誤り訂正レベル: HCC2D コードには、レベル Q または M を使用すべきです。レベル L は一般用途には使用すべきではありません。レベル H は最大の堅牢性を提供しますが、ペイロード容量が大幅に低下します。

推奨モード: 本番環境での使用には hcc2d4 を使用すべきです。hcc2d8 はより大きなペイロード容量を提供しますが、より色彩的に一貫した表示・スキャン環境が必要です。

印刷・本番品質: 本番環境で使用する印刷コードに対しては:

  • ロスレス出力形式(PNG、SVG、または PDF)を使用すべきです。JPEG などの非可逆形式は、モジュールの色を破壊する圧縮アーティファクトを生じさせます。
  • 各モジュールを単色のブロックとして描画すべきです;ハーフトーンは使用すべきではありません。
  • アスペクト比を伸縮または歪曲させるべきではありません。
  • ラスタライズ後にぼかし、アンチエイリアス、リサンプリングを適用すべきではありません。
  • モジュールサイズは少なくとも 0.5 mm(QR Code に対する GS1 目標 X 寸法)とすべきであり、可能であれば約 1 mm が望ましく、信頼性が向上します。モジュールが小さいほど、デコード処理中の色識別精度が低下します。

20. HCC2D4 パラメーター表

以下の値は HCC2D4 のバージョンパラメーターです。これらは完全な HCC2D4 のコードワード総数とブロックレイアウトです。

テーブルフィールドの意味:

  • Vn:HCC2D バージョン番号。
  • dim:一モジュールの HCC2D Color Palette Pattern 境界を除いた、モジュール単位の内部シンボル寸法。
  • align:内部グリッド上の alignment pattern の中心座標。空リストはアライメントパターンが存在しないことを意味します。
  • LMQH:誤り訂正レベル。
  • total:そのバージョンおよび誤り訂正レベルにおけるシンボルのコードワード総数。
  • data:そのバージョンおよび誤り訂正レベルにおけるシンボルのデータコードワード総数。
  • ec:そのバージョンおよび誤り訂正レベルにおけるシンボルの誤り訂正コードワード総数。
  • ecpb:ブロックあたりの誤り訂正コードワード数。
  • blocks=a x ba 個の Reed-Solomon ブロック、各ブロックは b 個のデータコードワードと ecpb 個の誤り訂正コードワードを持ちます。
  • blocks=a x b, c x d:2グループのブロック;最初のグループは各 b データコードワードの a ブロック、2番目のグループは各 d データコードワードの c ブロック。両グループのすべてのブロックは同じ ecpb 個の誤り訂正コードワードを持ちます。

実行例:

V1 dim=21 align=[]
  L: total=52 data=38 ec=14 ecpb=7 blocks=2 x 19

の意味:

  • バージョン 1
  • 内部グリッド 21 × 21
  • アライメントパターンなし
  • 誤り訂正レベル L
  • シンボルのコードワード総数 52
  • データコードワード 38
  • 誤り訂正コードワード 14
  • Reed-Solomon ブロック 2
  • 各ブロックはデータコードワード 19 個と誤り訂正コードワード 7 個を含みます

以下の HCC2D8 表は全く同じフィールドの意味を使用します。

表5 — HCC2D4 バージョンパラメーター
VndimalignECtotaldataececpbblocks
V121L52381472 × 19
M523220102 × 16
Q522626132 × 13
H521834172 × 9
V2256, 18L886820102 × 34
M885632162 × 28
Q884444222 × 22
H883256282 × 16
V3296, 22L14011030152 × 55
M1408852262 × 44
Q1406872184 × 17
H1405288224 × 13
V4336, 26L20016040202 × 80
M20012872184 × 32
Q20096104264 × 24
H20072128168 × 9
V5376, 30L26821652262 × 108
M26817296244 × 43
Q268124144184 × 15, 4 × 16
H26892176224 × 11, 4 × 12
V6416, 34L34427272184 × 68
M344216128168 × 27
Q344152192248 × 19
H344120224288 × 15
V7456, 22, 38L39231280204 × 78
M392248144188 × 31
Q392176216184 × 14, 8 × 15
H392132260268 × 13, 2 × 14
V8496, 24, 42L48438896244 × 97
M484308176224 × 38, 4 × 39
Q484220264228 × 18, 4 × 19
H484172312268 × 14, 4 × 15
V9536, 26, 46L584464120304 × 116
M584364220226 × 36, 4 × 37
Q584264320208 × 16, 8 × 17
H584200384248 × 12, 8 × 13
V10576, 28, 50L692548144184 × 68, 4 × 69
M692432260268 × 43, 2 × 44
Q6923083842412 × 19, 4 × 20
H6922444482812 × 15, 4 × 16
V11616, 30, 54L808648160208 × 81
M808508300302 × 50, 8 × 51
Q808360448288 × 22, 8 × 23
H808280528246 × 12, 16 × 13
V12656, 32, 58L932740192244 × 92, 4 × 93
M9325803522212 × 36, 4 × 37
Q932412520268 × 20, 12 × 21
H9323166162814 × 14, 8 × 15
V13696, 34, 62L1064856208268 × 107
M10646683962216 × 37, 2 × 38
Q10644885762416 × 20, 8 × 21
H10643607042224 × 11, 8 × 12
V14736, 26, 46, 66L1162922240306 × 115, 2 × 116
M1162730432248 × 40, 10 × 41
Q11625226402022 × 16, 10 × 17
H11623947682422 × 12, 10 × 13
V15776, 26, 48, 70L131010462642210 × 87, 2 × 88
M13108304802410 × 41, 10 × 42
Q13105907203010 × 24, 14 × 25
H13104468642422 × 12, 14 × 13
V16816, 26, 50, 74L146611782882410 × 98, 2 × 99
M14669065602814 × 45, 6 × 46
Q14666508162430 × 19, 4 × 20
H1466506960306 × 15, 26 × 16
V17856, 30, 54, 78L16301294336282 × 107, 10 × 108
M163010146162820 × 46, 2 × 47
Q1630734896282 × 22, 30 × 23
H16305661064284 × 14, 34 × 15
V18896, 30, 56, 82L180214423603010 × 120, 2 × 121
M180211266762618 × 43, 8 × 44
Q180279410082834 × 22, 2 × 23
H18026261176284 × 14, 38 × 15
V19936, 30, 58, 86L19821590392286 × 113, 8 × 114
M19821254728266 × 44, 22 × 45
Q198289010922634 × 21, 8 × 22
H198268213002618 × 13, 32 × 14
V20976, 34, 62, 90L21701722448286 × 107, 10 × 108
M21701338832266 × 41, 26 × 42
Q217097012003030 × 24, 10 × 25
H217077014002830 × 15, 20 × 16
V211016, 28, 50, 72, 94L23121864448288 × 116, 8 × 117
M231214288842634 × 42
Q2312102412882834 × 22, 12 × 23
H231281215003038 × 16, 12 × 17
V221056, 26, 50, 74, 98L25162012504284 × 111, 14 × 112
M251615649522834 × 46
Q2516113613803014 × 24, 32 × 25
H251688416322468 × 13
V231096, 30, 54, 78, 102L27282188540308 × 121, 10 × 122
M272817201008288 × 47, 28 × 48
Q2728122815003022 × 24, 28 × 25
H272892818003032 × 15, 28 × 16
V241136, 28, 54, 80, 106L294823486003012 × 117, 8 × 118
M2948182811202812 × 45, 28 × 46
Q2948132816203022 × 24, 32 × 25
H2948102819203060 × 16, 4 × 17
V251176, 32, 58, 84, 110L317625526242616 × 106, 8 × 107
M3176200011762816 × 47, 26 × 48
Q3176143617403014 × 24, 44 × 25
H3176107621003044 × 15, 26 × 16
V261216, 30, 58, 86, 114L341227406722820 × 114, 4 × 115
M3412212412882838 × 46, 8 × 47
Q3412150819042856 × 22, 12 × 23
H3412119222203066 × 16, 8 × 17
V271256, 34, 62, 90, 118L365629367203016 × 122, 8 × 123
M3656225614002844 × 45, 6 × 46
Q3656161620403016 × 23, 52 × 24
H3656125624003024 × 15, 56 × 16
V281296, 26, 50, 74, 98, 122L38423062780306 × 117, 20 × 118
M384223861456286 × 45, 46 × 46
Q384217422100308 × 24, 62 × 25
H3842132225203022 × 15, 62 × 16
V291336, 30, 54, 78, 102, 126L410232628403014 × 116, 14 × 117
M4102253415682842 × 45, 14 × 46
Q410218222280302 × 23, 74 × 24
H4102140227003038 × 15, 52 × 16
V301376, 26, 52, 78, 104, 130L437034709003010 × 115, 20 × 116
M4370274616242838 × 47, 20 × 48
Q4370197024003030 × 24, 50 × 25
H4370149028803046 × 15, 50 × 16
V311416, 30, 56, 82, 108, 134L464636869603026 × 115, 6 × 116
M464629101736284 × 46, 58 × 47
Q4646206625803084 × 24, 2 × 25
H4646158630603046 × 15, 56 × 16
V321456, 34, 60, 86, 112, 138L4930391010203034 × 115
M4930308218482820 × 46, 46 × 47
Q4930223027003020 × 24, 70 × 25
H4930169032403038 × 15, 70 × 16
V331496, 30, 58, 86, 114, 142L5222414210803034 × 115, 2 × 116
M5222326219602828 × 46, 42 × 47
Q5222234228803058 × 24, 38 × 25
H5222180234203022 × 15, 92 × 16
V341536, 34, 62, 90, 118, 146L5522438211403026 × 115, 12 × 116
M5522345020722828 × 46, 46 × 47
Q5522246230603088 × 24, 14 × 25
H55221922360030118 × 16, 2 × 17
V351576, 30, 54, 78, 102, 126, 150L5752461211403024 × 121, 14 × 122
M5752362421282824 × 47, 52 × 48
Q5752257231803078 × 24, 28 × 25
H5752197237803044 × 15, 82 × 16
V361616, 24, 50, 76, 102, 128, 154L6068486812003012 × 121, 28 × 122
M6068382822402812 × 47, 68 × 48
Q6068270833603092 × 24, 20 × 25
H606821083960304 × 15, 128 × 16
V371656, 28, 54, 80, 106, 132, 158L6392513212603034 × 122, 8 × 123
M6392398424082858 × 46, 28 × 47
Q6392285235403098 × 24, 20 × 25
H6392219242003048 × 15, 92 × 16
V381696, 32, 58, 84, 110, 136, 162L672454041320308 × 122, 36 × 123
M6724420425202826 × 46, 64 × 47
Q6724300437203096 × 24, 28 × 25
H6724228444403084 × 15, 64 × 16
V391736, 26, 54, 82, 110, 138, 166L7064562414403040 × 117, 8 × 118
M7064443226322880 × 47, 14 × 48
Q7064316439003086 × 24, 44 × 25
H7064244446203020 × 15, 134 × 16
V401776, 30, 58, 86, 114, 142, 170L7412591215003038 × 118, 12 × 119
M7412466827442836 × 47, 62 × 48
Q7412333240803068 × 24, 68 × 25
H7412255248603040 × 15, 122 × 16

これらのパラメータは、HCC2D カラー符号化乗数を適用することで QR コード(ISO/IEC 18004:2006)から導出されたものです。

21. HCC2D8 パラメーター表

以下の値は HCC2D8 のバージョンパラメーターです。これらは完全な HCC2D8 のコードワード総数とブロックレイアウトです。

表6 — HCC2D8 バージョンパラメーター
VndimalignECtotaldataececpbblocks
V121L78572173 × 19
M784830103 × 16
Q783939133 × 13
H782751173 × 9
V2256, 18L13210230103 × 34
M1328448163 × 28
Q1326666223 × 22
H1324884283 × 16
V3296, 22L21016545153 × 55
M21013278263 × 44
Q210102108186 × 17
H21078132226 × 13
V4336, 26L30024060203 × 80
M300192108186 × 32
Q300144156266 × 24
H3001081921612 × 9
V5376, 30L40232478263 × 108
M402258144246 × 43
Q402186216186 × 15, 6 × 16
H402138264226 × 11, 6 × 12
V6416, 34L516408108186 × 68
M5163241921612 × 27
Q5162282882412 × 19
H5161803362812 × 15
V7456, 22, 38L588468120206 × 78
M5883722161812 × 31
Q588264324186 × 14, 12 × 15
H5881983902612 × 13, 3 × 14
V8496, 24, 42L726582144246 × 97
M726462264226 × 38, 6 × 39
Q7263303962212 × 18, 6 × 19
H7262584682612 × 14, 6 × 15
V9536, 26, 46L876696180306 × 116
M876546330229 × 36, 6 × 37
Q8763964802012 × 16, 12 × 17
H8763005762412 × 12, 12 × 13
V10576, 28, 50L1038822216186 × 68, 6 × 69
M10386483902612 × 43, 3 × 44
Q10384625762418 × 19, 6 × 20
H10383666722818 × 15, 6 × 16
V11616, 30, 54L12129722402012 × 81
M1212762450303 × 50, 12 × 51
Q12125406722812 × 22, 12 × 23
H1212420792249 × 12, 24 × 13
V12656, 32, 58L13981110288246 × 92, 6 × 93
M13988705282218 × 36, 6 × 37
Q13986187802612 × 20, 18 × 21
H13984749242821 × 14, 12 × 15
V13696, 34, 62L159612843122612 × 107
M159610025942224 × 37, 3 × 38
Q15967328642424 × 20, 12 × 21
H159654010562236 × 11, 12 × 12
V14736, 26, 46, 66L17431383360309 × 115, 3 × 116
M174310956482412 × 40, 15 × 41
Q17437839602033 × 16, 15 × 17
H174359111522433 × 12, 15 × 13
V15776, 26, 48, 70L196515693962215 × 87, 3 × 88
M196512457202415 × 41, 15 × 42
Q196588510803015 × 24, 21 × 25
H196566912962433 × 12, 21 × 13
V16816, 26, 50, 74L219917674322415 × 98, 3 × 99
M219913598402821 × 45, 9 × 46
Q219997512242445 × 19, 6 × 20
H21997591440309 × 15, 39 × 16
V17856, 30, 54, 78L24451941504283 × 107, 15 × 108
M244515219242830 × 46, 3 × 47
Q244511011344283 × 22, 45 × 23
H24458491596286 × 14, 51 × 15
V18896, 30, 56, 82L270321635403015 × 120, 3 × 121
M2703168910142627 × 43, 12 × 44
Q2703119115122851 × 22, 3 × 23
H27039391764286 × 14, 57 × 15
V19936, 30, 58, 86L29732385588289 × 113, 12 × 114
M297318811092269 × 44, 33 × 45
Q2973133516382651 × 21, 12 × 22
H2973102319502627 × 13, 48 × 14
V20976, 34, 62, 90L32552583672289 × 107, 15 × 108
M325520071248269 × 41, 39 × 42
Q3255145518003045 × 24, 15 × 25
H3255115521002845 × 15, 30 × 16
V211016, 28, 50, 72, 94L346827966722812 × 116, 12 × 117
M3468214213262651 × 42
Q3468153619322851 × 22, 18 × 23
H3468121822503057 × 16, 18 × 17
V221056, 26, 50, 74, 98L37743018756286 × 111, 21 × 112
M3774234614282851 × 46
Q3774170420703021 × 24, 48 × 25
H37741326244824102 × 13
V231096, 30, 54, 78, 102L409232828103012 × 121, 15 × 122
M4092258015122812 × 47, 42 × 48
Q4092184222503033 × 24, 42 × 25
H4092139227003048 × 15, 42 × 16
V241136, 28, 54, 80, 106L442235229003018 × 117, 12 × 118
M4422274216802818 × 45, 42 × 46
Q4422199224303033 × 24, 48 × 25
H4422154228803090 × 16, 6 × 17
V251176, 32, 58, 84, 110L476438289362624 × 106, 12 × 107
M4764300017642824 × 47, 39 × 48
Q4764215426103021 × 24, 66 × 25
H4764161431503066 × 15, 39 × 16
V261216, 30, 58, 86, 114L5118411010082830 × 114, 6 × 115
M5118318619322857 × 46, 12 × 47
Q5118226228562884 × 22, 18 × 23
H5118178833303099 × 16, 12 × 17
V271256, 34, 62, 90, 118L5484440410803024 × 122, 12 × 123
M5484338421002866 × 45, 9 × 46
Q5484242430603024 × 23, 78 × 24
H5484188436003036 × 15, 84 × 16
V281296, 26, 50, 74, 98, 122L576345931170309 × 117, 30 × 118
M576335792184289 × 45, 69 × 46
Q5763261331503012 × 24, 93 × 25
H5763198337803033 × 15, 93 × 16
V291336, 30, 54, 78, 102, 126L6153489312603021 × 116, 21 × 117
M6153380123522863 × 45, 21 × 46
Q615327333420303 × 23, 111 × 24
H6153210340503057 × 15, 78 × 16
V301376, 26, 52, 78, 104, 130L6555520513503015 × 115, 30 × 116
M6555411924362857 × 47, 30 × 48
Q6555295536003045 × 24, 75 × 25
H6555223543203069 × 15, 75 × 16
V311416, 30, 56, 82, 108, 134L6969552914403039 × 115, 9 × 116
M696943652604286 × 46, 87 × 47
Q69693099387030126 × 24, 3 × 25
H6969237945903069 × 15, 84 × 16
V321456, 34, 60, 86, 112, 138L7395586515303051 × 115
M7395462327722830 × 46, 69 × 47
Q7395334540503030 × 24, 105 × 25
H7395253548603057 × 15, 105 × 16
V331496, 30, 58, 86, 114, 142L7833621316203051 × 115, 3 × 116
M7833489329402842 × 46, 63 × 47
Q7833351343203087 × 24, 57 × 25
H7833270351303033 × 15, 138 × 16
V341536, 34, 62, 90, 118, 146L8283657317103039 × 115, 18 × 116
M8283517531082842 × 46, 69 × 47
Q82833693459030132 × 24, 21 × 25
H82832883540030177 × 16, 3 × 17
V351576, 30, 54, 78, 102, 126, 150L8628691817103036 × 121, 21 × 122
M8628543631922836 × 47, 78 × 48
Q86283858477030117 × 24, 42 × 25
H8628295856703066 × 15, 123 × 16
V361616, 24, 50, 76, 102, 128, 154L9102730218003018 × 121, 42 × 122
M9102574233602818 × 47, 102 × 48
Q91024062504030138 × 24, 30 × 25
H910231625940306 × 15, 192 × 16
V371656, 28, 54, 80, 106, 132, 158L9588769818903051 × 122, 12 × 123
M9588597636122887 × 46, 42 × 47
Q95884278531030147 × 24, 30 × 25
H9588328863003072 × 15, 138 × 16
V381696, 32, 58, 84, 110, 136, 162L10086810619803012 × 122, 54 × 123
M10086630637802839 × 46, 96 × 47
Q100864506558030144 × 24, 42 × 25
H100863426666030126 × 15, 96 × 16
V391736, 26, 54, 82, 110, 138, 166L10596843621603060 × 117, 12 × 118
M105966648394828120 × 47, 21 × 48
Q105964746585030129 × 24, 66 × 25
H10596366669303030 × 15, 201 × 16
V401776, 30, 58, 86, 114, 142, 170L11118886822503057 × 118, 18 × 119
M11118700241162854 × 47, 93 × 48
Q111184998612030102 × 24, 102 × 25
H11118382872903060 × 15, 183 × 16

これらのパラメータは、HCC2D カラー符号化乗数を適用することで QR コード(ISO/IEC 18004:2006)から導出されたものです。

22. 発行に関する注記

本仕様は、QR Code に関連する finder pattern、alignment pattern、timing pattern、誤り訂正、またはマスクルールのコンテンツを意図的に再発行しません。再利用された部分については、QR Code と同じ構造、または ISO/IEC 18004:2006 互換の構造に従うことを述べるのみとし、HCC2D 固有の部分と HCC2D パラメーターテーブルを完全に規定します。

したがって、本文書は以下として読まれるべきです:

  • HCC2D 固有の動作については完全
  • QR Code コンポーネント情報の再発行を避けるために意図的に非網羅的
  • HCC2D によって再利用される QR Code コンポーネントの定義について、QR Code 仕様と共に規範的

附属書A — 例示

以下のシンボルは、本仕様に準拠したHCC2Dバーコードです。各シンボルは公式のHCC2D Decoderアプリでスキャンできます。各図は1モジュールあたり0.80mmで描画されています。これは、本仕様のPDF版を紙に100%スケールで印刷した際の印刷ページ上の実際のサイズに対応しています。

HCC2D4シンボル、カラーパレットモデル1(画面)
図1 — HCC2D4、カラーパレットモデル1(画面)、誤り訂正レベルQ、バージョン4、79バイト、バイトモード、非圧縮
HCC2D4シンボル、カラーパレットモデル2(印刷)
図2 — HCC2D4、カラーパレットモデル2(印刷)、誤り訂正レベルQ、バージョン4、78バイト、バイトモード、非圧縮
HCC2D8シンボル、カラーパレットモデル1(画面)
図3 — HCC2D8、カラーパレットモデル1(画面)、誤り訂正レベルQ、バージョン3、79バイト、バイトモード、非圧縮
HCC2D8シンボル、カラーパレットモデル2(印刷)
図4 — HCC2D8、カラーパレットモデル2(印刷)、誤り訂正レベルQ、バージョン3、78バイト、バイトモード、非圧縮

以下のシンボルはウィリアム・ワーズワースのティンターン・アビー(6,900バイト、zlib圧縮HCC2DFコンテナ)を符号化しており、長文テキストに対するHCC2Dの容量を実証しています。

ティンターン・アビーを符号化したHCC2D4シンボル、カラーパレットモデル1(画面)
図5 — HCC2D4、カラーパレットモデル1(画面)、誤り訂正レベルM、バージョン34、テキスト6,900バイト、zlib圧縮後3,283バイト、HCC2DFヘッダー37バイト、HCC2DF合計3,320バイト。バージョン34のような高バージョンHCC2Dコードを確実にデコードするには、中〜高級スマートフォンの大半に搭載されているオートフォーカス付き1200万画素以上のカメラが必要です。
ティンターン・アビーを符号化したHCC2D4シンボル、カラーパレットモデル2(印刷)
図6 — HCC2D4、カラーパレットモデル2(印刷)、誤り訂正レベルM、バージョン34、テキスト6,900バイト、zlib圧縮後3,283バイト、HCC2DFヘッダー37バイト、HCC2DF合計3,320バイト。バージョン34のような高バージョンHCC2Dコードを確実にデコードするには、中〜高級スマートフォンの大半に搭載されているオートフォーカス付き1200万画素以上のカメラが必要です。
ティンターン・アビーを符号化したHCC2D8シンボル、カラーパレットモデル1(画面)
図7 — HCC2D8、カラーパレットモデル1(画面)、誤り訂正レベルM、バージョン27、テキスト6,900バイト、zlib圧縮後3,283バイト、HCC2DFヘッダー37バイト、HCC2DF合計3,320バイト。バージョン27のような高バージョンHCC2Dコードを確実にデコードするには、中〜高級スマートフォンの大半に搭載されているオートフォーカス付き1200万画素以上のカメラが必要です。
ティンターン・アビーを符号化したHCC2D8シンボル、カラーパレットモデル2(印刷)
図8 — HCC2D8、カラーパレットモデル2(印刷)、誤り訂正レベルM、バージョン27、テキスト6,900バイト、zlib圧縮後3,283バイト、HCC2DFヘッダー37バイト、HCC2DF合計3,320バイト。バージョン27のような高バージョンHCC2Dコードを確実にデコードするには、中〜高級スマートフォンの大半に搭載されているオートフォーカス付き1200万画素以上のカメラが必要です。

— 仕様書終わり —

← HCC2D に戻る