NaviLens コードのデコード方式

NaviLens (ナビレンス) は、視覚障害者向けアプリで、独自の二次元コード NaviLens コードを使用しています。NaviLens コードは、遠距離からでも読み取れることをアピールしており、シアン・マゼンタ・イエロー・ブラック(以下、C/M/Y/K) の 4 色で構成されています。このデコード方法は一般に公開されていません。

NaviLens コード – NaviLens の Web サイトより

外観

NaviLens コードにはいくつかのバリエーションがあるものの、多くは 7×7 のグリッドで構成されており、外周が黒の 1 セルで 5×5 のペイロード部が囲まれています。ここでは、ペイロード部の最も左上のセルを (0, 0), 最も右下のセルを (4, 4) と定義します。また、以下のセルは色が固定されていると見られます。

  • (0, 0): C
  • (0, 4): M
  • (4, 4): Y
  • (4, 0): K
  • (2, 2): C

NaviLens アプリの画面を観察すると、このバリエーションからは 少なくとも 24 bit のデータが得られていることがわかります。また、デバイスをオフラインにすると具体的なメッセージが表示されないことから、メッセージはオンラインで照会されていることがわかります。

NaviLens アプリにおけるデコード結果 – NaviLens の Web サイトより

考察

ペイロード部が 4 色で構成されることから、1 セルが2bit を表現しているものと推測できます。ペイロード部がの 25 セルであるため、実際にエンコードされているデータは固定部を除いて 40 bit と言えます。

検討

インターネット上で NeviLens コードを収集、NaviLens アプリで読み取った値とコードの色を対照してどのセルに各ビット列が割り当てられているかを検討します。

結論

各色へのビットの割当と読み出し位置及び順序は以下のとおりであるとわかりました。

  • C: 0b00
  • M: 0b01
  • Y: 0b10
  • K: 0b11

色が固定でない非データ部の 8 セルは誤り検出と推測されますが、このアルゴリズムはまだ特定できていません。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です