JP2006339972A - 画像処理装置及びその制御方法、コンピュータプログラム、記憶媒体 - Google Patents
画像処理装置及びその制御方法、コンピュータプログラム、記憶媒体 Download PDFInfo
- Publication number
- JP2006339972A JP2006339972A JP2005161419A JP2005161419A JP2006339972A JP 2006339972 A JP2006339972 A JP 2006339972A JP 2005161419 A JP2005161419 A JP 2005161419A JP 2005161419 A JP2005161419 A JP 2005161419A JP 2006339972 A JP2006339972 A JP 2006339972A
- Authority
- JP
- Japan
- Prior art keywords
- data
- resolution level
- image data
- image
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】 リソースに制約が課せられた携帯情報機器においても高画質の画像データを閲覧可能とする技術を提供する。
【解決手段】 本発明によれば、複数のレイヤから構成された画像データを解像度レベル毎に記憶する記憶手段と、外部装置から、少なくとも前記画像データの前記解像度レベルと領域の大きさとの指定が含まれる送信要求を受信する受信手段と、指定された前記解像度レベルと前記領域の大きさとの少なくともいずれかに基づいて、指定された前記解像度レベルに対応する複数のレイヤの合成を行うか否かを判定する判定手段と、前記判定手段において前記合成を行うと判定された場合に、指定された前記解像度レベルに対応する複数のレイヤを合成して、1レイヤで構成される画像データを生成する合成手段と、生成された前記1レイヤで構成される画像データを前記外部装置へ送出する送出手段と、を備えることを特徴とする画像処理装置が提供される。
【選択図】 図11
【解決手段】 本発明によれば、複数のレイヤから構成された画像データを解像度レベル毎に記憶する記憶手段と、外部装置から、少なくとも前記画像データの前記解像度レベルと領域の大きさとの指定が含まれる送信要求を受信する受信手段と、指定された前記解像度レベルと前記領域の大きさとの少なくともいずれかに基づいて、指定された前記解像度レベルに対応する複数のレイヤの合成を行うか否かを判定する判定手段と、前記判定手段において前記合成を行うと判定された場合に、指定された前記解像度レベルに対応する複数のレイヤを合成して、1レイヤで構成される画像データを生成する合成手段と、生成された前記1レイヤで構成される画像データを前記外部装置へ送出する送出手段と、を備えることを特徴とする画像処理装置が提供される。
【選択図】 図11
Description
本発明は階層化された画像データを送受信する技術に関する。
近年、200万〜500万画素程度の画像を撮像可能な家庭用デジタルカメラが普及している。業務用のデジタルカメラは、1000万画素クラスのものが普及している。デジタルカメラは、今後も高精細化されていくと想定される。
また、デジタルカメラ等で撮影した画像データを、ネットワーク経由で受け取り、該画像データをネットワーク上で公開する、オンラインのアルバムサービスが普及している。アルバムサービスは、受け取った画像データを公開するサーバと、ネットワーク経由でサーバにアクセスし、公開された画像データを閲覧するクライアントからなるシステムによって実現される。
このようなクライアント・サーバシステムにおけるクライアント機器として、近年、PDA(Personal Digital Assistance)端末等の、携帯型の情報処理端末(携帯情報機器)も用いられるようになってきた。
一方、アルバムサービスのアプリケーションでは、サムネイル画像による一覧表示を行い、一覧表示した画像中から、拡大して表示したい画像の選択を受け付け、選択された画像をサムネイル画像よりも大きく表示するインタフェースが一般的に採用されている。
しかし、大きな画素数を持つ近年のデジタルカメラにより撮像された画像データを、拡大表示のたびに全てサーバからダウンロードするような構成においては、拡大画像を要求してからクライアント端末に画像が表示されるまでに、長い待ち時間を必要とする。
このような問題を解決するために、複数の解像度レベル毎に複数のレイヤから構成され、さらに各解像度レベルのデータを複数のタイルに分割し符号化した画像データをサーバに保存し、表示に必要な部分データのみをダウンロードしてクライアント上に表示する技術が開発されている。このような技術として、JPEG2000(Joint Photographic Experts Group 2000)やJPIP(JPEG2000 image coding system - Part 9: Interactivity tools, APIs and protocols)等を利用した構成が知られている。
JPEG2000とは、2001年に標準化された画像符号化方式である。この方式によれば、画像データは、複数の解像度レベル毎に複数のレイヤから構成され、更にタイル分割されるように符号化される。ここで、レイヤとは、複数の画質で画像を閲覧可能なように、グループ分けされた符号化データのまとまりである。レイヤ構造においては、閲覧者に伝達する情報量への寄与が大きい符号順に上位レイヤから下位レイヤへと符号化データが配置されている。そして、ある下位レイヤの符号化データは、そのレイヤの上位のレイヤにおける符号化データに対する差分の情報が記述されている。このため、上位のレイヤの符号化データをデコードすれば、ある程度の情報量を伝達することが可能な画像を提供できる一方、下位のレイヤまでデコードすれば、より高画質の画像を提供することができる。
JPIPとは、JPEG2000の方式で符号化された画像ファイルへアクセスし、画像データをレイヤ、解像度レベル、タイル等の所望の形態で取得して表示するための、クライアント・サーバ間のプロトコル、API(Application Interface)、ツール等を規格化したものであり、現在、仕様策定中である。
JPEG2000を利用した構成として、特許文献1には、JPEG2000で符号化された画像データの部分データをサーバ・クライアントで送受信するシステムが開示されている。この構成において、クライアントは、サーバに格納されているコードストリームのどの部分が、既にクライアントのバッファに格納されているかを判別し、未だバッファに格納していない圧縮データの部分をサーバに要求する。一方、サーバは、要求された圧縮データの部分データを抜き出してクライアントに返送する。クライアントは、受信したデータと既にバッファに格納されたデータを統合することで、画像を取得する。
また、特許文献2には、サーバ側に格納されているJPEG2000符号データを、クライアント側で高速にプログレッシブ表示するための技術が開示されている。この構成において、クライアントは、欲しい解像度レベルを指定するリクエストを発行し、サーバへ送出する。サーバは、クライアントから指定された解像度レベルのサブバンド符号データを、格納された画像ファイルから取り出してクライアントに送信する。クライアントは、表示している画像の解像度レベルの、復号化されたサブバンドの係数と、サーバから受信した符号データを復号して得られたサブバンドの係数とに基づいて画像データを復元することで、プログレッシブ表示を実現している。
上記のようなJPEG2000を利用した構成では、クライアントからの要求に応じて、ユーザの望む画像サイズ(解像度レベル)、レイヤ、部分領域(タイル)のデータを、サーバ側に格納されているJPEG2000符号化データから抜き出して、送受信する。
また、上記の構成において、サーバ・クライアント間でJPEG2000の画像データを効率的に送受信するために、クライアントは、受信したデータをキャッシュ(保存)しておく必要がある。これは、JPEG2000符号化データにおいては、ある解像度レベルの画像データは、その解像度より1レベル低い解像度レベルの画像データに対する差分として表現されるためである。また、上述のように、ある下位レイヤの符号化データは、そのレイヤの上位のレイヤにおける符号化データに対する差分として構成されているためである。
このように、既に受信したデータをクライアント側でキャッシュしておくことで、拡大したり、画質を向上させたりする際に、クライアント・サーバ間で送受信するデータは、受信済みのデータとの差分データのみとなる。これにより、クライアント・サーバ間の通信データ量を削減することができる。
特開2003−23630号公報
特開2004−40674号公報
しかし、クライアント機器としてネットワークや公衆回線に接続するための通信手段を備えた携帯型の情報処理端末(携帯情報機器)が用いられる場合、携行性、電池駆動時間等の制約条件から携帯情報機器の演算処理性能、記憶容量等のリソースに大幅な制約が課せられることになる。このため、サーバ側から複雑な情報が転送されても、クライアント上で正常に処理できない事態が想定される。
特に、JPEG2000方式に基づく符号化データはその構造が複雑であるため、携帯情報機器のクライアントは全ての機能をサポートしたデコーダを搭載していない可能性がある。例えば、クライアントに搭載されたデコーダは、画質方向のスケーラビリティに対応していない、即ち、複数のレイヤから構成された画像データを復元して画像を再生できない可能性がある。この場合、複数のレイヤを持つJPEG2000画像データを保有するサーバに対して、最高画質の画像データを要求すると、上記従来の構成においては、サーバに格納されている画像データから該当するデータを抜き出して返送するため、1layerの画像データ(最初の画質データ)のみしかデコードできないクライアントは、低画質で粗い画像しか見ることが出来ない。
また、上記従来の構成においては、クライアント上で、解像度レベル、レイヤ(画質)、タイルの3つの要素によって分解された部分データをキャッシュし、次のインタラクティブな操作に利用する必要がある。この場合、クライアントはキャッシュデータを管理する仕組みを搭載しなければならないが、リソースに制約が課せられた携帯情報機器にとってこれらの処理は大きな負荷となる。
本発明は上記問題に鑑みなされたものであり、リソースに制約が課せられた携帯情報機器においても高画質の画像データを閲覧可能とする技術を提供することを目的とする。
上記目的を達成するため、本発明による画像処理装置は以下の構成を備える。即ち、
複数のレイヤから構成された画像データを解像度レベル毎に記憶する記憶手段と、
外部装置から、少なくとも前記画像データの前記解像度レベルと領域の大きさとの指定が含まれる送信要求を受信する受信手段と、
指定された前記解像度レベルと前記領域の大きさとの少なくともいずれかに基づいて、指定された前記解像度レベルに対応する複数のレイヤの合成を行うか否かを判定する判定手段と、
前記判定手段において前記合成を行うと判定された場合に、指定された前記解像度レベルに対応する複数のレイヤを合成して、1レイヤで構成される画像データを生成する合成手段と、
生成された前記1レイヤで構成される画像データを前記外部装置へ送出する送出手段と、を備える。
複数のレイヤから構成された画像データを解像度レベル毎に記憶する記憶手段と、
外部装置から、少なくとも前記画像データの前記解像度レベルと領域の大きさとの指定が含まれる送信要求を受信する受信手段と、
指定された前記解像度レベルと前記領域の大きさとの少なくともいずれかに基づいて、指定された前記解像度レベルに対応する複数のレイヤの合成を行うか否かを判定する判定手段と、
前記判定手段において前記合成を行うと判定された場合に、指定された前記解像度レベルに対応する複数のレイヤを合成して、1レイヤで構成される画像データを生成する合成手段と、
生成された前記1レイヤで構成される画像データを前記外部装置へ送出する送出手段と、を備える。
本発明によれば、リソースに制約が課せられた携帯情報機器においても高画質の画像データを閲覧可能とする技術を提供することができる。
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
〔第1実施形態〕
本実施形態では、既に生成済みの複数のJPEG2000ファイルを保有しているサーバが、クライアントからの要求を受け付け、その要求を解析し、その解析結果に基づいて、階層化された、即ち、複数のlayer(レイヤ、階層)としてエンコードされたJPEG2000符号化データを、1レイヤで構成される画像データに合成し、クライアントに送信する構成について説明する。例えば、ユーザが、Windows(登録商標)等のOSがインストールされたクライアント装置を操作し、閲覧ソフトウェアを利用して、サーバが公開しているJPEG2000画像が埋め込まれたホームページを開く状況を想定する。この場合、クライアントは、JPEG2000画像を取得するためのリンク情報に従って、JPEG2000画像の要求をサーバに送信し、JPIPの仕組みを使って、JPEG2000の拡大表示や部分領域の表示などを行う。尚、本実施形態の構成においては、通信対象のデータとしてJPEG2000ファイルを想定するが、複数のレイヤから構成された画像データであればどのようなものに対しても本実施形態の構成を適用できる。
本実施形態では、既に生成済みの複数のJPEG2000ファイルを保有しているサーバが、クライアントからの要求を受け付け、その要求を解析し、その解析結果に基づいて、階層化された、即ち、複数のlayer(レイヤ、階層)としてエンコードされたJPEG2000符号化データを、1レイヤで構成される画像データに合成し、クライアントに送信する構成について説明する。例えば、ユーザが、Windows(登録商標)等のOSがインストールされたクライアント装置を操作し、閲覧ソフトウェアを利用して、サーバが公開しているJPEG2000画像が埋め込まれたホームページを開く状況を想定する。この場合、クライアントは、JPEG2000画像を取得するためのリンク情報に従って、JPEG2000画像の要求をサーバに送信し、JPIPの仕組みを使って、JPEG2000の拡大表示や部分領域の表示などを行う。尚、本実施形態の構成においては、通信対象のデータとしてJPEG2000ファイルを想定するが、複数のレイヤから構成された画像データであればどのようなものに対しても本実施形態の構成を適用できる。
(情報処理装置のハードウェア構成)
図1は、本実施形態の構成における、サーバ及びクライアントのハードウェア構成を示したブロック図である。サーバ及びクライアントは、それぞれ、例えば、パーソナルコンピュータ(PC)やワークステーション(WS)、或いは、携帯電話、PHS、携帯情報端末(PDA)等で実現される情報処理装置である。
図1は、本実施形態の構成における、サーバ及びクライアントのハードウェア構成を示したブロック図である。サーバ及びクライアントは、それぞれ、例えば、パーソナルコンピュータ(PC)やワークステーション(WS)、或いは、携帯電話、PHS、携帯情報端末(PDA)等で実現される情報処理装置である。
図1において、CPU101は、システム全体の動作をコントロールし、一次記憶装置102に格納されたプログラムの実行などを行う。一次記憶装置102は、RAM、ROM等のメモリであり、二次記憶装置103に記憶されたプログラムなどを読み込んで格納する。
二次記憶装置103は例えば、ハードディスク等の大容量記憶装置である。一般に一次記憶装置102の容量は二次記憶装置103の容量より小さく、一次記憶装置102に格納しきれないプログラムやデータなどは二次記憶装置103に格納される。また、長時間記憶しなければならないデータなども二次記憶装置103に格納される。本実施形態では、プログラムを二次記憶装置103に格納し、プログラム実行時に一次記憶102に読み込んでCPU101が実行処理を行う。
尚、一次記憶装置102、二次記憶装置103は、それぞれ、例えば、所定のメディアと、当該メディアへのアクセスを実現するための外部記憶ドライブとによって構成してもよい。このようなメディアには、例えば、フレキシブルディスク(FD)、CD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等を採用することができる。
入力デバイス104はユーザからの指示入力を受け付ける装置であり、例えば、マウスやキーボード等がこれに該当する。指示入力に基づいてプログラムなどに割り込み信号を送ったりする。出力デバイス105は情報処理装置の応答を出力する表示装置であり、例えば、モニタ(ディスプレイ)やプリンタ等によって構成することができる。
I/F106は、インターフェイス(Interface)であり、情報処理装置は、このI/F106を介して外部装置とのデータのやり取りを行う。システムバス107は、情報処理装置内のデータの流れを司る役割を果たす。
尚、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
また、本実施形態では、説明の便宜のため、本実施形態に対応する情報処理装置を1つの装置で実現した構成について述べるが、複数の装置にリソースを分散した構成によって実現してもよい。例えば、記憶や演算のリソースを複数の装置に分散した形に構成してもよい。或いは、情報処理装置上で仮想的に実現される構成要素毎にリソースを分散し、並列処理を行うようにしてもよい。
(システム構成)
図2は、本実施形態の構成におけるシステムの概略を示した模式図である。201はクライアント1、202はクライアント2をあらわしており、それぞれ図1で説明したハードウェア構成を有する。このシステムでは、クライアント1(201)、クライアント2(202)のようなクライアントが、有線、無線を問わず、ネットワーク203を経由して、サーバ204と通信することが可能である。サーバ204は解像度レベル毎に複数のレイヤから構成された画像ファイルを蓄積する大容量の記憶装置205を備えている。大容量の記憶装置205は、例えばハードディスク等によって実現される。このハードディスク205には、JPEG2000符号化方式により符号化された、複数のレイヤから構成された画像データが格納されている。クライアント201、202は、サーバ204が格納しているJPEG2000画像データから、レイヤを順に受信し、閲覧、保存する。
図2は、本実施形態の構成におけるシステムの概略を示した模式図である。201はクライアント1、202はクライアント2をあらわしており、それぞれ図1で説明したハードウェア構成を有する。このシステムでは、クライアント1(201)、クライアント2(202)のようなクライアントが、有線、無線を問わず、ネットワーク203を経由して、サーバ204と通信することが可能である。サーバ204は解像度レベル毎に複数のレイヤから構成された画像ファイルを蓄積する大容量の記憶装置205を備えている。大容量の記憶装置205は、例えばハードディスク等によって実現される。このハードディスク205には、JPEG2000符号化方式により符号化された、複数のレイヤから構成された画像データが格納されている。クライアント201、202は、サーバ204が格納しているJPEG2000画像データから、レイヤを順に受信し、閲覧、保存する。
(JPEG2000符号化データの構成)
次に、一般的なJPEG2000の符号化データの概略について、図3を参照して説明する。図3は、JPEG2000の符号化データの概略図である。
次に、一般的なJPEG2000の符号化データの概略について、図3を参照して説明する。図3は、JPEG2000の符号化データの概略図である。
図3のように、JPEG2000符号化データは、先頭のMain Header(メインヘッダ)データ301と1以上のタイル(Tile)データ302から構成される。
メインヘッダデータ301には、Resolution Level数、Layer数など画像全体の符号化条件についての情報が記述されている。
タイルデータ302は、それぞれ、タイルヘッダ(Tile Header)302と、符号化データ306から構成される。タイルヘッダ302は、タイルの符号化条件を記述したヘッダデータである。
タイルヘッダ302に後続する符号化データ306は、1以上のPacket(パケット)303という符号化単位データから構成される。
図3は、Layer-Resolution level-Component-Position progression(LRCP)に沿ってパケットデータが記録されたJPEG2000ファイルを例示している。図3のように、LRCPに準じた場合、符号化データはLayer / Resolution / Component / Positionの順で構成される。このようなデータの並び方をProgression Orderと呼ぶ。また、ここで記されているPosition(ポジション、位置)とは、JPEG2000符号化データにおけるPrecinct(プリシンクト)のことである。
図3のようにProgression OrderがLRCPの場合、各Layer(レイヤ)内は、Resolution(解像度)番号の小さい順にデータが格納されている。レイヤ番号は復元する画像の原画に対するS/N比に対応し、レイヤ番号が小さいほどS/N比が悪くなる。一つのJPEG2000ファイル内でのResolution番号とレイヤ番号、Component(コンポーネント)番号の最大値は、エンコーダによって予め設定され、そのパラメータにしたがってエンコードされており、その情報は符号化データの中に格納されている。
図4は、画像サイズとResolution(解像度)番号との関係を模式的に示した図である。本実施形態の構成においては、最も小さい解像度の画像の解像度番号を0とし、解像度番号が一つ増加するごとに画像の幅と高さが2倍になっていく。
このようなJPEG2000符号化データを使えば、クライアントはサーバにある全ての画像データを取得せず、必要な部分のデータのみをサーバから受信することが可能である。クライアントの受信データの単位としては、JPEG2000のパケット、あるいはパケットよりも大きい符号化単位であるタイル単位が考えられる。
本実施形態では、クライアントがサーバから受信するデータ単位としてパケット単位を想定する。図5は、パケット単位のリクエスト(要求)およびレスポンス(応答)の概念図である。クライアント501はサーバ502に画像のタイル番号とResolution Level(解像度レベル)とレイヤ、コンポーネント、ポジション番号を指定して、データを要求する。サーバ502は、画像503のコードストリームを解析して、指定されたタイル番号、解像度レベルとレイヤ、コンポーネント、ポジション番号に相当するパケットデータを抜き出し、応答してクライアント501に送り返す。
(JPIPレスポンスデータの構成)
次に、JPIPを使ってパケットデータを送信単位として、データを送受信する場合のレスポンス(応答)データの構成を、図6および図7を使って説明する。
次に、JPIPを使ってパケットデータを送信単位として、データを送受信する場合のレスポンス(応答)データの構成を、図6および図7を使って説明する。
図6は、precinct data-binの構造の概略図である。JPIPでは、図6の601に示すように、precinct data-binと呼ばれるJPEG2000のパケットデータの塊を基本としてレスポンスデータ(Response Data)を作成する。precinct data-binとは、タイル番号tnの中の、プリシンクト番号pnの解像度レベル rn、 コンポーネント番号cnを構成する全てのレイヤのパケットを、レイヤ番号が昇順になるように並べてつなげたデータの塊である。
図6に示すprecinct data-binから抜き出したPacket(tn, rn, cn, pn, 1)を使って、作成されたJPIP Response Dataの例を図7に示す。図7は、JPIP Response Dataの一例を示す図である。ここで、Packet(tn, rn, cn, pn, qn)とは、タイルtnの解像度レベルがrn, コンポーネント番号がcn, ポジション番号がpn, レイヤ番号がqnのパケットを示す。JPIP Response Dataは、message header 701と message body 703から構成される。message headerとmessage bodyを合わせて、JPIP messageと呼ぶ。precinct data-binから作成されたJPIP messageをprecinct data-bin messageと呼び、メインヘッダから作成されたJPIP messageをmain header data-bin messageと呼ぶ。
precinct data-bin messageのmessage body 703には、precinct data-bin 601から切り出されたJPEG2000符号化データが格納される。例えば、図6のPacket(tn, rn, cn, pn, 1)603を抜き出してJPIP Response Dataを作成する場合、Packet(tn, rn, cn, pn, 1)603がmessage body 703に格納される。
message header 701は、4つのパラメータから構成される。即ち、1番目のパラメータは、message body 703に入っているデータがprecinct data-binであるか否かを示す識別子が格納される。
2番目のパラメータには、precinct data-bin ID(PrID)が格納される。これは、タイル番号tn, 解像度レベル番号rn, コンポーネント番号cn, プリシンクト番号pnから次式により一意に定まるパラメータである。
PrID(tn, rn, cn, pn)=tn+(cn+s×(コンポーネント数))×タイル数
ただし、
s=pn+tn×(解像度レベルrnにおける1タイルあたりのプリシンクト数)
+(解像度レベル0から(rn−1)までのタイルtnのプリシンクト数の総和)。
PrID(tn, rn, cn, pn)=tn+(cn+s×(コンポーネント数))×タイル数
ただし、
s=pn+tn×(解像度レベルrnにおける1タイルあたりのプリシンクト数)
+(解像度レベル0から(rn−1)までのタイルtnのプリシンクト数の総和)。
3番目のパラメータは、レスポンスデータのprecinct data-binにおけるオフセット値PrOffset 602である。つまり、message body703に入っているデータが、PrID(tn, rn, cn, pn)のprecinct data-bin601において何Byte目からのデータであるのかを示す値であり、図6の602の値と等しい。
message header 701の4番目のパラメータは、Response Data(レスポンスデータ)のバイト長、即ち、message body 703のバイト長である。つまり、ResLen702には、ResLen[byte]704の値が格納される。
(サーバの動作概要)
次に、本実施形態におけるサーバの動作の概要について説明する。本実施形態では、サーバには、次のようなエンコード条件の画像sample.jp2が格納されているものとする。
最高解像度時の画像サイズ:2272×1704[pixel]
最高解像度時のタイルサイズ:512×512[pixel]
解像度レベル数:4
解像度レベル:3・・・画像 2272×1704[pixel], タイル512×512[pixel]
解像度レベル:2・・・画像 1136×852[pixel], タイル256×256[pixel]
解像度レベル:1・・・画像 568×426[pixel], タイル128×128[pixel]
解像度レベル:0・・・画像 284×213[pixel], タイル64×64[pixel]
レイヤ数:各解像度レベルにつき3(レイヤ 0〜2)
コンポーネント数:3
ポジション数:1タイルにつき1ポジション
図8は、サーバに格納された画像データ(sample.jp2)の構造を模式的に示した図である。図9は、画像データ(sample.jp2)の、タイル分割の様子とタイル番号を示した図である。図9に示されているように、この画像は、5×4=20枚のタイル(0〜19)に分割されている。
次に、本実施形態におけるサーバの動作の概要について説明する。本実施形態では、サーバには、次のようなエンコード条件の画像sample.jp2が格納されているものとする。
最高解像度時の画像サイズ:2272×1704[pixel]
最高解像度時のタイルサイズ:512×512[pixel]
解像度レベル数:4
解像度レベル:3・・・画像 2272×1704[pixel], タイル512×512[pixel]
解像度レベル:2・・・画像 1136×852[pixel], タイル256×256[pixel]
解像度レベル:1・・・画像 568×426[pixel], タイル128×128[pixel]
解像度レベル:0・・・画像 284×213[pixel], タイル64×64[pixel]
レイヤ数:各解像度レベルにつき3(レイヤ 0〜2)
コンポーネント数:3
ポジション数:1タイルにつき1ポジション
図8は、サーバに格納された画像データ(sample.jp2)の構造を模式的に示した図である。図9は、画像データ(sample.jp2)の、タイル分割の様子とタイル番号を示した図である。図9に示されているように、この画像は、5×4=20枚のタイル(0〜19)に分割されている。
本実施形態において、サーバは、クライアントからリクエストを受信し、そのリクエストを解析して、例えば、以下のようにデータの生成、及び、送信の方針を決定する。
(処理1)クライアントからの要求画像の解像度が低い(画像サイズが小さい)と判断した場合には、サーバ側ではレイヤの合成を行わず、複数のレイヤで構成される画像データにつき、上位レイヤから順にクライアントへ送信する。この場合、たとえクライアントが複数のレイヤから構成された画像データを復元して画像を再生できないために、最上位レイヤの粗い画像しか表示することができなくても、表示画像自体が小さいため、ユーザに知覚される影響は小さいと考えられる。
(処理2)クライアントからの要求画像の解像度が高く(画像サイズが大きく)、画像中の広い領域を要求していると判断した場合には、サーバ側ではレイヤの合成を行わず、複数のレイヤで構成される画像データにつき、上位レイヤから順にクライアントへ送信する。この場合、クライアントは、解像度レベルが高く領域の広い画像データを要求しているため、クライアントの処理性能は高く、クライアントは複数のレイヤから構成された画像データを復元して画像を再生することができると考えられる。従って、サーバ側での合成を行う必要がないとみなせる。
(処理3)クライアントからの要求画像の解像度が高く(画像サイズが大きく)、画像中の狭い領域を要求していると判断した場合には、サーバ側で合成して該1レイヤで構成される画像データをクライアントに送信する。この場合、クライアントの表示画面は小さく、その処理性能は低いことが想定される。このため、クライアントは複数のレイヤから構成された画像データを復元して画像を再生することができないと考えられる。
(処理1)クライアントからの要求画像の解像度が低い(画像サイズが小さい)と判断した場合には、サーバ側ではレイヤの合成を行わず、複数のレイヤで構成される画像データにつき、上位レイヤから順にクライアントへ送信する。この場合、たとえクライアントが複数のレイヤから構成された画像データを復元して画像を再生できないために、最上位レイヤの粗い画像しか表示することができなくても、表示画像自体が小さいため、ユーザに知覚される影響は小さいと考えられる。
(処理2)クライアントからの要求画像の解像度が高く(画像サイズが大きく)、画像中の広い領域を要求していると判断した場合には、サーバ側ではレイヤの合成を行わず、複数のレイヤで構成される画像データにつき、上位レイヤから順にクライアントへ送信する。この場合、クライアントは、解像度レベルが高く領域の広い画像データを要求しているため、クライアントの処理性能は高く、クライアントは複数のレイヤから構成された画像データを復元して画像を再生することができると考えられる。従って、サーバ側での合成を行う必要がないとみなせる。
(処理3)クライアントからの要求画像の解像度が高く(画像サイズが大きく)、画像中の狭い領域を要求していると判断した場合には、サーバ側で合成して該1レイヤで構成される画像データをクライアントに送信する。この場合、クライアントの表示画面は小さく、その処理性能は低いことが想定される。このため、クライアントは複数のレイヤから構成された画像データを復元して画像を再生することができないと考えられる。
尚、上記のデータの生成、送信の方針は一例であり、用途や目的に応じて適宜条件を設定することができる。例えば、上記の(処理1)の場合にのみレイヤの合成は行わず、その他の場合は1つのレイヤからなる画像データを合成する構成等を採用してもよい。
また、いずれの場合も、サーバはtarget IDを返送(応答、レスポンス)データと共に返送する。ここで、target ID(tid)とは、1レイヤに変換されたコードストリームと、複数のレイヤからなるオリジナルのコードストリームとを識別する情報である。本実施形態においては、「sample_unify」が1レイヤに変換されたコードストリームを表すtarget ID、「sample_original」がオリジナルのコードストリームを表すtarget IDである。このため、サーバがtarget IDをデータと共に送信することで、レイヤ数を1つにしたJPEG2000符号化データ、つまりオリジナルデータから作成しなおした(合成した)符号化データから抜き出したデータなのか、オリジナルのJPEG2000符号化データから抜き出したデータなのかを、クライアントに通知することができる。
(クライアントのリクエスト)
次に、本実施形態においてクライアントがサーバへ送出する、リクエストについて説明する。ここでは、クライアントは、既に、解像度レベル0で画像全体を表示しており、その返送データより、target IDがsample_originalであることが分かっているものとする。また、クライアント側には、メインヘッダと各タイルのタイルヘッダと、さらに各タイルの解像度レベル0、レイヤ0〜2のパケットがキャッシュデータとして存在するものとする。図10は、このようなクライアントのキャッシュデータの構造を模式的に示した図である。尚、図10において、1001は取得された画像データのファイル名が"sample.jp2"、1002は取得されたコードストリームがオリジナルのコードストリーム(sample_original)であることを意味する。
次に、本実施形態においてクライアントがサーバへ送出する、リクエストについて説明する。ここでは、クライアントは、既に、解像度レベル0で画像全体を表示しており、その返送データより、target IDがsample_originalであることが分かっているものとする。また、クライアント側には、メインヘッダと各タイルのタイルヘッダと、さらに各タイルの解像度レベル0、レイヤ0〜2のパケットがキャッシュデータとして存在するものとする。図10は、このようなクライアントのキャッシュデータの構造を模式的に示した図である。尚、図10において、1001は取得された画像データのファイル名が"sample.jp2"、1002は取得されたコードストリームがオリジナルのコードストリーム(sample_original)であることを意味する。
このクライアントが、画像の中央部を2倍に拡大し、320×240の表示画面に表示するために、次のようなリクエストをサーバに送った場合を想定して説明する。
http://www.image.com/JPIP.cgi?target=sample.jp2&tid=sample_original&fsiz=568,426&roff=93,124&rsiz=320,240&need=t*r1&type=jpp-stream
上記のリクエストにおいて、“target=sample.jp2”は、クライアントがsample.jp2という名前の画像を指定していることを意味する。
http://www.image.com/JPIP.cgi?target=sample.jp2&tid=sample_original&fsiz=568,426&roff=93,124&rsiz=320,240&need=t*r1&type=jpp-stream
上記のリクエストにおいて、“target=sample.jp2”は、クライアントがsample.jp2という名前の画像を指定していることを意味する。
また、”tid=sample_original”は、sample.jp2に対応するコードストリームで、識別子が”sample_original”というコードストリームのデータを要求していることを意味する。”fsiz=568,426&roff=93,124&rsiz=320,240”は、画像の全体が568×426[pixel]のサイズのデータ、つまり解像度レベル1のデータから、画像の左上を原点とし、93×124[pixel]の位置から、サイズが320×240[pixel]の画像を抜き出すように指定していることを意味する。ただし、ここでは”need=t*r1”と指定することにより、その画像データ全てではなく、既に、クライアント側にあるキャッシュ情報から、今回の要求に含まれている全てのタイルのうち、解像度レベル1のデータのみを要求している。
また、パラメータ”type”は、返送データ単位を指定するものであり、例示したリクエストの場合、”jpp-stream”が指定されており、これはpacketベースとしたデータを要求していることを意味する。
(サーバの処理の流れ)
このようなリクエストを受信したサーバの動作を、図11を参照して説明する。図11は、サーバの処理の流れを示したフローチャートである。
このようなリクエストを受信したサーバの動作を、図11を参照して説明する。図11は、サーバの処理の流れを示したフローチャートである。
ステップS1101では、クライアントからのリクエストを受信し、解析する。上述の例の場合には、画像の全体が568×426[pixel]のサイズのデータ、つまり解像度レベル1のデータから、画像の左上を原点とし、93×124[pixel]の位置から、320×240[pixel]の画像を抜き出すように指定している、と解釈できる。したがって、要求している範囲は、図9の領域901である。
ステップS1102では、受信したリクエストから、返送メディアタイプ(type)がJPIP定義のjpp-streamであるか否かを判定する。jpp-streamの場合(ステップS1102でYES)はステップS1106へ進み、それ以外の場合(ステップS1102でNO)はステップS1103へ進む。ステップS1106以降では画像データを構成するレイヤを合成するか否かの判定を行って、判定結果に基づいた処理を実行することになる。
ステップS1103では、返送メディアタイプがJPEG2000であるか否かを判定する。JPEG2000の場合(ステップS1103でYES)はステップS1104へ進み、それ以外のメディアタイプの場合(ステップS1103でNO)はステップS1105へ進む。
例えば、リクエストにおいてtype=jp2となっていれば、JPEG2000 part1ファイルフォーマットでの返送をクライアントは望んでおり、type=rawと書いてあれば、JPEG2000コードストリームでの返送をクライアントは望んでいるので(ステップS1103でYES)、どちらの場合もステップS1104へ進む。例えば、リクエストにおいてtype=jpegとなっている場合は、JPEG2000以外のデータが要求されているため(ステップS103でNO)、ステップS1105へ進む。
ステップS1104では、返送すべきデータを、1レイヤのJPEG2000に変換して返送データを作成し、ステップS1112へ進む。ステップS1104の処理を行う場合、返送メディアタイプはjpp-streamではない(ステップS1102でNO)ため、クライアントは断片的なデータによる返送を望んでいない。従って、このリクエスト以降に、画像データの取得に関してインタラクティブな操作は発生しないと予想される。そのため、レイヤに分割することをせず、1レイヤにまとめて送信する。上述の例のsample.jp2の場合には、本来は3レイヤのデータであるが、それを1レイヤのJPEG2000に変換することになる。変換処理自体は公知の適切な手法を適宜適用する。
ステップS1105では、例えばJPEGのような、指定されたメディアタイプにデータを変換して、返送データを作成し、ステップS1112へ進む。メディアタイプの変換処理は公知の適切な手法を適宜適用する。
クライアントからのリクエストが(クライアントのリクエスト)で例示したものである場合、リクエストの”type=jpp-stream”という記述から、jpp-streamでの返送をクライアントが望んでいるため(ステップS1102でYES)、ステップS1102において、ステップS1106へ進むことになる。
ステップS1106では、ステップS1101の解析結果に基づいて、要求されている画像サイズを画像ファイルの解像度レベルにマッピングし、要求解像度レベルを特定する。上述の例の場合、画像全体のサイズが568×426[pixel]の画像を要求しているので、解像度レベル1にマッピングすることになる。
次に、ステップS1107では、ステップS1106で得られた要求解像度レベルの画像サイズと、QVGAサイズとを比較し、要求解像度レベルの画像サイズがQVGAサイズと等しいか、それよりも小さい場合(ステップS1107でYES)はステップS1110へ進み、QVGAよりも大きい場合(ステップS1107でNO)はステップS1108へ進む。ただし、QVGAサイズとは、320×240[pixel]の大きさである。上述の例の場合、解像度レベル1の要求であるので、画像サイズは568×426[pixel]であり、QVGAサイズ、320×240[pixel]より大きいので、ステップS1108へ進む。ステップS1107でYESと分岐した場合の処理は、上記の(処理1)に対応する。
ステップS1108では、要求されている領域の大きさがQVGAサイズと同じか、それよりも小さいサイズであるか否かを判定する。QVGAサイズ以下の場合(ステップS1108でYES)はステップS1109へ進み、QVGAサイズより大きい場合(ステップS1108でNO)はステップS1110へ進む。この判定は、QVGAサイズの320×240[pixel]とリクエスト中にあるrsizフィールドの値を比較することで簡単に調べられる。尚、上述の例の場合、”rsiz=320,240”であるので、要求領域サイズとQVGAサイズが同じであるため、ステップS1109へ進むことになる。ステップS1108でYESと分岐した場合の処理は上記の(処理3)に対応し、NOと分岐した場合の処理は上記の(処理2)に対応する。
尚、ステップS1107及びS1108におけるサイズの比較は、例えば以下のように行うことができる。比較対象の画像データ(又は領域)のうち一方の縦方向の長さが他方の縦方向の長さ以上であり、かつ、前者の横方向の長さが後者の横方向の長さ以上の場合に、前者のサイズが後者のサイズよりも大きいと判定する。ただし、縦方向の長さと横方向の長さの両方が等しい場合、両者のサイズは等しいと判定する。尚、サイズの比較方法はこれに限られず、用途や目的に応じて適宜適切なものを採用してよい。例えば、画像データ(又は領域)の面積の大小によってサイズを比較するように構成してもよい。
ステップS1109では、レイヤ合成フラグflagにレイヤの合成、即ち、画像データを1レイヤに変換して送出することを示す値”1”を代入し、さらに、返送するコードストリームのtarget IDを保存する変数RetIDに、1レイヤに変換されたコードストリームを示すtarget IDを代入し、ステップS1111へ進む。ただし、レイヤ合成フラグflagとは、オリジナルのJPEG2000符号化データを1レイヤに合成するかどうかを示すフラグであり、値”1”はオリジナルのJPEG2000符号化データを1レイヤに合成すること、値”0”はレイヤを合成しないことを意味する。フラグflagは、一時記憶装置102や二次記憶装置103等に領域を確保して保持する。なお、上述のように、本実施形態においては、sample_unifyが1レイヤに変換されたコードストリームを表すtarget IDである。従って、上述の例の場合には、返送するコードストリームのtarget IDとして、1レイヤに合成されたコードストリームを表すsample_unifyをRetIDに代入する。
ステップS1107で要求解像度レベルの画像サイズがQVGA以下であると判断された場合(ステップS1107でYES)、或いは、ステップS1108で解像度レベル0よりも大きい画像サイズをクライアントが要求しているが、その要求表示領域がQVGAサイズより大きいと判断された場合(ステップS1108でNO)には、ステップS1110へ進む。
ステップS1110では、レイヤ合成フラグflagに、レイヤを合成しないことを示す値”0”を代入し、さらに、返送するコードストリームのtarget IDを保存する変数RetIDに、オリジナルのコードストリームを示すtarget IDを代入し、ステップS1111へ進む。上述のように、本実施形態においては、sample_originalがオリジナルのコードストリームを表すtarget IDである。
ステップS1111では、ステップS1101のリクエスト解析の結果に基づいて、該当するデータをオリジナルの画像コードストリームから抜き出し、図7に示すようなJPIP messageを作成する。この処理の詳細については、図12を参照して後に説明する。ステップS1112では、ステップS1104、ステップS1105または、ステップS1111で作成された返送データを、クライアントに送信して、この処理を終了する。
次に、図12を参照して、ステップS1111において、データを抜き出し、レスポンスデータを作成する処理について、説明する。図12は、レスポンスデータをJPEG2000データから抜き出し、生成する処理の流れを示したフローチャートである。
まず、ステップS1201では、リクエスト中にtarget IDの指定があったか否かを判定する。target IDの指定があった場合(ステップS1201でYES)には、ステップS1202へ進み、target IDの指定が無かった場合(ステップS1201でNO)には、ステップS1203へ進む。
ステップS1202では、リクエスト中で指定されたtarget IDがステップS1109またはステップS1110で決定された、返送用のRetIDと等しいか否かを判定する。返送用のRetIDと等しい場合(ステップS1202でYES)はステップS1204へ進み、異なる場合(ステップS1202でNO)はステップS1203へ進む。
ステップS1203では、ステップS1109またはステップS1110で決定されたRetIDの値を使って、”JPIP-tid”レスポンスヘッダを作成する。
上述の例の場合には、リクエストの中に、”tid=sample_original”が存在するので、ステップS1201からステップS1202へ処理を進める。さらに、ステップS1109で、sample_unifyがRetIDに代入されているので、ステップS1202からステップS1203へ処理を進める。ステップS1203では、”JPIP-tid: sample_unify”というJPIPレスポンスヘッダを作成し、ステップS1204へ処理を進める。
尚、ステップS1203の処理を行わない場合、即ち、ステップS1202でYESの場合は、クライアントの要求したtarget idと、サーバが返送するデータを抜き出した符号化データのtarget idが等しいことを意味するため、”JPIP-tid”レスポンスヘッダを返送する必要がない。
ステップS1204では、メインヘッダを返送する必要があるか否かを判定し、返送する必要がある場合(ステップS1204でYES)はステップS1205へ進み、返送する必要が無い場合(ステップS1204でNO)はステップS1209へ進む。メインヘッダを返送する必要があるか否かの判断は、例えば、通常のJPIPの処理において用いる処理と同様の手法を適用する。
上述の例の場合、リクエストで指定しているtarget IDは、sample_originalであり、返送コードストリームのtarget IDは、sample_unifyであり、両者は異なる。そのため、sample_unifyのデータを送信するサーバは、クライアントのリクエスト中にあるキャッシュ情報(need=t*r1)を無視し、メインヘッダデータやタイルヘッダも返送する必要があると判断する。従って、メインヘッダを返送する必要があると判断し(ステップS1204でYES)、ステップS1205へ進むことになる。
ステップS1205では、サーバに格納されたオリジナルのコードストリームからメインヘッダを抜き出す。そして、ステップS1206へ進む。
ステップS1206では、レイヤ合成flagの値が1であるか否かを判定する。flag=1の場合(ステップS1206でYES)には、レイヤを一つにすべきと判断されているため、ステップS1207へ進む。flag≠1の場合(ステップS1206でNO)には、レイヤの合成は必要ないので、ステップS1208へ進む。
上述の例では、ステップS1109でflagに1が代入されているので、ステップS1207へ進むことになる。
ステップS1207では、メインヘッダのレイヤ数の情報を1に書き換える。レイヤ数の情報は、メインヘッダに含まれるCODマーカに記述されている。
ステップS1207では、メインヘッダのレイヤ数の情報を1に書き換える。レイヤ数の情報は、メインヘッダに含まれるCODマーカに記述されている。
図13はCODマーカの構成を示す概略図である。図13に示すように、CODマーカは5つの部分、COD, Lcod, Scod, SGcod, SPcod、から構成される。その中のSGcod1301は、更に3つのパート、1302、1303、1304から構成される。最初のパート1302には、コードストリームのProgression Orderが記述されている。2番目のパート1303には、レイヤ数が記述されている。3番目のパート1304には、色変換の情報が記述されている。したがって、SGcod1301の2番目のパート1303の値を1に書き換える。
上述の例の場合、1303には、3という値が格納されていたが、この値を1に書き換えることになる。
次に、ステップS1208では、ステップS1205乃至S1207の処理で得られたメインヘッダデータからmain header data-bin messageを作成する。main header data-bin messageは、図7で示したprecinct data-bin messageと同様に、メインヘッダを表す識別子や、返送データに含まれるメインヘッダの長さなどをmessage headerとし、message bodyにメインヘッダを格納したJPIPのレスポンス形式である。main header data-bin messageは、JPIPで定義されているデータ形式であるので、詳しい構造の説明は省略する。
次にステップS1209では、タイルヘッダを返送する必要があるかを判定する。返送する必要がある場合(ステップS1209でYES)はステップS1210へ進み、返送する必要が無い場合(ステップS1209でNO)はステップS1212へ進む。タイルヘッダを返送する必要があるか否かの判断は、例えば、通常のJPIPの処理において用いる処理と同様の手法を適用する。
上述の例の場合には、リクエストで指定しているtarget ID “sample_original”と、返送コードストリームのtarget ID ”sample_unify”は異なる。そのため、sample_unifyのデータを送信するサーバは、クライアントのリクエスト中にあるキャッシュ情報(need=t*r1)を無視し、タイルヘッダも返送する必要があると判断する。したがって、この例では、返送する必要がある場合(ステップS1209でYES)に該当し、ステップS1210へ進むことになる。
ステップS1210では、ステップS1101のリクエスト解析結果に基づいて、要求領域に含まれるタイルを特定し、それらのタイルヘッダをオリジナルのJPEG2000データから抜き出す処理を行う。そして、ステップS1211へ進む。
上述の例の場合、リクエスト解析結果より、図9の領域901が要求されているので、領域901に含まれる9タイル、タイル1、2、3、6、7、8、11、12、13、のタイルヘッダを抜き出す。
ステップS1211では、ステップS1210で抜き出したタイルヘッダから、tile header data-bin messageを作成する。tile header data-bin messageも、図7で示したprecinct data-bin messageと同様に、tile headerを表す識別子や、そのtile headerを抜き出したタイルの番号、返送データに含まれるtile headerの長さなどをmessage headerとし、message bodyにtile headerを格納したJPIPのレスポンス形式である。tile header data-bin messageは、JPIPで定義されているデータ形式であるので、詳しい構造の説明は省略する。
次に、ステップS1212では、ステップS1101のリクエスト解析結果に基づいて、返送用precinct data-binを特定する。上述の例の場合、9タイルに対して、解像度レベル0の3コンポーネントおよび、解像度レベル1の3コンポーネントを返送する必要があるので、9タイル×3コンポーネント×2解像度レベル×1ポジション/タイル=54より、54個のprecinct data-binが返送データとして特定されることになる。
ステップS1213では、ステップS1212で特定された返送用precinct data-binを1つ取り出し、そのprecinct data-binに含まれる全てのレイヤのパケットを抜き出す。
上述の例の場合、sample.jp2は3つのレイヤから構成されているので、1つのprecinct data-binにつき3つのパケットを抜き出すことになる。つまり、タイル1、解像度レベル0、コンポーネント0、ポジション0によるprecinct data-binを構成する、レイヤ0, レイヤ1, レイヤ2の3つのパケットを抜き出す。
ステップS1214では、ステップS1206の処理と同様に、レイヤ合成フラグflagの値が1であるか否かを判定する。flag=1の場合(ステップS1214でYES)には、レイヤを一つにすべきと判断されるため、ステップS1215へ進み、flag≠1の場合(ステップS1214でNO)には、レイヤの合成は必要ないので、ステップS1216へ進む。
ステップS1215では、ステップS1213で抜き出したパケットを1レイヤに合成する。パケットデータは、図3に示すようにpacket header 304とpacket body 305から構成される。レイヤを1つに合成するには、各パケットからpacket body 305を抜き出し、レイヤ0からレイヤ番号が昇順になるように、抜き出したpacket body 305を順に並べる。そして、このpacket body 305を並べたデータに対するpacket header 304を作成する。上述の例の場合には、3つのレイヤ(レイヤ0、レイヤ1、レイヤ2)を1レイヤに合成することになる。そして、ステップS1216へ進む。
ステップS1216では、図7に示すようなprecinct data-bin messageを作成する。precinct data-binの作成は、通常のJPIPサーバと同様の処理によって行えるため、詳しい説明は省略する。
次に、ステップS1217では、返送すべきprecinct data-binを全て抜き出したか否かを判定する。全てを抜き出していない場合(ステップS1217でNO)には、ステップS1213へ戻り、まだ抜き出していないprecinct data-binを抜き出し、ステップS1214乃至S1216の処理を繰り返す。全てを抜き出した場合(ステップS1217でYES)には、ステップS1218へ進む。
上述の例の場合、54個のprecinct data-binデータが抜き出されたら、ステップS1218へ進むことになる。
ステップS1218では、JPIPレスポンスヘッダを作成する。JPIPレスポンスヘッダの作成は、通常のJPIPサーバと同様の処理によって行えるため、詳しい説明は割愛する。
上述の例の場合、ステップS1203で既にJPIP-tidレスポンスヘッダを作成しているので、ステップS1218では、それ以外のJPIPレスポンスヘッダを作成することになる。
図14は、上述の例の場合において、サーバとの通信後における、クライアントのキャッシュデータの構造を模式的に示した図である。図14に示すように、サーバとの通信後において、クライアントには、タイル1、2、3、6、7、8、11、12、13の9タイルに関して、1レイヤからなる解像度レベル0および1のデータをキャッシュすることになる。尚、図14において、1401は取得した画像データのファイル名が"sample.jp2"、1402は取得したコードストリームが1レイヤに変換されたコードストリーム(sample_unify)であることを意味する。
上記のステップS1213乃至S1216の処理のように、本実施形態の構成では、リクエストを受け取るたびにオリジナルデータを1レイヤの画像データに変換して送出するため、クライアントの多様なリクエストに応じて画像データを再構成、送出するために、サーバが常時保持しなければならないデータは、オリジナル画像データのコードストリームのみでよい。
上記の構成では、"type=jpp-stream"、即ち、パケット単位での返送データが要求された場合に、インタラクティブ通信を想定したレスポンスデータの生成、送信を行ったが、インタラクティブ通信を想定した処理を行うのは、返送データの形式がパケット単位である場合に限られない。例えば、タイル単位で返送データを要求するjpt-streamの時も、同様に扱うことができる。
例えば、図11のステップS1102での、返送メディアタイプの判定基準にjpt-streamを加える。さらに、図12のステップS1209乃至ステップS1217の処理では、パケットの代わりに、該当するタイル, 解像度レベルのレイヤが含まれる全てのタイルパートを抜き出し、レイヤを1つにする処理を行う。このように構成することで、タイル単位で返送データを要求する場合も、インタラクティブ通信を想定した処理を行うことができる。尚、この場合、レイヤを1つにする処理量の観点から、タイルパートは、解像度レベル毎に分けて構成されることが望ましい。
また、サーバが1レイヤに変換する判断は、リクエスト内容にのみ基づいて行うので、上記の構成は、statelessシステム、statefulシステムのどちらのシステムにも適用することができる。
さらに、レスポンスデータを作成したコードストリームの識別子targetID(”tid”)を、サーバはレスポンスデータと共にクライアントに送るため、クライアントでは、変換されたコードストリームのデータと、そうではないデータを容易に区別することができる。したがって、例えば、クライアントが同じ画像に対して異なる条件で要求を発行した場合に、サーバがあるリクエストには、1レイヤに変換したコードストリームから、別のリクエストには複数レイヤを持つコードストリームからデータを返送したとしても、クライアントは、識別子targetIDを参照することで、別データとしてキャッシュすることができる。
尚、サーバ側はリクエスト中のtargetIDと返送コードストリームのtargetIDが異なるときには、リクエスト中のキャッシュ情報を無視するため、図12のステップS1204、S1209で、メインヘッダやタイルヘッダを送信する必要があると判断し、差分データではなく、表示に必要な全てのデータを送信するので、クライアント側で表示に必要なデータが不足することは無い。
上記のように、本実施形態の構成においては、解像度レベル、画像領域を含む、クライアントからのリクエストの内容に基づいてクライアントの能力を予測し、画質方向のスケーラビリティに対応していない可能性があるデコーダを搭載しているクライアントに対しては、1レイヤの画像に変換したデータを返送する。このため、クライアントのデコーダの機能が1レイヤの画像のみしか扱えない場合でも、高精細な画像を見ることが出来る。
また、従来技術のように、解像度、画質、タイルの3つの要素によって分解された部分データをキャッシュし、次のインタラクティブな操作に利用しようとすれば、そのキャッシュデータを管理する仕組みも搭載しなければならない。しかし、本実施形態の構成にように、サーバがレイヤを1つにしたデータをクライアントに送信することで、クライアントでは、解像度とタイルの2要素によるキャッシュデータ管理が可能になるため、キャッシュデータの管理に伴うクライアントの負荷を軽減することができる。
また、複数のレイヤから1つのレイヤに変換する処理は、対象となるパケットのpacket bodyをつなぎ合わせ、packet headerのみを作成しなおすだけで良いので、画像のエンコードを行うよりも少ない処理量で実行することができる。
〔その他の実施形態〕
第1実施形態では、1レイヤにするか判断するための、画像サイズ、画像の領域サイズを共にQVGAサイズとしたが、このサイズに限られない。また、画像サイズの基準値、画像領域サイズの基準値を同一にする必要も無い。例えば、画像サイズをQVGA、画像の領域サイズを160×120[pixel]とした構成にしてもよい。
第1実施形態では、1レイヤにするか判断するための、画像サイズ、画像の領域サイズを共にQVGAサイズとしたが、このサイズに限られない。また、画像サイズの基準値、画像領域サイズの基準値を同一にする必要も無い。例えば、画像サイズをQVGA、画像の領域サイズを160×120[pixel]とした構成にしてもよい。
また、第1実施形態では、リクエスト処理の度に、1レイヤに変換していたが、1レイヤに変換されたコードストリームをあらかじめサーバ側で保存しておいても良い。この場合、1つのJPEG2000ファイルにつき2つのコードストリームを用意し管理する必要があるが、サーバ側のリクエスト処理の負荷を軽減し、レスポンス速度を向上することができる。
また、全てのクライアントからのリクエストについて変換処理を実行せず、インタラクティブな通信を行うだけのマシンパワーがあると予測されるクライアントに対してのみ符号化データを変換するように構成することで、サーバ側の符号化データの変換に伴う負荷を軽減することができる。そして、インタラクティブな通信を行うだけのマシンパワーがあると予測されるクライアントに対しては、画質の選択の余地を与えることができる。
以上、本発明の実施形態例について詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様を取ることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含む。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
Claims (12)
- 複数のレイヤから構成された画像データを解像度レベル毎に記憶する記憶手段と、
外部装置から、少なくとも前記画像データの前記解像度レベルと領域の大きさとの指定が含まれる送信要求を受信する受信手段と、
指定された前記解像度レベルと前記領域の大きさとの少なくともいずれかに基づいて、指定された前記解像度レベルに対応する複数のレイヤの合成を行うか否かを判定する判定手段と、
前記判定手段において前記合成を行うと判定された場合に、指定された前記解像度レベルに対応する複数のレイヤを合成して、1レイヤで構成される画像データを生成する合成手段と、
生成された前記1レイヤで構成される画像データを前記外部装置へ送出する送出手段と、を備えることを特徴とする画像処理装置。 - 前記記憶手段は解像度レベルについての第1基準値と、領域についての第2基準値とを更に記憶し、
前記判定手段は、指定された前記解像度レベルと前記第1基準値との比較結果と、指定された前記領域の大きさと前記第2基準値との比較結果と、の少なくともいずれかに基づいて前記判定を行うことを特徴とする請求項1に記載の画像処理装置。 - 前記判定手段は、指定された前記解像度レベルが前記第1基準値よりも大きく、かつ、指定された前記領域の大きさが前記第2基準値よりも小さい場合に、前記合成を行うと判定することを特徴とする請求項2に記載の画像処理装置。
- 前記判定手段は、指定された前記解像度レベルが前記第1基準値よりも小さい場合に、前記合成を行わないと判定し、
前記送出手段は、前記指定された解像度レベルに対応する、前記複数のレイヤで構成される画像データを前記外部装置へ送出することを特徴とする請求項2又は3に記載の画像処理装置。 - 前記判定手段は、指定された前記解像度レベルが前記第1基準値よりも大きく、かつ、指定された前記領域の大きさが前記第2基準値よりも大きい場合に、前記合成を行わないと判定し、
前記送出手段は、前記指定された解像度レベルに対応する、前記複数のレイヤで構成される画像データを前記外部装置へ送出することを特徴とする請求項2乃至4のいずれか1項に記載の画像処理装置。 - 前記複数のレイヤから構成された画像データは、JPEG2000方式に基づく符号化データであることを特徴とする請求項1乃至5のいずれか1項に記載の画像処理装置。
- 前記第1基準値と前記第2基準値とは等しいことを特徴とする請求項2乃至6のいずれか1項に記載の画像処理装置。
- 前記受信手段、及び、前記送出手段は、JPIPに基づいて前記外部装置と通信を行うことを特徴とする請求項1乃至7のいずれか1項に記載の画像処理装置。
- 前記送出手段は更に、生成された前記1レイヤで構成される画像データの識別子を前記外部装置へ送出することを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
- 複数のレイヤから構成された画像データを解像度レベル毎に記憶する記憶手段を備えた画像処理装置の制御方法であって、
外部装置から、少なくとも前記画像データの前記解像度レベルと領域の大きさとの指定が含まれる送信要求を受信する受信工程と、
指定された前記解像度レベルと前記領域の大きさとの少なくともいずれかに基づいて、指定された前記解像度レベルに対応する複数のレイヤの合成を行うか否かを判定する判定工程と、
前記判定工程において前記合成を行うと判定された場合に、指定された前記解像度レベルに対応する複数のレイヤを合成して、1レイヤで構成される画像データを生成する合成工程と、
生成された前記1レイヤで構成される画像データを前記外部装置へ送出する送出工程と、を備えることを特徴とする画像処理装置の制御方法。 - コンピュータを請求項1乃至9のいずれかに記載の画像処理装置として機能させるためのコンピュータプログラム。
- 請求項11に記載のコンピュータプログラムを格納したコンピュータで読み取り可能な記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005161419A JP2006339972A (ja) | 2005-06-01 | 2005-06-01 | 画像処理装置及びその制御方法、コンピュータプログラム、記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005161419A JP2006339972A (ja) | 2005-06-01 | 2005-06-01 | 画像処理装置及びその制御方法、コンピュータプログラム、記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006339972A true JP2006339972A (ja) | 2006-12-14 |
Family
ID=37560121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005161419A Withdrawn JP2006339972A (ja) | 2005-06-01 | 2005-06-01 | 画像処理装置及びその制御方法、コンピュータプログラム、記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006339972A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009171560A (ja) * | 2007-12-21 | 2009-07-30 | Canon Inc | 画像処理装置及び画像処理方法並びに画像処理方法を実行するプログラム及び記憶媒体 |
JP6430086B1 (ja) * | 2017-10-05 | 2018-11-28 | 三菱電機株式会社 | 画像提供装置、画像提供方法および画像提供プログラム |
-
2005
- 2005-06-01 JP JP2005161419A patent/JP2006339972A/ja not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009171560A (ja) * | 2007-12-21 | 2009-07-30 | Canon Inc | 画像処理装置及び画像処理方法並びに画像処理方法を実行するプログラム及び記憶媒体 |
JP6430086B1 (ja) * | 2017-10-05 | 2018-11-28 | 三菱電機株式会社 | 画像提供装置、画像提供方法および画像提供プログラム |
WO2019069415A1 (ja) * | 2017-10-05 | 2019-04-11 | 三菱電機株式会社 | 画像提供装置、画像提供方法および画像提供プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7660476B2 (en) | Image processing method and image processing apparatus | |
JP5555728B2 (ja) | ソース画像と関連付けられた映像コンテンツを通信ネットワーク内のテレビに提供するためのシステムおよび方法 | |
JP4377103B2 (ja) | サーバクライアント環境におけるjpeg2000のための画像処理 | |
JP4603947B2 (ja) | 画像通信システム、サーバ装置およびその制御方法、並びにコンピュータプログラム | |
JP4709493B2 (ja) | 圧縮されたディジタル画像を通信する方法及び製造物 | |
EP1335561B1 (en) | Method for document viewing | |
US8610603B2 (en) | Distributed on-demand media transcoding system and method | |
JP5326234B2 (ja) | 画像送信装置、画像送信方法および画像送信システム | |
US7734824B2 (en) | Transport of reversible and unreversible embedded wavelets | |
JP2000504906A (ja) | マルチメディアデータのプログレッシブ非同期伝送方法及びシステム | |
JP2004274759A (ja) | 制限されたアクセスとサーバ/クライアント受け渡しを有する圧縮されたディジタル画像の通信方法及び装置 | |
US7558430B2 (en) | Apparatus method and computer-readable medium for processing hierarchical encoded image data | |
US7721971B2 (en) | Image processing system, image processing method and computer readable information recording medium | |
US7456844B2 (en) | Image transmission method, computer-readable image transmission program, recording medium, and image transmission apparatus | |
JP2006339972A (ja) | 画像処理装置及びその制御方法、コンピュータプログラム、記憶媒体 | |
JP4086728B2 (ja) | 画像通信方法及びシステム | |
JPH09116759A (ja) | 画像復号化装置および画像符号化・復号化システム | |
Chi et al. | Pervasive web content delivery with efficient data reuse | |
JP2008147893A (ja) | クライアントサーバシステム及び遠隔操作システム | |
JP4956179B2 (ja) | データ処理装置、データ処理方法、データ処理プログラム並びに記憶媒体 | |
JP2004080095A (ja) | 画像処理装置及び画像処理方法 | |
JP2006345452A (ja) | 情報処理装置及びその制御方法、コンピュータプログラム、記憶媒体 | |
JP5141886B2 (ja) | 画像処理装置、画像処理方法、プログラム及び記録媒体 | |
JP5187094B2 (ja) | 画像符号化装置 | |
JP2007142581A (ja) | 画像処理方法、画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080805 |