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