カテゴリー: 未分類

  • 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 セルは誤り検出と推測されますが、このアルゴリズムはまだ特定できていません。

  • Hello world!

    私は、日本の東京都で主にコンピュータエンジニアとして活動する soltia48 (ソルティアよんはち) といいます。

    これまで、個人としてブログを書いたことはありませんが、独り言をつぶやいていた Twitter のサービスの提供が不安定になってきた等のきっかけがあって、このような場を作りました。

    このブログは至ってくだけた性質のもので、基本的に筆者個人に帰属します。

    よろしくお願いします。