本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
図1は、この発明の実施の形態による暗号装置の構成を示す概略図である。図1を参照して、この発明の実施の形態による暗号装置10は、受信手段1と、検出手段2と、マスク手段3と、送信手段4とを備える。
受信手段1は、外部から画像データAを受信し、その受信した画像データAを検出手段2へ出力する。画像データAは、静止画または動画からなる画像データである。より具体的には、画像データAは、DVD等の映像メディア、映画、地上デジタル放送、監視カメラ、パーソナルコンピュータ、デジタルカメラ、デジタルビデオ、スマートフォンおよび携帯電話等によって扱われるデジタル画像の画像データである。
検出手段2は、受信手段1から画像データAを受け、その受けた画像データAから可逆マスクを掛ける対象となるマスク対象領域を検出する。この場合、検出手段2は、パーセプトロン、判別分析、ニューラルネットワーク、SVM(Support Vector Machines)、アンサンブル学習法、部分空間法、モルフォロジカルウェーブレット等の公知のパターン認識技術、またはInterest operator、Scale space、Wavelet、SIFT(Scale Invariant Feature Transform)、Haar特徴、Ada boost、テンプレートマッチング、DPマッチングおよびグラフマッチング等の公知の画像特徴抽出技術を用いてマスク対象領域を検出する。
また、検出手段2は、その検出したマスク対象領域を示す座標[x1〜xp,y1〜yq]を検出する。そして、検出手段2は、画像データAと、座標[x1〜xp,y1〜yq]とをマスク手段3へ出力する。
マスク手段3は、画像データAと座標[x1〜xp,y1〜yq]とを検出手段2から受け、その受けた画像データAと座標[x1〜xp,y1〜yq]とに基づいて、後述する方法によって、マスク対象領域に可逆マスクを掛ける。そして、マスク手段3は、座標[x1〜xp,y1〜yq]と、可逆マスクを掛けた画像データBとを送信手段4へ出力する。
送信手段4は、座標[x1〜xp,y1〜yq]と画像データBとをマスク手段3から受け、その受けた座標[x1〜xp,y1〜yq]と画像データBとを後述する復号装置へ送信する。
図2は、図1に示す検出手段2の動作を説明するための図である。図2を参照して、画像データAは、画素値G11〜G77をそれぞれ有する複数の画素からなる。検出手段2は、画像データAを受信手段1から受ける。そして、検出手段2は、上述した公知の方法によってマスク対象領域MSKを検出する。マスク対象領域MSKは、一般的には、画像データAのうち、プライバシーに関わる部分の画素値を有する領域からなる。より具体的には、マスク対象領域MSKは、人物(特に顔)、家の窓、パーソナルコンピュータのモニタ、現金自動支払機(ATM)の操作部等の画素値を有する領域からなる。そして、人物等の移動物体を検出するには、上述したパターン認識技術または画像特徴抽出技術が適している。
マスク対象領域MSKは、頂点A,B,C,Dを有する四角形の領域からなる。従って、検出手段2は、マスク対象領域MSKを検出すると、マスク対象領域MSKの4個の頂点A,B,C,Dの座標[x1,y1],[xp,y1],[xp,yq],[x1,yq]を検出する。そして、検出手段2は、画像データAと、座標[x1,y1],[xp,y1],[xp,yq],[x1,yq]とをマスク手段3へ出力する。
また、検出手段2は、複数のマスク対象領域を公知の方法によって検出し、その検出した複数のマスク対象領域の複数の座標を同様にして検出する。そして、検出手段2は、画像データAと複数の座標とをマスク手段3へ出力する。
このように、検出手段2は、少なくとも1つのマスク対象領域を検出し、その検出した少なくとも1つのマスク対象領域の少なくとも1つの座標を検出する。そして、検出手段2は、画像データAと少なくとも1つの座標とをマスク手段3へ出力する。
図3は、変換テーブルの概念図である。図3の(a)を参照して、変換テーブルTBL1は、画素値の変換対象のビットGB1と、乱数RN1と、変換後のビット値B1とを含む。
画素値G11〜G77の各々は、例えば、8ビットのビット値g1g2g3g4g5g6g7g8からなる。変換対象のビットGB1は、ビット値g1g2g3g4g5g6g7g8の最下位ビットg8からなる。最下位ビットg8は、“0”または“1”からなるので、変換対象のビットGB1は、“0”または“1”からなる。
変換対象のビットGB1が1ビットからなる場合、乱数RN1も1ビットからなる。従って、乱数RN1は、“0”または“1”からなる。
変換対象のビットGB1および乱数RN1が“0”である場合、変換対象のビットGB1(=“0”)は、“0”に変換される(即ち、“0”が維持される。)。変換対象のビットGB1が“0”であり、乱数RN1が“1”である場合、変換対象のビットGB1(=“0”)は、“1”に変換される。
変換対象のビットGB1が“1”であり、乱数RN1が“0”である場合、変換対象のビットGB1(=“1”)は、“1”に変換される(即ち、“1”が維持される。)。
変換対象のビットGB1が“1”であり、乱数RN1が“1”である場合、変換対象のビットGB1(=“1”)は、“0”に変換される。
このように、変換対象のビットGB1および乱数RN1が1ビットからなる場合、ビット値B1は、変換対象のビットGB1と乱数RN1との排他的論理和の演算結果からなる。
図3の(b)を参照して、変換テーブルTBL2は、画素値の変換対象のビットGB2と、乱数RN2と、変換後のビット値B2とを含む。
変換対象のビットGB2および乱数RN2の各々は、2ビットからなる。そして、変換対象のビットGB2は、具体的には、ビット値g1g2g3g4g5g6g7g8の最下位ビットから2ビット目までの2ビットg7g8からなる。従って、変換対象のビットGB2は、“00”,“01”,“10”,“11”のいずれかからなる。同様に、乱数RN2も、“00”,“01”,“10”,“11”のいずれかからなる。
変換対象のビットGB2が“00”であり、乱数RN2が“00”である場合、変換対象のビットGB2(=“00”)は、“10”に変換される。また、変換対象のビットGB2が“00”であり、乱数RN2が“01”である場合、変換対象のビットGB2(=“00”)は、“11”に変換される。以下、同様にして、変換対象のビットGB2は、変換テーブルTBL2に従ってビット値B2に変換される。
マスク手段3は、変換対象のビットが画素値の最下位ビットであるとき、変換テーブルTBL1を保持しており、変換対象のビットが画素値の最下位ビットから2ビット目までの2ビットであるとき、変換テーブルTBL2を保持している。また、マスク手段3は、乱数発生器を内蔵している。そして、マスク手段3は、乱数発生器によって乱数列を発生する。
変換テーブルTBL1,TBL2は、任意のタイミングまたは定期的に更新されてもよい。例えば、変換テーブルTBL1においては、変換対象のビットGB1が“0”であり、乱数RN1が“0”である場合、ビット値B1は、“1”からなり、変換対象のビットGB1が“0”であり、乱数RN1が“1”である場合、ビット値B1は、“0”からなり、変換対象のビットGB1が“1”であり、乱数RN1が“0”である場合、ビット値B1は、“0”からなり、変換対象のビットGB1が“1”であり、乱数RN1が“1”である場合、ビット値B1は、“1”からなっていてもよい。
同様に、変換テーブルTBL2においても、変換対象のビットGB2と乱数RN2との組合せによって決定されるビットB2は、図3に示すビット値と異なるビット値からなっていてもよい。但し、変換テーブルTBL2の任意の1行および1列は、“00”,“01”,“10”,“11”からなる。
この発明の実施の形態においては、画像データAは、一般的には、画素値G11〜Gij(i,jは2以上の整数)からなる。そして、画素値G11〜Gijの各々は、n(nは2以上の整数)ビットのビット値からなり、変換対象のビットは、画素値のnビットのビット値のうち、最下位ビットからm(mは1≦m≦nを満たす整数)ビット目までのmビットからなる。
従って、この発明の実施の形態における変換テーブルにおいては、変換対象のビット、乱数および変換後のビット値は、mビットからなる。
図4は、可逆マスクを掛ける方法を説明するための図である。図4を参照して、マスク対象領域MSKの画素値G43,G44,G45がそれぞれ“00110010”,“11001011”,“01101100”からなる場合を想定する。そして、変換対象のビットが1ビットであるとする。
マスク手段3は、変換テーブルTBL1を保持しており、内蔵した乱数発生器によって、例えば、乱数列RNC1=“011011000・・・”を発生させる。
そうすると、マスク手段3は、画素値G43=“00110010”の最下位ビット“0”と、乱数列RNC1=“011011000・・・”の先頭のビット値“0”とを検出する。そして、マスク手段3は、変換テーブルTBL1を参照して、最下位ビット“0”と乱数RN1のビット“0”とが交差するビット値“0”を検出する。その後、マスク手段3は、画素値G43=“00110010”の最下位ビット“0”をビット値“0”に変換することによって元の画素値G43=“00110010”を別の画素値G43’=“00110010”に変換する。
次に、マスク手段3は、画素値G44=“11001011”の最下位ビット“1”と、乱数列RNC1=“011011000・・・”の先頭から2番目のビット値“1”とを検出する。そして、マスク手段3は、変換テーブルTBL1を参照して、最下位ビット“1”と乱数RN1のビット値“1”とが交差するビット値“0”を検出する。その後、マスク手段3は、画素値G44=“11001011”の最下位ビット“1”をビット値“0”に変換することによって元の画素値G44=“11001011”を別の画素値G44’=“11001010”に変換する。
更に、マスク手段3は、画素値G45=“01101100”の最下位ビット“0”と、乱数列RNC1=“011011000・・・”の先頭から3番目のビット値“1”とを検出する。そして、マスク手段3は、変換テーブルTBL1を参照して、最下位ビット“0”と乱数RN1のビット値“1”とが交差するビット値“1”を検出する。その後、マスク手段3は、画素値G45=“01101100”の最下位ビット“0”をビット値“1”に変換することによって元の画素値G45=“01101100”を別の画素値G45’=“01101101”に変換する(図4の(a)参照)。
次に、変換対象のビットが2ビットである場合について可逆マスクを掛ける方法を説明する。
マスク手段3は、変換テーブルTBL2を保持しており、内蔵した乱数発生器によって、例えば、乱数列RNC2=“101010100・・・”を発生させる。
そうすると、マスク手段3は、画素値G43=“00110010”の最下位ビットから2ビット目までの2ビット“10”と、乱数列RNC2=“101010100・・・”の先頭から2ビット目までの2ビット“10”とを検出する。そして、マスク手段3は、変換テーブルTBL2を参照して、変換対象の2ビット“10”と乱数RN2の2ビット“10”とが交差する2ビット“11”を検出する。その後、マスク手段3は、画素値G43=“00110010”の最下位ビットから2ビット目までの2ビット“10”を2ビット“11”に変換することによって元の画素値G43=“00110010”を別の画素値G43’=“00110011”に変換する。
次に、マスク手段3は、画素値G44=“11001011”の最下位ビットから2ビット目までの2ビット“11”と、乱数列RNC2=“101010100・・・”の先頭から3番目および4番目の2ビット“10”とを検出する。そして、マスク手段3は、変換テーブルTBL2を参照して、変換対象の2ビット“11”と乱数RN2の2ビット“10”とが交差する2ビット“10”を検出する。その後、マスク手段3は、画素値G44=“11001011”の最下位ビットから2ビット目までの2ビット“11”を2ビット“10”に変換することによって元の画素値G44=“11001011”を別の画素値G44’=“11001010”に変換する。
更に、マスク手段3は、画素値G45=“01101100”の最下位ビットから2ビット目までの2ビット“00”と、乱数列RNC2=“101010100・・・”の先頭から5番目および6番目の2ビット“10”とを検出する。そして、マスク手段3は、変換テーブルTBL2を参照して、変換対象の2ビット“00”と乱数RN2の2ビット“10”とが交差する2ビット“01”を検出する。その後、マスク手段3は、画素値G45=“01101100”の最下位ビットから2番目までの2ビット“00”を2ビット“01”に変換することによって元の画素値G45=“01101100”を別の画素値G45’=“01101101”に変換する(図4の(b)参照)。
この発明の実施の形態においては、画素値G11〜G77の各々は、上述したようにnビットのビット値からなる。従って、マスク手段3は、一般的には、マスク対象領域に含まれる画素値のnビットのビット値のうち、最下位ビットからmビット目までのmビットを変換テーブルおよび乱数列を用いて別のmビットに変換することによってマスク対象領域に可逆マスクを掛ける。
このように、マスク手段3は、マスク対象領域MSKに含まれる画素値を変換することによって可逆マスクをマスク対象領域MSKに掛ける。
そして、マスク手段3は、マスク対象領域MSKに含まれる画素値のmビットを別のmビットに変換するときの変換テーブルをユーザの権限に応じて決定してもよい。例えば、マスク手段3は、監視カメラによって撮影された画像中の人物の顔を見る権限を有するユーザに対しては、変換対象のビット、乱数および変換後のビット値がより多くのビット数からなる変換テーブルを用いてマスク対象領域MSKに可逆マスクを掛ける。また、マスク手段3は、監視カメラによって撮影された画像中の家の窓のようにありふれた部分を見る権限を有するユーザに対しては、変換対象のビット、乱数および変換後のビット値がより少ないビット数からなる変換テーブルを用いてマスク対象領域MSKに可逆マスクを掛ける。
図5は、可逆マスクを掛けるパターンを示す図である。図5の(a)を参照して、1つの可逆マスク1が上述した方法によって画像データのマスク対象領域に掛けられる。
図5の(b)を参照して、2つの可逆マスク1,2が上述した方法によって画像データの異なる2つのマスク対象領域に掛けられる。この場合、可逆マスク1を掛けるマスク対象領域の一部は、可逆マスク2を掛けるマスク対象領域の一部と重なっていてもよい。また、一般的には、複数の可逆マスクが画像データの異なる複数のマスク対象領域に掛けられる。この場合、2つの可逆マスク1,2を掛けるときの変換テーブルは、同じであってもよく、異なっていてもよい。また、2つの可逆マスク1,2を掛けるときの乱数列も、同じであってもよく、異なっていてもよい。
図5の(c)を参照して、2つの可逆マスク1,2が上述した方法によって画像データの1つのマスク対象領域に掛けられる。この場合、可逆マスク1を掛けるときの変換テーブルは、可逆マスク2を掛けるときの変換テーブルと同じであってもよく、異なっていてもよい。また、可逆マスク1を掛けるときの乱数列は、可逆マスク2を掛けるときの乱数列と同じであってもよく、異なっていてもよい。更に、可逆マスク1,2のいずれが先にマスク対象領域に掛けられてもよい。そして、一般的には、複数の可逆マスクが画像データの1つのマスク対象領域に任意の順序で掛けられる。
このように、複数の可逆マスクが1つのマスク対象領域または複数のマスク対象領域に掛けられる場合、マスク手段3は、相互に同じ変換テーブルを使用してもよいし、相互に異なる変換テーブルを使用してもよい。
また、複数の可逆マスクが1つのマスク対象領域または複数のマスク対象領域に掛けられる場合、マスク手段3は、画素値を示すビット値のうち、変換対象となるビット数を、複数の可逆マスク間で同じに設定してもよく、複数の可逆マスク間で異なるように設定してもよい。
更に、複数の可逆マスクが1つのマスク対象領域または複数のマスク対象領域に掛けられる場合、マスク手段3は、複数の可逆マスク間で同じ乱数列を使用してもよいし、複数の可逆マスク間で相互に異なる乱数列を使用してもよい。
図6は、図1に示す暗号装置10の動作を説明するためのフローチャートである。図6を参照して、一連の動作が開始されると、暗号装置10の受信手段1は、画像データを受信し(ステップS1)、その受信した画像データを検出手段2へ出力する。
そして、検出手段2は、画像データに基づいて、上述した方法によってマスク対象領域を検出し(ステップS2)、その検出したマスク対象領域の座標を検出する。
その後、検出手段2は、画像データと、マスク対象領域の座標とをマスク手段3へ出力する。
マスク手段3は、画像データと、マスク対象領域の座標とを受け、その受けた画像データ、マスク対象領域の座標、変換テーブル(変換テーブルTBL1,TBL2等の変換テーブル)および乱数列を用いて上述した方法によってマスク対象領域に可逆マスクを掛ける(ステップS3)。
そして、マスク手段3は、可逆マスクが掛けられた画像データBと、マスク対象領域の座標と、可逆マスクを掛けるときに発生させた乱数列とを送信手段4へ出力する。
送信手段4は、可逆マスクが掛けられた画像データBと、マスク対象領域の座標と、可逆マスクを掛けるときに発生させた乱数列とを受け、可逆マスクが掛けられた画像データBと、マスク対象領域の座標とを送信し、可逆マスクを掛けるときに発生させた乱数列を公開鍵暗号化方式に従って暗号化して送信する(ステップS4)。
そして、一連の動作が終了する。
なお、ステップS4においては、可逆マスクを掛けるときに発生させた乱数列をDVD等に格納して送ってもよい。
図7は、図6に示すステップS3の詳細な動作を説明するためのフローチャートである。
図7を参照して、図6に示すステップS2の後、マスク手段3は、画像データとマスク対象領域の座標とを受ける(ステップS31)。
そして、マスク手段3は、画像データおよびマスク対象領域の座標に基づいて、可逆マスクを掛ける画素の個数GNをカウントする(ステップS32)。
その後、マスク手段3は、g=1を設定し(ステップS33)、マスク対象領域に含まれるGN個の画素値を画像データから検出する(ステップS34)。
引き続いて、マスク手段3は、内蔵した乱数発生器によって乱数列を発生する(ステップS35)。そして、マスク手段3は、変換テーブルおよび乱数列を用いて、上述した方法によって、g番目の画素値のnビットのビット値のうち、最下位ビットからmビット目までのmビットを別のmビットに変換する(ステップS36)。
そして、マスク手段3は、g=GNであるか否かを判定する(ステップS37)。ステップS37において、g=GNでないと判定されたとき、マスク手段3は、g=g+1を設定する(ステップS38)。その後、一連の動作は、ステップS36へ移行し、ステップS37において、g=GNであると判定されるまで、ステップS36〜ステップS38が繰り返し実行される。
そして、ステップS37において、g=GNであると判定されると、マスク手段3は、可逆マスクが掛けられた画像データ、マスク対象領域の座標および乱数列を送信手段4へ出力する(ステップS39)。その後、一連の動作は、図6に示すステップS4へ移行する。
なお、図7に示すフローチャートにおいては、ステップS38を実行した後、一連の動作がステップS35へ移行するようにしてもよい。この場合、マスク手段3は、マスク対象領域に含まれる各画素値ごとに新たな乱数列を発生させ、その発生させた乱数列を用いて各画素値のmビットを別のmビットに変換する。また、送信手段4は、マスク対象領域に含まれる画素値の個数GNに等しい個数の乱数列を暗号化して送信する。これによって、可逆マスクが掛けられた画素のセキュリティーを向上できる。
また、変換対象のビット数が1ビットである場合、マスク手段3は、ステップS36において、画素値のm(=1)ビットと乱数列中の1ビットとの排他的論理和を演算して画素値のm(=1)ビットを別のm(=1)ビットに変換してもよい。この場合、マスク手段3は、変換テーブルTBL1を保持していなくてもよい。
図8は、図6に示すステップS3の別の詳細な動作を説明するためのフローチャートである。なお、図8に示すフローチャートは、複数の可逆マスクをそれぞれ複数のマスク対象領域に掛ける場合のステップS3の詳細な動作を説明するためのフローチャートである。
図8を参照して、図6に示すステップS2の後、マスク手段3は、画像データとK(Kは2以上の整数)個のマスク対象領域のK個の座標とを受ける(ステップS31A)。
そして、マスク手段3は、画像データおよびK個のマスク対象領域のK個の座標に基づいて、K個の可逆マスクを掛けるK個のマスク対象領域に含まれる画素の個数GN1〜GNKをカウントする(ステップS32A)。
その後、マスク手段3は、k=1およびgk=1を設定し(ステップS33A)、K個のマスク対象領域に含まれる(GN1+・・・+GNK)個の画素値を画像データから検出する(ステップS34A)。
引き続いて、マスク手段3は、内蔵した乱数発生器によって乱数列を発生する(ステップS35A)。そして、マスク手段3は、k番目の可逆マスクに対応した変換テーブルと、乱数列とを用いて、上述した方法によって、k番目のマスク対象領域においてg番目の画素値のnビットのビット値のうち、最下位ビットからmビット目までのmビットを別のmビットに変換する(ステップS36A)。なお、マスク手段3は、K個の可逆マスクに対応付けてK個の変換テーブルを保持している。
そして、マスク手段3は、gk=GNkであるか否かを判定する(ステップS37A)。ステップS37Aにおいて、gk=GNkでないと判定されたとき、マスク手段3は、gk=gk+1を設定する(ステップS38A)。その後、一連の動作は、ステップS36Aへ移行し、ステップS37Aにおいて、gk=GNkであると判定されるまで、ステップS36A〜ステップS38Aが繰り返し実行される。
そして、ステップS37Aにおいて、gk=GNkであると判定されると、マスク手段3は、k=Kであるか否かを判定する(ステップS39A)。ステップS39Aにおいて、k=Kでないと判定されたとき、マスク手段3は、k=k+1を設定するとともに(ステップS40A)、gk=1を設定する(ステップS41A)。その後、一連の動作は、ステップS36Aへ移行し、ステップS39Aにおいて、k=Kであると判定されるまで、ステップS36A〜ステップS41Aが繰り返し実行される。
そして、ステップS39Aにおいて、k=Kであると判定されると、マスク手段3は、K個の可逆マスクが掛けられた画像データ、K個のマスク対象領域のK個の座標、K個の座標に対応付けられたK個の可逆マスクのIDおよび乱数列を送信手段4へ出力する(ステップS42A)。その後、一連の動作は、図6に示すステップS4へ移行する。この場合、送信手段4は、K個の可逆マスクが掛けられた画像データ、K個のマスク対象領域のK個の座標、およびK個の座標に対応付けられたK個の可逆マスクのIDを送信するとともに、乱数列を暗号して送信する。なお、送信される乱数列は、1個の乱数列であってもよく、K個の可逆マスクに対応付けられたK個の乱数列であってもよい。そして、K個の乱数列が送信される場合、送信手段4は、K個の可逆マスクとK個の乱数列とを対応付けた対応表を暗号化して送信する。
図9は、図6に示すステップS3の更に別の詳細な動作を説明するためのフローチャートである。なお、図9に示すフローチャートは、複数の可逆マスクを1個のマスク対象領域に掛ける場合のステップS3の詳細な動作を説明するためのフローチャートである。
図9を参照して、図6に示すステップS2の後、マスク手段3は、画像データと1個のマスク対象領域の座標とを受ける(ステップS31B)。
そして、マスク手段3は、画像データおよび1個のマスク対象領域の座標に基づいて、K個の可逆マスクを掛ける1個のマスク対象領域に含まれる画素の個数GNをカウントする(ステップS32B)。
その後、マスク手段3は、k=1およびg=1を設定し(ステップS33B)、1個のマスク対象領域に含まれるGN個の画素値を画像データから検出する(ステップS34B)。
引き続いて、マスク手段3は、内蔵した乱数発生器によって乱数列を発生する(ステップS35B)。そして、マスク手段3は、k番目の可逆マスクに対応した変換テーブルと、乱数列とを用いて、上述した方法によって、g番目の画素値のnビットのビット値のうち、最下位ビットからmビット目までのmビットを別のmビットに変換する(ステップS36B)。この場合も、マスク手段3は、K個の可逆マスクに対応付けてK個の変換テーブルを保持している。
そして、マスク手段3は、g=GNであるか否かを判定する(ステップS37B)。ステップS37Bにおいて、g=GNでないと判定されたとき、マスク手段3は、g=g+1を設定する(ステップS38B)。その後、一連の動作は、ステップS36Bへ移行し、ステップS37Bにおいて、g=GNであると判定されるまで、ステップS36B〜ステップS38Bが繰り返し実行される。
そして、ステップS37Bにおいて、g=GNであると判定されると、マスク手段3は、k=Kであるか否かを判定する(ステップS39B)。ステップS39Bにおいて、k=Kでないと判定されたとき、マスク手段3は、k=k+1を設定するとともに(ステップS40B)、g=1を設定する(ステップS41B)。その後、一連の動作は、ステップS36Bへ移行し、ステップS39Bにおいて、k=Kであると判定されるまで、ステップS36B〜ステップS41Bが繰り返し実行される。
そして、ステップS39Bにおいて、k=Kであると判定されると、マスク手段3は、K個の可逆マスクが掛けられた画像データ、1個のマスク対象領域の座標、K個の可逆マスクのID、K個の可逆マスクが掛けられた順序および乱数列を送信手段4へ出力する(ステップS42B)。その後、一連の動作は、図6に示すステップS4へ移行する。この場合、送信手段4は、K個の可逆マスクが掛けられた画像データ、1個のマスク対象領域の座標、K個の可逆マスクのID、およびK個の可逆マスクが掛けられた順序を送信するとともに、乱数列を暗号化して送信する。なお、送信手段4は、K個の可逆マスクが掛けられた順番および乱数列を暗号化して送信してもよい。これによって、マスク対象領域の画素値を元の画素値に戻すことが困難になり、セキュリティーを向上できる。K個の可逆マスクが掛けられた順番が分からなければ、マスク対象領域の画素値を元の画素値に戻すことができないからである。
図9に示すステップS36B〜ステップS38Bからなるループが2回目に実行される場合、ステップS36Bにおいて、1回目に変換された別のmビットが更に別のmビットに変換される。そして、マスク対象領域に含まれる各画素の画素値のmビットが別のmビットにK回変換されると、K個の可逆マスクを掛ける動作が終了する。
図10は、この発明の実施の形態による復号装置の構成を示す概略図である。図10を参照して、この発明の実施の形態による復号装置20は、受付手段11と、認証手段12と、受信手段13と、抽出手段14と、解除手段15とを備える。
受付手段11は、ユーザIDおよびパスワードを外部から受け付ける。そして、受付手段11は、その受け付けたユーザIDおよびパスワードを認証手段12へ出力する。
認証手段12は、受付手段11から受けたユーザIDおよびパスワードを認証サーバへ送信し、ユーザIDを有するユーザの可逆マスクを解除する解除権限を認証サーバから受信する。そして、認証手段12は、その受信した解除権限を解除手段15へ出力する。
なお、認証サーバがユーザIDおよびパスワードに基づいて正規のユーザでないと判定したとき、認証手段12は、認証サーバから何も受信しない。従って、認証手段12は、解除権限を解除手段15へ出力できず、復号装置20は、可逆マスクを解除しない。
受信手段13は、可逆マスクが掛けられた画像データB、マスク対象領域の座標および暗号化された乱数列等を暗号装置10から受信する。そして、受信手段13は、その受信した画像データB、マスク対象領域の座標および暗号化された乱数列等を抽出手段14へ出力する。
抽出手段14は、画像データB、マスク対象領域の座標および暗号化された乱数列等を受信手段13から受ける。そして、抽出手段14は、画像データBおよびマスク対象領域の座標に基づいて、マスク対象領域を抽出し、その抽出したマスク対象領域と、画像データBと、暗号化された乱数列とを解除手段15へ出力する。
解除手段15は、上述した変換テーブルTBL1,TBL2等の変換テーブルをユーザの解除権限に対応付けて保持している。また、複数の可逆マスクが1個のマスク対象領域または複数のマスク対象領域に掛けられる場合、解除手段15は、複数の可逆マスクのIDに対応付けて複数の変換テーブルを保持している。そして、解除手段15は、認証手段12から解除権限を受け、抽出手段14から画像データB、マスク対象領域の座標および暗号化された乱数列等を受ける。
その後、解除手段15は、暗号化された乱数列を復号する。また、解除手段15は、解除権限に対応した変換テーブルを決定し、その決定した変換テーブルと、乱数列とを用いて、マスク対象領域に掛けられた可逆マスクを後述する方法によって解除する。そして、解除手段15は、可逆マスクが解除された画像データを出力する。
図11は、認証テーブルの概念図である。図11を参照して、認証テーブルCTFは、ユーザIDと、パスワードと、解除権限とを含む。ユーザID、パスワードおよび解除権限は、相互に対応付けられる。
ユーザID=Aを有するユーザは、顔−表示、顔−半開示、画面および全体の全てが許可される解除権限を有する。ここで、“画面”とは、可逆マスクを解除した画像を画面に表示するか否かの権限であり、“全体”とは、可逆マスクを解除した画像の全体を表示するか否かの権限である。
また、ユーザID=Bを有するユーザは、顔−表示が禁止され、顔−半開示が許可され、画面が禁止され、全体が許可される解除権限を有する。
更に、ユーザID=Cを有するユーザは、顔−表示、顔−半開示、画面および全体の全てが禁止される解除権限を有する。
認証サーバは、認証テーブルCTFを保持しており、復号装置20の認証手段12からユーザIDおよびパスワードを受信すると、その受信したユーザIDおよびパスワードが認証テーブルCTFに含まれているか否かによってユーザが正規のユーザであるか否かを判定する。この場合、認証サーバは、ユーザIDおよびパスワードが認証テーブルCTFに含まれているとき、ユーザが正規のユーザであると判定し、ユーザIDおよびパスワードが認証テーブルCTFに含まれていないとき、ユーザが正規のユーザでないと判定する。
認証サーバは、ユーザが正規のユーザであると判定したとこ、認証テーブルCTFを参照して、ユーザIDおよびパスワードに対応する解除権限を抽出し、その抽出した解除権限を復号装置20の認証手段12へ送信する。
一方、認証サーバは、ユーザが正規のユーザでないと判定したとき、復号装置20の認証手段12へ何も送信しない。
図12は、可逆マスクを解除する方法を説明するための図である。図12の(a)を参照して、マスク対象領域に含まれる画素の画素値は、G43’=“00110010”、G44’=“11001010”およびG45’=“01101101”に変更されている。
解除手段15は、マスク対象領域の画素値G43’=“00110010”、G44’=“11001010”およびG45’=“01101101”を検出する。そして、解除手段15は、画素値G43’=“00110010”の最下位ビット=“0”を検出し、乱数列RNC1=“011011000・・・”の先頭のビット=“0”を検出する。
そうすると、解除手段15は、変換テーブルTBL1を参照して、乱数RN1のビットが“0”であり、ビット値B1が“0”であるときの変換対象のビットGB1が“0”であることを検出する。そして、解除手段15は、画素値G43’=“00110010”の最下位ビット=“0”をビット=“0”に変換して画素値G43’=“00110010”を元の画素値G43=“00110010”に変換する。
また、解除手段15は、画素値G44’=“11001010”の最下位ビット=“0”を検出し、乱数列RNC1=“011011000・・・”の先頭から2番目のビット=“1”を検出する。そして、解除手段15は、変換テーブルTBL1を参照して、乱数RN1のビットが“1”であり、ビット値B1が“0”であるときの変換対象のビットGB1が“1”であることを検出する。その後、解除手段15は、画素値G44’=“11001010”の最下位ビット=“0”をビット=“1”に変換して画素値G44’=“11001010”を元の画素値G44=“11001011”に変換する。
更に、解除手段15は、画素値G45’=“01101101”の最下位ビット=“1”を検出し、乱数列RNC1=“011011000・・・”の先頭から3番目のビット=“1”を検出する。そして、解除手段15は、変換テーブルTBL1を参照して、乱数RN1のビットが“1”であり、ビット値B1が“1”であるときの変換対象のビットGB1が“0”であることを検出する。その後、解除手段15は、画素値G45’=“01101101”の最下位ビット=“1”をビット=“0”に変換して画素値G45’=“01101101”を元の画素値G45=“01101100”に変換する(図12の(a)参照)。これによって、可逆マスクが解除される。
図12の(b)を参照して、マスク対象領域に含まれる画素の画素値は、G43’=“00110011”、G44’=“11001010”およびG45’=“01101101”に変更されている。
解除手段15は、マスク対象領域の画素値G43’=“00110011”、G44’=“11001010”およびG45’=“01101101”を検出する。そして、解除手段15は、画素値G43’=“00110011”の最下位ビットから2番目のビットまでの2ビット“11”を検出し、乱数列RNC2=“101010100・・・”の先頭から2番目までの2ビット=“10”を検出する。
そうすると、解除手段15は、変換テーブルTBL2を参照して、乱数RN2のビットが“10”であり、ビット値B2が“11”であるときの変換対象のビットGB2が“10”であることを検出する。そして、解除手段15は、画素値G43’=“00110011”の最下位ビットから2番目のビットまでの2ビット=“11”をビット=“10”に変換して画素値G43’=“00110011”を元の画素値G43=“00110010”に変換する。
また、解除手段15は、画素値G44’=“11001010”の最下位ビットから2番目のビットまでの2ビット=“10”を検出し、乱数列RNC2=“101010100・・・”の先頭から3番目および4番目の2ビット=“10”を検出する。そして、解除手段15は、変換テーブルTBL2を参照して、乱数RN2のビットが“10”であり、ビット値B2が“10”であるときの変換対象のビットGB2が“11”であることを検出する。その後、解除手段15は、画素値G44’=“11001010”の最下位ビットから2番目のビットまでの2ビット=“10”を2ビット=“11”に変換して画素値G44’=“11001010”を元の画素値G44=“11001011”に変換する。
更に、解除手段15は、画素値G45’=“01101101”の最下位ビットから2番目のビットまでの2ビット=“01”を検出し、乱数列RNC2=“101010100・・・”の先頭から5番目および6番目の2ビット=“10”を検出する。そして、解除手段15は、変換テーブルTBL2を参照して、乱数RN2の2ビットが“10”であり、ビット値B2が“01”であるときの変換対象のビットGB2が“00”であることを検出する。その後、解除手段15は、画素値G45’=“01101101”の最下位ビットから2番目のビットまでの2ビット=“01”を2ビット=“00”に変換して画素値G45’=“01101101”を元の画素値G45=“01101100”に変換する(図12の(b)参照)。これによって、可逆マスクが解除される。
図12の(a)に示す乱数列RNC1=“011011000・・・”は、暗号装置10のマスク手段3が画素値の最下位ビットを変換して可逆マスクを掛けるときに用いた乱数列であり(図3の(a)参照)、図12の(b)に示す乱数列RNC2=“101010100・・・”は、暗号装置10のマスク手段3が画素値の最下位ビットから2番目のビットまでの2ビットを変換して可逆マスクを掛けるときに用いた乱数列である(図3の(b)参照)。
そして、解除手段15は、変換テーブルTBL1および乱数列RNC1=“011011000・・・”(または変換テーブルTBL2および乱数列RNC2=“101010100・・・”)を用いて画素値G43’,G44’,G45’をそれぞれ元の画素値G43,G44,G45に変換する。従って、解除手段15は、暗号装置10のマスク手段3が元の画素値G43,G44,G45を別の画素値G43’,G44’,G45’に変換する変換規則(変換テーブルTBL1および乱数列RNC1=“011011000・・・”(または変換テーブルTBL2および乱数列RNC2=“101010100・・・”))に基づいて別の画素値G43’,G44’,G45’を元の画素値G43,G44,G45に変換することによって可逆マスクを解除する。
そして、解除手段15が上述した方法によって画素値G43’,G44’,G45’をそれぞれ画素値G43,G44,G45に変換することによって、元の画像が復元される。従って、この発明の実施の形態における可逆マスクは、マスクを掛ける前の画像データに復元できるマスクである。
図13は、可逆マスクの解除パターンを示す図である。図13の(a)を参照して、1個の可逆マスク1が掛けられた場合、認証サーバによって可逆マスク1を解除する解除権限が有ると判定されると、復号装置20の解除手段15は、可逆マスク1を上述した方法によって解除する。これによって、ユーザは、画像データ中の人の顔を見ることができる。
図13の(b)を参照して、2個の可逆マスク1,2が掛けられた場合、3つの解除パターンが存在する。即ち、可逆マスク2のみを解除する解除権限が有る場合、可逆マスク1のみを解除する解除権限が有る場合、および可逆マスク1,2の両方を解除する解除権限がある場合である。
可逆マスク2のみを解除する解除権限が有る場合、解除手段15は、可逆マスク2のみを上述した方法によって解除して出力する。その結果、ユーザは、可逆マスク2によって隠されていた「タイトル」を見ることができる。
また、可逆マスク1のみを解除する解除権限が有る場合、解除手段15は、可逆マスク1のみを上述した方法によって解除して出力する。その結果、ユーザは、可逆マスク1によって隠されていた人の「顔」を見ることができる。
更に、可逆マスク1,2の両方を解除する解除権限がある場合、解除手段15は、可逆マスク1,2の両方を上述した方法によって解除して出力する。その結果、ユーザは、可逆マスク1によって隠されていた人の「顔」および可逆マスク2によって隠されていた「タイトル」を見ることができる。
なお、図5の(c)に示すように1つのマスク対象領域に2個の可逆マスクが掛けられた場合、2つの解除パターンが存在する。即ち、2個の可逆マスク1,2が可逆マスク1および可逆マスク2の順に1つのマスク対象領域に掛けられていた場合、可逆マスク2のみを解除するパターンと、可逆マスク1,2の両方を解除するパターンとである。そして、可逆マスク2のみを解除した場合、可逆マスク1が掛けられているので、可逆マスク2のみを解除する権限を有するユーザは、ぼやけた画像を見ることができるだけである。そして、一般的には、K個の可逆マスクが1つのマスク対象領域に掛けられるので、K個の解除パターンが存在する。
図14は、図10に示す復号装置20の動作を説明するためのフローチャートである。
図14を参照して、復号装置20の受信手段13は、可逆マスクが掛けられた画像データ、マスク対象領域の座標および暗号化された乱数列を受信し(ステップS41)、その受信した画像データ、マスク対象領域の座標および暗号化された乱数列を抽出手段14へ出力する。
抽出手段14は、可逆マスクが掛けられた画像データおよびマスク対象領域の座標に基づいて、マスク対象領域を抽出する(ステップS42)。そして、抽出手段14は、可逆マスクが掛けられた画像データ、マスク対象領域および暗号化された乱数列を解除手段15へ出力する。
解除手段15は、可逆マスクが掛けられた画像データ、マスク対象領域および暗号化された乱数列を抽出手段14から受ける。そして、解除手段15は、認証手段12からの解除権限の有無によって解除権限があるか否かを判定する(ステップS43)。より具体的には、解除手段15は、認証手段12から解除権限を受けると、解除権限有りと判定し、認証手段12から解除権限を受けないとき、解除権限無しと判定する。
ステップS43において、解除権限有りと判定されたとき、解除手段15は、暗号化された乱数列を復号し、その復号した乱数列および変換テーブル(変換テーブルTBL1,TBL2等)を用いて、上述した方法によって、マスク対象領域に掛けられた可逆マスクを解除する(ステップS44)。
そして、ステップS43において、解除権限無しと判定されたとき、またはステップS44の後、一連の動作は、終了する。
図15は、図14に示すステップS44の詳細な動作を説明するためのフローチャートである。
図15を参照して、図14のステップS43において、解除権限があると判定されると、解除手段15は、暗号化された乱数列を復号する(ステップS441)。
そして、解除手段15は、マスク対象領域に含まれる画素値の個数GNをカウントする(ステップS442)。
その後、解除手段15は、g=1を設定し(ステップS443)、マスク対象領域に含まれるGN個の画素値を画像データから検出する(ステップS444)。
そうすると、解除手段15は、変換テーブルおよび乱数列を用いて、g番目の画素値のnビットのビット値のうち、最下位ビットからmビット目までのmビットを元のmビットに変換する(ステップS445)。
そして、解除手段15は、g=GNであるか否かを判定する(ステップS446)。ステップS446において、g=GNでないと判定されたとき、解除手段15は、g=g+1を設定する(ステップS447)。その後、一連の動作は、ステップS445へ移行し、ステップS446において、g=GNであると判定されるまでステップS445〜ステップS447が繰り返し実行される。
そして、ステップS446において、g=GNであると判定されると、一連の動作は、図14の“終了”へ移行する。
図16は、複数の可逆マスクがそれぞれ複数のマスク対象領域に掛けられた場合における図14のステップS43,S44の詳細な動作を説明するためのフローチャートである。この場合、復号装置20の解除手段15は、K個のマスク対象領域のK個の座標に対応付けられたK個の可逆マスクのIDを暗号装置10から受信している。また、解除手段15は、K個の可逆マスクのIDに対応付けてK個の変換テーブルを保持している。
図16を参照して、図14のステップS42の後、解除手段15は、暗号化された乱数列を復号する(ステップS441A)。
そして、解除手段15は、K個のマスク対象領域に含まれる画素値の個数GN1〜GNKをカウントする(ステップS442A)。
その後、解除手段15は、k=1およびgk=1を設定する(ステップS443A)。引き続いて、解除手段15は、K個のマスク対象領域に含まれる(GN1+・・・+GNK)個の画素値を画像データから検出する(ステップS444A)。
そうすると、解除手段15は、k番目のマスク対象領域に掛けられたk番目の可逆マスクの解除権限があるか否かを判定する(ステップS445A)。
ステップS445Aにおいて、k番目の可逆マスクの解除権限が無いと判定されたとき、一連の動作は、ステップS449Aへ移行する。
一方、ステップS445Aにおいて、k番目の可逆マスクの解除権限が有ると判定されたとき、解除手段15は、k番目の可逆マスクに対応した変換テーブルと、乱数列とを用いて、k番目のマスク対象領域においてg番目の画素値のnビットのビット値のうち、最下位ビットからmビット目までのmビットを元のmビットに変換する(ステップS446A)。なお、この場合、解除手段15は、k番目の可逆マスクの解除権限に基づいて、その解除権限に対応する変換テーブルを用いてもよい。つまり、ステップS446Aにおいては、k番目の可逆マスクに対応した変換テーブル、および解除権限に対応する変換テーブルのいずれを用いてもよい。但し、k番目の可逆マスクに対応した変換テーブルは、解除権限に対応する変換テーブルと同じである。k番目の可逆マスクをk番目のマスク対象領域に掛ける場合、k番目の可逆マスクに対応した変換テーブルが選択されるが、k番目の可逆マスクは、ユーザの権限に対応付けられているので、その選択された変換テーブルは、ユーザの権限に対応付けられることになるからである。
また、乱数列は、1個の乱数列からなっていてもよく、K個の乱数列からなっていてもよい。乱数列がK個の乱数列からなる場合、K個の乱数列は、K個の可逆マスクに対応付けられているので、k番目の可逆マスクを解除する場合、k番目の乱数列が用いられる。
そして、ステップS446Aの後、解除手段15は、gk=GNkであるか否かを判定する(ステップS447A)。
ステップS447Aにおいて、gk=GNkでないと判定されたとき、解除手段15は、gk=gk+1を設定する(ステップS448A)。その後、一連の動作は、ステップS446Aへ移行し、ステップS447Aにおいて、gk=GNkであると判定されるまで、ステップS446A〜ステップS448Aが繰り返し実行される。
そして、ステップS447Aにおいて、gk=GNkであると判定されたとき、またはステップS445Aにおいて、k番目の可逆マスクの解除権限が無いと判定されたとき、解除手段15は、k=Kであるか否かを判定する(ステップS449A)。
ステップS449Aにおいて、k=Kでないと判定されたとき、解除手段15は、k=k+1を設定し(ステップS450A)、gk=1を設定する(ステップS451A)。その後、一連の動作は、ステップS445Aへ移行し、ステップS449Aにおいて、k=Kであると判定されるまで、ステップS445A〜ステップS451Aが繰り返し実行される。
そして、ステップS449Aにおいて、k=Kであると判定されると、一連の動作は、図14の“終了”へ移行する。
なお、ステップS445Aにおいて、k番目の可逆マスクの解除権限が無いと判定されたとき、一連の動作がステップS449Aへ移行するのは、一連の動作がステップS447AからステップS449Aへ移行した段階では、k番目の可逆マスクの解除動作が終了しているからである。一方、図14のステップS43において、解除権限が無いと判定されると、一連の動作が終了する。しかし、図14のフローチャートは、可逆マスクを解除する一般的な動作を説明するものであり、解除権限が無い場合に、1個の可逆マスクの解除動作が終了するという意味では、図16に示すフローチャートと同じである。従って、図16に示すフローチャートは、図14に示すフローチャートと矛盾しない。
上述したように、K個の可逆マスクがそれぞれK個のマスク対象領域に掛けられた場合、解除手段15は、解除権限が有る可逆マスクだけを解除する。従って、ユーザの権限に応じて、開示する画像の内容を変えることができる。
図17は、複数の可逆マスクが1個のマスク対象領域に掛けられた場合における図14のステップS43,S44の詳細な動作を説明するためのフローチャートである。なお、図17においては、K個の可逆マスクが1番目の可逆マスク、2番目の可逆マスク、・・・、K番目の可逆マスクの順で1個のマスク対象領域に掛けられたことを前提として図14のステップS43,S44の詳細な動作を説明する。また、解除手段15は、K個の可逆マスクが掛けられた順序を暗号装置10から受信している。
図17を参照して、図14のステップS42の後、解除手段15は、暗号化された乱数列を復号する(ステップS441B)。
そして、解除手段15は、1個のマスク対象領域に含まれる画素値の個数GNをカウントする(ステップS442B)。
その後、解除手段15は、K個の可逆マスクが掛けられた順序に基づいてk=Kを設定するとともに、g=1を設定する(ステップS443B)。引き続いて、解除手段15は、1個のマスク対象領域に含まれるGN個の画素値を画像データから検出する(ステップS444B)。
そうすると、解除手段15は、1個のマスク対象領域に掛けられたk番目の可逆マスクの解除権限があるか否かを判定する(ステップS445B)。
ステップS445Bにおいて、k番目の可逆マスクの解除権限がないと判定されたとき、一連の動作は、図14の“終了”へ移行する。
一方、ステップS445Bにおいて、k番目の可逆マスクの解除権限があると判定されたとき、解除手段15は、k番目の可逆マスクに対応した変換テーブルと、乱数列とを用いて、g番目の画素値のnビットのビット値のうち、最下位ビットからmビット目までのmビットを元のmビットに変換する(ステップS446B)。なお、この場合も、図16に示すステップS446Aと同様にして、解除手段15は、ユーザの権限に対応した変換テーブルを用いてもよい。また、図16に示すステップS446Aと同様にして、解除手段15は、K個の乱数列を用いてもよい。
ステップS446Bの後、解除手段15は、g=GNであるか否かを判定する(ステップS447B)。
ステップS447Bにおいて、g=GNでないと判定されたとき、解除手段15は、g=g+1を設定する(ステップS448B)。その後、一連の動作は、ステップS446Bへ移行し、ステップS447Bにおいて、g=GNであると判定されるまで、ステップS446B〜ステップS448Bが繰り返し実行される。
そして、ステップS447Bにおいて、g=GNであると判定されたとき、解除手段15は、k=1であるか否かを判定する(ステップS449B)。
ステップS449Bにおいて、k=1でないと判定されたとき、解除手段15は、k=k−1を設定し(ステップS450B)、g=1を設定する(ステップS451B)。その後、一連の動作は、ステップS445Bへ移行し、ステップS449Bにおいて、k=1であると判定されるまで、ステップS445B〜ステップS451Bが繰り返し実行される。
そして、ステップS449Bにおいて、k=1であると判定されたとき、またはステップS445Bにおいて、k番目の可逆マスクの解除権限が無いと判定されたとき、一連の動作は、図14の“終了”へ移行する。
このように、K個の可逆マスクが1個のマスク対象領域に順次掛けられたとき、掛けられた順番が遅い順に可逆マスクを解除し、解除権限が無い可逆マスクになった時点で可逆マスクを解除する動作が終了する(図17のステップS445Bの“NO”参照)。
従って、ユーザの解除権限に応じて、開示する画像の鮮明さを制御できる。即ち、K個の可逆マスクの全てを解除する解除権限を有するユーザが最も鮮明が画像を見ることができ、K−1個の可逆マスクを解除する解除権限を有するユーザが2番目に鮮明な画像を見ることができ、1個の可逆マスクのみを解除する解除権限を有するユーザが最も不鮮明な画像を見ることになる。
図18は、この発明の実施の形態によるセキュリティーシステムの構成を示す概略図である。
図18を参照して、この発明の実施の形態によるセキュリティーシステム100は、暗号装置10と、復号装置20とを備える。
暗号装置10は、例えば、監視カメラ30が撮影した画像データを受信し、その受信した画像データのマスク対象領域に上述した方法によって可逆マスクを掛ける。そして、暗号装置10は、可逆マスクを掛けた画像データおよびマスク対象領域の座標等を復号装置20へ送信する。
復号装置20は、可逆マスクを掛けた画像データおよびマスク対象領域の座標等を受信する。そして、復号装置20は、ユーザIDおよびパスワードを外部から受けると、その受けたユーザIDおよびパスワードを認証サーバ40へ送信する。その後、復号装置20は、認証サーバ40から解除権限を受信すると、上述した方法によって、マスク対象領域に掛けられた可逆マスクを解除し、その解除した画像データを出力する。
復号装置20は、認証サーバ40から解除権限を受信しない場合、可逆マスクを解除できないので、認証サーバ40が保持する認証テーブルCTFにおいて、各ユーザに対する解除権限を各種設定することによって、解除権限に応じて、開示する画像の内容を制御でき、セキュリティーを向上できる。
この発明の実施の形態においては、暗号装置10および復号装置20の動作をコンピュータによって実現してもよい。
この場合、暗号装置10は、CPU(Central Processing Unit)、ROM(Read Only Memory)およびRAM(Random Access Memory)を備える。そして、ROMは、図6に示すフローチャートのステップS1〜ステップS4からなるプログラムA、図6および図7に示すフローチャートのステップS1〜ステップS4(ステップS31〜S39を含む)からなるプログラムB、図6および図8に示すフローチャートのステップS1〜ステップS4(ステップS31A〜S42Aを含む)からなるプログラムC、および図6および図9に示すフローチャートのステップS1〜ステップS4(ステップS31B〜S42Bを含む)からなるプログラムDのいずれかのプログラムを格納する。
そして、暗号装置10において、CPUは、ROMからプログラム(プログラムA〜Dのいずれか)を読み出して実行し、少なくとも1つのマスク対象領域を画像データから検出し、その検出した少なくとも1つのマスク対象領域に少なくとも1つの可逆マスクを掛ける。
また、復号装置20も、CPU、ROMおよびRAMを備える。そして、ROMは、図14に示すフローチャートのステップS41〜ステップS44からなるプログラムE、図14および図15に示すフローチャートのステップS41〜ステップS44(ステップS441〜S447を含む)からなるプログラムF、図14および図16に示すフローチャートのステップS41〜ステップS44(ステップS441A〜S451Aを含む)からなるプログラムG、および図14および図17に示すフローチャートのステップS41〜ステップS44(ステップS441B〜S451Bを含む)からなるプログラムHのいずれかのプログラムを格納する。
そして、復号装置20において、CPUは、ROMからプログラム(プログラムE〜Hのいずれか)を読み出して実行し、ユーザの解除権限に応じて、画像データの少なくとも1つのマスク対象領域に掛けられた少なくとも1つの可逆マスクを解除する。
上記においては、マスク対象領域の画素値のmビットを別のmビットに変換することによって可逆マスクをマスク対象領域に掛けることについて説明したが、この発明の実施の形態においては、これに限らず、暗号装置10は、マスク対象領域の画素値をマスク対象領域の複数の画素値間で相互に交換する方法、マスク対象領域の複数の画素値間で四則演算の少なくとも1つを用いた演算を行って複数の画素値間で画素値を交換する方法、およびマスク対象領域の各画素値を示すnビットのビット値を構成するn個のビットの配列順序を変更して画素値を変換する方法のいずれかを用いて可逆マスクをマスク対象領域に掛けてもよく、一般的には、何らかの方法によって、マスク対象領域の画素値を別の画素値に変換することによってマスク対象領域に可逆マスクを掛けてもよい。この場合、暗号装置10は、画素値を変換する変換規則を暗号化して復号装置20へ送信する。また、画素値を変換する変換規則は、DVD等の記録媒体に記録されて、復号装置20の管理者へ送られる。
また、この発明の実施の形態においては、暗号装置10は、マスク対象領域の画素値を別の画素値に変換する方法以外の方法を用いてマスク対象領域に可逆マスクを掛けてもよく、一般的には、可逆マスクをマスク対象領域に掛けるものであればよい。暗号装置10において実行されるプログラムについても同様である。
更に、この発明の実施の形態による復号装置20は、暗号装置10に対応して、何らかの方法によって、マスク対象領域の画素値を元の画素値に変換することによって可逆マスクを解除するものであればよい。そして、この発明の実施の形態による復号装置20は、一般的には、暗号装置10によって可逆マスクが掛けられた画像データのマスク対象領域から可逆マスクを解除するものであればよい。復号装置20において実行されるプログラムについても同様である。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。