増井さんの
インターフェイスの街角
を読んでずっと以前から気になっていた, QRコードに本来代わるような
Xerox PARCで開発されたデータの画像化法 "DataGlyph" を, 夜中にふと思い立って
C言語でエンコーダとデコーダを簡単に実装してみました。
% glyph ファイル でファイルをエンコードし, % unglyph ファイル
でエンコードされた文字列(改行は任意)をもとの内容に戻します。
EUC専用なので, 端末をEUCモードにしてから実行して下さい。
glyph.c
unglyph.c
やっていることは"ロリロリ変換"と基本的に同じで, データの1/0をそのまま表示
しているだけです。
DataGlyphは, データを何気なく印刷物に潜ませる洗練された方法だなぁ, ということに
感銘を受けていて,
Xeroxのページ
にも説明のPDFがあります。
より詳しくは
こちらのページ
にあり,
とにかく1/0を機械が判別さえできればよいので, 線の太さを変えたり,
色を変えたりすることで, ごく普通の写真や印刷物にも全くわからないようにデータを潜ませる
ことができる技術で, 本当に凄いと思います。
ただこれが広まらず, QRコードのようなあまり美しくない方法が広まっているのは,
QRコードの方が目のようなガイドがあって, ロバストだからでしょうか。
ただ, DataGlyphでも任意に読み取ったうち, どこから読めばデータなのかを自動的に
判定させることは技術的にはできる気がしますので, Xeroxの広報力の問題だったの
かもしれません。残念です。
とはいえ, いつかこの技術が使われないかなあ, と僕は思っています。
こういうコードを書いていると, それでは生のビットではなくてzlibで圧縮
したり, エラー訂正を含めたくなるので, 少なくとも学習用としては面白い課題ですね。