以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
[実施形態1]
本実施形態では、電子透かし挿入装置は、原画像に、IDに対応した電子透かしを挿入する。
IDを表す情報ビットは、全部で24ビットあるが、これは、Aグループ、Bグループ及びCグループに分割される。Aグループの情報ビットの数は11であり、Bグループの情報ビットの数は11であり、Cグループの情報ビットの数は2である。1個の情報ビットには、周波数空間にある半円上の1個の点が対応する。半円上に1個の点があれば、空間周波数の性質上、原点を中心として点対称の位置にもう1個の点が存在するが、以下では、半円のみに着目して説明をする。
図1は、IDに対応した電子透かしを周波数領域で見た図である。
図1において、三角で示す6個の点は、カメラ等で撮影された電子透かし入り画像の回転角度及び拡大縮小率を検出するための点である。撮影された画像は、フーリエ変換されるが、その後、これらの6個の点を利用して周波数領域にある点の位置の補正が行われる。すなわち、これらの6個の点を利用して、2次元周波数空間の回転角度及びスケールが補正される。
図1を参照すると、Aグループの11個の情報ビットに対応する点は11個ある。これらの点は、円2の5個の点a1、a2、a3、a4、a5、円3の4個の点a6、a7、a8、a9及び円4の2個の点a10、a11である。
Bグループの11個の情報ビットに対応する点は、11個ある。これらの点は、円2の4個の点b1、b2、b3、b4、円3の3個の点b5、b6、b7及び円4の4個の点b8、b9、b10、b11である。
Cグループの2個の情報ビットに対応する点は、2個ある。これらの点は、円2の1個の点c1及び円3の1個の点c2である。
また、円毎に点をみると、円2には、情報ビットに対応する点が10個あり、円3には、情報ビットに対応する点が8個あり、円4には、情報ビットに対応する点が6個ある。
Aグループの11個の情報ビットに対しては、4個の検査ビットが付加さる。11個の情報ビットと4個の検査ビットが1つのハミング符号語を構成し、これは1誤り訂正能力を有する。1個の情報ビットには、空間周波数にある半円上の1個の点が対応するのに対し、1個の検査ビットには、空間周波数にある半円上の2個の点が対応する。
Aグループの4個の検査ビットに対応する点は8個(すなわち、4対)ある。これらの点は、円1の8個の点a12−1、a12−2、a13−1、a13−2、a14−1、a14−2、a15−1、a15−2である。a12−1とa12−2が一対を成し、これらは相補的な値を取る。すなわち、片方が1であれば他方はゼロである。同様に、a13−1とa13−2が一対を成し、a14−1とa14−2が一対を成し、a15−1とa15−2が一対を成す。
BグループについてもAグループについてと同様であり、Bグループの4個の検査ビットに対応する点は8個(すなわち、4対)ある。これらの点は、円1の8個の点b12−1、b12−2、b13−1、b13−2、b14−1、b14−2、b15−1、b15−2である。b12−1とb12−2が一対を成し、b13−1とb13−2が一対を成し、b14−1とb14−2が一対を成し、b15−1とb15−2が一対を成す。
Cグループの2個の情報ビットに対しては、ハミング符号語を構成するための検査ビットが付加されない。従って、Cグループの2個の情報ビットに対し、ハミング符号語を用いたエラー訂正が行われることはない。
その代わりに、Cグループの2個の情報ビットに対し1個のパリティが付加される。また、1個のパリティに対応する点は2個であり、これらは相補的な値を取る。すなわち、片方が1であれば他方はゼロである。これらの点は、円4の2個の点c3−1、c3−2である。
ハミング符号語を構成するためのパリティとは別に、Aグループの11個の情報ビット、Bグループの11個の情報ビット、Cグループの2個の情報ビットに対し、6個の偶数パリティが付加される。但し、偶数パリティの代わりに奇数パリティを用いてもよい。パリティ計算の基とならない情報ビットはない。すなわち、Aグループの11個の情報ビット、Bグループの11個の情報ビット、Cグループの2個の情報ビットの各々に対しては、少なくとも1つのパリティが付加される。従って、Aグループの11個の情報ビット、Bグループの11個の情報ビット、Cグループの2個の情報ビットのうちの少なくとも1つの情報ビットにおいて誤りが発生しているならば、6個の偶数パリティそれぞれを用いた6個のパリティチェックのうちの少なくとも1つのパリティチェックにおいて誤りが検出されることとなる。
例えば、A〜Cグループには、24個の情報ビットがあるが、この24個の情報ビットを4ビットずつ6分割し、各4ビットに対し1つの偶数パリティを設けるようにしてもよい。また、24個の情報ビットを重複を排除せずにnビット(n>4)ずつ6分割し、各nビットに対し1つの偶数パリティを設けるようにしてもよい。
6個の偶数パリティそれぞれに対しては2個の点が対応する。従って、6個の偶数パリティに対しては、合計で12個の点が対応する。各パリティに対する2個の点は、相補的な値を取る。すなわち、片方が1であれば他方はゼロである。従って、6個の偶数パリティには、円2にある一対の点d1、d2、円2にある一対の点e1、e2、円2にある一対の点f1、f2、円3にある一対の点g1、g2、円3にある一対の点h1、h2及び円3にある一対の点i1、i2が対応する。
Cグループの2個の情報ビットに対する1個の偶数パリティ(この代わりに奇数パリティを用いてもよい。)及びA〜Cグループの24(=11+11+2)個の情報ビットに対する6個の偶数パリティを合わせると7個の偶数パリティが存在することとなるが、この7個の偶数パリティに対して、1個の偶数パリティ(この代わりに奇数パリティを用いてもよい。)が付加される。この偶数パリティに対しては2個の点が対応する。これらは相補的な値を取る。すなわち、片方が1であれば他方はゼロである。7個の偶数パリティに対して付加される偶数パリティ(すなわち、偶数パリティに対して付される偶数パリティ)に対応する点は、一対の点j1、j2である。
次に、原画像に対し、IDに対応する電子透かしを挿入する電子透かし挿入装置について図2を参照して説明する。なお、図2に示す電子透かし挿入装置は、ハードウェア、ソフトウェア又はそれらの組合せにより構成することができる。
図2を参照すると、ID入力部11は、IDを入力する。IDは、例えば、URLに対応したり、関連画像の識別情報を表したりする。
情報点生成部13は、IDを基に情報点を生成する。上述したように、円2に10個の情報点、円3に8個の情報点、円4に6個の情報点が在り、各円において、データ値がゼロである点の数とデータ値が1である点の数が等しくなるようにしている。従って、情報点によって表すことができるIDは、10C5×8C4×6C3=352800通りである。
また、回転角度と拡大縮小率を検出するための点は円1に2個、円4に2個、円5に2個あり、各円において片方の点のデータ値が1であれば、他方の点のデータ値はゼロである。更に、パリティに対応する一対の点は、同一円に存在し、片方の点のデータ値が1であれば、他方の点のデータ値はゼロである。従って、各円に存在するデータ値が1である点の数が定まっている。具体的には、円1に存在するデータ値が1である点の数は9であり、円2に存在するデータ値が1である点の数は9であり、円3に存在するデータ値が1である点の数は7であり、円4に存在するデータ値が1である点の数は5であり、円5に存在するデータ値が1である点の数は1である。このように、データ値が1である点の数が各円において定まっているため、それだけでもエラーに対して強くなっている。なお、データ値が1である点には、所定値の振幅の周波数成分が加算される。
ハミング符号パリティ生成部15は、グループAの11個の情報点に対してハミング符号語の生成式に従って、4個のパリティを生成し、同様に、グループBの11個の情報点に対してハミング符号語の生成式に従って、4個のパリティを生成する。
ハミング符号パリティ点生成部17は、ハミング符号パリティ生成部15により生成された8個のパリティに従って、これらを表す16個の点a12−1、a12−2、・・・、a15−1、a15−2、b12−1、b12−2、・・・、b15−1、b15−2を生成する。
偶数パリティ生成部19は、A〜Cグループに属する24個の情報点を基に、所定のパリティ生成式に従って、6個のパリティを生成する。また、Cグループに属する2個の情報点に対するパリティも生成する。更に、これらの合わせて7個のパリティについてのパリティも生成する。従って、合わせて8個のパリティを生成する。
偶数パリティ点生成部21は、偶数パリティ生成部19が生成した8個のパリティに対応した16個のパリティ点c3−1、c3−2、d1、d2、e1、e2、・・・、j1、j2を生成する。
合成部23は、情報点生成部13が生成した情報点、ハミング符号パリティ点生成部17が生成したパリティ点及び偶数パリティ生成部21が生成したパリティ点を合成する。具体的には、2次元周波数空間においてデータ値が1である点に所定のレベルの周波数成分を配置する。
逆フーリエ変換部25は、合成部23の出力を逆フーリエ変換する。逆フーリエ変換における点の数は、原画像の点の数と等しくてもよいが、原画像よりも少なくして、同一パターンが連続するようにしてもよい。例えば、原画像のサイズが2048×2048であれば、逆フーリエ変換のサイズを2048×2048としてもよいが、例えば、128×128として、128×128のパターンが縦横に16個ずつ連続して、2048×2048の領域を覆うようにしてもよい。
加算部29は、画像入力部27が入力した原画像に対して、逆フーリエ変換部25からの出力を加算して、電子透かし入り画像を生成する。
次に、誤りの検出及び訂正の方法について図3、図4及び図5を参照して説明する。なお、図3に示す電子透かし検出装置は、ハードウェア、ソフトウェア又はそれらの組合せにより構成することができる。
まず、フーリエ変換部51は、読み取った画像をフーリエ変換する(ステップS101)。次に、絶対値算出部53は、各周波数成分の絶対値を求める(ステップS103)。次に、補正部55は、回転角度検出用の点及び拡大縮小率検出用の点を用いて、回転角度及びスケールを補正する(ステップS105)。
次に、点検出部57は、各点の値がゼロであるか1であるかを検出する(ステップS107)。この検出のためには、閾値以上となるレベルの信号が埋め込まれている可能性がある点(データ値が1である可能性がある点)に窓を設け、窓を通過した周波数成分のうち絶対値レベルが閾値以上である点のうちレベルが高い順の所定数の点の値が1であるとする。窓を通過した周波数成分のうち絶対値レベルが閾値以上である点の数が所定数に達しない場合には、閾値を下げて、窓を通過した周波数成分のうち絶対値レベルが閾値以上である点の数が所定数に達するようにするが、或る程度まで下げても窓を通過した周波数成分のうち絶対値レベルが閾値以上である点の数が所定数に達しない場合には、制御部67は、エラーフラグを立ててエラー終了する。
図1の例でいえば、円1にある情報点の数がゼロであり、パリティ点の数が16であり、回転角度・拡大縮小率検出用の点の数が2であるが、パリティ点のうち8個の点が閾値以上となるレベルの信号が埋め込まれている点であり、回転角度・拡大縮小率検出用の点のうち1個の点が閾値以上となるレベルの信号が埋め込まれている点であるため、合わせて9個の点を検出することとなる。例えば、窓を通過した点のうち絶対値レベルが閾値以上である点の数が11個であれば、絶対値レベルが高い順の9個の点に1が埋め込まれているとする。
同様に、円2にある情報点の数が10であり、パリティ点の数が8であり、回転角度・拡大縮小率検出用の点の数がゼロであるが、情報点のうち5個の点が閾値以上となるレベルの信号が埋め込まれている点であり、パリティ点のうち4個の点が閾値以上となるレベルの信号が埋め込まれている点であるため、合わせて9個の点を検出することとなる。例えば、窓を通過した点のうち絶対値レベルが閾値以上である点の数が11個であれば、絶対値レベルが高い順の9個の点に1が埋め込まれているとする。
同様に、円3にある情報点の数が8であり、パリティ点の数が6であり、回転角度・拡大縮小率検出用の点の数がゼロであるが、情報点のうち4個の点が閾値以上となるレベルの信号が埋め込まれている点であり、パリティ点のうち3個の点が閾値以上となるレベルの信号が埋め込まれている点であるため、合わせて7個の点を検出することとなる。例えば、窓を通過した点のうち絶対値レベルが閾値以上である点の数が10個であれば、絶対値レベルが高い順の7個の点に1が埋め込まれているとする。
同様に、円4にある情報点の数が6であり、パリティ点の数が2であり、回転角度・拡大縮小率検出用の点の数が2であるが、情報点のうち3個の点が閾値以上となるレベルの信号が埋め込まれている点であり、パリティ点のうち1個の点が閾値以上となるレベルの信号が埋め込まれている点であり、回転角度・拡大縮小率検出用の点のうち1個の点が閾値以上となるレベルの信号が埋め込まれている点であるため、合わせて5個の点を検出することとなる。例えば、窓を通過した点のうち絶対値レベルが閾値以上である点の数が6個であれば、絶対値レベルが高い順に5個の点に1が埋め込まれているとする。
図4に戻り、上述したように、各点の値が検出できなかった場合には(ステップS109でNO)、制御部67は、エラーフラグを立ててエラー終了する。各点の値が検出できない場合とは、例えば、閾値を或る程度まで下げても、閾値以上となる所定数の点が検出できない場合である。
次に、パリティチェック部59は、データに付加された偶数パリティを用いた、合わせて6個のパリティチェック(点d1、d2に対応するパリティを用いたパリティチェック、点e1、e2に対応するパリティを用いたパリティチェック、点f1、f2に対応するパリティを用いたパリティチェック、点g1、g2に対応するパリティを用いたパリティチェック、点h1、h2に対応するパリティを用いたパリティチェック、点i1、i2に対応するパリティを用いたパリティチェック)を行う(ステップS111)。
全てのパリティチェックにおいて、パリティエラーが検出されなければ(ステップS113でYES)、全てのデータ点に誤りが含まれていない可能性が非常に高いため、ID検出部65は、直ちに、IDの検出を行う(ステップS115)。
ここでIDの検出とは、各円毎の値が1であるデータ点の位置の組合せに基づいたIDの検出のことである。図1の例では、円2にはデータ点が10個あり、円3にはデータ点が8個あり、円4にはデータ点が6個あり、それぞれの円において値が1である点の数と値がゼロである点の数は半々であるため、10C5×8C4×6C3=352800通りのIDのうちの1つのIDを検出する。
他方、少なくとも1つのパリティチェックにおいて、パリティエラーが検出されたならば(ステップS113でNO)、何れかのデータ点に誤りが含まれている可能性もあるが、パリティ自体に誤りが含まれている可能性もある。
そのため、この場合には、パリティ自体に誤りが含まれているかどうかを確認するために、パリティチェック部59は、パリティに付加されたパリティを用いたパリティチェック(点d1、d2に対応するパリティ、点e1、e2に対応するパリティ、点f1、f2に対応するパリティ、点g1、g2に対応するパリティ、点h1、h2に対応するパリティ、点i1、i2に対応するパリティに対して付加されたパリティ(点j1、j2がこれに対応する)を用いたパリティチェック)をおこなう(ステップS117)。
パリティに付加されたパリティを用いたパリティチェックでエラーが検出された場合には(ステップS119でNO)、データに付加されたパリティに誤りがある可能性がある。すなわち、データに誤りが含まれていることがステップS111、S113で確認できたが、これからハミング符号語等による誤り訂正をしても、その後に、誤り訂正が正しく行えたか否かをパリティを用いて検出すること(ステップS133)ができない。従って、この場合には、制御部67は、エラーフラグを立ててエラー終了する。
このようにして、エラー訂正できたとしても、それが誤訂正である確率を低くしている。これは、誤訂正して誤ったIDを検出してしまうと、誤ったコンテンツなどをユーザに提供することとなるが、これが致命的となるからである。他方、エラー終了して、ユーザにそれを知らせれば、ユーザは再度画像の撮影を試みて、その後正しくIDを検出することができる可能性が残される。従って、ステップS119でNOであれば、エラー終了して、誤訂正が検出できない事態を避けることとしている。
パリティに付加されたパリティを用いたパリティチェックでエラーが検出されなかった場合には(ステップS119でYES)、エラー訂正部61は、Aグループ及びBグループでハミング符号語を用いたエラー訂正を試みる(ステップS121)。
Aグループ、Bグループ又はその双方でハミング符号語を用いた誤り訂正ができなかった場合には(具体的には、本例では、ハミング符号語を用いた誤り訂正では1誤り訂正のみしかできないので、2誤りが検出された場合には)(ステップS123でNO)、制御部67は、エラーフラグを立ててエラー終了する。本例では、Aグループで2誤り検出された場合、Bグループで2誤り検出された場合又は双方のグループで2誤り検出された場合には、エラー終了する。
ステップS123でYESである場合とは、Aグループ及びBグループそれぞれにおける誤りの数が1以下であり、ステップS123を経た後には、Aグループ及びBグループの双方に誤りが残っていない場合である。
しかし、まだ、Cグループについては、誤りが残っている可能性がある。また、ステップS121で誤訂正がされた可能性が僅かながらもある。そこで、各円において、値が1のデータが埋め込まれているデータ点の数が正しいか否かをみる(ステップS125)。本例では、円2において値が1となったデータ点の数が5であり、円3において値が1となったデータ点の数が4であり、円4において値が1となったデータ点の数が3であるか否かを確認する。
ステップS125での判断が否定的である場合には、Cグループのデータ値に誤りがある可能性がある。そこで、Cグループに属する点のうちステップS125での判断結果が否定的であった円に属する点のデータ値を反転し、その円において、値が1のデータが埋め込まれている点の数が正しくなったか否かをみる(ステップS127)。具体的には、円2についてステップS125での判断が否定的であれば、点C1のデータ値を反転してみて、円2において、値が1のデータが埋め込まれている点の数が正しくなったか否かをみる。円3についてステップS125での判断が否定的であれば、点C2のデータ値を反転してみて、円3において、値が1のデータが埋め込まれている点の数が正しくなったか否かをみる。円2及び円3についてステップS125での判断が否定的であれば、円2及び円3の双方についてこの操作と判断を行う。
反転してみて、正しくならなかった円があるならば(ステップS127でNO)、ステップS125での判断が否定的となった原因はグループCのデータ値に誤りがあることではなく、グループA、グループB又はその双方に誤りが残っていることを意味するので、制御部67は、エラーフラグを立ててエラー終了する。
反転してみて、正しくなったならば(ステップS127でYES)、ステップS125での判断が否定的となった原因はグループCのデータ値に誤りがあることである可能性が極めて高い。そこで、そうである場合には、Cグループにおいて、反転後のデータ値を用いてパリティチェックを行う(ステップS129)。
ステップS129でのパリティチェックの結果が誤りであれば、ステップS125での判断が否定的となった原因はグループCのデータ値に誤りがあることであると結論づけることができない。すなわち、グループAやグループBに誤りがある可能性がある。このため、ステップS129でのパリティチェックの結果に誤りがあれば(ステップS131でNO)、制御部67は、エラーフラグを立ててエラー終了する。
ステップS129でのパリティチェックの結果が正しければ(ステップS131でYES)、ステップS125での判断結果が否定的となった原因はグループCのデータ値に誤りがあることであるとほぼ確定できる。そこで、再度、ステップS111と同様なパリティチェックを行い(ステップS133)、パリティエラーがなければ、IDの検出を行う(ステップS115)。
また、ステップS125での判断結果が肯定的である場合には、ステップS121で、ハミング符号語を用いた誤り訂正が正しく行われた可能性が高いため、再度、ステップS111と同様なパリティチェックを行い(ステップS133)、パリティエラーがなければ、IDの検出を行う(ステップS115)。
[実施形態2]
実施形態1における電子透かしの周波数空間における分布は図1に示すようなものであるが、実施形態2における電子透かしの周波数空間における分布は図6に示すようなものである。
実施形態1では、24個の情報ビットを11個の情報ビットより構成されるAグループ、11個の情報ビットより構成されるBグループ及び2個の情報ビットより構成されるCグループに分割した。これに対し、実施形態2では、24個の情報ビットを4個の情報ビットより成るAグループ、4個の情報ビットより成るBグループ、4個の情報ビットより成るCグループ、4個の情報ビットより成るDグループ、4個の情報ビットより成るEグループ及び4個の情報ビットより成るFグループに分割する。
実施形態1では、Aグループ及びBグループのみに対しハミング符号語を構成するようにしたが、実施形態2では、Aグループ乃至Fグループの全てに対してハミング符号語を構成するようにする。また、実施形態1では、11個の情報ビットに対し4個の検査ビットを付加することによりハミング符号語を構成したが、実施形態2では、4個の情報ビットに対し3個の検査ビットを付加することによりハミング符号語を構成する。両方とも1誤り訂正能力を有するハミング符号語である。
具体的には、実施形態2では、Aグループの4個の情報ビットに対し3個の検査ビットを付加することによりハミング符号語を構成する。Bグループ乃至Fグループに対しても同様である。
また、実施形態2では、実施形態1とは異なり、ハミング符号語から洩れる情報ビット(実施形態1でのCグループに属するような情報ビット)は存在しない。
図6を参照すると、点a1〜a4は、グループAに属する4個の情報ビットに対応する点である。また、実施形態1と同様に、1個の検査ビットに対しては一対の点が対応する。従って、Aグループに属する3個の検査ビットに対応する点は6個あり、これらは、点a5−1、a5−2、a6−1、a6−2、a7−1、a7−2である。点a5−1と点a5ー2が一対となり、これが1つの検査ビットに対応する。点a5−1と点a5ー2の値は相補的である。すなわち、片方のデータ値が1であれば、他方のデータ値はゼロである。
グループB乃至グループFについても、グループAと同様である。従って、例えば、Bグループの情報ビットに対応する点はb1、b2、b3、b4であり、Bグループの検査ビットに対応する点は、b5−1、b5−2、b6−1、b6−2、b7−1、b7−2である。b5−1及びb5−2は対を成し1つの検査ビットに対応し、b6−1及びb6−2は対を成し1つの検査ビットに対応し、b7−1及びb7−2は対を成し1つの検査ビットに対応する。
次に、偶数パリティについて説明する。但し、上記と同様に偶数パリティの代わりに奇数パリティを用いてもよい。
偶数パリティは、合計で4個生成される。各偶数パリティは、6個の情報ビットに対して設けられる。従って、合計で、24(=4×6)個の情報ビット(a1〜a4、・・・、f1〜f4)を網羅し、偶数パリティが付けられない情報ビットは存在しないこととなる。また、偶数パリティは、別々のハミング符号語の構成要素である情報ビットに対して設けられる。すなわち、或る偶数パリティは、情報ビットai、bj、ck、dl、em、fn(i、j、k、l、m、nは1乃至4の何れかの値)に対して設けられる。
また、1つの偶数パリティに対しては、一つの相補的な点が対応する。図6の例では、点i1、i2が第1の偶数パリティに対応し、点j1、j2が第2の偶数パリティに対応し、点k1、k2が第3の偶数パリティに対応し、点l1、l2が第4の偶数パリティに対応する。
第1の偶数パリティは、点a4、b3、c1、d2、e1、f4に対応する情報ビットを基に算出される。
第2の偶数パリティは、点a3、b4、c2、d1、e4、f1に対応する情報ビットを基に算出される。
第3の偶数パリティは、点a1、b2、c4、d3、e2、f3に対応する情報ビットを基に算出される。
第4の偶数パリティは、点a2、b1、c3、d4、e3、f2に対応する情報ビットを基に算出される。
また、点a1〜a4、b1〜b4、・・・、f1〜f4の分布からわかるように、それぞれの偶数パリティは、可能な限り異なった円にある点に対応する情報ビットを基に算出される。更に、点a1〜a4、b1〜b4、・・・、f1〜f4の分布からわかるように、それぞれの偶数パリティは、可能な限り異なった放射線にある点に対応する情報ビットを基に算出される。このような分布を用いることにより、撮影後の各偶数パリティの値に含まれるエラーができるかぎりランダムになるようにしている。例えば、同一放射線にある点に対応する情報ビットを基に偶数パリティを計算すると、2誤りのために、誤りが検出されない可能性が大きくなってしまうが、上述のような分布を選定することにより、2誤りのために誤りが検出されないことが生ずる可能性を低く抑えることができる。
図6において三角で表す点は、回転角度や拡大縮小を補正するための点であるが、この詳細についての説明は省略する。
次に、原画像に対し、IDに対応する電子透かしを挿入する電子透かし挿入装置について図2を参照して説明する。
図2を参照すると、ID入力部11は、IDを入力する。IDは、例えば、URLに対応したり、関連画像の識別情報を表したりする。
情報点生成部13は、IDを基に情報点を生成する。円1に8個の情報点、円2に10個の情報点、円3に6個の情報点が在り、各円において、データ値がゼロである点の数とデータ値が1である点の数が等しくなるようにしている。従って、情報点によって表すことができるIDは、8C4×10C5×6C3=352800通りである。
また、回転角度と拡大縮小率を検出するための点は円1に2個あり、円3に2個あり、片方の点のデータ値が1であれば、他方の点のデータ値はゼロである。更に、パリティに対応する一対の点は、同一円に存在し、片方の点のデータ値が1であれば、他方の点のデータ値はゼロである。従って、各円に存在するデータ値が1である点の数が定まっている。具体的には、円1に存在するデータ値が1である点の数は14であり、円2に存在するデータ値が1である点の数は12であり、円3に存在するデータ値が1である点の数は10である。このように、データ値が1である点の数が各円において定まっているため、それだけでもエラーに対して強くなっている。なお、データ値が1である点には、所定値の振幅の周波数成分が加算される。
ハミング符号パリティ生成部15は、グループAの4個の情報点に対してハミング符号語の生成式に従って、3個のパリティを生成し、同様に、グループB〜Fそれぞれの4個の情報点に対してハミング符号語の生成式に従って、3個のパリティを生成する。
ハミング符号パリティ点生成部17は、ハミング符号パリティ生成部15により生成された18個のパリティに従って、これらを表す36個の点a5−1、a5−2、a6−1、a6−2、a7−1、a7−2、・・・、f5−1、f5−2、f6−1、f6−2、f7−1、f7−2を生成する。
偶数パリティ生成部19は、A〜Fグループに属する24個の情報点を基に、所定のパリティ生成式に従って、4個のパリティを生成する。
偶数パリティ点生成部21は、偶数パリティ生成部19が生成した4個のパリティに対応した8個のパリティ点i1、i2、j1、j2、k1、k2、l1、l2を生成する。
合成部23は、情報点生成部13が生成した情報点、ハミング符号パリティ点生成部17が生成したパリティ点及び偶数パリティ生成部21が生成したパリティ点を合成する。具体的には、2次元周波数空間においてデータ値が1である点に所定のレベルの周波数成分を配置する。
逆フーリエ変換部25は、合成部23の出力を逆フーリエ変換する。逆フーリエ変換における点の数は、原画像の点の数と等しくてもよいが、原画像よりも少なくして、同一パターンが連続するようにしてもよい。例えば、原画像のサイズが2048×2048であれば、逆フーリエ変換のサイズを2048×2048としてもよいが、例えば、128×128として、128×128のパターンが縦横に16個ずつ連続して、2048×2048の領域を覆うようにしてもよい。
加算部29は、画像入力部27が入力した原画像に対して、逆フーリエ変換部25からの出力を加算して、電子透かし入り画像を生成する。
次に、誤りの検出及び訂正の方法について図3、図7及び図8を参照して説明する。
まず、フーリエ変換部51は、読み取った画像をフーリエ変換する(ステップS201)。次に、絶対値算出部53は、各周波数成分の絶対値を求める(ステップS203)。次に、補正部55は、回転角度検出用の点及び拡大縮小率検出用の点を用いて、回転角度及びスケールを補正する(ステップS205)。
次に、点検出部57は、各点の値がゼロであるか1であるかを検出する(ステップS207)。この検出のためには、閾値以上となるレベルの信号が埋め込まれている可能性がある点(データ値が1である可能性がある点)に窓を設け、窓を通過した周波数成分のうち絶対値レベルが閾値以上である点のうちレベルが高い順の所定数の点の値が1であるとする。窓を通過した周波数成分のうち絶対値レベルが閾値以上である点の数が所定数に達しない場合には、閾値を下げて、窓を通過した周波数成分のうち絶対値レベルが閾値以上である点の数が所定数に達するようにするが、或る程度まで下げても窓を通過した周波数成分のうち絶対値レベルが閾値以上である点の数が所定数に達しない場合には、制御部67は、エラーフラグを立ててエラー終了する。
図6の例でいえば、円1にある情報点の数が8であり、パリティ点の数が18であり、回転角度・拡大縮小率検出用の点の数が2であるが、情報点のうち4個の点が閾値以上となるレベルの信号が埋め込まれている点であり、パリティ点のうち9個の点が閾値以上となるレベルの信号が埋め込まれている点であり、回転角度・拡大縮小率検出用の点のうち1個の点が閾値以上となるレベルの信号が埋め込まれている点であるため、合わせて14個の点を検出することとなる。例えば、窓を通過した点のうち絶対値レベルが閾値以上である点の数が16個であれば、絶対値レベルが高い順の14個の点に1が埋め込まれているとする。
同様に、円2にある情報点の数が10であり、パリティ点の数が14であるが、情報点のうち5個の点が閾値以上となるレベルの信号が埋め込まれている点であり、パリティ点のうち7個の点が閾値以上となるレベルの信号が埋め込まれている点であるため、合わせて12個の点を検出することとなる。例えば、窓を通過した点のうち絶対値レベルが閾値以上である点の数が15個であれば、絶対値レベルが高い順の12個の点に1が埋め込まれているとする。
同様に、円3にある情報点の数が6であり、パリティ点の数が12であり、回転角度・拡大縮小率検出用の点の数が2であるが、情報点のうち3個の点が閾値以上となるレベルの信号が埋め込まれている点であり、パリティ点のうち6個の点が閾値以上となるレベルの信号が埋め込まれている点であり、回転角度・拡大縮小率検出用の点のうち1個の点が閾値以上となるレベルの信号が埋め込まれている点であるため、合わせて10個の点を検出することとなる。例えば、窓を通過した点のうち絶対値レベルが閾値以上である点の数が12個であれば、絶対値レベルが高い順の10個の点に1が埋め込まれているとする。
図7に戻り、上述したように、各点の値が検出できなかった場合には(ステップS209でNO)、制御部67は、エラーフラグを立ててエラー終了する。各点の値が検出できない場合とは、例えば、閾値を或る程度まで下げても、閾値以上となる所定数の点が検出できない場合である。
次に、パリティチェック部59は、データに付加された偶数パリティを用いた、合わせて4個のパリティチェック(点i1、i2に対応するパリティを用いたパリティチェック、点j1、j2に対応するパリティを用いたパリティチェック、点k1、k2に対応するパリティを用いたパリティチェック、点l1、l2に対応するパリティを用いたパリティチェック)を行う(ステップS211)。
何れかのパリティチェックにおいて、パリティエラーが検出されたならば(ステップS213でNO)、ハミング符号語を用いたエラー訂正をするためにステップS221に進む。
全てのパリティチェックにおいて、パリティエラーが検出されなければ(ステップS213でYES)、ハミング符号語を用いたエラー検出を行う(ステップS215)。
パリティを用いたエラー検出においても、ハミング符号語を用いたエラー検出においてもエラーが検出されない場合には(ステップS213でYES、ステップS217でYES)、全てのデータ点に誤りが含まれていない可能性が非常に高いため、ID検出部65は、直ちに、IDの検出を行う(ステップS219)。
ここでIDの検出とは、各円毎の値が1であるデータ点の位置の組合せに基づいたIDの検出のことである。図6の例では、円1にはデータ点が8個あり、円2にはデータ点が10個あり、円3にはデータ点が6個あり、それぞれの円において値が1である点の数と値がゼロである点の数は半々であるため、8C4×10C5×6C3=352800通りのIDのうちの1つのIDを検出する。
ハミング符号語を用いたエラー検出においてエラーが検出されたならば(ステップS217でNO)、ハミング符号語を用いたエラー訂正をするためにステップS221に進む。
ハミング符号語を用いたエラー訂正(ステップS221)においては、6個のハミング符号語のそれぞれについて1誤り訂正を試みる。
いずれかのハミング符号語について、エラー訂正に失敗したならば(具体的には、本例では、ハミング符号語を用いた誤り訂正では1誤り訂正のみしかできないので、2誤りが検出された場合には)(ステップS223でNO)、制御部67は、エラーフラグを立ててエラー終了する。
全てのハミング符号語について、エラー訂正に成功したならば、各円において、データ値が1である点の数が規定値通りであるか否かを調べる(ステップS225)。具体的には、円1については、全部で28個の点のうちの14個の点のデータ値が1であり、円2については、全部で24個の点のうちの12個の点のデータ値が1であり、円3については、全部で20個の点のうちの10個の点のデータ値が1であるか否かを調べる。
ステップS225でのチェック結果が否定的であれば、誤訂正された可能性があるため、制御部67は、エラーフラグを立ててエラー終了する。
ステップS225でのチェック結果が肯定的であれば、再度、ステップS211と同様に、データに付加された偶数パリティを用いた、合わせて4個のパリティチェック(点i1、i2に対応するパリティを用いたパリティチェック、点j1、j2に対応するパリティを用いたパリティチェック、点k1、k2に対応するパリティを用いたパリティチェック、点l1、l2に対応するパリティを用いたパリティチェック)を行う(ステップS227)。
何れかのパリティチェックにおいて、パリティエラーが検出されたならば(ステップS229でNO)、誤訂正された可能性があるため、制御部67は、エラーフラグを立ててエラー終了する。
全てのパリティチェックにおいて、パリティエラーが検出されなければ(ステップS229でYES)、正しく訂正されたと判断できるため、ステップS219に進み、ID検出部65は、IDの検出を行う。
ステップS129でのパリティチェックの結果が誤りであれば、ステップS125での判断が否定的となった原因はグループCのデータ値に誤りがあることであると結論づけることができない。すなわち、グループAやグループBに誤りがある可能性がある。このため、ステップS129でのパリティチェックの結果に誤りがあれば(ステップS131でNO)、制御部67は、エラーフラグを立ててエラー終了する。
ステップS129でのパリティチェックの結果が正しければ(ステップS131でYES)、ステップS125での判断結果が否定的となった原因はグループCのデータ値に誤りがあることであるとほぼ確定できる。そこで、再度、ステップS111と同様なパリティチェックを行い(ステップS133)、パリティエラーがなければ、IDの検出を行う(ステップS115)。
また、ステップS125での判断結果が肯定的である場合には、ステップS121で、ハミング符号語を用いた誤り訂正が正しく行われた可能性が高いため、再度、ステップS111と同様なパリティチェックを行い(ステップS133)、パリティエラーがなければ、IDの検出を行う(ステップS115)。
[実施形態3]
実施形態1及び実施形態2では、2次元周波数空間に複数の円を設け、各円において、データ値が1となりうる点を所定数nだけ所定位置に定め、実際にデータ値が1となる点の数も所定数m(<n)としていた。そして、データ値が1となる点には、所定の非ゼロの振幅となる周波数成分を配置していた。こうすることにより、カメラにより撮影した画像に対し、フーリエ変換と回転角度と拡大縮小率の補正と振幅の算出を行った後に、円上の所定位置の周波数成分の振幅が大きい順に所定数個の点を検出し、それらの点の成すパターンによりIDを復元することができた。
実施形態3は、データ値が1となりうる点を所定数nだけ所定位置に定め、実際にデータ値を1とする点の数も所定数m(<n)とする点においては、実施形態1及び実施形態2と共通する。しかし、実施形態3では、データ値が1となりうる点の位置を円上の位置ではない位置とする。例えば、格子状にn1×n2(=n)個の位置を定め、そのうちm(<n1×n2)個の点をデータ値が1となる点とする。このようにしても、フーリエ変換と回転角度と拡大縮小率の補正と振幅の算出を行った後に、格子上の所定位置の周波数成分の振幅が大きい順に所定数個の点を検出し、それらの点の成すパターンによりIDを復元することができる。