各色の値は0から255の値をとることが可能である。ここで、この値を0と1に対応させる写像を考えてみる。最も単純なものは次式で表される。
Y=f(x)
f:=x mod 2
(modは除算の余りを求める演算子)
こういった写像を用いることにより、任意の点の色情報を0もしくは1の情報に対応づけることが可能である。
次に、埋め込みたい情報が10010110…といった形で与えられていたとすると、画像データの左上隅の画素から順に1bitの情報を1つの点に対応させることとし、画素値が埋め込むデータと一致していればそのまま画素値を採用し、一致していなければ画素値の変更を行い、新しい画素値とする(具体的には、上記の写像f(x)を用いた場合には画素値を1増やすか減らすことになる)。
以上の操作により、情報が埋め込まれた画像データを得ることができる。画像データから、埋め込みデータを取り出す場合には、各点の色の値をf(x)を用いて1と0に復元する操作を行えばよい。実際には、コンピュータ上の情報は全て2進数による表現が可能であるため、埋め込み情報としては任意のもの(たとえば画像データや音声データなど)を用いることができる。しかし、一般に著作権情報の埋め込みの場合にはIDとして、数十バイトの文字や数字が埋め込まれることが多い。
文字 | 10進法表現 | 2進数表現 |
”A” | 65 | 10000001 |
”B” | 66 | 10000010 |
”C” | 67 | 10000011 |
コンピュータの内部では文字コードを用いて表されており、英数字なら8bit、日本語の漢字のような全角文字は16bitの文字コードに対応づけることができる。上図はシフトJISコードによる文字の表現を示している。