(58)【調査した分野】(Int.Cl.,DB名)
前記画像処理手段は、前記複数個の色チャンネルのそれぞれに埋め込まれた前記ウォーターマークの一部又は全部が互いに重なるように、前記各サイズのウォーターマークを埋め込む、
ことを特徴とする請求項4に記載の画像処理装置。
【発明を実施するための形態】
【0020】
[1.画像処理システムのハードウェア構成]
以下、本発明に関わる画像処理装置を含む画像処理システムの実施形態の例を説明する。
図1は、実施形態に関わる画像処理システムの全体構成を示す図である。
図1に示すように、画像処理システム1は、画像処理サーバ10(画像処理装置の一例)、ユーザ端末20、及び管理者端末30を含む。画像処理サーバ10、ユーザ端末20、及び管理者端末30の各々は、ネットワーク2を介してデータ送受信可能に接続される。なお、ここでは、これらを1台ずつとして説明するが、これらは複数台あってもよい。
【0021】
画像処理サーバ10は、サーバコンピュータである。画像処理サーバ10は、制御部11、記憶部12、及び通信部13を含む。制御部11は、例えば、一又は複数のマイクロプロセッサを含む。制御部11は、記憶部12に記憶されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMであり、補助記憶部は、ハードディスク又はソリッドステートドライブ等である。通信部13は、ネットワークカードを含む。通信部13は、ネットワーク2を介してデータ通信を行う。
【0022】
ユーザ端末20は、ユーザが操作するコンピュータであり、例えば、パーソナルコンピュータ、携帯電話機(スマートフォンを含む)、又は携帯情報端末(タブレット型コンピュータを含む)等である。ユーザ端末20は、制御部21、記憶部22、通信部23、操作部24、及び表示部25を含む。制御部21、記憶部22、及び通信部23のハードウェア構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であるので説明を省略する。
【0023】
操作部24は、ユーザが操作を行うための入力デバイスであり、例えば、マウスやキーボード、タッチパネル等である。操作部24は、ユーザによる操作内容を制御部21に伝達する。表示部25は、例えば、液晶表示部又は有機EL表示部等である。表示部25は、制御部21の指示に従って画面を表示する。
【0024】
管理者端末30は、管理者が操作するコンピュータであり、例えば、パーソナルコンピュータ、携帯電話機(スマートフォンを含む)、又は携帯情報端末(タブレット型コンピュータを含む)等である。管理者端末30の制御部31、記憶部32、通信部33、操作部34、及び表示部35のハードウェア構成は、それぞれ制御部21、記憶部22、通信部23、操作部24、及び表示部25と同様であるので説明を省略する。
【0025】
なお、記憶部12,22,32に記憶されるものとして説明するプログラム及びデータは、ネットワーク2を介して記憶部12,22,32に供給されるようにしてもよい。また、画像処理サーバ10、ユーザ端末20、及び管理者端末30のハードウェア構成は、上記の例に限られず、種々のコンピュータのハードウェアを適用可能である。例えば、画像処理サーバ10、ユーザ端末20、及び管理者端末30の各々は、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)を含んでもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部を介して記憶部12,22,32に供給されるようにしてもよい。
【0026】
本実施形態では、画像処理サーバ10は、ユーザが勤務する会社の秘密情報の画像を管理する。例えば、ユーザが画像を故意に社外に公開した場合に当該ユーザを特定できるように、画像処理サーバ10は、ユーザが要求した画像に複数サイズのウォーターマークを埋め込むことで、ユーザが画像を加工したとしても、ウォーターマークを検出する確実性を高めるようにしている。以降、当該技術の詳細について説明する。
【0027】
[2.画像処理システムにおいて実現される機能]
図2は、画像処理システム1で実現される機能の一例を示す機能ブロック図である。本実施形態では、主に、画像処理サーバ10で実現される機能を説明する。
図2に示すように、画像処理サーバ10では、データ記憶部100、要求受付部101、画像データ取得部102、ウォーターマーク生成部103、画像処理部104、及び画像提供部105が実現される。
【0028】
[2−1.データ記憶部]
データ記憶部100は、記憶部12を主として実現される。データ記憶部100は、複数サイズのウォーターマークを画像に埋め込むための各種データを記憶する。例えば、データ記憶部100は、ユーザデータベース及び画像データベースを記憶する。
【0029】
ユーザデータベースは、画像処理システム1を利用するユーザに関する情報を格納する。例えば、ユーザデータベースは、ユーザを一意に識別するユーザIDやユーザの個人情報を格納する。個人情報は、例えば、ユーザ名(例えば、氏名やユーザアカウント)、ユーザの所属(例えば、会社名や所属部署)、及びユーザの連絡先(例えば、電話番号やメールアドレス)などである。
【0030】
画像データベースは、画像処理サーバ10が管理する画像データに関する情報を格納する。画像データは、静止画データであってもよいし、動画データであってもよい。更に画像データは、カラー画像データであってもよいし、グレースケール画像データであってもよい。本実施形態では、画像データがカラーの静止画像を示す場合を例に挙げて説明する。
【0031】
画像データベースには、画像データそのものが格納されていてもよいし、画像データの所在のみが格納されていてもよい。画像データの所在とは、画像データの格納場所であり、例えば、画像データを格納したフォルダ(ディレクトリ)やURLなどのリンク情報である。画像データは、画像処理サーバ10に記憶されていてもよいし、画像処理サーバ10とデータ送受信可能に接続された他のコンピュータに記憶されていてもよい。また、画像データベースには、画像データの形式やデータサイズを格納するようにしてよい。画像データの形式は、例えば、画像データの拡張子や色深度情報などである。
【0032】
なお、データ記憶部100が記憶するデータは上記の例に限られない。データ記憶部100は、種々のデータを記憶してよい。例えば、ウォーターマークに画像データの著作者や管理者の情報を含める場合には、データ記憶部100は、画像データごとに著作者や管理者の情報を記憶してもよい。
【0033】
[2−2.要求受付部]
要求受付部101は、制御部11を主として実現される。要求受付部101は、ユーザによる画像データの要求を受け付ける。画像データの要求とは、画像データの取得要求又は表示要求である。例えば、要求受付部101は、ユーザ端末20からユーザが指定した画像データを識別する情報(ファイル名やリンク情報など)を受信することによって、画像データの要求を受け付けることになる。
【0034】
[2−3.画像データ取得部]
画像データ取得部102は、制御部11を主として実現される。画像データ取得部102は、画像データを取得する。本実施形態では、ユーザは画像データベースに格納された画像データを要求するので、画像データ取得部102は、画像データベースに格納された複数の画像データのうち、ユーザが指定した画像データを取得することになる。
【0035】
[2−4.ウォーターマーク生成部]
ウォーターマーク生成部103は、制御部11を主として実現される。ウォーターマーク生成部103は、複数サイズのウォーターマークを生成する。ウォーターマークは、デジタルウォーターマークとも呼ばれ、一般的には、データの秘密保持や著作権保護の目的で埋め込まれる画像である。ウォーターマークは、可視的なものと不可視的なものが存在するが、本実施形態では、ウォーターマークが不可視的である場合を説明する。
【0036】
ウォーターマークは、画像データベースに格納された画像に関する情報を含む。別の言い方をすれば、ウォーターマークは、自身が埋め込まれる画像に関する情報を含む。この情報は、画像の秘密を保持したり著作権を保護したりするための情報であり、例えば、画像を要求したユーザを識別するための情報、画像の著作者を識別するための情報、又は画像の管理者を識別するための情報である。ここでは、ウォーターマークは、画像データを要求したユーザを識別するための情報を含む場合を説明する。ユーザを識別するための情報は、ユーザデータベースに格納された情報であり、例えば、ユーザID、ユーザ名、所属、及び連絡先などである。
【0037】
また、ウォーターマークは、画像で表されてもよいし、テキストで表されてもよい。本実施形態では、ウォーターマークが画像として表される場合を説明する。更に、その画像の一例として、所与の規格で定められたコードを用いる場合を説明する。コードは、バーコードであってもよいし、二次元コードであってもよい。ここでは、ここでは、ウォーターマークは、複数段階の誤り訂正レベルを有する二次元コードである場合を説明する。誤り訂正レベルは、コードに格納された情報のうち訂正可能な情報の多さ(割合)を示す。誤り訂正の方法自体は公知の種々の手法を適用可能であり、例えば、リードソロモン符号などの誤り訂正符号を利用してよい。
【0038】
本実施形態では、二次元コードの一例として、4段階の誤り訂正レベルを有するQRコード(登録商標)を説明する。この二次元コードでは、レベルL、レベルM、レベルQ、レベルHの順番に誤り訂正レベルが高くなり、それぞれの誤り訂正能力は、約7%、約15%、約25%、約30%である。ウォーターマーク生成部103は、基準以上の誤り訂正レベルの二次元コードを、複数個のサイズごとに生成する。基準以上の誤り訂正レベルとは、複数段階の誤り訂正レベルのうち、所定レベル以上のものである。ここでは、ウォーターマーク生成部103は、レベルHの二次元コードをウォーターマークとして生成する場合を説明する。
【0039】
図3は、ウォーターマーク生成部103が生成するウォーターマークの一例を示す図である。
図3に示すように、本実施形態では、66%・100%・150%の3つのサイズのウォーターマーク40S,40R,40Lを生成する場合を説明するが、ウォーターマーク生成部103は、2つ以上のサイズのウォーターマークを生成すればよく、その数は3つに限られず任意であってよい。なお、ここでのサイズとは、面積的な大きさ(ピクセル数)のことであり、例えば、画像の縦幅・横幅・解像度(単位長さあたりのピクセル数)によりサイズが定まる。なお、以降では、3つのウォーターマーク40S,40R,40Lを特に区別しないときは、単にウォーターマーク40と記載する。また、特に図面を参照する必要のないときは、画像とウォーターマークの符号を省略する。
【0040】
ウォーターマーク生成部103は、埋め込むべき情報をコード情報に変換するためのアルゴリズムに基づいて、ウォーターマーク40を生成することになる。このアルゴリズムは、公知の符号化アルゴリズムなどを利用すればよい。ウォーターマーク生成部103は、アルゴリズムに基づいてコードに変換し、縦横が所定ピクセル数のウォーターマーク40Rを生成する。そして、ウォーターマーク生成部103は、ウォーターマーク40Rを所定倍率(ここでは66%)だけ縮小したものをウォーターマーク40Sとし、所定倍率(ここでは150%)だけ拡大したものをウォーターマーク40Lとする。即ち、ウォーターマーク40Sは、ウォーターマーク40Rの縦横のピクセル数が66%になったものであり、ウォーターマーク40Lは、ウォーターマーク40Rの縦横のピクセル数が150%になったものである。
【0041】
[2−5.画像処理部]
画像処理部104は、制御部11を主として実現される。画像処理部104は、画像データ取得部102により取得された画像データが示す画像に、ウォーターマーク生成部103により生成された複数サイズのそれぞれのウォーターマークを埋め込む。
【0042】
以降、
図4及び
図5を参照して、画像処理部104の処理を説明する。
図4は、ウォーターマーク40を埋め込む前の画像を示す図である。
図4では、画像50の左上をスクリーン座標系(X−Y座標系)の原点Oとする。本実施形態では、画像50がカラー画像である場合を説明しているので、画像50の各画素の画素値は、色チャンネルごとに数値を含んでいる。例えば、RGBカラー画像であれば、画素値は、赤チャンネルの数値R
xy、緑チャンネルの数値G
xy、及び青チャンネルB
xyの数値を含む。なお、これらのxとyの文字は画素の座標である。このRGBカラー画像が24ビットであれば、各色チャンネルの数値は、8ビットで表されるので0〜255の何れかの数値となる。
【0043】
画像処理部104は、これら3つの数値R
xy,G
xy,B
xyのうち、ウォーターマークを埋め込む色チャンネルの数値を変化させることによって、画像50にウォーターマーク40を埋め込む。画像処理部104は、全ての色チャンネルの数値R
xy,G
xy,B
xyを変化させてもよいし、一部の色チャンネルの数値のみを変化させるようにしてもよい。即ち、画像処理部104は、全ての色チャンネルに対してウォーターマーク40を埋め込んでもよいし、一部の色チャンネルにウォーターマーク40を埋め込んでもよい。本実施形態では、画像処理部104が、赤チャンネルの数値R
xyを変化させることによって、赤チャンネルに対してウォーターマーク40を埋め込む場合を説明する。即ち、画像処理部104は、複数の色チャンネルのうち、赤チャンネルだけにウォーターマーク40を埋め込むことになる。このため、
図3や後述の
図5では、ウォーターマーク40を黒で示しているが、実際には赤色である。なお、画像処理部104は、赤チャンネルではなく、緑チャンネル又は青チャンネルにウォーターマーク40を埋め込んでもよいし、2つ以上の色チャンネルにウォーターマーク40を埋め込んでもよい。2つ以上の色チャンネルにウォーターマーク40を埋め込む場合は後述の変形例で説明する。
【0044】
図5は、ウォーターマークが埋め込まれる様子を示す図である。
図5に示す例では、画像処理部104は、画像50の上から、ウォーターマーク40S,40R,40Lの順番で埋め込む。
図5では、ウォーターマーク40R,40R,40Lが、それぞれ6個、6個、3個である場合を説明するが、これらの個数は任意であってよく、1個ずつであってもよい。なお、画像処理部104は、予め定められた方法に基づいてウォーターマーク40を埋め込む位置を選択すればよく、
図5のような順番ではなく、ウォーターマーク40を埋め込む位置をランダムに決定してもよい。また、
図5では、説明の簡略化のために、ウォーターマーク40S,40R,40Lが互いに重ならないようにしているが、後述する変形例のように、これらが互いに重なっていてもよい。
【0045】
先述したように、本実施形態では、ウォーターマーク40は二次元コードである。二次元コードの各セルは、0又は1の何れかの値を取る。例えば、「0」に対応するセルは色がなく、「1」に対応するセルは色を有する。なお、ここでの色がないとは背景色と同じ色であることを意味し、色を有するとは背景色と異なる色であることを意味する。ここでは、赤チャンネルに対してウォーターマーク40が埋め込まれるので、ウォーターマーク40の「0」のセルに対応する領域は赤色がなく、「1」のセルに対応する領域は赤色を有することになる。なお、ウォーターマーク40の二次元コードの1つのセルは、画像としては1画素(1ピクセル)だけで構成されてもよいし、複数の画素から構成されてもよい。例えば、画像圧縮に耐えられるように、十分な大きさのウォーターマーク40を採用する場合には、1つのセルは複数の画素から構成されるようにすればよい。
【0046】
例えば、画像処理部104は、ウォーターマーク40の「0」のセルに対応する画素の画素値は変化させず、ウォーターマーク40の「1」のセルに対応する画素の画素値は変化させる。具体的には、画像処理部104は、ウォーターマーク40の「0」のセルに対応する画素の画素値は(R
xy,G
xy,B
xy)のまま変化させず、ウォーターマーク40の「1」のセルに対応する画素の画素値を(R
xy+1,G
xy,B
xy)とする。このように、ウォーターマーク40が埋め込まれた領域の画素値はわずかしか変化しないので、
図5に示すように、ウォーターマーク40は人の目では気づきにくい状態(不可視的な状態)となる。
【0047】
なお、画像処理部104が数値R
xyを1だけ増加させる場合を説明したが、2以上の変化をさせてもよい。ただし、数値R
xyの変化が大きすぎると、不可視性を維持できない可能性があるので、変化量は閾値(例えば、4)未満となるようにしてもよい。また、画像処理部104は、数値R
xyを増加させるのではなく減少させてもよい。この場合、画像処理部104は、ウォーターマーク40の「0」のセルに対応する画素の画素値を減少させ、ウォーターマーク40の「1」のセルに対応する画素の画素値は変化さないようにしてもよい。また、数値R
xyの変化量は、固定値であってもよいし、可変値であってもよい。
【0048】
また、画像50に埋め込まれるウォーターマーク40のサイズ及びその数は、画像データベースに格納された全ての画像データで同じであってもよいし、画像データごとに異なっていてもよい。更に、ウォーターマーク40のサイズや数は、固定値であってもよいし、可変値であってもよい。可変値である場合には、ウォーターマーク40のサイズや数は、ユーザや画像データなどの所定条件のもとで定まってもよいし、ランダムに定まってもよい。
【0049】
[2−6.画像提供部]
画像提供部105は、制御部11を主として実現される。画像提供部105は、要求受付部101により要求を受け付けたユーザに対して、画像処理部104によりウォーターマークが埋め込まれた画像データ(即ち、画素値を変化させた画像データ)を提供する。例えば、画像提供部105は、ウォーターマークを埋め込んだ画像データ自体をユーザ端末に送信してもよいし、画像データ自体は送信せずにウォーターマークが埋め込まれた画像を表示部25に表示させるためのデータ(画面の表示データ)のみをユーザ端末に送信してもよい。
【0050】
[3.画像処理システムにおいて実行される処理]
次に、画像処理システム1において実行される処理の一例として、画像にウォーターマークを埋め込むためのウォーターマーク埋め込み処理と、画像に埋め込まれたウォーターマークを検出するためのウォーターマーク検出処理と、を説明する。下記に説明する処理は、
図2に示す機能ブロックが実行する処理の一例である。
【0051】
図6は、ウォーターマーク埋め込み処理の一例を示すフロー図である。
図6に示す処理は、制御部11が、記憶部12に記憶されたプログラムに従って動作し、制御部21が、記憶部22に記憶されたプログラムに従って動作することによって実行される。
【0052】
図6に示すように、まず、ユーザ端末20において、ユーザが操作部24から所定の操作を行うと、制御部21は、画像処理サーバ10に対して画像データを要求する(S1)。画像データの要求は、所定の形式で行われるようにすればよく、例えば、要求する画像データを識別するための情報(ファイル名やリンク情報など)を含む。なお、ユーザ端末20から画像処理サーバ10に対して要求が送信される場合にはユーザIDやIPアドレスが送信されており、画像処理サーバ10は、どのユーザがアクセスしているかを特定可能になっているものとする。
【0053】
画像処理サーバ10においては、画像データの要求を受信すると、制御部11は、ユーザデータベースを参照し、画像データを要求したユーザIDなどの情報を取得する(S2)。S2においては、制御部11は、画像データの要求に基づいて、ウォーターマークとして埋め込む情報を取得することになる。なお、この情報は、ユーザが画像データを要求した日時や画像データを提供する日時が含まれていてもよい。
【0054】
制御部11は、S2で取得した情報に基づいて、複数サイズのウォーターマークを生成する(S3)。例えば、ウォーターマークを生成するプログラムは記憶部12に記憶されているものとする。本実施形態では、二次元コードをウォーターマークとして用いるので、公知の二次元コードビルダを利用してよい。二次元コードビルダは、生成する二次元コードの誤り訂正レベルを設定可能であり、ここでは、レベルHとする。また、生成すべきウォーターマークのサイズを示す情報は予め記憶部12に記憶されているものとする。S3においては、制御部11は、S2で取得した情報を二次元コードビルダに入力することによってウォーターマークを生成する。二次元コードビルダは、各サイズのウォーターマークを生成してもよいし、1つのサイズのみを生成して、制御部11がそのサイズのウォーターマークを拡大又は縮小することで各サイズのウォーターマークを生成するようにしてもよい。
【0055】
制御部11は、画像データベースを参照し、ユーザが要求した画像データを取得する(S4)。制御部11は、画像データが示す画像のうち、S3で生成した複数のサイズのそれぞれのウォーターマークを埋め込む領域を選択する(S5)。S5においては、制御部11は、複数サイズのそれぞれについて、ウォーターマークを埋め込む領域を選択する。例えば、制御部11は、
図5のようにウォーターマークを埋め込む場合、画像50の上から66%のウォーターマーク40S、100%のウォーターマーク40R、及び150%のウォーターマーク40Lの順番で領域を選択する。
【0056】
制御部11は、S3で生成した複数サイズのそれぞれのウォーターマークを、S5で選択した領域に埋め込む(S6)。S6においては、制御部11は、
図4及び
図5を参照して説明した方法に基づいて、ウォーターマークを埋め込む領域の赤チャンネルの数値R
xyを変化させることになる。制御部11は、S6でウォーターマークを埋め込んだ画像データをユーザ端末20に送信する(S7)。ユーザ端末20においては、画像データを受信すると、制御部21は、受信した画像データを表示部25に表示させ(S8)、本処理は終了する。
【0057】
以上説明したウォーターマーク埋め込み処理が実行されると、ユーザは、受信した画像データや表示部25のスクリーンショットなどをネットワーク2上のコンピュータにアップロードできる状態となる。以降説明するウォーターマーク検出処理は、ネットワーク2上のコンピュータにアップロードされた画像に埋め込まれたウォーターマークを管理者端末30で検出するための処理である。
【0058】
図7は、ウォーターマーク検出処理の一例を示すフロー図である。
図7に示す処理は、制御部31が、記憶部32に記憶されたプログラムに従って動作することによって実行される。
図7に示すように、まず、制御部31は、ネットワーク2上のコンピュータに公開された画像データを取得する(S21)。S21においては、制御部31は、ネットワーク2上のコンピュータから画像データを受信してもよいし、予め記憶部32にダウンロードしておいた画像データを読み出してもよい。
【0059】
制御部31は、S21で取得した画像データが示す画像内の領域を選択する(S22)。S22においては、制御部31は、予め定められた方法に基づいて画像内の領域を選択すればよく、所定の大きさの領域を画像内の所定位置から順番に選択してもよいし、ランダムに領域を選択してもよい。なお、S22以降の処理は、ウォーターマークを埋め込んだ色チャンネルに対して実行される。本実施形態では、赤チャンネルに対してウォーターマークを埋め込むので、S22以降の処理は、赤チャンネルに対して実行されることになる。後述する変形例のように複数の色チャンネルに対してウォーターマークを埋め込む場合には、S22以降の処理は、当該色チャンネルごとに実行されることになる。
【0060】
制御部31は、S22で選択した領域に対してヒストグラムイコライゼーション処理を実行する(S23)。ヒストグラムイコライゼーション処理は、ヒストグラムにおける頻度の累積を示すグラフが直線状になるように各画素値を変換する処理である。画像に対してヒストグラムイコライゼーション処理を施すことにより、画像の階調に偏りがあるような場合に、階調を万遍なく分散させることができる。ヒストグラムイコライゼーション処理自体は、公知の種々の処理を適用可能である。S23では、制御部31は、赤チャンネルごとにヒストグラムイコライゼーション処理を実行するので、赤チャンネルのヒストグラムを生成することになる。なお、画像全体に対してヒストグラムイコライゼーション処理を施してもよいが、一部の領域に対してヒストグラムイコライゼーション処理を施すことにより、各階調のピーク間の距離をより広げることができるので、ウォーターマークが浮かび上がりやすくなり、その結果、ウォーターマークを検出しやすくなる。
【0061】
制御部31は、S23で生成したヒストグラムを参照して、特定の階調(又はピーク)を選択する(S24)。S24においては、制御部31は、ヒストグラムに表れた頻度を閾値と比較し、基準以上の頻度が現れた階調を選択する。この閾値は、記憶部32に記憶されているものとする。
【0062】
制御部31は、S24で選択した特定の階調でウォーターマークの一部又は全部を検出可能であるかを判定する(S25)。S25においては、制御部31は、ウォーターマークに含まれる所定パターンを検出したかを判定することになる。本実施形態のように二次元コードをウォーターマークとして用いるのであれば、制御部31は、二次元コードのコーナーに配置された3つのファインダパターンを探索する。例えば、制御部31は、1つ又は2つのファインダパターンを検出した場合にウォーターマークの一部を検出したと判定し、3つのファインダパターンを検出した場合にウォーターマークの全部を検出したと判定する。
【0063】
一部又は全部を検出可能であると判定された場合(S25;Y)、制御部31は、当該検出したウォーターマークが完全であるかを判定する(S26)。本実施形態のように二次元コードをウォーターマークとして用いるのであれば、S26においては、制御部31は、公知の二次元コードリーダーでウォーターマークの読み取りが可能かを判定すればよい。他にも例えば、制御部31は、ウォーターマークに含まれる所定パターンを検出したかを判定してもよい。このパターンは、S25の判定で用いるパターンと同じであってもよいし、異なっていてもよい。S26においては、制御部31は、パターンマッチングを利用して、二次元コードのアライメントパターン、タイミングパターン、又はフォーマット情報を検出したかを判定してもよい。
【0064】
ウォーターマークが完全であると判定された場合(S26;Y)、制御部31は、ウォーターマークに含まれるメッセージを読み出して表示部25に表示させ(S27)、本処理は終了する。S27においては、制御部31は、ウォーターマークに含まれるユーザIDなどの情報を表示部25に表示させることになる。
【0065】
一方、ウォーターマークが完全でないと判定された場合(S26;N)、制御部31は、記憶部32を参照し、既に検出したウォーターマークの一部があるかを判定する(S28)。過去にS25で検出されたウォーターマークの一部は、記憶部32に記憶されているものとする。
【0066】
ウォーターマークの一部があると判定された場合(S28;Y)、制御部31は、S25で検出したウォーターマークの一部と、既に検出したウォーターマークの一部と、を合成する(S29)。S29においては、制御部31は、各ウォーターマーク部分に含まれる所定パターンを所定位置に配置することによって合成する。例えば、本実施形態のように二次元コードをウォーターマークとして用いるのであれば、ファインダパターンは3つのコーナーに配置されるので、各ウォーターマーク部分に含まれるファインダパターンがコーナーに配置されるようにする。
【0067】
制御部31は、S29で合成したウォーターマークが完全であるかを判定する(S30)。S30の処理は、S26と同様である。ウォーターマークが完全であると判定された場合(S30;Y)、S27においてメッセージが読み出され、本処理は終了する。一方、ウォーターマークが完全でないと判定された場合(S30;N)、後述するS32に移行する。
【0068】
S25において、一部又は全部を検出可能でないと判定された場合(S25;N)、制御部31は、S24における階調の選択を終了するかを判定する(S31)。S31においては、制御部31は、まだ選択していない階調が存在するかを判定することになる。階調の選択を終了しないと判定された場合(S31;N)、S24の処理に戻り、次の階調についてウォーターマークの検出処理が実行される。
【0069】
一方、階調の選択を終了すると判定された場合(S31;Y)、制御部31は、S22において全ての領域を選択し終わったかを判定する(S32)。選択していない領域があると判定されない場合(S32;N)、S22の処理に戻り、次の領域についてウォーターマークの検出処理が実行される。
【0070】
一方、領域の選択を終了すると判定された場合(S32;Y)、制御部31は、ウォーターマークを検出できなかった旨を示すエラーメッセージを表示部35に表示させ(S33)、本処理は終了する。
【0071】
以上説明した画像処理システム1によれば、画像処理サーバ10が複数サイズのウォーターマークを画像に埋め込むので、ウォーターマークを埋め込んだ画像が加工されたとしても、ウォーターマークを検出しやすくすることができる。例えば、圧縮や縮小に強い大きなウォーターマークと、切り取りや塗りつぶしに強い小さなウォーターマークと、を1つの画像に埋め込むことで、ユーザが画像を圧縮したり切り取ったりした場合であっても、ウォーターマークを検出する確率を高めることができる。
【0072】
また、画像処理サーバ10に対して画像データを要求したユーザを識別する情報をウォーターマークに含めるので、例えば、社内の秘密情報である画像をユーザが漏えいした場合であっても、ウォーターマークから当該ユーザを特定することができる。その結果、画像の漏えいを未然に防止することができる。
【0073】
また、基準以上の誤り訂正レベルの二次元コードをウォーターマークとして使用するので、ウォーターマークの一部が、ユーザによる加工や元々の画像の色との関係でうまく検出できなかったとしても、その誤りを訂正しやすくなるので、ウォーターマークに埋め込んだ情報をより正確に抽出することができる。
【0074】
[4.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0075】
図8は、変形例の機能ブロック図である。
図8に示すように、下記に説明する変形例では、実施形態の機能に加えて、拡張子取得部106(変形例(3)参照)及びデータサイズ取得部107(変形例(4)参照)が実現される。
【0076】
(1)例えば、実施形態では、ある単一の色チャンネルに対してのみウォーターマークを埋め込む場合を説明したが、複数個の色チャンネルのそれぞれに対してウォーターマークを埋め込むようにしてもよい。ここでは、複数個の色チャンネルを有するカラー画像の全ての色チャンネルに対してウォーターマークを埋め込む場合を説明する。
【0077】
変形例(1)の画像処理部104は、カラー画像の画素値に含まれる複数個の色チャンネルのそれぞれの数値R
xy,G
xy,B
xyを変化させることによって、複数個の色チャンネルのそれぞれに、複数サイズのそれぞれのウォーターマークを埋め込むことになる。
【0078】
図9は、変形例(1)においてウォーターマークが埋め込まれる様子を示す図である。ここでは、ウォーターマーク40のサイズは、実施形態と同様の場合を説明する。即ち、66%・100%・150%の3つのサイズのウォーターマーク40が埋め込められる場合を説明する。
図9のウォーターマーク40SR,40RR,40LRは、赤チャンネルに埋め込まれるウォーターマークを示す。ウォーターマーク40SG,40RG,40LGは、緑チャンネルに埋め込まれるウォーターマークを示す。ウォーターマーク40SB,40RB,40LBは、青チャンネルに埋め込まれるウォーターマークを示す。なお、各ウォーターマーク40が埋め込まれる位置は、実施形態と同様、予め定められた方法に基づいて決定されるようにすればよい。また、
図9では、各ウォーターマーク40を黒で示しているが、実際には、色チャンネルに対応する色(赤色、緑色、又は青色)である。
【0079】
ウォーターマーク40SR,40RR,40LRが埋め込まれる方法は、実施形態で説明した方法と同様である。画像処理部104は、ウォーターマーク40SG,40RG,40LGの「0」のセルに対応する画素の画素値は(R
xy,G
xy,B
xy)のまま変化させず、ウォーターマーク40SG,40RG,40LGの「1」のセルに対応する画素の画素値を(R
xy,G
xy+1,B
xy)とする。同様に、画像処理部104は、ウォーターマーク40SB,40RB,40LBの「0」のセルに対応する画素の画素値は(R
xy,G
xy,B
xy)のまま変化させず、ウォーターマーク40SB,40RB,40LBの「1」のセルに対応する画素の画素値を(R
xy,G
xy,B
xy+1)とする。ここでは、実施形態と同様、各色チャンネルの数値の変化を少なくしてウォーターマーク40の不可視性を高めている。
【0080】
なお、ここでは、各色チャンネルで数値の変化量が同じである場合を説明したが、色チャンネルに応じて数値の変化量を異ならせてもよい。また、色チャンネルに応じて、ウォーターマーク40のサイズを異ならせてもよい。この場合、画像処理部104は、ある1つの色チャンネルの中でウォーターマークのサイズを異ならせてもよいし、ある色チャンネルのウォーターマークのサイズと、他の色チャンネルのウォーターマークのサイズと、を異ならせてもよい。更に、画像処理部104は、色チャンネルごとにウォーターマークのサイズが異なるようにしてもよい。
【0081】
変形例(1)によれば、複数個の色チャンネルのそれぞれにウォーターマークを埋め込むので、一部の色チャンネルがウォーターマークを検出しにくい傾向を有していたとしても、他の色チャンネルがウォーターマークを検出しやすい傾向を有していれば、ウォーターマークを検出できるので、ウォーターマークを検出する確実性を向上させることができる。具体的には、グラデーションしている領域内にウォーターマークが埋め込まれると、ウォーターマークが埋め込まれた画素の画素値が変化して周囲の画素値と同じになってしまい、ウォーターマークを検出できないことがあるが、例えば、緑チャンネルと青チャンネルがグラデーションしていても、赤チャンネルがグラデーションしていなければ、赤チャンネルに埋め込んだウォーターマークを検出することができる。更に、各色チャンネルに対して異なるウォーターマークを埋め込むこともできるので、画像に対して埋め込む情報量を多くすることができる。
【0082】
なお、画像処理部104は、3つ全ての色チャンネルに対してウォーターマークを埋め込むのではなく、任意の2つにウォーターマークを埋め込んでもよい。更に、ウォーターマークを埋め込む色チャンネルは、固定であってもよいし、所与の条件のもとで可変であってもよい。また、変形例(1)では、
図7で説明したウォーターマーク検出処理は、色チャンネルごとに実行される。即ち、S23において、赤チャンネル、緑チャンネル、及び青チャンネルのそれぞれに対してヒストグラムイコライゼーション処理が施されて3つのヒストグラムが生成され、S24以降の処理は、これら3つのヒストグラムのそれぞれに対して実行される。このため、例えば、S26又はS30において、何れかの色チャンネルにおいてウォーターマークが完全であると判定された場合には、他の色チャンネルのウォーターマークが完全でなくてもウォーターマーク内のメッセージを読み取ることが可能なので、S27の処理に移行することになる。
【0083】
(2)また例えば、変形例(1)では、
図9のように各色チャンネルのウォーターマークが互いに重ならない場合を例に挙げたが、ある色チャンネルのウォーターマークと、他の色チャンネルのウォーターマークと、はそれぞれ別個のものとして検出可能(例えば、赤チャンネルのウォーターマークと、緑チャンネルのウォーターマークと、が重なっても、色が混ざってウォーターマークが分からなくなるわけではなく、赤チャンネル成分又は緑チャンネル成分だけを抜き出せば数値が変化した領域を特定可能)なので、これらは互いに重なってもよい。変形例(2)の画像処理部104は、各色チャンネルに埋め込まれたウォーターマークの一部又は全部が互いに重なるように、各サイズのウォーターマークを埋め込む。
【0084】
例えば、画像処理部104は、赤チャンネルに埋め込むウォーターマークの一部と、緑チャンネル又は青チャンネルに埋め込むウォーターマークの一部と、が重なるように、ウォーターマークを埋め込む位置を決定する。また例えば、画像処理部104は、赤チャンネルに埋め込むウォーターマークが、緑チャンネル又は青チャンネルに埋め込むウォーターマークの全てを含むように、ウォーターマークを埋め込む位置を決定する。なお、各色チャンネルに対して同じ位置に同じウォーターマークが埋め込まれるようにしてもよい。
【0085】
変形例(2)によれば、各色チャンネルのウォーターマークを重ねて配置することができるので、スペースを有効利用することができ、画像に埋め込むウォーターマークの数を多くすることができる。また、複数のサイズのウォーターマークを重ねて配置することで、圧縮や縮小に強い大きなウォーターマークと、切り取りや塗りつぶしに強い小さなウォーターマークと、を重ねて配置することができるので、画像の一部だけが切り取られたり画像が圧縮又は縮小されたりした場合であっても、より確実にウォーターマークを検出して、画像を公開したユーザを特定しやすくなる。
【0086】
(3)また例えば、実施形態では、予め定められたサイズのウォーターマークを画像に埋め込む場合を説明したが、圧縮又は縮小される蓋然性の高い画像については、圧縮又は縮小に耐えられるようにウォーターマークを大きくしてもよい。例えば、画像データの拡張子をもとに圧縮又は縮小される蓋然性が高いかを推測し、その蓋然性が高ければウォーターマークのサイズを大きくしてもよい。
【0087】
変形例(3)の画像処理システム1は、拡張子取得部106を含む。拡張子取得部106は、制御部11を主として実現される。拡張子取得部106は、画像データ取得部102により取得された画像データの拡張子を取得する。拡張子取得部106は、画像データのファイル名から拡張子を取得してもよいし、画像データに関連付けられた情報(プロパティなど)から拡張子を取得してもよい。ここでは、拡張子が画像データベースに格納されているので、拡張子取得部106は、画像データベースを参照することによって拡張子を取得するようにしてよい。
【0088】
ウォーターマーク生成部103は、拡張子取得部106により取得された拡張子に基づいて、生成するウォーターマークのサイズを決定する。例えば、拡張子の種類と、生成すべきウォーターマークのサイズと、の関連付けがデータ記憶部100に記憶されているものとする。この関連付けは、テーブル形式であってもよいし、演算式形式でプログラムコード内に記述されていてもよい。ウォーターマーク生成部103は、拡張子取得部106により取得された拡張子に関連付けられたサイズのウォーターマークを生成する。
【0089】
例えば、BMPデータやTIFFデータは、比較的データサイズが大きいので圧縮又は縮小される蓋然性が高いが、GIFデータやJPEGデータは、比較的データサイズが小さいので圧縮又は縮小される蓋然性が低い。ウォーターマーク生成部103は、拡張子取得部106により取得された拡張子がBMPデータやTIFFデータを示す場合、拡張子取得部106により取得された拡張子がGIFデータやJPEGデータを示す場合よりもウォーターマークのサイズを大きくする。
【0090】
変形例(3)によれば、画像データの拡張子からユーザの加工方法を推測し、その加工方法に応じたサイズのウォーターマークを埋め込むことができるので、ウォーターマークを検出する確率をより高めることができる。
【0091】
(4)また例えば、変形例(3)では拡張子をもとにウォーターマークのサイズを決定する場合を例に挙げたが、画像データのデータサイズをもとにウォーターマークのサイズを決定してもよい。
【0092】
変形例(4)の画像処理システム1は、データサイズ取得部107を含む。データサイズ取得部107は、制御部11を主として実現される。データサイズ取得部107は、画像データ取得部102により取得された画像データのデータサイズを取得する。データサイズ取得部107は、画像データに関連付けられた情報(プロパティなど)からデータサイズを取得するようにしてもよい。ここでは、データサイズが画像データベースに格納されているので、拡張子取得部106は、画像データベースを参照することによってデータサイズを取得するようにしてよい。
【0093】
ウォーターマーク生成部103は、データサイズ取得部107により取得されたデータサイズに基づいて、生成するウォーターマークのサイズを決定する。例えば、データサイズと、生成すべきウォーターマークのサイズと、を関連付けがデータ記憶部100に記憶されているものとする。この関連付けは、テーブル形式であってもよいし、演算式形式でプログラムコード内に記述されていてもよい。ウォーターマーク生成部103は、データサイズ取得部107により取得されたデータサイズに関連付けられたサイズのウォーターマークを生成する。
【0094】
例えば、ウォーターマーク生成部103は、データサイズが大きくなるほど、画像データが圧縮又は縮小される蓋然性が高いので、ウォーターマークのサイズを大きくする。別の言い方をすれば、ウォーターマーク生成部103は、データサイズが小さくなるほど、画像データが圧縮又は縮小される蓋然性が低いので、ウォーターマークのサイズを小さくする。
【0095】
変形例(4)によれば、画像データの拡張子から加工方法を推測し、その加工方法に応じたサイズのウォーターマークを埋め込むことができるので、ウォーターマークを検出する確率をより高めることができる。
【0096】
(5)また例えば、実施形態では、ウォーターマークが埋め込まれる位置が固定されていたりランダムに決定されたりする場合を説明したが、画像の中央付近は切り取られやすいため、切り取りに強い小さなウォーターマークが画像の中央付近に配置されるようにしてもよい。
【0097】
変形例(5)の画像処理部104は、画像の中央に近いほどサイズが小さくなるように、複数サイズのそれぞれのウォーターマークを埋め込む位置を決定する。即ち、画像処理部104は、画像の端部に近いほどサイズが大きくなるように、複数サイズのそれぞれのウォーターマークを埋め込む位置を決定する。例えば、画像処理部104は、画像50の中心点の座標と所定距離以内に、ウォーターマーク生成部103が生成したウォーターマークのうち最も小さいものを埋め込む。別の言い方をすれば、画像処理部104は、画像50の中心点の座標と所定距離以上の場所に、ウォーターマーク生成部103が生成したウォーターマークのうち最も大きいものを埋め込む。
【0098】
変形例(5)によれば、画像データのデータサイズから加工方法を推測し、その加工方法に応じたサイズのウォーターマークを埋め込むことができるので、ウォーターマークを検出する確率をより高めることができる。
【0099】
(6)また例えば、各サイズのウォーターマークをばらばらに埋め込むのではなく、複数サイズのウォーターマークを1かたまりとしたウォーターマーク群を複数個埋め込むようにしてもよい。
【0100】
図10は、ウォーターマーク群が埋め込まれる様子を示す図である。
図10では、複数サイズのウォーターマークの集団をウォーターマーク群41とする。
図10に示すように、ウォーターマーク群41は、実施形態で説明した3つのサイズのウォーターマーク40からなる。変形例(6)の画像処理部104は、各サイズのウォーターマークからなるウォーターマーク群41を画像50に複数個埋め込む。
【0101】
例えば、画像処理部104は、ウォーターマーク群41における各ウォーターマーク40の数及び配置を決定する。ここでは、最も大きなウォーターマーク40Lを中心にして、それよりも小さなウォーターマーク40S,40Rを周囲に配置することになる。なお、ウォーターマーク群41によって、ウォーターマークのサイズ、数、及び配置の少なくとも1つが異なってもよい。また、ウォーターマーク群41は、互いにサイズが異なる複数のウォーターマーク40を含んでいればよく、各サイズのウォーターマーク40は1つずつであってもよいし、2つ以上であってもよい。
【0102】
変形例(6)によれば、ウォーターマーク群を複数埋め込むので、ウォーターマークを検出する確率をより高めることができる。
【0103】
(7)また例えば、変形例(1)〜(6)の2つ以上を組み合わせるようにしてもよい。
【0104】
また例えば、上記においては、各サイズで同じ情報を含むウォーターマークとしたが、ウォーターマーク生成部103は、サイズごとに異なる情報を含むウォーターマークを生成するようにしてもよい。このようにすることで、画像に埋め込む情報量を多くすることができる。また、ウォーターマーク生成部103は、サイズごとに誤り訂正レベルを異ならせるようにしてもよい。例えば、サイズが大きいほど誤り訂正レベルを低くして、サイズが小さいほど誤り訂正レベルを高くするようにしてもよい。
【0105】
また例えば、全てのウォーターマークの向きが同じである場合を説明したが、ウォーターマークの向きを異ならせてもよい。即ち、複数個の色チャンネルのそれぞれに埋め込むウォーターマークの向きを異ならせてもよい。画像処理部104は、ある1つのサイズの中でウォーターマークの向きを異ならせてもよいし、あるサイズのウォーターマークの向きと、他のサイズのウォーターマークの向きと、を異ならせてもよい。更に、画像処理部104は、サイズごとにウォーターマークの向きが異なるようにウォーターマークを埋め込むようにしてもよい。
【0106】
また例えば、画像処理部104は、各色チャンネルに対してヒストグラムイコライゼーション処理を実行し、色分布がまばらな色チャンネルに対してウォーターマークを埋め込むようにしてもよい。更に、画像処理部104は、画像内の領域ごとにヒストグラムイコライゼーション処理を実行し、色分布がまばらな領域に対してウォーターマークを埋め込むようにしてもよい。色分布がまばらか否かは、ヒストグラムに表れるピークの頻度数やピーク間の距離に基づいて判定されるようにすればよい。例えば、画像処理部104は、第1閾値以上の頻度の階調数が基準数以上である場合、第1閾値よりも小さい第2閾値以上の頻度の階調数が基準数未満である場合、又は、ピーク間の距離が所定距離(所定距離は、ウォーターマークを埋め込む場合の数値の変化量に応じた距離であってよい。)以上である場合に色分布がまばらであると判定してもよい。また例えば、変形例(1)において、画像処理部104は、色分布がまばらな色チャンネルに対してのみウォーターマークを埋め込んでもよい。
【0107】
また例えば、静止画像データにウォーターマークを埋め込む場合を説明したが、動画データにウォーターマークを埋め込んでもよい。更に、二次元コード以外のコードをウォーターマークとして利用してもよいし、コード以外の画像やテキストをウォーターマークとして利用してもよい。また例えば、ウォーターマークには任意の情報が含まれていてよく、画像データを要求したユーザ以外の情報が含まれていてもよい。
【0108】
また例えば、画像処理サーバ10で実現されるものとして説明した機能が他のコンピュータ(例えば、ユーザ端末20や管理者端末30など)で実現されるようにしてもよい。この場合、上記説明した各機能が実現されるコンピュータが本発明に係る画像処理装置に相当することになる。また、上記説明した機能のうち、画像データ取得部102、ウォーターマーク生成部103、及び画像処理部104以外の機能は省略してもよい。
ウォーターマークを埋め込んだ画像が加工されたとしても、ウォーターマークを検出する確実性を高める。画像処理装置(10)の画像データ取得手段(102)は、画像データを取得する。ウォーターマーク生成手段(103)は、複数サイズのウォーターマークを生成する。画像処理手段(104)は、画像データ取得手段(102)により取得された画像データが示す画像に、ウォーターマーク生成手段(103)により生成された複数サイズのそれぞれのウォーターマークを埋め込む。