以下、本発明による秘密情報出力装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
本実施の形態において、第一画像と第二画像を重ね合わせることで秘密情報を出力する秘密情報出力装置1について説明する。
図1は、本実施の形態における秘密情報出力装置1のブロック図である。
秘密情報出力装置1は、受付部100、元画像格納部101、秘密情報格納部102、変化度取得部103、変化度取得制御部104、第一画像生成部105、第二画像生成部106、画像蓄積部107、画像格納部108、出力部109を備える。
受付部100は、ユーザからの指示やデータ等を受け付ける。指示とは、例えば、第一画像と第二画像とを重ね合わせて出力する指示である。また、指示とは、例えば、第一画像と第二画像とを生成する指示である。
指示等の入力手段は、キーボードやマウスやメニュー画面によるもの等、何でも良い。受付部100は、キーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
元画像格納部101は、元画像を格納し得る。
ここで、元画像とは、いわゆる静止画像であり、いわゆる画像ファイルであってもよい。また、当該画像ファイルのファイル形式は、例えば、JPEG、GIF、PNG、BMPなどであってもよい。また、当該画像ファイルのファイル形式は、透過度を保持できるファイル形式であってもよいし、そうでなくてもよい。また、当該画像のファイル形式は、いわゆる画像ファイルの形式であれば、その形式は問わない。また、元画像が表現する色の階調は、例えば、いわゆるフルカラー、グレースケールなどであってもよい。また、当該色の階調を表現するビット数は、例えば、いわゆる32ビット、24ビット、8ビットなどであってもよい。なお、元画像は、256階調以上の色を保持でき、また、透過度を保持できるファイル形式が好適である。
元画像格納部101は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。また、元画像格納部101に元画像が記憶される過程は問わない。例えば、記録媒体を介して元画像が元画像格納部101で記憶されるようになってもよい。また、通信回線などを介して送信された元画像が元画像格納部101で記憶されるようになってもよい。さらに、入力デバイスを介して入力された元画像が元画像格納部101で記憶されるようになってもよい。
秘密情報格納部102は、秘密情報を格納し得る。
ここで、秘密情報とは、元画像に埋め込む情報である。また、秘密情報は、秘密を示す情報であってもよいし、そうでなくてもよい。また、秘密情報は、テキストや画像などであってもよい。また、秘密情報が画像である場合、当該画像は、テキストの画像であるテキスト画像であってもよいし、図形の画像である図形画像であってもよいし、写真の画像である写真画像であってもよい。また、秘密情報は、その他、画像に埋め込むことができる情報であれば、その形式は問わない。なお、秘密情報は、元画像に埋め込む情報であるので、画像であることが好適である。
また、秘密情報は、元画像に埋め込む情報であるので、秘密情報のサイズは、通常、元画像のサイズよりも小さい。ここで、サイズとは、以下、特に断りのない限り、横幅、縦幅の両方、またはそのどちらかを意味するものとする。
また、秘密情報がテキストである場合、当該テキストをテキスト画像に変換してから、元画像に埋め込むものとする。テキストを画像に変換する処理は、公知の技術であるので、詳細な説明を省略する。なお、当該変換の処理は、後述の第一画像生成部105が行ってもよいし、後述の第二画像生成部106が行ってもよい。また、当該変換の処理は、例えば、秘密情報出力装置1が、秘密情報格納部102に秘密情報を蓄積する秘密情報蓄積部をさらに具備しており、当該秘密情報蓄積部が、秘密情報格納部102に秘密情報を蓄積する際に行ってもよい。
秘密情報格納部102は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。また、秘密情報格納部102に秘密情報が記憶される過程は問わない。例えば、記録媒体を介して秘密情報が秘密情報格納部102で記憶されるようになってもよい。また、通信回線などを介して送信された秘密情報が秘密情報格納部102で記憶されるようになってもよい。さらに、入力デバイスを介して入力された秘密情報が秘密情報格納部102で記憶されるようになってもよい。
変化度取得部103は、元画像の領域中から任意の領域を切り出し、当該領域における変化度を取得する。
ここで、領域とは、画像上の領域であり、例えば、画像上の座標を示す「(10,20)」のような情報で示される領域であってもよい。また、領域は、円であってもよいし、矩形であってもよいし、任意の多角形であってもよい。領域が円である場合は、当該領域は、例えば、「(10,20),30」のように、円の中心座標と、当該座標からの距離(円の半径)を示す情報で示されてもよい。また、領域が矩形である場合は、当該領域は、例えば、「(10,20),(40,60)」のように、矩形の左上の座標と右下の座標を示す情報で示されてもよい。また、領域が任意の多角形である場合は、当該領域は、例えば、「(50,15),(80,30),(65,70),(35,70),(20,30)」のように、多角形の各角の座標を示す情報で示されてもよい。これら、画像上の領域を画像上の座標で示すことは、いわゆる画像処理において一般的であるので、詳細な説明を省略する。
また、任意の領域は、予め決められた領域であってもよいし、秘密情報のサイズで示される領域であってもよい。
また、任意の領域の切り出しとは、画像上の領域を選択することであり、例えば、画像上の任意の領域を示す情報を取得することであってもよい。また、この場合、任意の記憶領域に格納されている領域を示す情報を取得することであってもよい。
また、変化度とは、画像を構成する画素の値(画素値)の変化に関する度合いを示す情報である。変化度は、例えば、画像中の任意の画素について、当該画素の4隣接の画素の画素値との差の絶対値の合計であってもよいし、当該画素の8隣接の画素の画素値との差の絶対値の合計であってもよい。ここで、4隣接の画素とは、任意の画素について、上、下、左、右に隣接する画素のことであり、また、8隣接の画素とは、任意の画素について、上、下、左、右、左上、右上、左下、右下に隣接する画素のことである。また、このようにして算出した変化度を、画素変化度とすると、変化度は、画像中の任意の領域の画素について算出した画素変化度の合計である領域変化度であってもよい。
また、任意の画素における変化度の算出方法は、算出の範囲を8隣接とする場合は、例えば、以下のような方法であってもよい。
(1)(x,y)で示される座標に対応する画素の画素値を取得する。ここで、(x,y)で示される座標に対応する画素を、画素(x,y)とし、当該画素値を画素値(x,y)とする。
(2)(1)で画素値を取得した画素(x,y)の8隣接の画素の画素値を取得する。つまり、このとき、画素値(x−1,y−1)、画素値(x,y−1)、画素値(x+1,y−1)、画素値(x−1,y)、画素値(x+1,y)、画素値(x−1,y+1)、画素値(x,y+1)、画素値(x+1,y+1)を取得する。
(3)(1)で取得した画素値(x,y)と、(2)で取得した8つの画素値の各々との左の絶対値を算出し、合計する。つまり、このとき、「|画素値(x,y)−画素値(x−1,y−1)|+|画素値(x,y)−画素値(x,y−1)|+|画素値(x,y)−画素値(x+1,y−1)|+|画素値(x,y)−画素値(x−1,y)|+|画素値(x,y)−画素値(x+1,y)|+|画素値(x,y)−画素値(x−1,y+1)|+|画素値(x,y)−画素値(x,y+1)|+|画素値(x,y)−画素値(x+1,y+1)|」を計算する。
また、画素値とは、画像を構成する画素が保持する輝度、カラーの色値などである。また、画素値は、画像を構成する画素が保持する値であれば、その内容は問わない。
また、元画像から切り出す任意の領域は、秘密情報の形状そのもので示される領域であってもよいし、秘密情報のサイズで示される領域であってもよい。また、元画像から切り出す任意の領域は、秘密情報が画像である場合は、当該画像のサイズで示される領域であってもよいし、秘密情報がテキストである場合は、当該テキストを画像化した画像のサイズで示される領域であってもよいし、当該テキストが内接する矩形や多角形で示される領域であってもよい。
また、変化度取得部103は、取得した変化度のうち、最大の変化度に対応する領域を示す情報を取得してもよい。この場合、変化度取得部103は、取得した領域を示す情報を任意の記憶領域に格納してもよい。
変化度取得部103は、通常、MPUやメモリ等から実現され得る。変化度取得部103の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、変化度取得部103は、ハードウェア(専用回路)で実現してもよい。
変化度取得制御部104は、変化度取得部103に、切り出す領域を変更させながら2以上の領域の変化度を取得させる。
ここで、切り出す領域の変更は、例えば、以下のような手順で行ってもよい。
(1)元画像の横幅と縦幅を取得する。
(2)秘密情報の横幅と縦幅を取得する。
(3)元画像の横幅から秘密情報の横幅を引いた値である移動横幅を取得する。
(4)元画像の縦幅から秘密情報の縦幅を引いた値である移動縦幅を取得する。
(5)切り出す領域の開始点を、元画像の原点(0,0)から(移動横幅,移動縦幅)の範囲で移動させる。
(6)(5)で移動した開始点から始まる、秘密情報と同一のサイズで示される領域を設定する。
上記の手順において、(6)での領域の設定後、変化度取得制御部104は、変化度取得部103に変化度を取得させる。
また、変化度取得制御部104は、予め決められた条件に合致する変化度に対応する領域を示す情報を取得する。つまり、変化度取得制御部104は、予め決められた条件に合致するほど、画素値の変化が大きい領域を示す情報を取得する。そして、変化度取得制御部104は、予め決められた条件に合致した段階で、切り出す領域を変更させながら2以上の領域の変化度を取得させる処理を終了することは好適である。例えば、変化度取得制御部104は、予め格納している閾値を超える変化度の領域を示す情報を取得してもよい。この場合、元画像の全領域を検査することなく、一部の領域の検査により、秘密情報を埋め込む領域を効率的に決定できる。また、変化度取得部103が取得した2以上の変化度のうち、最大の変化度に対応する領域を示す情報を取得してもよい。この場合、変化度取得制御部104は、取得した領域を示す情報を任意の記憶領域に格納してもよい。
変化度取得制御部104は、通常、MPUやメモリ等から実現され得る。変化度取得制御部104の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、変化度取得制御部104は、ハードウェア(専用回路)で実現してもよい。
第一画像生成部105は、第一画像を生成する。
ここで、第一画像とは、元画像に対して、埋込処理を施した埋込画像であってもよいし、元画像に対して、埋込処理と、反転処理とを施した埋込反転画像であってもよいし、元画像に対して、埋込処理と、半透明化処理とを施した埋込半透明画像であってもよし、元画像に対して、埋込処理と、反転処理と、半透明化処理とを施した埋込反転半透明画像であってもよい。また、元画像に対して施す上記の処理の順序は問わない。つまり、例えば、埋込反転画像であれば、元画像に対して、埋込処理を施してから反転処理を施してもよいし、元画像に対して、反転処理を施してから埋込処理を施してもよい。また、例えば、埋込半透明画像であれば、元画像に対して、埋込処理を施してから半透明化処理を施してもよいし、元画像に対して、半透明化処理を施してから埋込処理を施してもよい。
また、埋込処理とは、秘密情報を埋め込む処理である。埋込処理では、秘密情報を埋め込む前と比較して、秘密情報を埋め込む領域の画素値を、予め決められた数値で変更することで、秘密情報を埋め込んでもよいし、当該領域の画素値を、予め決められた数値の範囲のうちのいずれかの数値でランダムに変更することで、秘密情報を埋め込んでもよい。
ここで、秘密情報を埋め込む領域とは、秘密情報埋込領域と言い、例えば、変化度取得制御部104が取得した情報が示す領域である。また、秘密情報埋込領域は、予め決められた条件に合致する変化度に対応する領域であってもよい。また、具体的には、秘密情報埋込領域は、変化度取得部103が取得した2以上の変化度のうち、最大の変化度に対応する領域であってもよいし、予め決められた領域であってもよい。なお、秘密情報埋込領域を示す情報は、変化度取得制御部104が保持していてもよいし、変化度取得部103が保持していてもよいし、第一画像生成部105が保持していてもよいし、任意の記憶領域に格納されていてもよいし、その場所は問わない。
また、秘密情報埋込領域は、秘密情報の領域である秘密情報領域を含んでいてもよい。また、当該秘密情報領域は、「((50,15),(80,30),(65,70),(35,70),(20,30)),((120,110),(180,110),(180,140),(170,140),(170,120),(130,120),(130,180),(170,180),(170,160),(180,160),(180,190),(120,190))」のように、領域を示す情報の2以上の組み合わせにより示される領域であってもよい。また、秘密情報埋込領域は、秘密情報領域と同一であってもよいし、そうでなくてもよい。
また、予め決められた数値を、ここでは変化量と言うこととすると、当該変化量は、単一の数値でもよいし、数値の範囲でもよい。例えば、変化量が単一の数値である場合は、「10」、「20」などであってもよい。また、変化量が数値の範囲である場合は、「5〜10」、「10〜20」、「+5〜−5」、「+10〜−10」などであってもよい。なお、変化量は、整数であることが好適である。また、変化量は、後述の画素値の変更において、例えば、画素値が輝度値である場合は、当該輝度の変化が比較的小さくなる数値であることが好適である。
また、変化量は、元画像における秘密情報埋込領域内の任意の座標で示される画素の画素値と、当該座標に対応する秘密情報上の画素の画素値とから算出される数値であってもよい。この場合、当該数値は、例えば、以下のような手順で算出されてもよい。
(1)元画像における秘密情報埋込領域内の(x1,y1)の座標で示される画素の画素値を取得する。ここで、取得した画素値を、画素値(x1,y1)とする。
(2)(x1,y1)に対応する秘密情報上の画素を示す座標が(x2,y2)であるとすると、秘密情報上の画素値(x2,y2)を取得する。
(3)画素値(x1,y1)と画素値(x2,y2)の差を算出し、当該差をさらに1/2した数値を変化量とする。
また、変化量は、上記のように、秘密情報埋込領域内の各画素に対して決められた数値であってもよい。つまり、変化量は、1以上の単一の数値から構成されてもよいし、1以上の数値の範囲から構成されてもよい。
なお、変化量は、第一画像生成部105が保持していてもよいし、任意の記憶領域に格納されていてもよいし、その場所は問わない。
また、画素値の変更とは、例えば、変化量が単一の数値である場合は、その数値で、画素値を増加、減少させることであってもよい。また、画素値の変更とは、例えば、変化量が数値の範囲である場合は、当該範囲のうちのいずれかの数値で、画素値を増加、減少させることであってもよい。また、例えば、数値に符号が付与されている場合は、当該数値で、画素値を増加させることであってもよい。また、画素値の変更とは、例えば、変化量が単一の数値である場合は、画素値を、当該数値に変更することであってもよい。また、画素値の変更とは、例えば、変化量が数値の範囲である場合は、画素値を、当該範囲のうちのいずれかの数値に変更することであってもよい。つまり、変化量は、画素値を増加、減少させるための数値、または数値の範囲であってもよいし、画素値を置換するための数値、または数値の範囲であってもよい。
また、埋込処理は、例えば、以下のような処理であってもよい。
(1)変化度取得制御部104が取得した秘密情報埋込領域を示す情報を取得する。
(2)秘密情報を読み込む。
(3)秘密情報埋込領域の範囲の画素を順に進め、読み込んだ秘密情報を参照して、各画素について、秘密情報を埋め込む画素か、秘密情報を埋め込まない画素かの判断を行う。ここで、秘密情報を埋め込む画素を、対象画素と言うこととする。
(4)対象画素の画素値を、予め決められた数値の範囲のいずれかの数値で変更する。
また、埋込処理では、秘密情報を埋め込む前と比較して、秘密情報埋込領域の周辺の予め決められた所定の領域の画素値を、予め決められた数値で変更してもよいし、当該領域の画素値を、予め決められた数値の範囲のうちのいずれかの数値でランダムに変更してもよい。また、埋込処理では、当該領域の画素値に変更を加える数値を、秘密情報を埋め込む領域の画素値に変更を加える数値よりも小さい数値にしてもよい。
ここで、秘密情報埋込領域の周辺の予め決められた所定の領域とは、秘密情報埋込周辺領域と言い、例えば、当該秘密情報埋込領域の周辺の予め決められた領域であって、当該秘密情報埋込領域を含む領域を秘密情報含有周辺領域とする場合、秘密情報含有周辺領域から秘密情報埋込領域を除いた領域であってもよい。また、秘密情報埋込領域が秘密情報領域を含む場合、情報含有周辺領域から秘密情報領域を除いた領域であってもよい。なお、秘密情報含有周辺領域を示す情報は、変化度取得部103が取得した秘密情報埋込領域を示す情報に、予め決められた数値を加算することによって取得してもよいし、予め決められていてもよい。また、秘密情報含有周辺領域を示す情報は、変化度取得部103が保持していてもよいし、第一画像生成部が保持していてもよいし、任意の記憶領域に格納されていても良いし、その場所は問わない。
また、埋込処理は、秘密情報を埋め込む周辺の予め決められた領域の画素値を変更する場合は、例えば、以下のような処理であってもよい。
(1)変化度取得部103が取得した秘密情報埋込領域を示す情報を取得する。
(2)(1)で取得した秘密情報埋込領域を示す情報に、予め決められた数値を加算することで、秘密情報含有周辺領域を示す情報を取得する。
(3)秘密情報を読み込む。
(4)秘密情報含有周辺領域の範囲の画素を順に進め、各画素について、秘密情報埋込領域内の画素であるのか、秘密情報埋込領域外(秘密情報埋込周辺領域内)の画素であるのかの判断を行う。
(5)(4)において、秘密情報埋込領域内の画素である場合、読み込んだ秘密情報を参照して、秘密情報を埋め込む画素か、その周辺領域の画素かの判断を行う。ここで、秘密情報を埋め込む画素を、対象画素と言うこととする。
(6)対象画素の画素値を、予め決められた数値の範囲(範囲1)のいずれかの数値で変更する。また、周辺領域の画素の画素値を、予め決められた数値の範囲(範囲2)のいずれかの数値で変更する。ただし、通常、範囲1の数値は、範囲2の数値より大きい。
また、反転処理とは、画像の画素値を反転する処理である。つまり、反転処理とは、通常、いわゆる画像処理における輝度反転の処理であり、色諧調反転、ネガポジ変換などと呼ばれる処理である。反転処理は、公知の技術であるので、詳細な説明は省略する。
また、半透明化処理とは、画像の透明度を上げる処理である。半透明化処理における透明の度合いは、50%前後が好適であるが、問わない。例えば、透明の度合いは、40%〜60%程度でもよい。つまり、半透明とは、透明度が半分であるとは限らない。透明の度合いは、20%〜80%程度でもよい場合もあり得る。半透明化処理は、公知の技術であるので、詳細な説明は省略する。
また、第一画像生成部105が、埋込画像、埋込反転画像、埋込半透明画像、埋込反転半透明画像のいずれの画像を生成するかは、予め決められていてもよいし、そうでなくてもよい。また、第一画像生成部105が生成する画像が予め決められている場合は、いずれの画像を生成するかを示す情報は、任意の記憶領域に格納されていてもよい。また、第一画像生成部105が生成する画像が予め決められていない場合は、何れの画像を生成するかを示す情報は、外部から与えられてもよい。
第一画像生成部105は、通常、MPUやメモリ等から実現され得る。第一画像生成部105の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、第一画像生成部105は、ハードウェア(専用回路)で実現してもよい。
第二画像生成部106は、第二画像を生成する。
ここで、第二画像とは、元画像に対して、反転処理と、半透明化処理を施した反転半透明画像であってもよいし、元画像に対して、半透明化処理を施した半透明画像であってもよいし、元画像に対して、反転処理を施した反転画像であってもよいし、元画像であってもよい。また、元画像に対して施す上記の処理の順序は問わない。つまり、例えば、反転半透明画像であれば、元画像に対して、反転処理を施してから半透明化処理を施してもよいし、元画像に対して、半透明化処理を施してから反転処理を施してもよい。なお、第二画像は元画像でもよい。この場合、第二画像生成部106は、元画像に対して何もしない(NOPである)。
なお、反転処理、半透明化処理については、上述したので、その説明を省略する。
また、第二画像生成部106が、反転半透明画像、半透明画像、反転画像のいずれの画像を生成するかについては、第一画像生成部105と同様であるので、その説明を省略する。
第二画像生成部106は、通常、MPUやメモリ等から実現され得る。第二画像生成部106の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、第二画像生成部106は、ハードウェア(専用回路)で実現してもよい。
なお、第一画像生成部105と第二画像生成部106、およびそれぞれが生成する第一画像と第二画像は、便宜上区別しているだけであって、どちらがどちらであってもよい。つまり、第一画像生成部105が第二画像を生成してもよいし、第二画像生成部106が第一画像を生成してもよい。また、例えば、秘密情報出力装置1は、第一画像生成部105と第二画像生成部106の替わりに、画像生成部(図示せず)を備えており、当該画像生成部が、第一画像と第二画像を生成してもよい。
また、第一画像と第二画像は、同じ元画像から生成される画像であり、埋込処理と、反転処理と、半透明化処理のいずれかの処理が0または1以上施された画像である。また、第一画像と第二画像に施された処理は、通常、重複しないものとする。つまり、例えば、第一画像が埋込画像であるときは、第二画像は反転半透明画像であり、第一画像が埋込反転半透明画像であるときは、第二画像は元画像であるということである。これは、第一画像生成部105と第二画像生成部106が、それぞれ第一画像と第二画像を生成する場合においても同様である。つまり、第一画像生成部105が埋込反転半透明画像である第一画像を生成するときは、第二画像生成部106は元画像である第二画像を生成するということである。
また、第一画像と第二画像は、同じ元画像から生成されていれば、サイズは異なっていてもよい。この場合、例えば、第一画像が埋込画像で、第二画像が反転半透明画像であるとすると、例えば、第一画像は、元画像に対して埋込処理が施された画像であり、第二画像は、元画像の一部を切り取った切取画像に対して、反転処理と半透明化処理が施された画像であってもよい。なお、この場合、元画像から切り取る領域は、秘密情報埋込領域を含むものとする。
画像蓄積部107は、第一画像と第二画像とを、画像格納部108に蓄積する。
画像蓄積部107は、通常、MPUやメモリ等から実現され得る。画像蓄積部107の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、画像蓄積部107は、ハードウェア(専用回路)で実現してもよい。
画像格納部108は、第一画像と第二画像とを格納し得る。
画像格納部108は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。また、画像格納部108に第一画像と第二画像が記憶される過程は問わない。例えば、記録媒体を介して第一画像と第二画像が画像格納部108で記憶されるようになってもよい。また、通信回線などを介して送信された第一画像と第二画像が画像格納部108で記憶されるようになってもよい。さらに、入力デバイスを介して入力された第一画像と第二画像が画像格納部108で記憶されるようになってもよい。
出力部109は、第一画像と第二画像とを重ね合わせて出力する。出力部109は、第一画像と第二画像とを重ね合わせて出力する指示を受付部100が受け付けた場合に、第一画像と第二画像とを重ね合わせて出力することは好適である。
ここで、重ね合わせとは、2以上の画像を重ね合わせることであり、いわゆる画像処理における重ね合わせの処理である。画像の重ね合わせの処理は、公知の技術であるので、詳細な説明は省略する。また、当該重ね合わせの処理においては、第一画像と第二画像のうち、半透明化処理が施されていない画像の上に、半透明化処理が施された画像を重ね合わせるものとする。
出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。なお、送信や蓄積、処理結果の引渡しについては、出力対象が最終的にユーザに提示されるものとする。
出力部109は、ディスプレイなどの出力デバイスを含むと考えてもよいし、含まないと考えてもよい。出力部109は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイスなどで実現され得る。
次に、秘密情報出力装置1の動作について説明する。図2は、秘密情報出力装置1の全体動作を示すフローチャートである。
(ステップS201)変化度取得部103は、元画像格納部101に格納されている元画像を取得する。
(ステップS202)変化度取得部103は、秘密情報格納部102に格納されている秘密情報を取得する。
(ステップS203)変化度取得部103と変化度取得制御部104は、元画像における秘密情報埋込領域を取得する。この処理の詳細については、図3のフローチャートを用いて説明する。
(ステップS204)第一画像生成部105は、第一画像を生成する。この処理の詳細については、図4のフローチャートを用いて説明する。
(ステップS205)第二画像生成部106は、第二画像を生成する。この処理の詳細については、図5のフローチャートを用いて説明する。
(ステップS206)出力部109は、第一画像と第二画像とを重ね合わせて出力し、処理を終了する。
なお、図2のフローチャートにおいて、受付部100がユーザの指示を受け付けた後、第一画像および第二画像の生成を行うことは好適である。また、受付部100がユーザの指示を受け付けた後、第一画像と第二画像とを重ね合わせて出力することは好適である。
図3は、図2のフローチャートのステップS203の、秘密情報埋込領域取得処理を示すフローチャートである。
(ステップS301)変化度取得部制御部104は、ステップS201とステップS202で取得した元画像と秘密情報のサイズから、移動横幅と移動縦幅を取得する。
(ステップS302)変化度取得制御部104は、最大の変化度を格納する変数a(以下、最大変化度a)に0を代入する。
(ステップS303)変化度取得制御部104は、カウンタyに0を代入する。
(ステップS304)変化度取得制御部104は、カウンタxに0を代入する。
(ステップS305)変化度取得部103は、xとyで示される元画像上の座標を開始点とする秘密情報のサイズで示される領域の変化度である変化度xyを取得する。
(ステップS306)変化度取得制御部104は、ステップS305で取得した変化度xyが、最大変化度aよりも大きいか否かを判断する。大きい場合は、ステップS307に進み、そうでない場合は、ステップS308に進む。
(ステップS307)最大変化度aに、ステップS305で取得した変化度xyを代入する。
(ステップS308)変化度取得制御部104は、xが移動横幅と等しいか否かを判断する。等しい場合は、ステップS309に進み、そうでない場合は、ステップS310に進む。
(ステップS309)変化度取得制御部104は、yが移動縦幅と等しいか否かを判断する。等しい場合は、上位処理にリターンし、そうでない場合は、ステップS311に進む。
(ステップS310)変化度取得制御部104は、カウンタxを1インクリメントし、ステップS305に戻る。
(ステップS311)変化度取得制御部104は、カウンタyを1インクリメントし、ステップS304に戻る。
図4は、図2のフローチャートのステップS204の、第一画像生成処理を示すフローチャートである。
(ステップS401)第一画像生成部105は、元画像に対して、埋込処理を施し、埋込画像を生成する。この処理の詳細については、図6のフローチャートを用いて説明するする。
(ステップS402)第一画像生成部105は、生成する第一画像が埋込画像であるか否かを判断する。埋込画像である場合は、ステップS408に進み、そうでない場合は、ステップS403に進む。
(ステップS403)第一画像生成部105は、生成する第一画像が埋込半透明画像であるか否かを判断する。埋込半透明画像である場合は、ステップS405に進み、そうでない場合は、ステップS404に進む。
(ステップS404)第一画像生成部105は、ステップS401で生成した埋込画像に対して、反転処理を施し、埋込反転画像を生成する。
(ステップS405)第一画像生成部105は、ステップS401で生成した埋込画像に対して、半透明化処理を施し、埋込半透明画像を生成する。
(ステップS406)第一画像生成部105は、生成する第一画像が埋込反転画像であるか否かを判断する。埋込反転画像である場合は、ステップS408に進み、そうでない場合は、ステップS407に進む。
(ステップS407)第一画像生成部105は、ステップS404で生成した埋込反転画像に対して、半透明化処理を施し、埋込反転半透明画像を生成する。
(ステップS408)画像蓄積部107は、第一画像生成部105が生成した第一画像を、画像格納部108に蓄積し、上位処理にリターンする。
図5は、図2のフローチャートのステップS205の、第二画像生成処理を示すフローチャートである。
(ステップS501)第二画像生成部106は、生成する第二画像が元画像であるか否かを判断する。元画像である場合は、ステップS507に進み、そうでない場合は、ステップS502に進む。
(ステップS502)第二画像生成部106は、生成する第二画像が半透明画像であるか否かを判断する。半透明画像である場合は、ステップS504に進み、そうでない場合は、ステップS503に進む。
(ステップS503)第二画像生成部106は、元画像に対して、反転処理を施し、反転画像を生成する。
(ステップS504)第二画像生成部106は、元画像に対して、半透明化処理を施し、半透明画像を生成する。
(ステップS505)第二画像生成部106は、生成する第二画像が反転画像であるか否かを判断する。反転画像である場合は、ステップS507に進み、そうでない場合は、ステップS506に進む。
(ステップS506)第二画像生成部106は、ステップS503で生成した反転画像に対して、半透明化処理を施し、反転半透明画像を生成する。
(ステップS507)画像蓄積部107は、第二画像生成部106が生成した第二画像を、画像格納部108に蓄積し、上位処理にリターンする。
図6は、図4のフローチャートのステップS401の、埋込処理を示すフローチャートである。
(ステップS601)第一画像生成部105は、ステップS203で取得した秘密情報埋込領域を示す情報を取得する。
(ステップS602)第一画像生成部105は、ステップS601で取得した秘密情報埋め込み領域を示す情報に、予め決められた数値を加算することで、秘密情報含有周辺領域を示す情報を取得し、当該秘密情報含有周辺領域を示す情報と、秘密情報埋込領域を示す情報とから、秘密情報埋込周辺領域を示す情報を取得する。
(ステップS603)第一画像生成部105は、ステップS602で取得した秘密情報埋め込み周辺領域を示す情報から、当該領域の横幅である移動横幅と、当該領域の縦幅である移動縦幅を取得する。
(ステップS604)第一画像生成部105は、カウンタyに0を代入する。
(ステップS605)第一画像生成部105は、カウンタxに0を代入する。
(ステップS606)第一画像生成部105は、xとyで示される元画像上の座標に対応する画素である画素(x,y)が、秘密情報埋込領域内であるか否かを判断する。秘密情報埋込領域内である場合は、ステップS607に進み、そうでない場合は、ステップS608に進む。
(ステップS607)第一画像生成部105は、任意の記憶領域に格納されている秘密情報埋込領域内の画素値を変更する数値の範囲のうちのいずれかの数値をランダムに取得し、当該数値を画素(x,y)の画素値に加算することで、画素(x,y)の画素値を変更する。
(ステップS608)第一画像生成部105は、任意の記憶領域に格納されている秘密情報埋込領域外の画素値を変更する数値の範囲のうちのいずれかの数値をランダムに取得し、当該数値を画素(x,y)の画素値に加算することで、画素(x,y)の画素値を変更する。
(ステップS609)第一画像生成部105は、カウンタxが移動横幅と等しいか否かを判断する。等しい場合は、ステップS610に進み、そうでない場合は、ステップS611に進む。
(ステップS610)第一画像生成部105は、カウンタyが移動縦幅と等しいか否かを判断する。等しい場合は、上位処理にリターンし、そうでない場合は、ステップS612に進む。
(ステップS611)第一画像生成部105は、カウンタxを1インクリメントする。
(ステップS612)第一画像生成部105は、カウンタyを1インクリメントする。
なお、図4のフローチャートにおいて、まず、埋込画像、埋込反転画像、埋込半透明画像、埋込反転半透明画像のいずれの画像を生成するのかを判断し、その判断結果に従い、埋込処理、反転処理、半透明化処理を行ってもよい。
また、図5のフローチャートにおいても、図4のフローチャートと同様に、まず、反転画像、半透明画像、反転半透明画像、元画像のいずれの画像を生成するのかを判断し、その判断結果に従い、反転処理、半透明化処理を行ってもよい。
次に、秘密情報出力装置1の動作の具体例について説明する。
(具体例1)
本具体例において、元画像格納部101には、図7の元画像が格納されており、秘密情報格納部102には、図8の秘密情報が格納されているものとする。なお、当該秘密情報は、「COPY」のテキストを画像化したものである。また、第一画像生成部105が生成する第一画像は、埋込画像であり、第二画像生成部106が生成する第二画像は、反転半透明画像であるものとする。また、第一画像生成部105が元画像に対して埋込処理を施す際には、画素の輝度値を固定の数値で変更することで、秘密情報を埋め込むものとする。
まず、変化度取得部103は、元画像格納部101に格納されている図7の元画像と、秘密情報格納部102に格納されている図8の秘密情報を取得する。
次に、変化度取得制御部104は、変化度取得部103が取得した元画像と秘密情報を基に、秘密情報を埋め込む秘密情報埋込領域を取得し、「(100,300),(170,324)」の座標情報で示される領域を取得したものとする。そして、変化度取得制御部104は、当該座標情報を、任意の記憶領域に格納する。
次に、第一画像生成部105は、変化度取得部103が取得した元画像と秘密情報を取得する。また、任意の記憶領域から、秘密情報埋込領域を示す座標情報を取得する。そして、第一画像生成部105は、当該座標情報を基に、元画像に対して秘密情報の埋込処理を施し、図9の埋込画像を生成したものとする。
次に、第二画像生成部106は、変化度取得部103が取得した元画像を取得する。そして、第二画像生成部106は、元画像に対して反転処理と半透明化処理を施し、図10の反転半透明画像を生成したものとする。
次に、画像蓄積部107は、第一画像生成部105が生成した図9の埋込画像である第一画像と、第二画像生成部106が生成した図10の反転半透明画像である第二画像を、画像格納部108に蓄積する。
次に、ユーザは、マウスを用いて、第一画像と第二画像を重ね合わせる。そして、受付部100は、ユーザから、第一画像と第二画像の移動の指示(重ね合わせの指示)を受け付ける。
次に、出力部109は、画像格納部108に格納されている第一画像と第二画像を取得し、第二画像を第一画像の上に重ね合わせ、図11の画像(埋込+反転半透明画像)を出力する。
(具体例2)
本具体例において、元画像格納部101には、図12の元画像が格納されており、秘密情報格納部102には、図8の秘密情報が格納されているものとする。なお、当該秘密情報は、「COPY」のテキストを画像化したものである。また、第一画像生成部105が生成する第一画像は、埋込反転画像であり、第二画像生成部106が生成する第二画像は、反転画像であるものとする。また、第一画像生成部105が元画像に対して埋込処理を施す際には、元画像の輝度値を予め決められた範囲のランダムな数値で変更することで、秘密情報を埋め込むものとする。また、第一画像生成部105が埋込画像を生成する際の秘密情報埋込周辺領域は、元画像上の「(0,0),(200,200)」の座標情報で示される領域であるものとする。
まず、変化度取得部103は、元画像格納部101に格納されている図12の元画像と、秘密情報格納部102に格納されている図8の秘密情報を取得する。
次に、変化度取得制御部104は、変化度取得部103が取得した元画像と秘密情報を基に、秘密情報を埋め込む秘密情報埋込領域を取得し、「(50,50),(120,74)」の座標情報で示される領域を取得したものとする。そして、変化度取得制御部104は、当該座標情報を、任意の記憶領域に格納する。
次に、第一画像生成部105は、変化度取得部103が取得した元画像と秘密情報を取得する。また、任意の記憶領域から、秘密情報埋込領域を示す座標情報を取得する。そして、第一画像生成部105は、当該座標情報を基に、元画像に対して秘密情報の埋込処理を施し、さらに、反転処理を施し、図13の埋込反転画像を生成したものとする。
次に、第二画像生成部106は、変化度取得部103が取得した元画像を取得する。そして、第二画像生成部106は、元画像を、「(0,0),(200,200)」の座標情報で示される領域で切り抜き、当該切り抜きにより取得できた画像に対して半透明化処理を施し、図14の半透明画像を生成したものとする。
次に、画像蓄積部107は、第一画像生成部105が生成した図13の埋込反転画像である第一画像と、第二画像生成部106が生成した図14の半透明画像である第二画像を、画像格納部108に蓄積する。
次に、ユーザは、マウスを用いて、第一画像と第二画像を重ね合わせる。そして、受付部100は、ユーザから、第一画像と第二画像の移動の指示(重ね合わせの指示)を受け付ける。
次に、出力部109は、画像格納部108に格納されている第一画像と第二画像を取得し、第二画像を第一画像の上に重ね合わせ、図15の画像(埋込反転+半透明画像)を出力する。
以上、本実施の形態による秘密情報出力装置1によれば、元画像に対して秘密情報を埋め込み、また、埋め込んだ秘密情報を検出することができる。
なお、本実施の形態において、秘密情報埋込領域等は、秘密情報が図16のような図形画像である場合は、例えば、図17や図18の領域であってもよい。つまり、図17の左図のように、秘密情報で示される図形の形状そのもので示される領域を、秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域を、秘密情報埋込周辺領域、元画像の全領域を、秘密情報含有周辺領域としてもよい。また、つまり、図17の右図のように、秘密情報で示される図形が内接する矩形で示される領域を、秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域を、秘密情報埋込周辺領域、元画像の全領域を、秘密情報含有周辺領域としてもよい。この場合、秘密情報埋込領域内の、秘密情報で示される図形の形状そのもので示される領域以外の領域は、秘密情報埋込周辺領域としてもよい。また、つまり、図18の左図のように、秘密情報で示される図形の形状そのもので示される領域を、秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域である元画像の全領域を、秘密情報埋込周辺領域としてもよい。また、つまり、図18の右図のように、秘密情報で示される図形が内接する矩形で示される領域を、秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域である元画像の全領域を、秘密情報埋込周辺領域としてもよい。この場合、秘密情報埋込領域内の、秘密情報で示される図形の形状そのもので示される領域以外の領域は、秘密情報埋込周辺領域としてもよい。
また、秘密情報埋込領域等は、秘密情報が図19のような、いわゆる背景を含む図形画像である場合も、図17や図18の領域であってもよい。つまり、図17の右図のように、秘密情報の形状そのもので示される領域を、秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域を、秘密情報埋込周辺領域、元画像の全領域を、秘密情報含有周辺領域としてもよい。この場合、秘密情報埋込領域内の、秘密情報の背景部分に該当する領域は、秘密情報周辺領域としてもよい。また、つまり、図17の左図のように、秘密情報が含む図形の形状そのもので示される領域を、秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域を、秘密情報埋込周辺領域、元画像の全領域を、秘密情報含有周辺領域としてもよい。また、つまり、図18の右図のように、秘密情報の形状そのもので示される領域を秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域である元画像の全領域を、秘密情報埋込周辺領域としてもよい。この場合、秘密情報埋込領域内の、秘密情報の背景部分に該当する領域は、秘密情報周辺領域としてもよい。また、つまり、図18の左図のように、秘密情報が含む図形の形状そのもので示される領域を、秘密情報埋込領域、当該秘密情報埋込領域の周辺の領域である元画像の全領域を、秘密情報埋込周辺領域としてもよい。
(実施の形態2)
本実施の形態において、第一画像と第二画像を重ね合わせることで秘密情報を出力する秘密情報出力装置1について説明する。
図20は、本実施の形態における秘密情報出力装置2のブロック図である。
秘密情報出力装置2は、受付部200、元画像格納部201、第一画像生成部202、第二画像生成部203、画像蓄積部204、画像格納部205、出力部206を備える。
受付部200は、実施の形態1の受付部100と同様であるので、その説明を省略する。
元画像格納部201は、元画像を格納し得る。
ここで、元画像のファイル形式等については、実施の形態1と同様であるので、その説明を省略する。
また、元画像は、秘密情報を埋め込む前と比較して、画素値を予め決められた数値で変更することで、画像に秘密情報を埋め込む埋込処理が施された埋込画像である。なお、埋込処理は、実施の形態1の埋込処理と同様であるので、その説明を省略する。また、元画像は、いわゆる砂嵐画像と呼ばれる、ランダムな画素値の画素がランダムに配置された画像に秘密情報が埋め込まれた画像であることが好適である。
また、元画像は、秘密情報が埋め込まれる領域は、例えば、秘密情報が埋め込まれる前と比較して、20から40の幅でランダムに画素値が変更され、秘密情報が埋め込まれる領域以外の領域、または秘密情報が埋め込まれる領域の周辺の領域は、例えば、秘密情報が埋め込まれる前と比較して、15から25の幅でランダムに画素値が変更された画像であっても良い。
また、元画像は、秘密情報に対して、画素値をランダムに変更させるいわゆるノイズ処理が施されたノイズ画像であってもよい。ノイズ処理については、公知の技術なので、詳細な説明は省略する。
元画像格納部201は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。また、元画像格納部201に元画像が記憶される過程は問わない。例えば、記録媒体を介して元画像が元画像格納部201で記憶されるようになってもよい。また、通信回線などを介して送信された元画像が元画像格納部201で記憶されるようになってもよい。さらに、入力デバイスを介して入力された元画像が元画像格納部201で記憶されるようになってもよい。
第一画像生成部202は、第一画像を生成する。
ここで、第一画像とは、元画像に対して、第一隠蔽処理を施した第一隠蔽画像であってもよいし、元画像に対して、第一隠蔽処理と、半透明化処理を施した第一隠蔽半透明画像であってもよい。また、元画像に対して施す上記の処理の順序は問わない。つまり、例えば、第一隠蔽半透明画像であれば、元画像に対して、第一隠蔽処理を施してから半透明化処理を施してもよいし、元画像に対して、半透明化処理を施してから、第一隠蔽処理を施してもよい。
また、第一隠蔽処理とは、画像に埋め込まれている秘密情報を隠す処理である。第一隠蔽処理では、秘密情報を隠す前と比較して、秘密情報が埋め込まれている領域の画素値を、予め決められた数値で変更することで、秘密情報を隠してもよいし、当該領域の画素値を、予め決められた数値の範囲のうちのいずれかの数値でランダムに変更することで、秘密情報を隠してもよい。また、第一隠蔽処理では、秘密情報を隠す前と比較して、秘密情報が埋め込まれている領域以外の領域の画素値を、予め決められた数値でさらに変更してもよいし、当該画素値を、予め決められた数値の範囲のうちのいずれかの数値でさらに変更してもよい。この場合、第一隠蔽処理では、秘密情報が埋め込まれている領域と、秘密情報が埋め込まれている領域以外の領域とを区別せず、画素値を変更してもよい。
ここで、秘密情報が埋め込まれている領域とは、秘密情報埋込領域と言い、例えば、予め決められていてもよいし、予め決められていなくてもよい。予め決められている場合は、例えば、任意の記憶領域に、秘密情報埋込領域を示す情報が格納されていてもよい。また、予め決められていない場合は、例えば、いわゆる画像処理におけるエッジ検出の処理により秘密情報埋込領域を検出してもよいし、埋め込まれている秘密情報を用いて秘密情報埋込領域を検出してもよい。なお、エッジ検出処理は、公知の技術であるので、詳細な説明は省略する。また、秘密情報を用いて秘密情報埋込領域を検出する場合は、当該秘密情報埋込領域は、任意の記憶領域に格納されていてもよいし、秘密情報を格納する秘密情報格納部に格納されていてもよい。
また、秘密情報が埋め込まれている領域以外の領域とは、秘密情報埋込周辺領域と言い、例えば、予め決められていてもよいし、予め決められていなくてもよい。予め決められている場合は、任意の記憶領域に、秘密情報埋込周辺領域を示す情報が格納されていてもよい。また、予め決められていない場合は、例えば、第一隠蔽処理を施す対象となる画像である対象画像の全領域から、秘密情報埋込領域を除いた領域を、秘密情報埋込周辺領域としてもよい。
なお、領域を示す情報については、実施の形態1と同様であるので、その説明を省略する。
また、予め決められた数値、および予め決められた数値の範囲は、ここでは第一変化量と言うこととすると、当該第一変化量は、単一の数値であってもよいし、数値の範囲であってもよい。なお、当該第一変化量は、実施の形態1の変化量と同様であるので、その説明を省略する。
また、半透明化処理は、実施の形態1の半透明化処理と同様であるので、その説明を省略する。
また、第一画像生成部202が、第一隠蔽画像、第一隠蔽半透明画像のいずれの画像を生成するかは、予め決められていてもよいし、そうでなくてもよい。予め決められている場合は、いずれの画像を生成するかを示す情報は、任意の記憶領域に格納されていてもよい。また、予め決められていない場合は、何れの画像を生成するかを示す情報は、外部から与えられてもよい。
以上より、第一画像生成部202は、元画像に対して、第一隠蔽処理のみ、または第一隠蔽処理と半透明化処理の両方を施し、第一隠蔽画像、または第一隠蔽半透明画像である第一画像を生成する。
第一画像生成部202は、通常、MPUやメモリ等から実現され得る。第一画像生成部202の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
第二画像生成部203は、第二画像を生成する。
ここで、第二画像とは、元画像に対して、第二隠蔽処理を施した第二隠蔽画像であってもよいし、元画像に対して、第二隠蔽処理と、半透明化処理を施した第二隠蔽半透明画像であってもよい。また、元画像に対して施す上記の処理の順序は問わない。つまり、例えば、第二隠蔽半透明画像であれば、元画像に対して、第二隠蔽処理を施してから半透明化処理を施してもよいし、元画像に対して、半透明化処理を施してから、第二隠蔽処理を施してもよい。
また、第二隠蔽処理とは、画像に埋め込まれている秘密情報を隠す処理である。第二隠蔽処理では、秘密情報を隠す前と比較して、秘密情報が埋め込まれている領域の画素値を、第一隠蔽処理とは異なる予め決められた数値で変更することで、秘密情報を隠してもよいし、当該領域の画素値を、第一隠蔽処理とは異なる予め決められた数値の範囲のうちのいずれかの数値でランダムに変更することで、秘密情報を隠してもよい。また、第二隠蔽処理では、秘密情報を隠す前と比較して、秘密情報が埋め込まれている領域以外の領域の画素値を、第一隠蔽処理とは異なる予め決められた数値でさらに変更してもよいし、当該画素値を、第一隠蔽処理とは異なる予め決められた数値の範囲のうちのいずれかの数値でさらに変更してもよい。この場合、第二隠蔽処理では、秘密情報が埋め込まれている領域と、秘密情報が埋め込まれている領域以外の領域とを区別せず、画素値を変更してもよい。
ただし、第一隠蔽処理が施された第一隠蔽画像と、第二隠蔽処理が施された第二隠蔽画像とは、同一の箇所の画素値を加算すると、元画像における当該箇所の画素値と同一となる画像である。ここで同一とは、略同一も含む。不一致の範囲は、秘密情報が人にとって認識できる程度であればよく、その範囲は問わない。
なお、秘密情報が埋め込まれている領域、秘密情報が埋め込まれている領域以外の領域、領域を示す情報については、上述したので、その説明を省略する。
また、予め決められた数値、および予め決められた数値の範囲は、ここでは第二変化量と言うこととすると、当該第二変化量は、単一の数値であってもよいし、数値の範囲であってもよい。なお、当該第二変化量は、実施の形態1の変化量と同様であるので、その説明を省略する。
なお、半透明化処理については、上述したので、その説明を省略する。
なお、第二画像生成部203が、第二隠蔽画像、第二隠蔽半透明画像のいずれの画像を生成するかについては、第一画像生成部202と同様であるので、その説明を省略する。
以上より、第二画像生成部203は、元画像に対して、第二隠蔽処理のみ、または第二隠蔽処理と半透明化処理の両方を施し、第二隠蔽画像、または第二隠蔽半透明画像である第二画像を生成する。
第二画像生成部203は、通常、MPUやメモリ等から実現され得る。第二画像生成部203の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
なお、第一画像生成部202と第二画像生成部203、およびそれぞれが生成する第一画像と第二画像は、便宜上区別しているだけであって、どちらがどちらであってもよい。つまり、第一画像生成部202が第二画像を生成してもよいし、第二画像生成部203が第一画像を生成してもよい。また、例えば、秘密情報出力装置2は、第一画像生成部202と第二画像生成部203の替わりに、画像生成部(図示せず)を備えており、当該画像生成部が、第一画像と第二画像を生成してもよい。
また、第一画像と第二画像は、通常、重複しないものとする。つまり、例えば、第一画像が第一隠蔽画像であるときは、第二画像は第二隠蔽半透明画像であり、第一画像が第一隠蔽半透明画像であるときは、第二画像は第二隠蔽画像であるということである。これは、第一画像生成部202と第二画像生成部203が、それぞれ第一画像と第二画像を生成する場合においても同様である。つまり、第一画像生成部202が第一隠蔽画像である第一画像を生成するときは、第二画像生成部203は第二隠蔽半透明画像である第二画像を生成するということである。
また、第一画像と第二画像は、同じ元画像から生成されていれば、サイズは異なっていてもよい。この場合、例えば、第一画像が第一隠蔽画像で、第二画像が第二隠蔽半透明画像であるとすると、例えば、第一画像は、元画像に対して第一隠蔽処理が施された画像であり、第二画像は、元画像の一部を切り取った切取画像に対して、第二隠蔽処理と半透明化処理が施された画像であってもよい。なお、この場合、元画像から切り取る領域は、秘密情報埋込領域を含むものとする。
なお、第一変化量と第二変化量は、同一の数値でないことが好適である。また、元画像中の任意の画素において、第一変化量と第二変化量は、加算すると、当該画素の画素値と同一となることが好適である。つまり、言い換えると、元画像中の任意の画素において、第一変化量を用いて第一隠蔽処理により変更された画素値と、第二変化量を用いて第二隠蔽処理により変更された画素値を加算すると、当該画素の画素値と同一となるということである。
つまり、第一変化量と第二変化量は、元画像の画素値を分け合うような関係にあるということである。また、言い換えると、第一隠蔽処理と第二隠蔽処理は、元画像の画素値を第一画像と第二画像に分配する処理であるということである。
また、第一隠蔽処理により変更された画素値と、第二隠蔽処理により変更された画素値は、例えば、図21のように、元画像の画素値に関係なく、ランダムに変更されることが好適である。
また、元画像の平均画素値が150であるような場合、第一変化量と第二変化量は、第一隠蔽処理が施された第一隠蔽画像の平均画素値が80、第二隠蔽処理が施された第二隠蔽画像の平均画素値が70になるような数値の範囲であってもよい。つまり、言い換えると、元画像の平均画素値が150であるような場合、第一隠蔽処理と第二隠蔽処理は、第一隠蔽画像の平均画素値が80、第二隠蔽画像の平均画素値が70となるように、画素値を変更してもよい。この場合、第一隠蔽処理と第二隠蔽処理では、元画像を構成する画素の画素数と、当該画素の画素値から、各画素に対する第一変化量と第二変化量を決定してもよい。
以上より、第一変化量と第二変化量は、別個独立の数値ではなく、相互に関係性のある数値であるということである。つまり、言い換えると、第一隠蔽処理と第二隠蔽処理は、別個独立の処理ではなく、相互に関係性のある処理であるということである。
画像蓄積部204は、実施の形態1の画像蓄積部107と同様であるので、その説明を省略する。
画像格納部205は、実施の形態1の画像格納部108同様であるので、その説明を省略する。
出力部206は、実施の形態1の出力部109と同様であるので、その説明を省略する。
次に、秘密情報出力装置2の動作について説明する。図22は、秘密情報出力装置2の全体動作を示すフローチャートである。
(ステップS2201)第一画像生成部202と第二画像生成部203は、元画像格納部201に格納されている元画像を取得する。
(ステップS2202)第一画像生成部202は、第一画像を生成する。この処理の詳細については、図23のフローチャートを用いて説明する。
(ステップS2203)第二画像生成部203は、第二画像を生成する。この処理の詳細については、図24のフローチャートを用いて説明する。
(ステップS2204)出力部206は、第一画像と第二画像とを重ね合わせて出力し、処理を終了する。
なお、図22のフローチャートにおいて、受付部200がユーザの指示を受け付けた後、第一画像および第二画像の生成を行うことは好適である。また、受付部200がユーザの指示を受け付けた後、第一画像と第二画像とを重ね合わせて出力することは好適である。
図23は、図22のフローチャートのステップS2202の第一画像生成処理を示すフローチャートである。
(ステップS2301)第一画像生成部202は、元画像に対し、第一隠蔽処理を施し、第一隠蔽画像を生成する。この処理の詳細については、図25のフローチャートを用いて説明する。
(ステップS2302)第一画像生成部202は、生成する第一画像が第一隠蔽画像であるか否かを判断する。第一隠蔽画像である場合は、ステップS2304に進み、そうでない場合は、ステップS2303に進む。
(ステップS2303)第一画像生成部202は、ステップS2301で生成した第一隠蔽画像に対して、半透明化処理を施し、第一隠蔽半透明画像を生成する。
(ステップS2304)画像蓄積部204は、第一画像生成部202が生成した第一画像を、画像格納部205に蓄積し、上位処理にリターンする。
図24は、図22のフローチャートのステップS2203の第二画像生成処理を示すフローチャートである。
(ステップS2401)第二画像生成部203は、元画像に対し、第二隠蔽処理を施し、第一隠蔽画像を生成する。この処理の詳細については、図26のフローチャートを用いて説明する。
(ステップS2402)第二画像生成部203は、生成する第二画像が第二隠蔽画像であるか否かを判断する。第二隠蔽画像である場合は、ステップS2404に進み、そうでない場合は、ステップS2403に進む。
(ステップS2403)第二画像生成部203は、ステップS2401で生成した第二隠蔽画像に対して、半透明化処理を施し、第二隠蔽半透明画像を生成する。
(ステップS2404)画像蓄積部204は、第二画像生成部203が生成した第二画像を、画像格納部205に蓄積し、上位処理にリターンする。
図25は、図23のフローチャートのステップS2301の第一隠蔽処理を示すフローチャートである。
(ステップS2501)第一画像生成部202は、元画像の横幅と縦幅を取得する。
(ステップS2502)第一画像生成部202は、カウンタyに0を代入する。
(ステップS2503)第一画像生成部202は、カウンタxに0を代入する。
(ステップS2504)第一画像生成部202は、第一変化量を取得する。ここでは、例えば、元画像の画素(x,y)の画素値を超えない範囲で乱数を発生させ、当該乱数を第一変化量としてもよい。
(ステップS2505)第一画像生成部202は、ステップS2504で取得した第一変化量を画素(x,y)の画素値から減算することで、画素(x,y)の画素値を変更する。
(ステップS2506)第一画像生成部202は、カウンタxがステップS2301で取得した横幅と等しいか否かを判断する。等しい場合は、ステップS2507に進み、そうでない場合は、ステップS2508に進む。
(ステップS2507)第一画像生成部202は、カウンタyがステップS2302で取得した縦幅と等しいか否かを判断する。等しい場合は、上位処理にリターンし、そうでない場合は、ステップS2509に進む。
(ステップS2508)第一画像生成部202は、カウンタxを1インクリメントする。
(ステップS2509)第一画像生成部202は、カウンタyを1インクリメントする。
図26は、図24のフローチャートのステップS2401の第二隠蔽処理を示すフローチャートである。
(ステップS2601)第二画像生成部203は、元画像の横幅と縦幅を取得する。
(ステップS2602)第二画像生成部203は、カウンタyに0を代入する。
(ステップS2603)第二画像生成部203は、カウンタxに0を代入する。
(ステップS2604)第二画像生成部203は、第二変化量を取得する。ここでは、例えば、ステップS2504で取得した画素(x,y)に対する第一変化量を画素(x,y)の画素値から減算することで得られる数値を、第二変化量としてもよい。
(ステップS2605)第二画像生成部203は、ステップS2604で取得した第二変化量を画素(x,y)の画素値から減算することで、画素(x,y)の画素値を変更する。
(ステップS2606)第二画像生成部203は、カウンタxがステップS2301で取得した横幅と等しいか否かを判断する。等しい場合は、ステップS2607に進み、そうでない場合は、ステップS2608に進む。
(ステップS2607)第二画像生成部203は、カウンタyがステップS2302で取得した縦幅と等しいか否かを判断する。等しい場合は、上位処理にリターンし、そうでない場合は、ステップS2609に進む。
(ステップS2608)第二画像生成部203は、カウンタxを1インクリメントする。
(ステップS2609)第二画像生成部203は、カウンタyを1インクリメントする。
なお、図23のフローチャートにおいて、まず、第一隠蔽画像、第一隠蔽半透明画像のいずれの画像を生成するのかを判断し、その判断結果に従い、第一隠蔽処理、半透明化処理を行ってもよい。
また、図24のフローチャートにおいても、図23のフローチャートと同様に、まず、第二隠蔽画像、第二隠蔽半透明画像のいずれの画像を生成するのかを判断し、その判断結果に従い、第二隠蔽処理、半透明化処理を行ってもよい。
また、図25のフローチャートと、図26のフローチャートにおいて、各画素に対する第一変化量、第二変化量を、先に取得してもよい。
次に、秘密情報出力装置1の動作の具体例について説明する。
本具体例において、元画像格納部201には、図27の元画像が格納されているものとする。なお、当該元画像には、図28の秘密情報が埋め込まれているものとする。また、当該秘密情報は、「COPY」のテキストを画像化し、所定の幅(例えば、20から40)の中から、ランダムに画素値(ここでは、輝度)を変更した画像である。また、元画像における秘密情報以外の領域の画素値は、所定の幅(その平均は、秘密情報の平均よりも小さい値であり、例えば、10から30)の中から、ランダムに画素値(ここでは、輝度)を変更している。また、第一画像生成部202が生成する第一画像は、第一隠蔽画像であり、第二画像生成部203が生成する第二画像は、第二隠蔽半透明画像であるものとする。また、第一画像生成部202が元画像に対して第一隠蔽処理を施す際には、画素の輝度値をランダムな数値で変更することで、秘密情報を隠すものとする。
まず、第一画像生成部202と第二画像生成部203は、元画像格納部201に格納されている図27の元画像を取得する。
次に、第一画像生成部202は、元画像の各画素に対する第一変化量を取得し、当該元画像に対して第一隠蔽処理を施し、図29の第一隠蔽画像を生成したものとする。
次に、第二画像生成部203は、元画像の各画素の画素値と当該各画素に対する第一変化量とから、当該各画素に対する第二変化量を取得し、当該元画像に対して第二隠蔽処理と半透明化処理を施し、図30の第二隠蔽半透明画像を生成したものとする。
次に、画像蓄積部204は、第一画像生成部202が生成した図29の第一隠蔽画像である第一画像と、第二画像生成部203が生成した図30の第二隠蔽半透明画像である第二画像を、画像格納部205に蓄積する。
次に、ユーザは、マウスを用いて、第一画像と第二画像を重ね合わせる。そして、受付部100は、ユーザから、第一画像と第二画像の移動の指示(重ね合わせの指示)を受け付ける。
次に、出力部206は、画像格納部205に格納されている第一画像と第二画像を取得し、第二画像を第一画像の上に重ね合わせ、図31の画像(第一隠蔽+第二隠蔽半透明画像)を出力する。
また、上記各実施の形態における秘密情報出力装置は、例えば、スタンドアロンの装置であってもよいし、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、例えば、ASP(Application Service Provider)として第一画像と第二画像を重ね合わせた画像の出力が行われてもよい。
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
また、上記実施の形態1における秘密情報出力装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、元画像から生成される画像であり、秘密情報を埋め込む前と比較して、秘密情報を埋め込む領域の画素値を、予め決められた数値で変更することで画像に秘密情報を埋め込む埋込処理、画像の画素値を反転する反転処理、画像を半透明にする半透明化処理の3つの処理のうちの0以上の処理が施された画像である第一画像と、元画像から生成される画像であり、前記3つの処理のうちの前記第一画像に対して施されていない処理が施された画像である第二画像が格納されており、コンピュータを、前記第一画像と前記第二画像とを重ね合わせて出力する指示を受け付ける受付部と、前記受付部が前記指示を受け付けた場合に、前記第一画像と前記第二画像とを重ね合わせて出力する出力部として機能させるためのプログラムである。
また、上記実施の形態2における秘密情報出力装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、秘密情報を埋め込む前と比較して、画素値を予め決められた数値で変更することで、画像に秘密情報を埋め込む埋込処理が施された埋込画像である元画像から生成される画像であり、秘密情報を隠す前と比較して、秘密情報が埋め込まれている領域の画素値を、予め決められた数値で変更することで、埋め込まれている秘密情報を隠す第一隠蔽処理、画像を半透明にする半透明化処理の2つの処理のうち、第一隠蔽処理のみ、または第一隠蔽処理と半透明化処理の両方が施された画像である第一画像と、前記元画像から生成される画像であり、前記第一画像に半透明化処理が施されている場合は、秘密情報を隠す前と比較して、秘密情報が埋め込まれている領域の画素値を、前記第一隠蔽処理とは異なる予め決められた数値で変更することで、埋め込まれている秘密情報を隠す第二隠蔽処理のみが施された画像であり、前記第一画像に半透明化処理が施されていない場合は、前記第二隠蔽処理と、半透明化処理とが施された画像である第二画像が格納されており、前記第一隠蔽処理が施された画像と前記第二隠蔽処理が施された画像は、画素値を加算すると、前記元画像と同一となる画像であり、コンピュータを、前記第一画像と前記第二画像とを重ね合わせて出力する指示を受け付ける受付部と、前記受付部が前記指示を受け付けた場合に、前記第一画像と前記第二画像とを重ね合わせて出力する出力部として機能させるためのプログラムである。
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
また、図32は、前述のプログラムを実行して、前述の実施の形態の秘密情報出力装置等を実現するコンピュータシステム9の概観図である。前述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
図32において、コンピュータシステム9は、CD−ROM(Compact Disk Read Only Memory)ドライブ9011、FD(Flexible Disk)ドライブ9012を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図33は、コンピュータシステム9のブロック図である。図33において、コンピュータ901は、CD−ROMドライブ9011、FDドライブ9012に加えて、CPU(Central Processing Unit)9013と、ブートアッププログラム等のプログラムを記憶するためのROM(Read−Only Memory)9014と、CPU9013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM(Random Access Memory)9015と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク9016と、CD−ROMドライブ9011、FDドライブ9012、CPU9013等を相互に接続するバス9017とを備える。ここでは図示しないが、コンピュータ901は、さらに、LANへの接続を提供するネットワークカードを備えていてもよい。
コンピュータシステム9に、前述の実施の形態の秘密情報出力装置等の機能を実行させるプログラムは、CD−ROM9101、またはFD9102に記憶されて、CD−ROMドライブ9011またはFDドライブ9012に挿入され、さらにハードディスク9016に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク9016に記憶されてもよい。プログラムは実行の際にRAM9015にロードされる。プログラムは、CD−ROM9101、FD9102またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、前述の実施の形態の秘密情報出力装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム9がどのように動作するかは周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。