以下、本発明の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一または等価な構成要素および部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
図1は、本実施形態に係る画像処理システムの概略構成を示す図である。図1に示した画像処理システムは、画像処理装置としての画像処理サーバ10、及び情報処理装置としてのユーザ端末20を含んで構成される。画像処理サーバ10、及びユーザ端末20は、インターネット、又はイントラネット等の通信回線30によって相互に接続されている。通信回線30は、有線回線であっても無線回線であってもよく、また、特定のユーザだけが利用する専用回線であっても、不特定多数のユーザで同じ回線が共有される公衆回線であってもよい。
画像処理サーバ10は、ユーザが閲覧を希望する内容を含んだデータ、すなわち「コンテンツ」を格納する画像処理装置の一例である。画像処理サーバ10は、単独のコンピュータ又は複数のコンピュータを組み合わせて構築される。また、クラウドコンピューティングを用いて画像処理サーバ10を構築してもよい。
ユーザ端末20は、閲覧したいコンテンツを画像処理サーバ10に要求し、取得したコンテンツを画面に表示する情報処理装置の一例である。ユーザ端末20には、例えばデスクトップコンピュータ、タブレット型コンピュータ、スマートフォン、及びウェアラブル端末のように、操作を受け付ける受付機能、情報を表示する表示機能、及び通信回線30に接続してデータを送受信する通信機能を備えた情報機器が用いられる。
ユーザ端末20から画像処理サーバ10に対して、コンテンツの閲覧に係る操作が行われ、当該操作に応じてユーザ端末20から閲覧要求が送信されると、画像処理サーバ10は、コンテンツを要求したユーザ端末20へ、閲覧が要求されたコンテンツを送信する。
なお、図1に示した画像処理システムには1台のユーザ端末20しか含まれていないが、複数のユーザ端末20が含まれてもよい。また、画像処理システムに複数の画像処理サーバ10が含まれてもよい。
図2は、画像処理サーバ10のハードウェア構成を示すブロック図である。
図2に示すように、画像処理サーバ10は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、ストレージ14、入力部15、表示部16及び通信インタフェース(I/F)17を有する。各構成は、バス19を介して相互に通信可能に接続されている。
CPU11は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU11は、ROM12またはストレージ14からプログラムを読み出し、RAM13を作業領域としてプログラムを実行する。CPU11は、ROM12またはストレージ14に記録されているプログラムにしたがって、上記各構成の制御および各種の演算処理を行う。本実施形態では、ROM12またはストレージ14には、画像データに対する画像処理を実行する画像処理プログラムが格納されている。
ROM12は、各種プログラムおよび各種データを格納する。RAM13は、作業領域として一時的にプログラムまたはデータを記憶する。ストレージ14は、HDD(Hard Disk Drive)、SSD(Solid State Drive)またはフラッシュメモリ等の記憶装置により構成され、オペレーティングシステムを含む各種プログラム、および各種データを格納する。
入力部15は、マウス等のポインティングデバイス、およびキーボードを含み、各種の入力を行うために使用される。
表示部16は、たとえば、液晶ディスプレイであり、各種の情報を表示する。表示部16は、タッチパネル方式を採用して、入力部15として機能しても良い。
通信インタフェース17は、ユーザ端末20等の他の機器と通信するためのインタフェースであり、たとえば、イーサネット(登録商標)、FDDI、Wi-Fi(登録商標)等の規格が用いられる。
図3は、ユーザ端末20のハードウェア構成を示すブロック図である。
図3に示すように、ユーザ端末20は、CPU21、ROM22、RAM23、ストレージ24、入力部25、表示部26及び通信インタフェース(I/F)27を有する。各構成は、バス29を介して相互に通信可能に接続されている。
CPU21は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU21は、ROM22またはストレージ24からプログラムを読み出し、RAM23を作業領域としてプログラムを実行する。CPU21は、ROM22またはストレージ24に記録されているプログラムにしたがって、上記各構成の制御および各種の演算処理を行う。本実施形態では、ROM22またはストレージ24には、画像データに対する画像処理を実行する画像処理プログラムが格納されている。
ROM22は、各種プログラムおよび各種データを格納する。RAM23は、作業領域として一時的にプログラムまたはデータを記憶する。ストレージ24は、HDD、SSDまたはフラッシュメモリ等の記憶装置により構成され、オペレーティングシステムを含む各種プログラム、および各種データを格納する。
入力部25は、マウス等のポインティングデバイス、およびキーボードを含み、各種の入力を行うために使用される。
表示部26は、たとえば、液晶ディスプレイであり、各種の情報を表示する。表示部26は、タッチパネル方式を採用して、入力部25として機能しても良い。
通信インタフェース27は、画像処理サーバ10等の他の機器と通信するためのインタフェースであり、たとえば、イーサネット(登録商標)、FDDI、Wi-Fi(登録商標)等の規格が用いられる。
次に、画像処理サーバ10の機能構成について説明する。
図4は、画像処理サーバ10における機能ブロック図の一例を示す図である。画像処理サーバ10は、コンテンツ変換部110、画像処理部120、受付部130、及び送信部140を含んで構成される。また、画像処理部120は、分割部121、重畳部122、変換部123、及び生成部124を含んで構成される。
更に、画像処理サーバ10は、コンテンツ格納部150、コンテンツ情報DB160、表示イメージ情報DB170、表示イメージ格納部180、及び変換情報DB190の各記憶領域を含む。コンテンツ格納部150、コンテンツ情報DB160、表示イメージ情報DB170、表示イメージ格納部180、及び変換情報DB190は、例えばストレージ14に設けられる。
通常「DB」は、予め定めた主キーと関連付けてデータを管理する「データベース(Database)」を意味する略号である。しかしながら、本実施の形態における「DB」とは商用及び非商用の各種データベースアプリケーションを指すものでなく、データを記憶する記憶領域のことを表している。なお、言うまでもなく、データを記憶する記憶領域の管理にデータベースアプリケーションを利用してもよい。
コンテンツ格納部150は、複数のコンテンツが予め格納されている。コンテンツ格納部150に格納されているコンテンツは、ユーザ端末20から送信される閲覧要求に応じて、ユーザ端末20に送信される。コンテンツ格納部150に格納されるコンテンツの種類に制約はないが、本実施形態では、一例としてページ単位で構成される文書データがコンテンツ格納部150に格納されているものとして説明を行う。
コンテンツ情報DB160は、コンテンツ格納部150に格納されているコンテンツ情報を格納する。コンテンツ情報には、例えばコンテンツID、コンテンツ名、及びコンテンツパスが含まれる。
コンテンツIDは、コンテンツを一意に識別する識別子である。コンテンツIDが指定されると1つのコンテンツが選択される。
コンテンツ名は、コンテンツのタイトルである。コンテンツ名には、ユーザにコンテンツの内容を想起させる情報が設定される。例えば、コンテンツ名にはコンテンツのファイル名が設定される。
コンテンツパスは、コンテンツ格納部150においてコンテンツが格納されている場所を表す情報である。
すなわち、コンテンツIDが指定されると、コンテンツ情報DB160に記憶されているコンテンツ情報を参照すれば、コンテンツIDによって指定されたコンテンツがコンテンツ格納部150から得られる。
コンテンツ変換部110は、指定したコンテンツIDを有するコンテンツをコンテンツ格納部150から取得し、取得したコンテンツをページ単位の画像に変換する。コンテンツ変換部110は、変換が終了すると、変換した各々のページ単位の画像にページ番号を割り当て、画像処理部120にコンテンツの変換終了を通知する。なお、画像処理サーバ10は、コンテンツの内容を、テキスト及び図を含む画像データとして扱う。コンテンツに含まれるページ単位の各々の内容を「ページ画像」とも称する。ページ画像は、本発明における画像の一例である。
画像処理部120は、コンテンツ変換部110が変換したページ画像に対して、種々の画像処理を実行する。
分割部121は、コンテンツ変換部110が変換したページ画像を、予め設定された数の画像に分割する。本実施形態では、分割する数をN(Nは2以上の整数)とする。ページ画像を分割した各々の画像を「分割画像」とも称する。分割部121は、N枚の分割画像に対して、それぞれ分割画像を一意に識別するためのイメージIDを割り当てる。分割部121は、例えば、コンテンツ変換部110からコンテンツの変換終了を受け付けたタイミングで、ページ画像を分割して分割画像を生成する。
また、分割部121は、N枚の分割画像の合成順序を決定する。そして、分割部121は、N枚の分割画像の各々について、合成順序に応じて、全ての分割画像を合成するとページ画像を復元できる透過パターンを用いた透過処理を実行する。透過処理の詳細については後に詳述する。
重畳部122は、合成順序がn(nは2以上N以下)番目の分割画像について透過処理を実行した後の透過領域であって、合成順序がn-1番目以前の分割画像の非透過領域の一部に対応する領域に任意の画像を重畳する。任意の画像は、元のページ画像の一部の画像そのものであってもよく、元のページ画像の一部の画像の表示形態を変更したものであってもよい。また、任意の画像は、元のページ画像とは無関係の画像であってもよく、元のページ画像とは無関係の画像の表示形態を変更したものであってもよい。
重畳部122は、任意の画像を重畳する際に、当該任意の画像の表示形態を変換してから重畳してもよい。表示形態の変換は、例えば反転又は回転である。重畳部122が任意の画像の表示形態を変換してから重畳することで、分割画像から元画像を認識される可能性をより低下させることができる。
変換部123は、分割部121で分割され、重畳部122で任意の画像が重畳された後の分割画像の表示形態の変換処理を実行する。具体的には、変換部123は、コンテンツを要求するユーザ端末20に予め備えられている複数種類の変換処理のうち、少なくとも1つを分割画像に対して実施する。「ユーザ端末20に予め備えられている変換処理」とは、例えばプラグインモジュール、又はアドオンモジュールのように、ユーザ端末20に後から追加することでユーザ端末20において実施されるようになった変換処理ではなく、ユーザ端末20に標準で装備されている変換処理をいう。具体的には、変換部123は、表示形態の変換処理として回転処理及び反転処理の少なくとも1つを実行する。変換部123は、変換処理を実施した各々の変換後の分割画像を、表示イメージ格納部180に格納する。
画像処理サーバ10は、変換部123による表示形態の変換処理を実行しなくてもよい。しかし、変換部123が分割画像の表示形態を変換してから重畳することで、分割画像から元画像を認識される可能性をより低下させることができる。
また、変換部123による表示形態の変換処理は、重畳部122で任意の画像が重畳される前に行われてもよい。
生成部124は、分割部121が決定した合成順序を含んだ変換情報を生成し、変換情報DB190に記憶する。変換部123による表示形態の変換処理が実行されている場合、生成部124は、合成順序に加え、変換部123が各々の分割画像に対して実施した変換処理の内容を含んだ変換情報を生成し、変換情報DB190に記憶する。また、生成部124は、分割画像の分割元となったページ画像が含まれているコンテンツのコンテンツID、分割画像の分割元となったページ画像に割り当てられているページ番号、分割画像を識別するイメージID、及び表示イメージ格納部180における分割画像の格納先を表すイメージパスを、分割画像の各々に対応付けた情報(以降、「表示イメージ情報」という)を表示イメージ情報DB170に記憶する。
受付部130は、ユーザ端末20から送信されたコンテンツの閲覧要求を受け付けると、要求されたコンテンツをページ単位で表示イメージ格納部180から取得する。例えばユーザ端末20から特定のコンテンツの1ページ目を要求された場合、1ページ目に対応したページ画像から分割された分割画像の各々を表示イメージ格納部180から取得する。また、受付部130は、表示イメージ格納部180から取得した各々の分割画像と対応付けられた変換情報を変換情報DB190から取得し、取得した分割画像及び変換情報を送信部140に送る。
送信部140は、受付部130から分割画像及び変換情報が送られると、分割画像及び当該分割画像に対応付けられた変換情報をユーザ端末20に送信する。
次に、ユーザ端末20の機能構成について説明する。
図5は、ユーザ端末20における機能ブロック図の一例を示す図である。ユーザ端末20は、送信部210、受信部220、復元部230、及び表示部240を含んで構成される。
送信部210は、ユーザによるコンテンツの閲覧に係る操作に応じて生成される閲覧要求を画像処理サーバ10に送信する。送信部210から送信される閲覧要求には、コンテンツのコンテンツIDとページ番号とが含まれる。
受信部220は、送信部210が送信した閲覧要求に対する応答、すなわち、コンテンツのコンテンツIDとページ番号とを指定した閲覧要求に対応するコンテンツから生成された分割画像及び変換情報を画像処理サーバ10から受信する。受信部220は、受信した分割画像及び変換情報を復元部230に送る。
復元部230は、受信部220が受信した分割画像及び変換情報を用いて、画像処理サーバ10の変換部123で変換処理が実施される前の分割画像(変換前の分割画像)を生成する。
そして、復元部230は、生成した変換前の分割画像の各々を、変換情報に含まれる合成順序に従って合成する。復元部230は、分割画像の各々を合成順序に従って合成することで、画像処理サーバ10の分割部121で分割される前のページ画像を復元する。復元部230は、復元したページ画像を表示部240に送る。
表示部240は、復元部230から復元したページ画像を受け付けると、ブラウザ250にページ画像を表示する。これにより、ユーザが要求したコンテンツの内容がユーザ端末20に表示されることになる。
次に、画像処理サーバ10の作用について説明する。
図6は、画像処理サーバ10のコンテンツ格納部150に新しいコンテンツが格納された場合に、CPU11によって実行される画像処理の流れの一例を示すフローチャートである。なお、コンテンツは既にページ画像に変換されているものとして説明を行う。
CPU11は、図6に示したフローチャートを実施する際に2つの変数i及びnを使用する。変数iはページ画像のページ数の判定に用いられる変数である。また変数nは1つのページ画像をN枚の分割画像に分割した際に、分割画像の処理数の判定に用いられる変数である。2つの変数i及びnの初期値は0である。
CPU11は、まず変数iを1つ増加させる(ステップS101)。
ステップS101に続いて、CPU11は、ページ画像のiページ目をコピーする(ステップS102)。
ステップS102に続いて、CPU11は、コピーしたiページ目のページ画像をN枚の分割画像に分割する(ステップS103)。以下では3枚の分割画像に分割する場合の例について説明する。
ステップS103に続いて、CPU11は、N枚の分割画像の合成順序を決定する(ステップS104)。
ステップS104に続いて、CPU11は、変数nを1つ増加させる(ステップS105)。
図7は、画像処理サーバ10におけるページ画像4の処理過程の一例を示した模式図である。図7の例では、CPU11はページ画像4を3つの分割画像6A、6B、6Cに分割しているが、複数の分割画像に分割されるのであれば特に分割数に制約はない。以下の例では、分割画像6A、6B、6Cの順、すなわち、分割画像6Aを分割画像6Bの上に重ねて合成し、合成して出来た画像を更に分割画像6Cの上に重ねて合成するよう、合成順序が決定されているとする。
ページ画像4の分割数が増加するにつれて、ユーザ端末20からコンテンツの閲覧要求を受け付けた場合に、画像処理サーバ10からユーザ端末20に送信するデータの量も増加する。データの量の増加は、ユーザ端末20でコンテンツの閲覧要求を行ってから、コンテンツが表示されるまでの表示時間の増加につながる。したがって、ユーザ端末20においてコンテンツの表示時間の上限値が定められている場合、又はユーザからコンテンツの表示時間に関する改善が求められている場合には、例えば目標とするコンテンツの表示時間に収まるようにページ画像4の分割数を設定すればよい。
なお、ページ画像4の分割数とコンテンツの表示時間との関係は、画像処理システムの実機による実験、又は画像処理システムの設計仕様に基づくコンピュータシミュレーション等により予め求められ、例えばストレージ14に予め記憶されていてもよい。分割画像6A、6B、6Cを区別して説明する必要がない場合、各々の分割画像を「分割画像6」ということにする。
ページ画像4を分割画像6に分割する場合、CPU11は、ページ画像4に対し、例えば格子状に領域を設定してもよい。格子状に領域が設定されたページ画像4は複数の矩形からなる画像に分割されることになる。図7の例では、ページ画像4に対して格子状に領域が設定されることで、ページ画像4が9つの矩形、すなわち、部分ページ画像4A~4Jに分割されている。もちろん、1つのページ画像4における矩形の数は係る例に限定されない。以下の説明において、部分ページ画像4A~4Jを区別して説明する必要がない場合は、各々の部分ページ画像を「部分ページ画像4Z」ということにする。
そして、CPU11はページ画像4を、それぞれ部分ページ画像4A~4Jの少なくとも1つを含む分割画像6に分割する。図7の例では、9つの部分ページ画像4A~4Jのうち、部分ページ画像4A、4D、4Eを含む分割画像6Aと、部分ページ画像4C、4G、4Hを含む分割画像6Bと、部分ページ画像4B、4F、4Jを含む分割画像6Cとにページ画像4が分割されている。すなわち、CPU11は、部分ページ画像4A~4Jの位置はそのままにした上で、同じ部分ページ画像4A~4Jが複数の分割画像6に重複して含まれないようにページ画像4を分割する。更に換言すれば、CPU11は、各々の分割画像6A、6B、6Cに含まれる部分ページ画像4A~4Jの位置が、他の各々の分割画像6A、6B、6Cと重なり合わないように分割画像6A、6B、6Cを構成する。
ステップS105に続いて、CPU11は、ステップS104で決定した合成順序がn番目の分割画像に対して透過処理を実行する(ステップS106)。
CPU11は、分割画像6A、6B、6Cの各々において、部分ページ画像4A~4Jが配置されていない領域を透過領域に設定する。「透過領域」とは、分割画像6を重ねた場合、一方の分割画像6の透過領域を通して、他方の分割画像6の内容が視認される程度の透明度合いを有する領域をいう。そして、分割画像の各々において、透過領域ではない領域が非透過領域となる。例えば、分割画像6Aの場合、部分ページ画像4A、4D、4E以外の領域が透過領域となり、部分ページ画像4A、4D、4Eは非透過領域となる。透過領域は、全ての分割画像に対して同じ大きさとなるよう設定されてもよく、分割画像によって異なる大きさとなるよう設定されてもよい。
したがって、図7の例における分割画像6A、6B、6Cを重ね合わせると、分割前のページ画像4が復元されることになる。すなわち、CPU11は、分割画像6の各々を重ね合わせるとページ画像4が復元されるように分割画像6A、6B、6Cに対して透過処理を実行する。分割された各々の分割画像6にはイメージIDが割り当てられる。
以上のページ画像4の分割手法を別観点から説明すれば、CPU11は、ページ画像4をコピーすることで、分割数分のページ画像4を生成する。CPU11は、各々のページ画像4に部分ページ画像4Zの少なくとも1つが含まれ、各々のページ画像4に含まれる部分ページ画像4Zが重複せず、且つ、全ての分割画像6を重ね合わせた場合、分割前のページ画像4が復元されるように、各々の分割画像6に透過領域を設定する。
なお、図7の例ではページ画像4に対して格子状に領域を設定することで、複数の矩形からなる部分ページ画像4Zに分割したが、部分ページ画像4Zの形状は矩形に限られない。部分ページ画像4Zの形状は、例えばL字形、又はU字形等の他の形状であってもよい。また、部分ページ画像4Zの形状は、例えばジグソーパズル状になっていてもよい。また、各々の分割画像6に含める部分ページ画像4A~4Jの選択に規則性はなく、ページ画像4毎に異なるようにしてもよい。すなわち、1ページ目のページ画像4の分割画像6A、6B、6Cと、2ページ目のページ画像4の分割画像6A、6B、6Cにおいて、それぞれのページ画像4の分割画像6A同士、分割画像6B同士、及び分割画像6C同士を比べた場合、異なる位置に透過領域が設定されていてもよい。
図7の例では、1ページ目のページ画像4の分割画像6A、6B、6Cと、2ページ目のページ画像4の分割画像6A、6B、6Cとで、同じ位置に透過領域が設定されている。すなわち、「6A」、「6B」、「6C」という分割画像6の符号毎に予め定められている透過領域の配置パターンに従って透過領域が設定されている。いずれの分割画像6に、複数種類あるうちのどの透過領域の配置パターンを適用するかは、CPU11によって選択されるが、画像処理サーバ10に対して適用する配置パターンに係る指示がなされてもよい。
ステップS106に続いて、CPU11は、現在の変数nの値が2以上であるかどうか判断する(ステップS107)。ステップS107の判断の結果、変数nの値が2以上であると判定すると(ステップS107;Yes)、CPU11は、n番目の分割画像の透過領域であって、(n-1)番目以前の分割画像の非透過領域の一部を選出する(ステップS108)。CPU11は、(n-1)番目以前の分割画像の非透過領域の一部を選出する際に、ランダムに選出してもよく、予め決められたパターンに基づいて選出してもよい。
ステップS108に続いて、CPU11は、ステップS108で選出した透過領域に任意の画像を重畳する(ステップS109)。すなわち、CPU11は、合成順序が2番目以降の分割画像に対して、任意の画像の重畳処理を実施する。仮に、n番目の分割画像の透過領域であって、(n-1)番目以前の分割画像の非透過領域の全てに重畳処理を実施すると、1番目の分割画像とN番目の分割画像とで透過領域の大きさが極端に変わり、合成順序を推測されやすくなる。CPU11は、n番目の分割画像の透過領域であって、(n-1)番目以前の分割画像の非透過領域の一部の領域にのみ重畳処理を実施することで、合成順序を推測されにくくできる。
ステップS107の判断の結果、変数nの値が2以上でない、すなわち1であると判定すると(ステップS107;No)、CPU11は、ステップS108、及びS109の処理をスキップする。すなわち、CPU11は、合成順序が1番目の分割画像に対しては、任意の画像の重畳処理をスキップする。
再び、図7を参照して、分割画像に対する画像の重畳処理を説明する。分割画像6Aは合成順序が1番目であるので、CPU11は、分割画像6Aに対する画像の重畳処理は実行しない。これに対し、分割画像6B、6Cは、それぞれ合成順序が2番目、3番目であるので、CPU11は、分割画像6B、6Cに対する画像の重畳処理を実行する。
CPU11は、分割画像6Bに対して画像を重畳する際に、1番目の分割画像6Aの非透過領域の一部を選出し、選出した領域に対応する分割画像6Bの領域に任意の画像を重畳する。図7の例では、分割画像6Aの部分ページ画像4A、4Dに対応する領域に、重畳画像5A、5Dを重畳している。同様に、CPU11は、分割画像6Cに対して画像を重畳する際に、1番目の分割画像6A、又は2番目の分割画像6Bの非透過領域の一部を選出し、選出した領域に対応する分割画像6Cの領域に任意の画像を重畳する。図7の例では、分割画像6Bの部分ページ画像4C、4Gに対応する領域に、重畳画像5C、5Gを重畳している。
CPU11は、分割画像6に対して画像を重畳する際に、分割画像6の各々の透過領域に対して任意の画像を重畳する領域を一定にしてもよい。分割画像6の各々の透過領域に対して任意の画像を重畳する領域を一定にすることで、重畳後の分割画像から元の画像を推測されにくくしたり、合成順序を推測されにくくしたりできる。
また、合成順序が1番目の分割画像には画像が重畳されないため、透過領域が他の分割画像より多くなると、合成順序の情報が無くても、合成順序が1番目の分割画像がどれであるか推測されやすくなる。従って、CPU11は、合成順序が1番目の分割画像における非透過領域の大きさと、合成順序が2番目以降の分割画像における任意の画像が重畳された後の非透過領域の大きさとが等しくなるよう、又は非透過領域の大きさに大きな差が出ないよう、透過領域を設定してもよい。
続いて、CPU11は、分割画像6に対して、回転処理及び反転処理の少なくとも1つを実施し、分割画像6の表示形態を変換する(ステップS110)。ここで表示形態が変換される分割画像6は、1番目の分割画像であれば重畳処理が行われていない分割画像であり、2番目以降の分割画像であれば、重畳処理が行われた後の分割画像である。なお、本実施形態では、CPU11は重畳処理の後に表示形態の変換処理を行っているが、表示形態の変換処理を行った後に重畳処理を行ってもよい。
分割画像6に対して回転処理が実施されるか、反転処理が実施されるか、それとも回転処理と反転処理の両方が実施されるかは、CPU11が無作為に選択してもよい。また、回転処理における回転角、及び反転処理における反転方向も、CPU11が無作為に選択してもよい。
その結果、図7の例では、1ページ目のページ画像4の分割画像6Aに対しては、右180度の回転処理及び左右方向の反転処理が実施され、1ページ目のページ画像4の分割画像6Bに対しては、右270度の回転処理が実施されている。また、1ページ目のページ画像4の分割画像6Cに対しては、右90度の回転処理及び上下方向の反転処理が実施されている。
また2ページ目のページ画像4の分割画像6Aに対しては、左右方向の反転処理が実施され、2ページ目のページ画像4の分割画像6Bに対しては、右180度の回転処理及び左右方向の反転処理が実施されている。また、2ページ目のページ画像4の分割画像6Cに対しては、右90度の回転処理が実施されている。これにより、ステップS110の変換処理を行わない場合と比較して、分割画像6A、6B、6Cを重ね合わせても分割前のページ画像4が認識されにくい状態となる。
ステップS110に続いて、CPU11は、重畳処理後、及び変換処理後の分割画像の各々を表示イメージ格納部180に登録するとともに、分割画像の各々の情報を表示イメージ情報として表示イメージ情報DB170に登録する(ステップS111)。図8は、表示イメージ情報DB170に記憶された表示イメージ情報の一例を示す図である。図8に示したように、表示イメージ情報は分割画像毎に生成され、表示イメージ情報DB170に記憶される。
ステップS111に続いて、CPU11は、各々の分割画像6の合成順序及び各々の分割画像6に対して実施した変換処理の内容を記録した変換情報を、分割画像6毎に生成して、変換情報DB190に登録する(ステップS112)。変換情報に記録される変換処理の内容は、ステップS110で実行した変換処理の内容でもよく、ステップS110で変換処理が実施された分割画像6を変換前の分割画像6に戻す処理の内容でもよい。変換処理が実施された分割画像6から、変換前の分割画像6に戻す処理のことを「逆変換処理」とも称する。
例えば、図7の例の場合、1ページ目のページ画像4の分割画像6Aに対する逆変換処理とは、左180度の回転処理及び左右方向の反転処理であり、1ページ目のページ画像4の分割画像6Bに対する逆変換処理とは、左270度の回転処理である。また、1ページ目のページ画像4の分割画像6Cに対する逆変換処理とは、左90度の回転処理及び上下方向の反転処理である。
また2ページ目のページ画像4の分割画像6Aに対する逆変換処理とは、左右方向の反転処理であり、2ページ目のページ画像4の分割画像6Bに対する逆変換処理とは、左180度の回転処理及び左右方向の反転処理である。また、2ページ目のページ画像4の分割画像6Cに対する逆変換処理とは、左90度の回転処理である。
回転処理及び反転処理は、ユーザ端末20のブラウザ250で実施される処理としてユーザ端末20に予め備えられている変換処理の一例である。
図9は、変換情報DB190に記憶された変換情報の一例を示す図である。図9に示すように、変換情報は、分割画像6のイメージIDと、ステップS110で実施された変換処理に対する逆変換処理の内容と、合成順序とが含まれる。しかしながら、変換情報の内容はこれに限られず、例えば分割画像6のイメージIDと、ステップS110で実施された変換処理の内容が対応付けられた情報を変換情報としてもよい。
図10は、変換情報DB190に記憶された変換情報の一例を示す図である。ステップS110で実施された変換処理の内容がわかれば、逆変換処理の内容が得られる。このように変換情報は、ステップS110で変換処理が実施された分割画像6を、変換前の分割画像に復元する情報であればよい。
ステップS112に続いて、CPU11は、変数nが分割数Nと等しいかどうか判断する(ステップS113)。変数nが分割数Nと等しくない場合、すなわち、未処理の分割画像が残っている場合は(ステップS113;No)、CPU11は、ステップS105の処理に戻る。一方、変数nが分割数Nと等しい場合、すなわち、未処理の分割画像が残っていない場合は(ステップS113;Yes)、CPU11は、続いて、変数iがページ数と等しいかどうか判断する(ステップS114)。変数iがページ数と等しくない場合、すなわち、未処理のページ画像が残っている場合は(ステップS114;No)、CPU11は、ステップS101の処理に戻る。一方、変数iがページ数と等しい場合、すなわち、未処理のページ画像が残っていない場合は(ステップS114;Yes)、CPU11は一連の処理を終了する。
CPU11は、図6に示した一連の処理を実行することで、同一の分割数の分割画像をそのままユーザ端末20に送信する場合と比べて、各分割画像から元画像を認識される可能性を低下させることができる。
なお、図6に示した処理では、ユーザ端末20からのコンテンツの閲覧に係る操作の受け付けの都度、分割画像の生成から表示形態の変換まで行っていたが、本発明は係る例に限定されない。例えば、CPU11は、分割画像の生成及び透過処理を事前に実施しておき、ユーザ端末20からのコンテンツの閲覧要求を受け付けると、予め生成した分割画像に対する任意の画像の重畳処理を実施してもよい。また、CPU11は、例えば1日毎に透過処理後の画像に任意の画像を重畳する処理を行った分割画像を予め生成しておき、ユーザ端末20からのコンテンツの閲覧に係る操作の受け付けに応じて分割画像を送信してもよい。
次に、図11を用いて、ユーザ端末20からコンテンツの閲覧要求を受け付けた際の画像処理サーバ10の動作について詳細に説明を行う。
図11は、ユーザ端末20からコンテンツの閲覧要求を受け付けた際に、CPU11が実行する送信処理の流れの一例を示すフローチャートである。なお、閲覧要求には、ユーザ端末20で表示するコンテンツのコンテンツID及びページ番号が含まれているものとする。すなわち、ユーザ端末20はページ単位でコンテンツを要求する。
送信処理を規定する送信処理プログラムは、例えば画像処理サーバ10のROM12又はストレージ14に予め記憶されている。画像処理サーバ10のCPU11は、ROM12又はストレージ14に記憶される送信処理プログラムを読み込み、送信処理を実行する。
ユーザ端末20からコンテンツの閲覧要求を受け付けると、CPU11は、ストレージ14に記憶された表示イメージ情報を参照して、閲覧要求のコンテンツID及びページ番号で指定されたページを構成する分割画像6のイメージID及びイメージパスを取得する(ステップS201)。図8の例において、例えばコンテンツID=“DOC-001”とページ番号=“1”が指定された場合、CPU11は“IMG-001”、“IMG-002”、及び“IMG-003”の各イメージIDと、各々のイメージIDに対応付けられたイメージパス“IMG/IMG-001”、“IMG/IMG-002”、及び“IMG/IMG-003”を取得する。
ステップS201に続いて、CPU11は、ステップS201で取得したイメージIDの中から、1つのイメージIDを選択する(ステップS202)。
ステップS202に続いて、CPU11は、ステップS201で選択したイメージIDのイメージパスを参照して、イメージIDと対応付けられた分割画像6をストレージ14から取得する(ステップS203)。
ステップS203に続いて、CPU11は、図9又は図10に示す変換情報を参照して、ステップS202で選択したイメージIDに対応付けられた変換情報を取得する(ステップS204)。例えば、ステップS202で選択したイメージIDが“IMG-001”の場合、CPU11は、図9の変換情報から、イメージID及び内容がそれぞれIMG-001”及び“回転:左180度、反転:左右、順序:1”の変換情報を取得する。
ステップS204に続いて、CPU11は、ステップS203で取得した分割画像6と、ステップS204で取得した変換情報を含んだ応答データを生成する(ステップS205)。なお、CPU11は、閲覧要求を受け付けてから最初に生成する応答データに、閲覧要求で指定されたコンテンツのページ番号に対応したページ画像4の分割数を含める。具体的には閲覧要求でコンテンツID=“DOC-001”のページ番号=“1”が要求された場合、図8の表示イメージ情報の例では、コンテンツID=“DOC-001”、かつ、ページ番号=“1”には3つの分割画像6が含まれることから、CPU11は分割数を“3”に設定する。
応答データは分割画像6毎に生成されうる。従って、最初に生成する応答データに分割数を含めることで、閲覧要求に対して画像処理サーバ10からユーザ端末20に送信される応答データの数がユーザ端末20で把握されることになる。
ステップS205に続いて、CPU11は通信I/F17を制御して、ステップS205で生成した応答データをユーザ端末20に送信する(ステップS206)。
ステップS206に続いて、CPU11は、ステップS201で取得したイメージIDの中から、ステップS202でまだ選択していないイメージIDが存在するか否かを判断する(ステップS207)。未選択のイメージIDが存在する場合には(ステップS207;Yes)、CPU11は、ステップS202の処理に戻り、未選択のイメージIDを選択し、全てのイメージIDが選択されるまでステップS202~S206の処理を繰り返し実行する。未選択のイメージIDが存在しない場合には(ステップS207;No)、CPU11は一連の処理を終了する。
CPU11は、図12に示した一連の処理を実行することにより、閲覧要求で指定されたページ画像4を構成する分割画像6と変換情報を含んだ応答データを、分割画像6毎にユーザ端末20に送信する。
次に、図12を用いてユーザ端末20の動作について詳細に説明を行う。
図12は、ユーザ端末20が実行する表示処理の流れの一例を示すフローチャートである。図12には、ユーザ端末20で表示したいコンテンツのコンテンツIDとページ番号を指定した閲覧要求をユーザ端末20から画像処理サーバ10に送信した場合に、CPU21によって実行される表示処理の流れの一例が示されている。
表示処理を規定する閲覧プログラムは、例えばユーザ端末20のROM22に予め記憶されている。ユーザ端末20のCPU21は、ROM22に記憶される閲覧プログラムを読み込み、表示処理を実行する。また、閲覧プログラムは、ブラウザ250が有する機能を利用することで表示処理を実現する。すなわち、閲覧プログラムはブラウザ250で動作するプログラムである。閲覧プログラムからブラウザ250が有する機能を呼び出す場合、閲覧プログラムは、利用する機能毎に用意されているインタフェース関数を呼び出す。
CPU21は、閲覧要求で指定したコンテンツのページ番号に対応したページ画像4の応答データを、画像処理サーバ10から分割数分受信したか否かを判定する(ステップS301)。ユーザ端末20が受信する応答データの数は、閲覧要求を送信してから最初に受信した応答データに含まれる分割数から得られる。
応答データを分割数分受信していない場合には(ステップS301;No)、ステップS301の処理を繰り返し実行して、応答データの受信状況を監視する。一方、応答データを分割数分受信した場合は(ステップS301;Yes)、CPU21は、受信した応答データに含まれる分割画像6及び変換情報を、応答データ毎にそれぞれ対応付けてRAM23に記憶する。すなわち、RAM23には、閲覧要求で指定したページのページ画像4を構成する各々の分割画像6と変換情報が記憶される。
続いて、CPU21は、ステップS301で受信した分割画像6のうち、何れか1つの分割画像6を選択する(ステップS302)。
ステップS302に続いて、CPU21は、ステップS302で選択した分割画像6に対応する変換情報をRAM23から取得する(ステップS303)。
ユーザ端末20が受信した分割画像6は、画像処理サーバ10によって変換処理が実施された後の分割画像6である。従って、ステップS303に続いて、CPU21は、ステップS303で取得した変換情報を用いて、選択した分割画像6から変換前の分割画像6を生成する(ステップS304)。
具体的には、RAM23から取得した変換情報が、図9に示したように逆変換処理の内容を含む変換情報の場合、CPU21は、変換情報に含まれる変換処理の内容を、選択した分割画像6にそのまま実施することにより変換前の分割画像6を生成する。また、取得した変換情報が、図10に示したように画像処理サーバ10で実施された変換処理の内容を含む場合、CPU21は、変換情報に含まれる変換処理の内容に対する逆変換処理を選択した分割画像6に実施することにより、変換前の分割画像6を生成する。
図13は、変換情報を用いて各々の分割画像6から生成された変換前の分割画像6の一例を示す図である。図13における分割画像6A、6B、6Cは、図7の1ページ目のページ画像4から分割された分割画像6A、6B、6Cである。
図13の分割画像6Aに対して、CPU21が左180度の回転処理及び左右方向の反転処理を実施することで、変換前の分割画像6Aが生成される。図13の分割画像6Bに対して、CPU21が左270度の回転処理を実施することで、変換前の分割画像6Bが生成される。図13の分割画像6Cに対して、CPU21が左90度の回転処理及び上下方向の反転処理を実施することで、変換前の分割画像6Cが生成される。
回転処理及び反転処理は、ブラウザ250に予め備えられた変換処理である。CPU21は、受信した分割画像6を変換前の分割画像6に変換する場合、ブラウザ250に予め備えられている回転処理及び反転処理を利用する。
なお、取得した変換情報が逆変換処理の内容を含むのか、又は、画像処理サーバ10で実施された変換処理の内容を含むのかは、画像処理システムにおいて予め取り決められていてもよい。また、取得した変換情報が逆変換処理の内容を含むのか、又は、画像処理サーバ10で実施された変換処理の内容を含むのかを表す変換処理の識別情報は、変換情報に含めてもよい。
変換情報に変換処理の識別情報を含める場合、変換情報における変換処理の内容の解釈を変換情報毎に変えてもよい。例えば、分割画像6Aに対応付けられた変換情報には逆変換処理の内容が記載され、分割画像6Bに対応付けられた変換情報には画像処理サーバ10で実施された変換処理の内容が記載されてもよい。変換情報における変換処理の内容の解釈を変換情報毎に変えることで、変換前の分割画像6を生成するための手がかりとなる情報に規則性がなくなる。従って、分割画像6のみから変換前の分割画像6をユーザ端末20で生成する際に、変換情報に含まれる変換内容が同じ解釈に沿った統一された内容になっている場合に比べて、変換前の分割画像6を正しく生成することが困難になる。
ステップS304に続いて、CPU21は、ステップS301で受信した分割画像6のうち、ステップS302で選択されていない未選択の分割画像6が存在するか否かを判断する(ステップS305)。未選択の分割画像6が存在する場合には(ステップS305;Yes)、CPU21は、ステップS302の処理に戻る。ステップS302において、CPU21は、未選択の分割画像6を選択し、受信した全ての分割画像6を選択するまでステップS302~S304の処理を繰り返し実行する。これにより、受信した各々の分割画像6に対する変換前の分割画像6が生成される。
一方、未選択の分割画像6が存在しない場合には(ステップS305;No)、CPU21は、RAM23から取得した変換情報に含まれる合成順序に基づいて、変換前の分割画像6の各々を合成する(ステップS306)。CPU21が変換前の分割画像6の各々を合成順序に基づいて合成することで、ページ画像4が生成される。
ステップS306に続いて、CPU21は、分割画像6の各々を合成して得られるページ画像4をブラウザ250に表示する(ステップS307)。
図7に示したように、変換前の分割画像6では、ページ画像4を構成する全ての分割画像6を合成順序に従って重ね合わせた場合、分割前のページ画像4が復元されるように各々の分割画像6に透過領域が設定されている。そして、図7に示したように、合成順序が2番目以降の分割画像6の透過領域の一部には、任意の画像が重畳されている。従って、図13に示すように、ユーザ端末20において、画像処理サーバ10で設定された合成順序に従って合成した場合に限り、閲覧要求で画像処理サーバ10に要求したコンテンツのページ番号に対応したページ画像4が復元されることになる。換言すれば、ユーザ端末20において、画像処理サーバ10で設定された合成順序とは異なる合成順序で合成すると、図13に示すように、ページ画像4に、画像処理サーバ10で分割画像に対して重畳された画像が残ってしまうことになる。
図12に示した一連の処理により、ユーザ端末20による表示処理が実施される。
なお、CPU21は、ステップS306で変換前の分割画像6の各々を合成してページ画像4を表示する場合、重ね合わせた分割画像6の最上層に透かし画像を配置してもよい。「透かし画像」とは画像部分以外の領域が透過領域に設定された画像である。透かし画像における画像部分の内容はどのようなものであってもよく、例えば画像処理サーバ10にコンテンツを要求したユーザのユーザ名、コンテンツの権利者名、コンテンツを表示したユーザ端末20を識別する識別名、又は「複製禁止」のようにページ画像4の2次利用の禁止を通知する警告文等が用いられる。
CPU21は、重ね合わせた分割画像6の最上層に透かし画像を配置することで、ページ画像4がカメラ等の撮影機材で撮影されたり、スクリーンキャプチャされたりした場合でも、透かし画像を表示しない場合と比較して、コンテンツの内容を保護できる。
なお、上記各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した画像処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、画像処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
また、上記各実施形態では、画像処理のプログラムがROMまたはストレージに予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の記録媒体に記録された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
また上記各実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記各実施形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。