説明

画像処理装置および方法

【課題】所望の解像度や画質に応じて、必要なデータをより容易に得ることができるようにする。
【解決手段】配信用データ生成装置101は、画像データを符号化し、IPネットワークを介して配信可能なネットワークパケット化する。このとき、配信用データ生成装置101は、各ネットワークパケットにNORMヘッダを付加し、そのNORMヘッダの拡張パラメータ領域に、そのネットワークパケットに含まれる分割コードストリームの先頭と末端について、解像度とレイヤを示すアトリビュート番号を記述する。配信サーバ103は、各ネットワークパケットのNORMヘッダを参照し、アトリビュート番号から、所望の解像度と画質の画像を得るために必要なデータを含むネットワークパケットを選択し、抽出する。本発明は、例えば、画像処理装置に適用することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置および方法に関し、特に、所望の特徴量に応じて、必要なデータをより容易に得ることができるようにした画像処理装置および方法に関する。
【背景技術】
【0002】
2000年にISO(International Organization for Standardization)/IEC(International Electrotechnical Commission)で標準化されたJPEG2000(Joint Photographic Experts Group 2000)は、高圧縮率で符号化することができ、可逆と非可逆圧縮の両方に対応することができ、解像度や画質をスケラビリティに復号することができるように符号化することができ、さらに、エラー耐性を向上させるように符号化することができる等、様々な特徴を有する技術として、JPEGの代替技術としての期待が高まっている(例えば、特許文献1参照)。
【0003】
2004年にはデジタルシネマの標準規格(DCI(Digital Cinema Initiative))によって、標準コーデックとしてJPEG2000 Part-1が選ばれた。これによってデジタルシネマの映像撮影から、画像編集、画像配信まで、符号化方式をすべてJPEG2000で統一することが可能になった。
【0004】
また、このようにJPEG2000で符号化されたデジタルシネマコンテンツは、さらに、ライブイベントや小規模の映画館に2次配信を行ったり、仮想空間提供サービスのユーザに対して提供(例えば仮想空間上の映画館で上映)したり、携帯電話機やノート型パーソナルコンピュータ等のような携帯型電子機器に配信を行ったりすることも考えられている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−311327号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、元々の高画質高解像度のデジタルシネマコンテンツはデータ量が大きく、仮想空間上での上映や、低性能の携帯型電子機器等への配信には不向きである。
【0007】
そのため配信先等に応じて解像度や画質を調整したデータを予め用意することも考えられるが、配信方法、伝送路、および配信先等の多様性はさらに増大する傾向にあり、全ての条件に対応するようにデータを用意することは困難であった。
【0008】
そこで、配信時に解像度や画質を適切な値に調整する方法も考えられるが、データの復号や符号化を伴う作業は容易ではなく、短時間で行うことは困難であった。
【0009】
本発明は、このような状況に鑑みて提案されたものであり、例えば解像度や画質等、所望の特徴量に応じて、必要なデータをより容易に得ることができるようにすることを目的とする。
【課題を解決するための手段】
【0010】
本発明の一側面は、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる各分割コードストリームについて、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量を含むヘッダ情報を生成するヘッダ情報生成手段と、前記ヘッダ情報生成手段により生成された前記ヘッダ情報を用いて、各分割コードストリームをパケット化するバケット生成手段とを備える画像処理装置である。
【0011】
前記画像データを符号化し、前記プログレッション順の構造を有する前記コードストリームを生成する符号化手段をさらに備え、前記ヘッダ情報生成手段は、前記符号化手段により前記画像データが符号化されて生成された前記コードストリームが分割されて得られる各分割コードストリームについて、前記ヘッダ情報を生成することができる。
【0012】
前記符号化手段により前記画像データが符号化されて生成された前記コードストリームを所定のデータ長毎に分割する分割手段をさらに備え、前記ヘッダ情報生成手段は、前記分割手段により前記コードストリームが分割されて得られる各分割コードストリームについて、前記ヘッダ情報を生成することができる。
【0013】
前記コードストリームは、前記画像データがJPEG2000方式により符号化されたものであるようにすることができる。
【0014】
前記特徴量は、前記JPEG2000方式における解像度およびレイヤを含むようにすることができる。
【0015】
前記プログレッション順は、少なくとも2階層の階層構造を有し、上位階層の変数が前記解像度であり、かつ、下位階層の変数が前記レイヤであるか、若しくは、前記上位階層の変数が前記レイヤであり、かつ、前記下位階層の変数が前記解像度であるようにすることができる。
【0016】
前記ヘッダ情報生成手段は。各分割コードストリームの先頭アドレスおよび末端アドレスを抽出する抽出手段と、前記アドレス抽出手段により抽出された前記先頭アドレスおよび前記末端アドレス、並びに、前記プログレッション順に基づいて、各分割コードストリームの先頭および末端の特徴量を算出する特徴量算出手段と、前記特徴量算出手段により算出された、各分割コードストリームの先頭および末端の前記特徴量から、前記特徴量を他と識別する識別番号であるアトリビュート番号を算出するアトリビュート番号算出手段と、前記ヘッダ情報を生成し、前記ヘッダ情報に、前記アトリビュート番号算出手段により算出された前記アトリビュート番号を記述する記述手段とを備えることができる。
【0017】
前記アトリビュート番号算出手段は、前記プログレッション順を判定する判定手段と、前記判定手段により判定された前記プログレッション順専用の算出式を用いて、前記アトリビュート番号を算出する算出処理手段とを備えることができる。
【0018】
本発明の一側面は、また、画像処理装置の画像処理方法であって、前記画像処理装置のヘッダ情報生成手段が、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる各分割コードストリームについて、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量を含むヘッダ情報を生成し、前記画像処理装置のパケット生成手段が、生成された前記ヘッダ情報を用いて、各分割コードストリームをパケット化する画像処理方法である。
【0019】
本発明の他の側面は、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる分割コードストリームを含むパケットに含まれる、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量に関する情報に基づいて、前記分割コードストリームの先頭および末端の前記特徴量を特定する特徴量特定手段と、前記特徴量特定手段により特定された前記分割コードストリームの先頭および末端の前記特徴量に基づいて、所望の特徴量に応じた前記パケットの選択を行うパケット選択手段とを備える画像処理装置である。
【0020】
前記コードストリームは、前記画像データがJPEG2000方式により符号化されたものであるようにすることができる。
【0021】
前記特徴量は、前記JPEG2000方式における解像度およびレイヤを含むようにすることができる。
【0022】
前記プログレッション順は、少なくとも2階層の階層構造を有し、上位階層の変数が前記解像度であり、かつ、下位階層の変数が前記レイヤであるか、若しくは、前記上位階層の変数が前記レイヤであり、かつ、前記下位階層の変数が前記解像度であるようにすることができる。
【0023】
前記パケットは、前記パケットに含まれる前記分割コードストリームの先頭および末端の、前記特徴量を他と識別する識別番号であるアトリビュート番号を含み、前記特徴量特定手段は、前記アトリビュート番号から前記特徴量を求めることができる。
【0024】
前記特徴量特定手段は、前記プログレッション順を判定する判定手段と、前記判定手段により判定された前記プログレッション順専用の算出式を用いて、前記アトリビュート番号から前記特徴量を算出する算出処理手段とを備えることができる。
【0025】
前記パケット選択手段は、前記プログレッション順を判定する判定手段と、前記判定手段により判定された前記プログレッション順専用の判定式を用いて、前記パケットの選択を行う選択処理手段とを備えることができる。
【0026】
本発明の他の側面は、また、画像処理装置の画像処理方法であって、前記画像処理装置の特徴量特定手段が、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる分割コードストリームを含むパケットに含まれる、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量に関する情報に基づいて、前記分割コードストリームの先頭および末端の前記特徴量を特定し、前記画像処理装置のパケット選択手段が、特定された前記分割コードストリームの先頭および末端の前記特徴量に基づいて、所望の特徴量に応じた前記パケットの選択を行う画像処理方法である。
【0027】
本発明の一側面においては、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる各分割コードストリームについて、分割コードストリームの先頭および末端の、画像データの画像の特徴量を含むヘッダ情報が生成され、生成されたヘッダ情報を用いて、各分割コードストリームがパケット化される。
【0028】
本発明の他の側面においては、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる分割コードストリームを含むパケットに含まれる、分割コードストリームの先頭および末端の、画像データの画像の特徴量に関する情報に基づいて、分割コードストリームの先頭および末端の特徴量が特定され、特定された分割コードストリームの先頭および末端の特徴量に基づいて、所望の特徴量に応じたパケットの選択が行われる。
【発明の効果】
【0029】
本発明によれば、画像を処理することができる。特に、所望の特徴量に応じて必要なデータをより容易に得ることができる。
【図面の簡単な説明】
【0030】
【図1】本発明を適用したコンテンツ配信システムの主な構成例を示すブロック図である。
【図2】図1の配信用データ生成装置の主な構成例を示すブロック図である。
【図3】図2のJPEG2000エンコーダの主な構成例を示すブロック図である。
【図4】サブバンドの構成例を示す図である。
【図5】サブバンドの構成例を示す図である。
【図6】各サブバンド中のコードブロックの例を示す図である。
【図7】ビットプレーンの例を説明する図である。
【図8】符号化パスの例を説明する図である。
【図9】係数の走査の例を説明する図である。
【図10】図2のNORMヘッダ生成部の主な構成例を示すブロック図である。
【図11】レイヤを説明する図である。
【図12】L-Rタイプの符号化コードストリームの構成例を説明する図である。
【図13】L-Rタイプの場合の復号画像の復元の様子の例を説明する図である。
【図14】R-Lタイプの符号化コードストリームの構成例を説明する図である。
【図15】R-Lタイプの場合の復号画像の復元の様子の例を説明する図である。
【図16】L-Rタイプのネットワークパケット生成の様子の例を説明する図である。
【図17】NORMヘッダの構成例を説明する図である。
【図18】R-Lタイプのネットワークパケット生成の様子の例を説明する図である。
【図19】配信データ生成処理の流れの例を説明するフローチャートである。
【図20】符号化処理の流れの例を説明するフローチャートである。
【図21】NORMヘッダ生成処理の流れの例を説明するフローチャートである。
【図22】アトリビュート番号算出処理の流れの例を説明するフローチャートである。
【図23】図1の配信サーバの主な構成例を示すブロック図である。
【図24】ネットワークパケット配信処理の流れの例を説明するフローチャートである。
【図25】解像度レイヤ算出処理の流れの例を説明するフローチャートである。
【図26】選択処理の流れの例を説明するフローチャートである。
【図27】本発明を適用したパーソナルコンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【0031】
以下、発明を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(コンテンツ配信システム)
2.第2の実施の形態(パーソナルコンピュータ)
【0032】
<1.第1の実施の形態>
[コンテンツ配信システムの構成]
図1は、本発明を適用したコンテンツ配信システムの一実施の形態の構成を表している。
【0033】
図1に示されるコンテンツ配信システム100は、画像や音声等よりなるコンテンツのデータを配信するシステムである。コンテンツ配信システム100においては、配信するコンテンツの画像の特徴量(例えば解像度や画質等)が、その配信先となる端末装置の性能等の各種条件に応じて適切になるように調整されて配信される。
【0034】
このコンテンツは、例えば、デジタルシネマ用のデジタルシネマコンテンツである。一般的には、コンテンツのデータには、画像データだけでなく音声データやその他のデータも含まれるが、以下においては、説明の便宜上、本発明に関連する画像データについてのみ説明する。
【0035】
コンテンツ配信システム100は、例えば、配信用データ生成装置101、コンテンツサーバ102、配信サーバ103、端末装置104、および端末装置105を有する。
【0036】
配信用データ生成装置101は、生成したり、外部から供給されたりしたコンテンツの画像データを、配信用データに作り替える。より具体的には、配信用データ生成装置101は、画像データを、インターネット等のIP(Internet Protocol)ネットワークを介して配信可能なネットワークパケット化する。
【0037】
配信用データ生成装置101は、生成したネットワークパケットをコンテンツサーバ102に供給し(矢印111)、格納する。
【0038】
コンテンツサーバ102は、配信用データ生成装置101により生成されたネットワークパケットを、コンテンツの配信用データとして保持し、管理する。コンテンツサーバ102は、配信サーバ103からの要求に基づいて、このように管理しているネットワークパケットを配信サーバ103に供給する(矢印112)。
【0039】
配信サーバ103は、例えば、端末装置104や端末装置105から要求されたコンテンツをコンテンツサーバ102に要求する。配信サーバ103は、その要求に基づいてコンテンツサーバ102から供給される、要求したコンテンツのネットワークパケットを取得すると、要求元の端末装置にそのネットワークパケットを供給(配信)する(矢印113若しくは矢印114)。
【0040】
端末装置104および端末装置105は、ネットワークパケットを受信し、コンテンツを再生し、出力(画像表示や音声出力等)する装置である。端末装置104や端末装置105としては、例えば、映画館のデジタルシネマ上映装置、イベント会場等に特設される小型の上映装置、仮想空間上での仮想的な上映装置、テレビジョン受像機やハードディスクレコーダ等の一般家庭に設置されるAV機器、パーソナルコンピュータ、または、携帯電話機やノート型パーソナルコンピュータ等の携帯型電子機器等、通信機能を有する任意の装置が想定される。
【0041】
なお、配信用データ生成装置101とコンテンツサーバ102、コンテンツサーバ102と配信サーバ103、並びに、配信サーバ103と端末装置104および端末装置105は、インターネット等を含む任意のネットワークを介して互いに接続されており、そのネットワークを介して情報の授受を行う。
【0042】
つまり、矢印111乃至矢印114により示される各装置間の情報の授受は、そのネットワークを介して行われる。
【0043】
IPネットワークにデータを伝送する際に、どのようなプロトコルを用いるかが重要である。TCP(Transmission Control Protocol)は汎用性の高いプロトコルであるが送信側から受信側に正しくデータが伝送されないと何度でも再送を繰り返すので、即時的(リアルタイム)な配信が必要なシステムには適さない。
【0044】
これに対して、マルチキャスト(Multicast)プロトコルは、高いビットレートのデータ伝送や、低いパケットロスでの伝送に適したプロトコルである。解像度の大きいデジタルシネマのデータ伝送には好適である。
【0045】
しかしながら、マルチキャスト(Multicast)プロトコルでは、UDP(User Datagram Protocol)を使用するため、TCPのようなデータ到着信頼性を実現されていない。データ到着信頼性をマルチキャスト(Multicast)プロトコルに付与するものとしてNACK(不到達確認要求)をしてパケットを回復するNORM(NACK(Negative Acknowledgment) Oriented Reliable Multicast)プロトコルがIETF(Internet Engineering Task Force)で提案されている。
【0046】
コンテンツ配信システム100においては、このようなNORMプロトコルを採用する。
【0047】
以上のように、コンテンツ配信システム100においては、配信サーバ103は、ネットワークパケットをコンテンツサーバ102から取得し、それを端末装置104や端末装置105に配信する。
【0048】
このような配信に備えて、配信用データ生成装置101は、例えば解像度や画質等の、画像の特徴量に関する情報をNORMヘッダの拡張領域に記述し、そのNORMヘッダを含むネットワークパケットを生成する。
【0049】
配信サーバ103は、このようなNORMヘッダを含むネットワークパケットをコンテンツサーバ102から取得する。配信サーバ103は、そのネットワークパケットに含まれるNORMヘッダを参照することにより、そのネットワークパケットに含まれる画像データ(符号化データ)の画像特徴量(解像度や画質等)を容易に把握することができる。
【0050】
そこで、配信サーバ103は、その画像特徴量に関する情報に基づいて、配信先の端末装置の性能、配信方法、若しくは伝送路等に対して、例えば解像度や画質等の画像特徴量が適切なネットワークパケットのみを選択し、配信する。
【0051】
このように、配信サーバ103は、NORMヘッダの情報に従って、ネットワークパケット(画像データ)を取捨選択するのみで、より容易に、配信先等の各種条件に対して適切な画像特徴量の画像データを配信することができる。つまり、配信サーバ103は、目的に応じた適切な(すなわち、所望の)画像特徴量の画像データを、より容易に得ることができる。
【0052】
換言すれば、配信用データ生成装置101は、配信サーバ103が、所望の画像特徴量に応じて必要な画像データをより容易に得ることができるような配信用データ(ネットワークパケット)を生成することができる。
【0053】
さらに換言すれば、このような方法を用いることにより、コンテンツ配信システム100は、コンテンツサーバ102に保持する配信用データ(ネットワークパケット)のデータ量の不要な増大を抑制することができる。つまり、コンテンツ配信システム100は、コストの増大を抑制しつつより多様な用途に適用可能とすることができる。
【0054】
以下に、各装置や方法等についてより具体的に説明する。
【0055】
[配信用データ生成装置の構成]
図2は、図1の配信用データ生成装置101の主な構成例を示すブロック図である。
【0056】
図2に示されるように、配信用データ生成装置101は、例えば、JPEG2000エンコーダ121、コードストリーム分割部122、NORMヘッダ生成部123、およびネットワークパケット生成部124を有する。
【0057】
外部よりベースバンドの画像データ等が供給されると(矢印131)、JPEG2000エンコーダ121は、その画像データをJPEG2000方式で符号化し、符号化コードストリームを生成する。JPEG2000エンコーダ121は、生成した符号化コードストリームをコードストリーム分割部122に供給する(矢印132)。
【0058】
コードストリーム分割部122は、供給された符号化コードストリームを、ネットワークパケットに格納する所定のデータ長毎に分割する。通常、JPEG2000の符号化コードストリームのデータ長は、ネットワークに伝送する際のIPパケットのデータ長よりも遥かに大きい。したがって、JPEG2000エンコーダ121において生成された符号化コードストリームは、基本的に、IPパケット長に合わせて複数個のパケットに分割する必要がある。
【0059】
コードストリーム分割部122は、符号化コードストリームを分割して得られた各分割コードストリームをネットワークパケット生成部124に供給する(矢印133)。コードストリーム分割部122は、さらに、各分割コードストリームをNORMヘッダ生成部123に供給する(矢印134)。
【0060】
また、JPEG2000エンコーダ121は、生成した符号化コードストリームについての、データ構成(解像度やレイヤ等の画像特徴量を変数とする符号化データの順序)を示すプログレッションオーダ情報を生成し、それをNORMヘッダ生成部123に供給する(矢印135)。
【0061】
NORMヘッダ生成部123は、コードストリーム分割部122から供給された各分割コードストリームについて、NORMヘッダを生成する。NORMヘッダ生成部123は、さらに、JPEG2000エンコーダ121から供給されたプログレッションオーダ情報等に基づいて、各分割コードストリームの画像特徴量(解像度やレイヤ等)を特定し、それらの情報を、NORMヘッダの拡張領域に記述する。
【0062】
NORMヘッダ生成部123は、生成したNORMヘッダをネットワークパケット生成部124に供給する(矢印136)。
【0063】
ネットワークパケット生成部124は、コードストリーム分割部122から供給される各分割コードストリームに対して、NORMヘッダ生成部123から供給されるNORMヘッダを用いて、ヘッダを生成し、ネットワークパケットを生成する。
【0064】
ネットワークパケット生成部124は、生成したネットワークパケットを出力し(矢印137)、例えばコンテンツサーバ102に供給して蓄積させる。
【0065】
[JPEG2000エンコーダの構成]
図3は、図2のJPEG2000エンコーダの主な構成例を示すブロック図である。
【0066】
JPEG2000エンコーダ121は、画像データをウェーブレット変換し、得られた係数を、コードブロック毎にビットプレーンに展開し、ビットプレーン毎にエントロピ符号化する。
【0067】
JPEG2000エンコーダ121は、特にJPEG2000規格で定められたEBCOT(Embedded Coding with Optimized Truncation)と呼ばれるエントロピ符号化を行う(参考文献:ISO/IEC 15444-1, Information technology-JPEG 2000, Part 1:Core coding system)。
【0068】
このEBCOT(Embedded Block Coding with Optimized Truncation)と呼ばれるエントロピ符号化は、ビットプレーン展開されたバイナリデータを1ピクセル単位にモデリングしながら算術符号化する技術である。
【0069】
図1に示されるように、JPEG2000エンコーダ121は、ウェーブレット変換部151、量子化部152、コードブロック化部153、ビットプレーン展開部154、EBCOT155、および符号化コードストリーム生成部156を有する。
【0070】
ウェーブレット変換部151は、通常、低域フィルタと高域フィルタから構成されるフィルタバンクによって実現される。また、デジタルフィルタは通常複数タップ長のインパルス応答(フィルタ係数)を有するので、ウェーブレット変換部151は、フィルタリングが行えるだけの入力画像を予めバッファリングするバッファを有する。
【0071】
ウェーブレット変換部151は、入力された画像データ(矢印131)を、フィルタリングに最低限必要なデータ量以上取得する。ウェーブレット変換部151は、その画像データに対して、例えば5×3ウェーブレット変換フィルタを用いてフィルタリングを行い、ウェーブレット係数を生成する。なお、ウェーブレット変換部151は、画像の垂直方向および水平方向のそれぞれに対して、画像データを低域成分と高域成分に分離するフィルタリングを行う。
【0072】
そして、ウェーブレット変換部151は、このようなフィルタリング処理を、垂直方向および水平方向の両方において低域成分として分離されたサブバンドに対して再帰的に所定回数繰り返す。これは、図4に示されるように、画像のエネルギーの多くが低域成分に集中しているからである。
【0073】
図4は、サブバンドの構成例を示す図である。図4に示されるように、分割レベル数1の状態においても分割レベル数3の状態においても、画像のエネルギーの多くは、低域成分に集中している。
【0074】
図5は、分割レベル数4のウェーブレット変換処理により生成されるサブバンドの構成例を示す図である。
【0075】
この場合、ウェーブレット変換部151は、まず、画像全体をフィルタリングし、サブバンド1LL(図示せず)、1HL、1LH、および1HHを生成する。次に、ウェーブレット変換部151は、生成されたサブバンド1LLに対して再度フィルタリングを行い、2LL(図示せず)、2HL、2LH、および2HHを生成する。さらに、ウェーブレット変換部151は、生成されたサブバンド2LLに対して再度フィルタリングを行い、3LL、3HL、3LH、および3HHを生成する。さらに、ウェーブレット変換部151は、生成されたサブバンド3LLに対して再度フィルタリングを行い、4LL、4HL、4LH、および4HHを生成する。
【0076】
このように、分割レベル数4まで分析フィルタリングが行われると、13個のサブバンドが生成される。図5に示されるように、分割レベルが1つ上位に進むごとに、サブバンドのサイズは、縦方向および横方向にそれぞれ2分の1となる。
【0077】
つまり、例えば横方向に1920画素の画像のベースバンドの画像データが1回分析フィルタリングされると、横方向に960画素のサブバンドが4つ(1LL,1HL,1LH,1HH)生成される。さらに、サブバンド1LLが1回分析フィルタリングされると、横方向に480画素のサブバンドが4つ(2LL,2HL,2LH,2HH)が生成される。さらに、サブバンド2LLが1回分析フィルタリングされると、横方向に240画素のサブバンドが4つ(3LL,3HL,3LH,3HH)が生成される。さらに、サブバンド3LLが1回分析フィルタリングされると、横方向に120画素のサブバンドが4つ(4LL,4HL,4LH,4HH)が生成される。
【0078】
なお、ウェーブレット変換の分割レベル数は任意である。
【0079】
図3に戻り、ウェーブレット変換部151は、フィルタリングにより得られた係数データ(ウェーブレット係数)を、サブバンド毎に、量子化部152に供給する(矢印172)。
【0080】
量子化部152は、供給された係数データ(ウェーブレット係数)を量子化する。量子化部152は、得られた係数データ(量子化係数)を、コードブロック化部153に供給する(矢印173)。なお、JPEG2000の規格では、可逆圧縮の場合、量子化処理は省略される。その場合、ウェーブレット変換部151より出力された係数データ(ウェーブレット係数)は、コードブロック化部153に供給される(矢印174)。この場合、量子化部152は省略可能である。
【0081】
コードブロック化部153は、供給された各係数データ(量子化された係数データ)を、予め定められた所定の大きさの矩形の、エントロピ符号化の処理単位であるコードブロックに分割する。JPEG2000の規格上の定義によって、コードブロックの縦・横サイズはどのサブバンドにおいても一定である。但し画像(サブバンド)の両端や上端・下端などでは、同じサイズのコードブロックが取れないケースも多々ある。
【0082】
図6は、各サブバンド中のコードブロックの位置関係の例を示したものである。ここでは分割レベル数3の場合について説明する。例えば64×64画素程度のサイズのコードブロックが、分割後のすべてのサブバンド中に生成される。例えば、最も分割レベルが低い1HHのサブバンドの大きさが例えば640×320画素であるとすると、64×64画素のコードブロックは合計50個存在することになる。後段の各処理部は、このコードブロック毎に処理を行う。もちろん、このコードブロックのサイズ(画素数)は任意である。
【0083】
図3に戻り、コードブロック化部153は、係数データをコードブロック毎にビットプレーン展開部154に供給する(矢印175)。
【0084】
ビットプレーン展開部154は、供給されたコードブロック毎の係数データを、ビットの位毎のビットプレーンに展開する。
【0085】
ビットプレーンは、所定の数のウェーブレット係数よりなる係数群(例えば後述するコードブロック)を、1ビット毎、つまり位毎に分割(スライス)したものである。つまり、ビットプレーンは、それぞれが複数ビットのビット深度を持つ複数のデータの、互いに同一の位のビット(係数ビット)の集合である。したがって、展開されるビットプレーン数は、各係数のビット深度に依存する。
【0086】
図7にその具体例を示す。図7の左図は縦4個、横4個の計16個の係数を示している。この16個の係数のうち、絶対値が最大のものは13で、2進数で1101と表現される。ビットプレーン展開部154は、このような係数群を、絶対値を示す4枚のビットプレーン(絶対値のビットプレーン)と、符号を示す1枚のビットプレーン(符号のビットプレーン)に展開する。つまり、図7中左の係数群は、図7中右に示されるように、4枚の絶対値のビットプレーンと1枚の符号のビットプレーンに展開される。ここで、絶対値のビットプレーンの要素はすべて0か1の値をとる。また、符号を示すビットプレーンの要素は、係数の値が正であることを示す値、係数の値が0であることを示す値、または係数の値がマイナスを示す値のいずれかをとる。
【0087】
なお、このようにビットプレーンとされる係数群における係数の数は任意である。以下においては、処理単位を統一することで各部における処理を容易にするために、ビットプレーン展開部154が、係数をコードブロック毎にビットプレーン展開するものとして説明する。
【0088】
図3に戻り、ビットプレーン展開部154は、このように展開したビットプレーンを、係数の最上位ビット(MSB:Most Significant Bit)から最下位ビット(LSB:Less Significant Bit)に向かう順に、EBCOT155に供給する。つまり、ビットプレーン展開部154は、ビット深度の上位側から下位側に向かう順に、展開したビットプレーンをEBCOT155に供給する(矢印176)。
【0089】
EBCOT155は、所定の大きさのブロック毎にそのブロック内の係数の統計量を測定しながら符号化を行う。EBCOT155は、係数データ(量子化係数)をコードブロック単位に、エントロピ符号化する。各コードブロックは、最上位ビット(MSB)から最下位ビット(LSB)方向にビットプレーン毎に独立して符号化される。コードブロックの縦横のサイズは4から256までの2のべき乗で、通常使用される大きさは、32x32、64x64、または128x32等がある。量子化係数値がnビットの符号付き2進数で表されていて、bit 0からbit n-1がLSBからMSBまでのそれぞれのビットを表すとする。残りの1ビットは符号である。コードブロックの符号化は、MSB側のビットプレーンから順番に、次の3種類の符号化パスによって行われる。
【0090】
(1)Significant Propagation Pass
(2)Magnitude Refinement Pass
(3)Cleanup Pass
【0091】
3つの符号化パスの用いられる順序は、図8で示される。最初にBit-plane(n-1)(MSB)がCleanup Passによって符号化される。続いて順次LSB側に向かい、各ビットプレーンの符号化が、3つの符号化パスをSignificant Propagation Pass、Magnitude Refinement Pass、Cleanup Passの順序で用いて行われる。
【0092】
ただし、実際にはMSB側から何番目のビットプレーンで初めて1が出てくるかをヘッダに書き、MSB側から連続するオール0のビットプレーン(ゼロビットプレーンと呼ぶ)は符号化しない。この順序で3種類の符号化パスを繰返し用いて符号化し、任意のビットプレーンの、任意の符号化パス迄で符号化を打ち切ることにより、符号量と画質のトレードオフを取る(レート制御を行う)。
【0093】
次に、係数の走査(スキャニング)について図9を用いて説明する。コードブロックは高さ4個の係数毎にストライプ(stripe)に分けられる。ストライプの幅はコードブロックの幅に等しい。スキャン順とは、1個のコードブロック内の、すべての係数をたどる順番で、コードブロック中では上のストライプから下のストライプへの順序、ストライプの中では、左の列から右の列へ向かっての順序、列の中では上から下へという順序である。各符号化パスにおいてコードブロック中のすべての係数が、このスキャン順で処理される。
【0094】
以下、3つの符号化パスについて述べる。以下はいずれもJPEG-2000規格書(参考文献:ISO/IEC 15444-1, Information technology-JPEG 2000, Part 1:Core coding system)に記述されている内容である。
【0095】
(1)Significance Propagation Pass(SPパス):
あるビットプレーンを符号化するSignificance Propagation Passでは、8近傍の少なくとも1つの係数が有意(significant)であるようなnon-significant係数のビットプレーンの値を算術符号化する。その符号化したビットプレーンの値が1である場合は、符号が+であるか、−であるかを続けてMQ符号化する。
【0096】
ここでsignificanceというJPEG2000特有の用語について説明する。significanceとは、各係数に対して符号化器が持つ状態で、significanceの初期値はnon-significantを表す0、その係数で1が符号化されたときにsignificantを表す1に変化し、以降常に1であり続けるものである。従って、significanceとは有効桁の情報を既に符号化したか否かを示すフラグとも言える。あるビットプレーンでsignificantになれば、以降のビットプレーンではsignificantになったままである。
【0097】
(2)Magnitude Refinement Pass(MRパス):
ビットプレーンを符号化するMagnitude Refinement Passでは、ビットプレーンを符号化する Significance Propagation Passで、且つ符号化していないsignificantな係数のビットプレーンの値をMQ符号化する。
【0098】
(3)Cleanup Pass(CUパス):
ビットプレーンを符号化するCleanup Passでは、ビットプレーンを符号化するSignificance Passで、且つ符号化していないnon-significantな係数のビットプレーンの値をMQ符号化する。その符号化したビットプレーンの値が1である場合は符号が+であるか−であるか(Sign情報)を続けてMQ符号化する。
【0099】
尚、以上の3つの符号化パスでのMQ符号化では、ケースに応じて、ZC(Zero Coding)、RLC(Run-Length Coding)、SC(Sign Coding)、およびMR(Magnitude Refinement)が使い分けられる。ここでMQ符号化と呼ばれる算術符号が用いられる。MQ符号化は、JBIG2(参考文献:ISO/IEC FDIS 14492, “Lossy/Lossless Coding of Bi-level Images”, March 2000)で規定された学習型の2値算術符号である。
【0100】
図3に示されるように、EBCOT155は、ビットモデリングを行うビットモデリング部161と、算術符号化を行うMQ符号化部162とを有する。ビットモデリング部161は、ビットモデリングを行うと、制御情報、シンボル、およびコンテキスト等の情報をMQ符号化部162に供給する(矢印177)。MQ符号化部162は、供給されたデータ群を用いてMQ符号化を行う。MQ符号化部162は、MQ符号化により生成された符号化データを符号化コードストリーム生成部156に供給する(矢印178)。
【0101】
符号化コードストリーム生成部156は、EBCOT155(MQ符号化部162)から供給された符号化データを整列し、1つの符号化コードストリームとして出力する(矢印179)。より具体的には、符号化コードストリーム生成部156は、符号化データを並べ替え、JPEG2000の特徴であるResolution(解像度)とLayer(レイヤ)のスケーラブルな構造のパケット群よりなる符号化コードストリームを生成する。図2を参照して説明したように、符号化コードストリーム生成部156から出力された符号化コードストリームは、コードストリーム分割部122に供給される。
【0102】
なお、符号化コードストリーム生成部156は、さらに、生成した符号化コードストリームについて、その構造を示すプログレッションオーダ情報をNORMヘッダ生成部123に供給する(矢印180)。
【0103】
[NORMヘッダ生成部の構成例]
次に、図2のNORMヘッダ生成部123について説明する。上述したように、JPEG2000エンコーダ121において生成された符号化コードストリームは、コードストリーム分割部122により分割され、分割された複数の分割コードストリームとして、NORMヘッダ生成部123に供給される。また、NORMヘッダ生成部123には、JPEG2000エンコーダ121からプログレッションオーダ情報が供給される。
【0104】
図10は、図2のNORMヘッダ生成部の主な構成例を示すブロック図である。
【0105】
図10に示されるように、NORMヘッダ生成部123は、アドレス抽出部191、解像度・レイヤ算出部192、アトリビュート番号算出部193、およびヘッダ記述部194を有する。
【0106】
アドレス抽出部191は、コードストリーム分割部122から供給される(矢印134)各分割コードストリームの先頭のアドレス(先頭アドレス)と、末端のアドレス(末端アドレス)とを抽出する。アドレス抽出部191は、抽出した各分割コードストリームの先頭アドレスと末端アドレスとを解像度・レイヤ算出部192に供給する(矢印211)。
【0107】
解像度・レイヤ算出部192は、JPEG2000エンコーダ121から供給されるプログレッションオーダ情報により示される符号化コードストリームの構造に基づいて、プログレッションに関する変数となる画像特徴量である解像度とレイヤとを、アドレス抽出部191から供給された先頭アドレスおよび末端アドレスのそれぞれについて算出する。
【0108】
[レイヤ]
ここで、レイヤについて説明する。上述したように、画像データは、コードブロック毎にビットプレーンに展開されて符号化される。つまり、コードブロック内の符号化パスはビットプレーンの順に並んでいる。レイヤは、このようにコードブロック毎に符号化されたデータを、1つまたは複数のビットプレーン毎に分割したものである。すなわち、各レイヤは、1つまたは複数のビットプレーンにより形成される。換言すれば、コードブロック毎に符号化されたデータは、コードストリーム中の1個または複数個のレイヤに渡って展開される。
【0109】
レイヤ中の符号化パス数は、ブロック毎に設定することができる。符号化パス数を0に設定することもできる。
【0110】
画像データは、一般的に、レイヤ数が増える程画質が向上する。換言すれば、分割したレイヤを減らしたり増やしたりすることにより、画像データの画質を調整することができる。
【0111】
図11の例においては、1ピクチャがレイヤ1乃至レイヤNのN個のレイヤに分割され、1つのレイヤが4個のパケットから構成されている。この1レイヤ当たりのパケット数は(ウェーブレット分解レベル数+1)で定義される。
【0112】
以上のように、符号化コードストリームは、レイヤ(画質)について、スケーラブルに符号化されている。また、図5を参照して説明したように、画像データは、複数のサブバンドに分割され、そのサブバンド毎に符号化される。したがって、符号化コードストリームは、解像度についても、スケーラブルに符号化されている。つまり、JPEG2000方式で符号化された符号化コードストリームにおいては、解像度およびレイヤについてスケーラブルになるように、符号化データが所定の単位毎にパケット化されて並べられている。
【0113】
このような符号化データ(パケット)の並びをプログレッションと称する。JPEG2000方式の場合、符号化データは、解像度とレイヤについて並べられている。したがって、この場合の解像度とレイヤ(画像特徴量)を、プログレッションに関する変数と称する。
【0114】
JPEG2000方式においては、このような符号化データの並べ方は、2通り存在する。
【0115】
[タイプ]
第1の並べ方は、各レイヤの符号化データを解像度毎に並べる方法である。このような並べ方が採用された符号化コードストリームのタイプをL-Rタイプ(Layer-Resolution Type)と称する。図12は、そのL-Rタイプの符号化コードストリームの構成例を説明する図である。
【0116】
図12に示されるように、符号化コードストリーム231は、SOC(Start of Codestream)、メインヘッダ(Main header)、およびタイルパートヘッダ(Tile-part header)に続いて、各レイヤの符号化データが解像度順に並べられている。なお、図12においてLおよびRは、それぞれ任意の自然数である。
【0117】
つまり、このL-Rタイプでは、最初の上位階層にレイヤ(Layer)があり、次の階層に解像度(Resolution)が存在する。従ってこのコードストリームを先頭から順番にデコードすると図13の様な画像を復元することができる。
【0118】
より具体的に説明すると、Layer-1はResolution番号1からRまでのすべての解像度のパケットを包含しており、このLayer-1をデコードすることで、原画像と同じ解像度の画像の最初のレイヤだけを復元することが出来る。同様にLayer-2をデコードしてLayer−1のデコード済みの画像に合わせることで、画質が向上する。これを最後のLayer-Lまで繰り返して行うことで最終的な復号画像を出力することになる。
【0119】
つまり、このように復元するレイヤを向上させることにより、画像は、解像度が一定のまま画質が向上する。広義において「画質」は様々な事象を示すが、ここでは、復元するレイヤに依存するものを「画質」と称する。
【0120】
画像の「解像度」および「画質」は、画像の特徴量である。符号化コードストリームにおける「解像度」および「レイヤ」は、これらの特徴量に対応する変数である。したがって、以下においては、この符号化コードストリームにおける「解像度」および「レイヤ」を、それぞれ、画像の「解像度」および「画質」と等価とみなし、「画像の特徴量」と称する場合もある。
【0121】
第2の並べ方は、各解像度の符号化データをレイヤ毎に並べる方法である。このような並べ方が採用された符号化コードストリームのタイプをR-Lタイプ(Resolution-Layer Type)と称する。図14は、そのR-Lタイプの符号化コードストリームの構成例を説明する図である。
【0122】
図14に示されるように、符号化コードストリーム241は、SOC(Start of Codestream)、メインヘッダ(Main header)、およびタイルパートヘッダ(Tile-part header)に続いて、各解像度の符号化データがレイヤ順に並べられている。なお、図14においてLおよびRは、それぞれ任意の自然数である。
【0123】
つまり、このR-Lタイプでは、最初の上位階層に解像度(Resolution)があり、次の階層にレイヤ(Layer)が存在する。従ってこのコードストリームを先頭から順番にデコードすると図15の様な画像を復元することができる(3分解のウェーブレット分解のケースでR=4の場合)。
【0124】
Res-1はLayer番号1からLまでのすべてのレイヤのパケットを包含しており、このRes-1をデコードすることで、最高画質の画像の最小の解像度だけを復元することが出来る。同様にRes-2をデコードしてRes−1のデコード済みの画像に合わせることで、解像度が水平・垂直共に2倍だけ向上する。これを最後のRes-Rまで繰り返して行うことで最終的な復号画像を出力することになる。
【0125】
解像度・レイヤ算出部192は、プログレッションオーダ情報から、符号化コードストリームのタイプを特定する。タイプを特定すると符号化ストリームにおける解像度やレイヤの構造が分かるので、解像度・レイヤ算出部192は、先頭アドレスおよび末端アドレスのそれぞれに対応する解像度やレイヤを求めることができる。
【0126】
[L-Rタイプ]
まず、符号化コードストリームがL-Rタイプの場合について説明する。図16は、L-Rタイプのネットワークパケット生成の様子の例を説明する図である。
【0127】
コードストリーム分割部122において、L-Rタイプの符号化コードストリーム231が分割され、分割コードストリーム251および分割コードストリーム252が生成されるとする。
【0128】
分割コードストリーム251は、1番目のネットワークパケット(Network Packet 1)のBody(本体データ部)となる。分割コードストリーム252は、2番目のネットワークパケット(Network Packet 2)のBody(本体データ部)となる。
【0129】
もちろん3番目以降のネットワークパケットも生成されるが、ここでは説明の便宜上、省略する。
【0130】
NORMヘッダ生成部123のアドレス抽出部191は、分割コードストリーム251の先頭アドレス(Start-1)と末端アドレス(End-1)を求める。また、アドレス抽出部191は、分割コードストリーム252の先頭アドレス(Start-2)と末端アドレス(End-2)も求める。
【0131】
この時、分割コードストリーム251の先頭アドレス(Start-1)は、元の符号化コードストリーム231のSOCマーカの先頭アドレスに等しく、末端アドレス(End-1)は、(レイヤ1、解像度1)(Layer-1,Res-1)のパケットの途中のアドレスに等しい。
【0132】
同様に、分割コードストリーム252の先頭アドレス(Start-2)は、分割コードストリーム251の末端アドレス(End-1)の直後のアドレスに等しく、末端アドレス(End-2)は、(レイヤ1、解像度R)(Layer-1,Res-R)の途中のアドレスに等しい。
【0133】
プログレッションオーダ情報には、図16の最上段に示されるような符号化コードストリームの構造(どのアドレスからどのアドレスまでがどのようなヘッダやパケットにより構成されるか)が示されている。
【0134】
解像度・レイヤ算出部192は、プログレッションオーダ情報によって、符号化コードストリームがL-Rタイプであることを確認すると、その構造に基づいて、上述したように各分割コードストリームの先頭アドレスと末端アドレスに対応するレイヤ番号(Layer番号)および解像度番号(Resolution番号)を求める。
【0135】
解像度・レイヤ算出部192は、
(R_f,R_t)=(Resolution番号の先頭値、Resolution番号の末端値)
(L_f,L_t)=(Layer番号の先頭値、Layer番号の末端値)
と定義し、各分割コードストリーム(各ネットワークパケット)について、これらの変数の値を求める。
【0136】
例えば、図16の例において、分割コードストリーム251(Network Packet 1)の場合、上述した変数(R_f,R_t),(L_f,L_t)の値は以下のようになる。
(R_f,R_t)=(0,1)
(L_f,L_t)=(0,1)
【0137】
また、分割コードストリーム252(Network Packet 2)の場合、上述した変数(R_f,R_t),(L_f,L_t)の値は以下のようになる。
(R_f,R_t)=(1,R)
(L_f,L_t)=(1,1)
【0138】
なお、図16に示される各ネットワークパケットのヘッダ(HDR)は、UDPヘッダとNORMヘッダを合わせたものである。UDPはTCPと異なり送達確認などを行わないため、データ比率が高まる。従って途中で一部のデータが欠損(Loss)しても問題が少ない画像のストリーミング等に多用されている。
【0139】
図10に戻り、解像度・レイヤ算出部192は、上述した変数(R_f,R_t)および(L_f,L_t)の値を算出すると、それらをアトリビュート番号算出部193に供給する(矢印212)。アトリビュート番号算出部193は、変数(R_f,R_t)および(L_f,L_t)の値を用いて、各分割コードストリーム(各ネットワークパケット)の先頭と末端について、その画像特徴量(解像度やレイヤ)を他と識別するための識別番号であるアトリビュート番号を算出する。
【0140】
図10に示されるように、アトリビュート番号算出部193は、タイプ判定部201、L-R用算出部202、およびR-L用算出部203を有する。
【0141】
タイプ判定部201は、解像度・レイヤ算出部192から供給されるプログレッションオーダ情報に基づいて、符号化コードストリームのタイプを判定する。タイプ判定部201は、符号化コードストリームのタイプがL-Rタイプである場合、解像度・レイヤ算出部192から供給される、各分割コードストリームの変数(R_f,R_t)および(L_f,L_t)の値をL-R用算出部202に供給する(矢印221)。
【0142】
L-R用算出部202は、以下の式(1)に示されるようなL-R用の算出式を用いて、各分割コードストリームについて、変数(R_f,R_t)および(L_f,L_t)の値から、先頭と末端のアトリビュート番号(Attribute Number)(先頭値と末端値)を求める。
【0143】
Attribute Number=(Layer-number)×(Resolution level数)
+(Resolution-number+1) ・・・(1)
【0144】
なお、Layer-numberは、レイヤ番号を示し、Resolution level数は、解像度番号の最大値(ウェーブレット変換の分割レベル数)を示し、Resolution-numberは、解像度番号を示す。
【0145】
例えば、図16の例において、Resolution level数R=4とすると、分割コードストリーム251のアトリビュート番号の先頭値および末端値は、それぞれ以下のようになる。
【0146】
先頭値=L_f×(Res-R)+R_f+1=0×4+0+1=1
末端値=L_t×(Res-R)+R_t+1=1×4+1+1=6
【0147】
また、分割コードストリーム252のアトリビュート番号の先頭値および末端値は、それぞれ以下のようになる。
【0148】
先頭値=L_f×(Res-R)+R_f+1=1×4+1+1=6
末端値=L_t×(Res-R)+R_t+1=1×4+4+1=9
【0149】
L-R用算出部202は、以上のように、変数(R_f,R_t)および(L_f,L_t)の値が供給される全ての分割コードストリームについて、アトリビュート番号の先頭値と末端値を求める。L-R用算出部202は、求めたアトリビュート番号の先頭値および末端値をヘッダ記述部194に供給する(矢印213)。
【0150】
ヘッダ記述部194は、L-R用算出部202から供給されたアトリビュート番号の先頭値および末端値の分割コードストリームについて、NORMヘッダを生成し、そのNORMヘッダの拡張パラメータ領域に、そのアトリビュート番号の先頭値および末端値を記述する。
【0151】
[NORMヘッダの構成]
図17は、NORMヘッダの構成例を説明する図である。
【0152】
ヘッダ記述部194は、図17に示されるような構成のNORMヘッダ261を生成し、その拡張パラメータ領域(reserved)に、X、Attribyute type、FROM、およびTO等の値を記述する。
【0153】
これらの変数の内容については、図17の表262に示される。Xは、NORMヘッダ261にアトリビュート番号が記述されているか否かを示すアトリビュート拡張フラグ(Attribute extension flag)である。アトリビュート拡張フラグのデータ長は任意であるが、例えば1ビットであってもよい。また、アトリビュート拡張フラグの値は任意であるが、例えば、NORMヘッダ261にアトリビュート番号の値が記述される場合のアトリビュート拡張フラグXの値を「1」とし、アトリビュート番号の値が記述されない場合のアトリビュート拡張フラグXの値を「0」としてもよい。
【0154】
アトリビュートタイプ(Attribyute type)は、上述した符号化コードストリームのタイプを示す。アトリビュートタイプのデータ長は任意であるが、例えば8ビットであってもよい。また、アトリビュートタイプの値は任意であるが、例えば、符号化コードストリームがL-Rタイプの場合のアトリビュートタイプの値を「0」とし、符号化コードストリームがR-Lタイプの場合のアトリビュートタイプの値を「1」としてもよい。さらに、L-RタイプおよびR-Lタイプ以外のタイプが存在する場合、他の値を割り当てることもできる。
【0155】
FROMは、アトリビュート番号の先頭値を示す。TOは、アトリビュート番号の末端値を示す。これらの値のデータ長は任意であるが、例えば8ビットであってもよい。
【0156】
例えば、ヘッダ記述部194は、L-R用算出部202からアトリビュート番号の先頭値および末端値を供給されると、NORMヘッダを生成し、アトリビュート拡張フラグXに値「1」をセットし、アトリビュートタイプの値を「0」にセットする。さらに、ヘッダ記述部194は、L-R用算出部202から供給されたアトリビュート番号の先頭値をFROMに記述し、L-R用算出部202から供給されたアトリビュート番号の末端値をTOに記述する。
【0157】
図10に戻り、ヘッダ記述部194は、生成したNORMヘッダをネットワークパケット生成部124に供給する(矢印136)。
【0158】
符号化コードストリームがL-Rタイプの場合、以上のように処理が行われる。
【0159】
[R-Lタイプ]
次に、符号化コードストリームがR-Lタイプの場合について説明する。図18は、R-Lタイプのネットワークパケット生成の様子の例を説明する図である。
【0160】
コードストリーム分割部122において、R-Lタイプの符号化コードストリーム241が分割され、分割コードストリーム271および分割コードストリーム272が生成されるとする。
【0161】
分割コードストリーム271は、1番目のネットワークパケット(Network Packet 1)のBody(本体データ部)となる。分割コードストリーム272は、2番目のネットワークパケット(Network Packet 2)のBody(本体データ部)となる。
【0162】
もちろん3番目以降のネットワークパケットも生成されるが、ここでは説明の便宜上、省略する。
【0163】
NORMヘッダ生成部123のアドレス抽出部191は、分割コードストリーム271の先頭アドレス(Start-1)と末端アドレス(End-1)を求める。また、アドレス抽出部191は、分割コードストリーム272の先頭アドレス(Start-2)と末端アドレス(End-2)も求める。
【0164】
この時、分割コードストリーム271の先頭アドレス(Start-1)は、元の符号化コードストリーム241のSOCマーカの先頭アドレスに等しく、末端アドレス(End-1)は、(レイヤ1、解像度1)(Layer-1,Res-1)のパケットの途中のアドレスに等しい。
【0165】
同様に、分割コードストリーム272の先頭アドレス(Start-2)は、分割コードストリーム271の末端アドレス(End-1)の直後のアドレスに等しく、末端アドレス(End-2)は、(レイヤL、解像度1)(Layer-L,Res-1)の途中のアドレスに等しい。
【0166】
解像度・レイヤ算出部192は、プログレッションオーダ情報によって、符号化コードストリームがR-Lタイプであることを確認すると、その構造に基づいて、上述したように各分割コードストリーム(各ネットワークパケット)について、変数(R_f,R_t),(L_f,L_t)の値を求める。
【0167】
例えば、図18の例において、分割コードストリーム271(Network Packet 1)の場合、上述した変数(R_f,R_t),(L_f,L_t)の値は以下のようになる。
(R_f,R_t)=(0,1)
(L_f,L_t)=(0,1)
【0168】
また、分割コードストリーム272(Network Packet 2)の場合、上述した変数(R_f,R_t),(L_f,L_t)の値は以下のようになる。
(R_f,R_t)=(1,1)
(L_f,L_t)=(1,L)
【0169】
図10に戻り、解像度・レイヤ算出部192は、上述した変数(R_f,R_t)および(L_f,L_t)の値を算出すると、それらをアトリビュート番号算出部193に供給する(矢印212)。アトリビュート番号算出部193は、各分割コードストリーム(各ネットワークパケット)の先頭と末端について、アトリビュート番号を算出する。
【0170】
タイプ判定部201は、符号化コードストリームのタイプがR-Lタイプである場合、解像度・レイヤ算出部192から供給される、各分割コードストリームの変数(R_f,R_t)および(L_f,L_t)の値をR-L用算出部203に供給する(矢印222)。
【0171】
R-L用算出部203は、以下の式(2)に示されるようなR-L用の算出式を用いて、各分割コードストリームについて、変数(R_f,R_t)および(L_f,L_t)の値から、先頭と末端のアトリビュート番号(Attribute Number)(先頭値と末端値)を求める。
【0172】
Attribute Number=(Resolution-number)×(全Layer数)
+(Layer-number+1) ・・・(2)
【0173】
なお、全Layer数は、レイヤの総数を示す。
【0174】
例えば、図18の例において、全Layer数L=5とすると、分割コードストリーム251のアトリビュート番号の先頭値および末端値は、それぞれ以下のようになる。
【0175】
先頭値=R_f×(L)+L_f+1=0×5+0+1=1
末端値=R_t×(L)+L_t+1=1×5+1+1=7
【0176】
また、分割コードストリーム272のアトリビュート番号の先頭値および末端値は、それぞれ以下のようになる。
【0177】
先頭値=R_f×(L)+L_f+1=1×5+1+1=7
末端値=R_t×(L)+L_t+1=1×5+5+1=11
【0178】
R-L用算出部203は、以上のように、変数(R_f,R_t)および(L_f,L_t)の値が供給される全ての分割コードストリームについて、アトリビュート番号の先頭値と末端値を求める。R-L用算出部203は、求めたアトリビュート番号の先頭値および末端値をヘッダ記述部194に供給する(矢印213)。
【0179】
ヘッダ記述部194は、R-L用算出部203から供給されたアトリビュート番号の先頭値および末端値の分割コードストリームについて、NORMヘッダを生成し、そのNORMヘッダの拡張パラメータ領域に、そのアトリビュート番号の先頭値および末端値を記述する。
【0180】
この方法は、基本的に、上述したL-Rタイプの場合と同様である。例えば、ヘッダ記述部194は、R-L用算出部203からアトリビュート番号の先頭値および末端値を供給されると、NORMヘッダを生成し、アトリビュート拡張フラグXに値「1」をセットし、アトリビュートタイプの値を「1」にセットする。さらに、ヘッダ記述部194は、R-L用算出部203から供給されたアトリビュート番号の先頭値をFROMに記述し、R-L用算出部203から供給されたアトリビュート番号の末端値をTOに記述する。
【0181】
図10に戻り、ヘッダ記述部194は、生成したNORMヘッダをネットワークパケット生成部124に供給する(矢印136)。
【0182】
[処理の流れ]
以上のような各処理の流れの例を説明する。最初に、図19のフローチャートを参照して、配信用データ生成装置101により実行される配信データ生成処理の流れの例を説明する。
【0183】
例えば、ユーザから処理実行を指示されたり、外部から画像データが供給されたり、画像データが生成されたりすると、配信用データ生成装置101は、配信データ生成処理を開始し、その画像データ(コンテンツデータ)から配信用のデータを生成する。
【0184】
配信データ生成処理が開始されると、JPEG2000エンコーダ121は、ステップS101において、配信用データを作成する画像データをJPEG2000方式で符号化する。
【0185】
ステップS102において、コードストリーム分割部122は、符号化されて得られた符号化コードストリームを所定のデータ長毎に分割し、分割コードストリームを生成する。
【0186】
ステップS103において、NORMヘッダ生成部123は、各分割コードストリームについてNORMヘッダを生成し、その拡張パラメータ領域にアトリビュート番号の先頭値および末端値を記述する。
【0187】
ステップS104において、ネットワークパケット生成部124は、生成されたNORMヘッダを用いて、各分割コードストリームをパケット化し、ネットワークパケットを生成する。ステップS105において、ネットワークパケット生成部124は、生成したネットワークパケットを出力する。
【0188】
配信用データ生成装置101から出力されたネットワークパケットはコンテンツサーバ102に供給され、格納される。
【0189】
次に、図19のステップS101において実行される符号化処理の詳細な流れの例について、図20のフローチャートを参照して説明する。
【0190】
符号化処理が開始されると、ウェーブレット変換部151は、ステップS121において、1ピクチャ分の画像データをウェーブレット変換する。ステップS122において、量子化部152は、ステップS121において生成された係数データを量子化する。なお、可逆符号化の場合、このステップS122の処理は省略される。
【0191】
ステップS123において、コードブロック化部153は、係数データをコードブロック化する。ステップS124において、ビットプレーン展開部154は、各コードブロックの係数データをビットプレーン展開する。
【0192】
ステップS125において、EBCOT155のビットモデリング部161は、ビットモデリング処理を実行する。ステップS126において、EBCOT155のMQ符号化部162は、MQ符号化処理を行う。
【0193】
ステップS127において、符号化コードストリーム生成部156は、EBCOT155において生成された符号化データを整列して符号化コードストリームを生成する。また、ステップS128において、符号化コードストリーム生成部156は、生成した符号化コードストリームについてプログレッションオーダ情報を生成する。
【0194】
ステップS129において、符号化コードストリーム生成部156は、符号化コードストリームを出力する。また、ステップS130において、符号化コードストリーム生成部156は、プログレッションオーダ情報を出力する。
【0195】
ステップS130の処理が終了すると、符号化処理が終了され、図19のステップS101に戻り、ステップS102以降の処理が実行される。
【0196】
次に、図19のステップS103において実行されるNORMヘッダ生成処理の詳細な流れの例について、図21のフローチャートを参照して説明する。
【0197】
NORMヘッダ生成処理が開始されると、ステップS151において、アドレス抽出部191は、各分割コードストリームの先頭アドレスおよび末端アドレスを抽出する。
【0198】
ステップS152において、解像度・レイヤ算出部192は、プログレッションオーダ情報に基づいて、先頭アドレスおよび末端アドレスから、各分割コードストリームの先頭および末端の解像度およびレイヤ(画像特徴量)を求める。
【0199】
ステップS153において、アトリビュート番号算出部193は、各分割コードストリームの先頭および末端の解像度およびレイヤから、各分割コードストリームのアトリビュート番号の先頭値および末端値を求める。
【0200】
ステップS154において、ヘッダ記述部194は、各分割コードストリームについて、NORMヘッダを生成し、そのNORMヘッダにアトリビュート番号の先頭値および末端値を記述する。
【0201】
ステップS154の処理が終了すると、図19のステップS103に戻り、ステップS104以降の処理が実行される。
【0202】
次に、図22のフローチャートを参照して、図21のステップS153において実行されるアトリビュート番号算出処理の詳細な流れの例について説明する。
【0203】
アトリビュート番号算出処理が開始されると、ステップS171において、タイプ判定部201は、プログレッションオーダ情報から符号化コードストリームのタイプを判定する。
【0204】
符号化コードストリームのタイプがL-Rタイプであると判定された場合、タイプ判定部201は、ステップS172において処理をステップS173に進める。ステップS173において、L-R用算出部202は、L-R用算出式(例えば式(1))を用いて、解像度番号およびレイヤ番号からアトリビュート番号を求める。
【0205】
また、符号化コードストリームのタイプがR-Lタイプであると判定された場合、タイプ判定部201は、ステップS172において処理をステップS174に進める。ステップS174において、R-L用算出部203は、R-L用算出式(例えば式(2))を用いて、解像度番号およびレイヤ番号からアトリビュート番号を求める。
【0206】
アトリビュート番号が求められると、アトリビュート番号算出処理が終了され、図21のステップS153に戻り、ステップS154以降の処理が実行される。
【0207】
以上のように、NORMヘッダ生成部123が、NORMヘッダの拡張パラメータ領域に、ネットワークパケット(分割コードストリーム)の先頭と末端のそれぞれについて、解像度とレイヤ(画像特徴量)を示す情報として、アトリビュート番号等を記述する。詳細については後述するが、このネットワークパケットを処理(配信)する配信サーバ103は、このNORMヘッダの情報に基づいて、取捨選択するだけで所望の画像特徴量に応じて必要なデータをより容易に得ることができる。
【0208】
つまり、配信用データ生成装置101は、アトリビュート番号に関する情報(例えば解像度やレイヤ等の画像特徴量に関する情報)をネットワークパケットに付加することにより、配信サーバ103が所望の画像特徴量(解像度や画質等)に応じて必要なデータをより容易に得ることができるネットワークパケットを生成することができる。
【0209】
なお、このアトリビュート番号に関する情報(画像特徴量に関する情報)は、上述した拡張パラメータ領域以外の任意の位置(NORMヘッダ以外も含む)に付加する(記述する)ことができる。
【0210】
ただし、アトリビュート番号等を付加する領域として、既存のNORMヘッダの、従来使用されていない拡張パラメータ領域を利用することにより、不要なデータ量の増大を抑制することができる。また、従来の規格に準拠したまま、アトリビュート番号等を付加することができる。つまり、このアトリビュート番号に関する情報を処理することが出来ない従来の装置であっても、ネットワークパケットのそれ以外の部分については、従来どおり処理することができる。
【0211】
また、解像度・レイヤ算出部192は、プログレッションオーダ情報に基づいて、符号化コードストリームの構造を把握するので、符号化コードストリームのタイプに依らず、解像度番号とレイヤ番号を正しく求めることができる。
【0212】
さらに、アトリビュート番号算出部193は、符号化コードストリームのタイプを判定し、タイプに応じた算出式を用いてアトリビュート番号を求めるので、符号化コードストリームのタイプに依らず、アトリビュート番号を正しく求めることができる。
【0213】
さらに、ヘッダ記述部194が、符号化コードストリームのタイプを示すアトリビュートタイプをNORMヘッダに記述するので、後述するように、このネットワークパケットを処理(配信)する配信サーバ103は、このNORMヘッダの情報に基づいて、容易に、符号化コードストリームのタイプを把握することができる。つまり、配信サーバ103は、符号化コードストリームのタイプに依らず、容易に適切な処理を行うことができる。
【0214】
なお、以上においては、NORMヘッダ生成部123がアトリビュート番号をNORMヘッダに記述するように説明したが、アトリビュート番号の代わりに、画像特徴量(例えば解像度番号とレイヤ番号)を記述するようにしてもよい。ただし、アトリビュート番号は1つの値であり、解像度番号とレイヤ番号よりもデータ量が少ない。つまり、NORMヘッダにアトリビュート番号を記述する場合の方が、解像度番号とレイヤ番号の両方を記述する場合よりも、ネットワークパケットのデータ量を低減させることができる。
【0215】
また、符号化コードストリームのタイプとして、上述したL-RタイプおよびR-Lタイプ以外のタイプを設けるようにしてもよい。例えば、プログレッションに関する変数として、解像度とレイヤ以外の画像特徴量を適用するようにしてもよい。さらに、適用されるタイプの数は任意であり、例えば3つ以上であってもよいし、1つであってもよい。
【0216】
どのようなタイプが設定されるとしても、プログレッションオーダ情報には、適用される全てのタイプについて、符号化コードストリームの構造が示されている。したがって、解像度・レイヤ算出部192は、適用される全てのタイプの符号化コードストリームの構造を、プログレッションオーダ情報を参照することにより把握することができる。なお、解像度およびレイヤ以外の画像特徴量をプログレッションに関する変数として適用する場合、解像度・レイヤ算出部192は、解像度番号やレイヤ番号の場合と同様に、その画像特徴量の識別番号を求める。
【0217】
また、アトリビュート番号算出部193は、適用される全てのタイプについて、各タイプ専用の算出式を用いてアトリビュート番号を算出する算出部を有している。タイプ判定部201は、判定したタイプの算出部に、各分割コードストリームの解像度番号およびレイヤ番号等の情報を供給する。
【0218】
さらに、ヘッダ記述部194が記述するアトリビュートタイプは、適用される全てのタイプについて、互いに異なる値が予め用意されている。
【0219】
[配信サーバの構成例]
次に、以上のように生成されたネットワークパケットを利用する装置について説明する。上述したように、配信サーバ103は、コンテンツサーバ102からネットワークパケットを取得し、それを端末装置104や端末装置105に配信する。
【0220】
このとき、配信サーバ103は、各ネットワークパケットのNORMヘッダに含まれるアトリビュート番号に基づいて、所望の画像特徴量に応じて必要なデータのネットワークパケットのみを選択し、配信する。
【0221】
図23は、図1の配信サーバ103の主な構成例を示すブロック図である。
【0222】
図23に示されるように、配信サーバ103は、選択対象解像度・レイヤ決定部301、プログレッションオーダ情報取得部302、ネットワークパケット取得部303、解像度・レイヤ算出部304、ネットワークパケット選択部305、および、ネットワークパケット送信部306を有する。
【0223】
選択対象解像度・レイヤ決定部301は、各種情報に基づいて、配信する画像の(選択対象とする)解像度およびレイヤ(画像特徴量)を決定する。
【0224】
例えば、選択対象解像度・レイヤ決定部301が配信する画像が、配信先となる端末装置104の性能や状況に対して不要に高解像度・高画質な場合、データ伝送や画像表示において不具合が発生する恐れがある。逆に、選択対象解像度・レイヤ決定部301が配信する画像が、配信先となる端末装置104の性能に対して不要に低解像度・低画質な場合、端末装置の性能を十分に生かした画像表示を行うことができない(不要に低解像度・低画質な画像表示しか行うことができない)。
【0225】
同様に、ネットワークパケットの伝送路となるネットワークの使用可能な帯域幅に対して、データ伝送量が多すぎても少なすぎても好ましくない。また、配信サーバ103自身の能力や状況に対しても、データ伝送量は適切であることが望ましい。さらに、コンテンツの配信に対して課金処理を行う場合、配信を要求する端末装置による代金の支払額に応じて、配信する画像の解像度や画質(レイヤ)を制御することも考えられる。
【0226】
このように、選択対象解像度・レイヤ決定部301は、例えば、受信処理能力、画像処理能力、バッファ容量、若しくはモニタの解像度等の、配信先の装置の性能や状態、ネットワークパケットの伝送路となるネットワークの使用可能帯域幅、配信サーバ103自身の性能や状態、配信に対する代金支払額、若しくはユーザの指示等、任意の条件に基づいて選択対象とする解像度およびレイヤ(画像特徴量)を決定する。
【0227】
選択対象解像度・レイヤ決定部301は、決定した解像度やレイヤの情報を、ネットワークパケット選択部305に通知する(矢印331)。
【0228】
プログレッションオーダ情報取得部302は、コンテンツサーバ102から取得するネットワークパケットに対応する符号化コードストリームのプログレッションオーダ情報を取得する。プログレッションオーダ情報取得部302は、取得したプログレッションオーダ情報を解像度・レイヤ算出部304に供給する(矢印332)。
【0229】
ネットワークパケット取得部303は、配信するコンテンツのネットワークパケットをコンテンツサーバ102から取得し、それを解像度・レイヤ算出部304に供給する(矢印333)。
【0230】
解像度・レイヤ算出部304は、ネットワークパケット取得部303から供給された各ネットワークパケットのNORMヘッダを参照し、アトリビュート番号の先頭値および末端値から、各ネットワークパケットの先頭および末端の解像度番号およびレイヤ番号(画像特徴量)を求める。
【0231】
解像度・レイヤ算出部304は、タイプ判定部311、L-R用算出部312、およびR-L用算出部313を有する。
【0232】
タイプ判定部311は、プログレッションオーダ情報取得部302から供給されたプログレッションオーダ情報(矢印332)に基づいて、ネットワークパケット取得部303から供給されるネットワークパケット(矢印333)に対応する符号化コードストリームのタイプを判定する。
【0233】
タイプ判定部311は、符号化コードストリームのタイプがL-Rタイプである場合、ネットワークパケット取得部303から供給される各ネットワークパケットをL-R用算出部312に供給する(矢印341)。
【0234】
L-R用算出部312は、上述した式(1)に示されるようなL-R用の算出式を用いて、各分割コードストリームについて、アトリビュート番号の先頭値と末端値から、解像度番号の先頭値と末端値(R_f,R_t)、並びに、レイヤ番号の先頭値と末端値(L_f,L_t)をそれぞれ求める。
【0235】
なお、1つの値から2つの変数(R_fとL_f、若しくは、R_tとL_t)の値を求めることになるが、これらの変数はいずれも自然数であり、かつ、解像度番号(R_fおよびR_t)は、Resolution level数R(Res-R)以下である。したがって、解像度番号の先頭値と末端値(R_f,R_t)、並びに、レイヤ番号の先頭値と末端値(L_f,L_t)はアトリビュート番号の先頭値と末端値によって一意に定まる。
【0236】
より具体的に説明すると、例えば分割コードストリームの末端の場合、L-R用算出部312は、アトリビュート番号の値から1を減算した値をResolution level数R(Res-R)で除算し、その商をレイヤ番号L_tとし、その余を解像度番号R_tとする。ただし、余は0以外の値でなければならない。つまりこの場合、L-R用算出部312は、商から1を減算した値をレイヤ番号L_tとし、その場合の余を解像度番号R_tとする。つまりこの場合、解像度番号R_tの値はRとなる。
【0237】
なお、先頭については、1番目のネットワークパケット(Network Packet 1)の解像度番号R_fとレイヤ番号L_fはともに0である。2番目以降のネットワークパケットの場合、その先頭の解像度番号R_fとレイヤ番号L_fは、上述した末端の解像度番号R_tとレイヤ番号L_tの場合と同様に求めることができる。
【0238】
L-R用算出部312は、算出した解像度番号の先頭値と末端値(R_f,R_t)、並びに、レイヤ番号の先頭値と末端値(L_f,L_t)を、そのネットワークパケットとともにネットワークパケット選択部305に供給する(矢印334)
【0239】
また、タイプ判定部311は、符号化コードストリームのタイプがR-Lタイプである場合、ネットワークパケット取得部303から供給される各ネットワークパケットをR-L用算出部313に供給する(矢印342)。
【0240】
R-L用算出部313は、上述した式(2)に示されるようなR-L用の算出式を用いて、各分割コードストリームについて、アトリビュート番号の先頭値と末端値から、解像度番号の先頭値と末端値(R_f,R_t)、並びに、レイヤ番号の先頭値と末端値(L_f,L_t)をそれぞれ求める。
【0241】
この場合も、L-Rタイプの場合と同様に、解像度番号の先頭値と末端値(R_f,R_t)、並びに、レイヤ番号の先頭値と末端値(L_f,L_t)は、アトリビュート番号の先頭値と末端値によって一意に定まる。
【0242】
より具体的に説明すると、例えば分割コードストリームの末端の場合、R-L用算出部313は、アトリビュート番号の値から1を減算した値を全Layer数Lで除算し、その商を解像度番号R_tとし、その余をレイヤ番号L_tとする。ただし、余は0以外の値でなければならない。つまりこの場合、R-L用算出部313は、商から1を減算した値を解像度番号R_tとし、その場合の余をレイヤ番号L_tとする。つまりこの場合、レイヤ番号L_tの値はLとなる。
【0243】
なお、先頭については、1番目のネットワークパケット(Network Packet 1)の解像度番号R_fとレイヤ番号L_fはともに0である。2番目以降のネットワークパケットの場合、その先頭の解像度番号R_fとレイヤ番号L_fは、上述した末端の解像度番号R_tとレイヤ番号L_tの場合と同様に求めることができる。
【0244】
R-L用算出部313は、算出した解像度番号の先頭値と末端値(R_f,R_t)、並びに、レイヤ番号の先頭値と末端値(L_f,L_t)を、そのネットワークパケットとともに、ネットワークパケット選択部305に供給する(矢印334)
【0245】
ネットワークパケット選択部305は、選択対象解像度・レイヤ決定部301から供給された解像度およびレイヤ(画像特徴量)の指定に基づいてネットワークパケットの取捨選択を行い、指定された解像度およびレイヤの画像を得るのに必要なネットワークパケットを選択する。
【0246】
選択対象解像度・レイヤ決定部301によって指定された解像度の画像を得るためには、その解像度より低い解像度番号の符号化データ(パケット)が全て必要である。同様に、選択対象解像度・レイヤ決定部301によって指定されたレイヤ(画質)の画像を得るためには、そのレイヤより低いレイヤ番号の符号化データ(パケット)が全て必要である。
【0247】
つまり、選択対象解像度・レイヤ決定部301によって指定された解像度およびレイヤ(画質)の画像を得るためには、指定された解像度より低い解像度番号の符号化データ(パケット)と、指定されたレイヤより低いレイヤ番号の符号化データ(パケット)とが全て必要である。
【0248】
したがって、ネットワークパケット選択部305は、これらの符号化データ(パケット)を含むネットワークパケットを全て選択する。つまり、ネットワークパケット選択部305は、選択対象解像度・レイヤ決定部301によって指定された解像度およびレイヤの画像に対応する画像データ(符号化データ)を含むネットワークパケットを選択する。
【0249】
図16および図18に示されるように、符号化コードストリームにおいて符号化データは、その画像の解像度およびレイヤ毎にパケット化されて所定順に整列されている。したがって、ネットワークパケット選択部305は、選択対象解像度・レイヤ決定部301による指定に該当する解像度およびレイヤのパケットを含む分割コードストリームをBodyとするネットワークパケットを選択すればよい。
【0250】
ネットワークパケットが該当する解像度およびレイヤのパケットを含むか否かは、分割コードストリームの先頭と末端の解像度番号およびレイヤ番号から判別することができる。
【0251】
ただし、図16および図18を参照して説明したように、符号化コードストリームの構造(パケットの並び)は、そのタイプによって異なる。
【0252】
したがって、ネットワークパケット選択部305は、符号化コードストリームのタイプに応じた判定式を用いてネットワークパケットの選択を行う。
【0253】
ネットワークパケット選択部305は、タイプ判定部321、L-R用選択部322、およびR-L用選択部323を有する。
【0254】
タイプ判定部321は、プログレッションオーダ情報に基づいて、ネットワークパケットに対応する符号化コードストリームのタイプを判定する。
【0255】
タイプ判定部321は、符号化コードストリームのタイプがL-Rタイプである場合、解像度・レイヤ算出部304から供給される各ネットワークパケットをL-R用選択部322に供給する(矢印351)。
【0256】
L-R用選択部322は、L-Rタイプ用に用意されたL-R用判定式を用いて各ネットワークパケットの取捨選択を行う。このL-R用判定式は、L-Rタイプの構造に対応している。つまり、L-R用選択部322は、このL-R用判定式を用いることにより、L-Rタイプの符号化コードストリームから作成されたネットワークパケットの先頭および末端の解像度番号およびレイヤ番号から、そのネットワークパケットが選択対象解像度・レイヤ決定部301において決定された解像度およびレイヤの画像を得るのに必要な符号化データ(パケット)を含むか否かを正しく特定することができる。
【0257】
L-R用選択部322は、このように、条件を満たすネットワークパケットを選択し、抽出する。L-R用選択部322は、抽出したネットワークパケットをネットワークパケット送信部306に供給する(矢印335)。
【0258】
また、タイプ判定部321は、符号化コードストリームのタイプがR-Lタイプである場合、解像度・レイヤ算出部304から供給される各ネットワークパケットをR-L用選択部323に供給する(矢印352)。
【0259】
R-L用選択部323は、R-Lタイプ用に用意されたR-L用判定式を用いて各ネットワークパケットの取捨選択を行う。このR-L用判定式は、R-Lタイプの構造に対応している。つまり、R-L用選択部323は、このR-L用判定式を用いることにより、R-Lタイプの符号化コードストリームから作成されたネットワークパケットの先頭および末端の解像度番号およびレイヤ番号から、そのネットワークパケットが選択対象解像度・レイヤ決定部301において決定された解像度およびレイヤの画像を得るのに必要な符号化データ(パケット)を含むか否かを正しく特定することができる。
【0260】
R-L用選択部323は、このように、条件を満たすネットワークパケットを選択し、抽出する。R-L用選択部323は、抽出したネットワークパケットをネットワークパケット送信部306に供給する(矢印335)。
【0261】
ネットワークパケット送信部306は、ネットワークパケット選択部305において選択されたネットワークパケットを、配信先となる端末装置104若しくは端末装置105に送信する。
【0262】
[処理の流れ]
以上のような各処理の流れの例を説明する。最初に、図24のフローチャートを参照して、配信サーバ103により実行されるネットワークパケット配信処理の流れの例を説明する。
【0263】
例えば、端末装置104や端末装置105からの要求やユーザの指示等に基づいて、ネットワークパケットの配信が決定すると、配信サーバ103は、ネットワークパケット配信処理を開始する。
【0264】
ネットワークパケット配信処理が開始されると、選択対象解像度・レイヤ決定部301は、ステップS301において、選択対象の解像度およびレイヤを決定する。
【0265】
ステップS302において、プログレッションオーダ情報取得部302は、所望のコンテンツのプログレッションオーダ情報をコンテンツサーバ102から取得する。
【0266】
ステップS303において、ネットワークパケット取得部303は、コンテンツサーバ102から、所望のコンテンツのネットワークパケットを取得する。
【0267】
ステップS304において、解像度・レイヤ算出部304は、分割コードストリームの先頭および末端の解像度およびレイヤを算出する。
【0268】
ステップS305において、ネットワークパケット選択部305は、選択対象の解像度およびレイヤに基づいて、ネットワークパケットを選択する。
【0269】
ステップS306において、ネットワークパケット送信部306は、選択されたネットワークパケットを送信する。
【0270】
ステップS307において、ネットワークパケット取得部303は、全てのネットワークパケットを処理したか否かを判定する。所望のコンテンツに、未処理のネットワークパケットが存在すると判定された場合、ステップS303に戻り、それ以降の処理が繰り返される。
【0271】
また、ステップS307において、所望のコンテンツのネットワークパケットが全て処理されたと判定された場合、ネットワークパケット配信処理が終了される。
【0272】
次に、図24のステップS304において実行される解像度レイヤ算出処理の詳細な流れの例を図25のフローチャートを参照して説明する。
【0273】
解像度レイヤ算出処理が開始されると、ステップS321において、タイプ判定部311は、プログレッションオーダ情報に基づいて符号化コードストリームのタイプを判定する。
【0274】
符号化コードストリームのタイプがL-Rタイプであると判定された場合、タイプ判定部311は、ステップS322において処理をステップS323に進める。ステップS323において、L-R用算出部312は、L-R用算出式を用いて、アトリビュート番号から解像度番号およびレイヤ番号を求める。
【0275】
また、符号化コードストリームのタイプがR-Lタイプであると判定された場合、タイプ判定部311は、ステップS322において処理をステップS324に進める。ステップS324において、R-L用算出部313は、R-L用算出式を用いて、アトリビュート番号から解像度番号およびレイヤ番号を求める。
【0276】
解像度番号およびレイヤ番号が求められると、解像度レイヤ算出処理が終了され、図24のステップS304に戻り、ステップS305以降の処理が実行される。
【0277】
次に、図24のステップS305において実行される選択処理の詳細な流れの例を図26のフローチャートを参照して説明する。
【0278】
選択処理が開始されると、ステップS341において、タイプ判定部321は、プログレッションオーダ情報に基づいて符号化コードストリームのタイプを判定する。
【0279】
符号化コードストリームのタイプがL-Rタイプであると判定された場合、タイプ判定部321は、ステップS342において処理をステップS343に進める。ステップS343において、L-R用選択部322は、L-R用判定式を用いて、パケットの選択を行う。
【0280】
また、符号化コードストリームのタイプがR-Lタイプであると判定された場合、タイプ判定部321は、ステップS342において処理をステップS344に進める。ステップS344において、R-L用選択部323は、R-L用判定式を用いて、パケットの選択を行う。
【0281】
パケットが選択されると、選択処理が終了され、図24のステップS305に戻り、ステップS306以降の処理が実行される。
【0282】
以上のように、解像度・レイヤ算出部304が、各ネットワークパケットのNORMヘッダの拡張パラメータ領域に記述されたアトリビュート番号の先頭値および末端値から、そのネットワークパケットに含まれる分割コードストリームの先頭および末端の解像度番号およびレイヤ番号を求める。
【0283】
そして、ネットワークパケット選択部305は、その解像度番号およびレイヤ番号に基づいて、所望の解像度およびレイヤ(画質)の画像を得るのに必要なネットワークパケットを選択し、抽出する。
【0284】
このようにすることにより、配信サーバ103は、NORMヘッダに記述されたアトリビュート番号等の情報に基づいてネットワークパケットを取捨選択するだけで、所望の画像特徴量に応じて必要なデータをより容易に得ることができる。
【0285】
なお、このアトリビュート番号に関する情報(画像特徴量に関する情報)は、各ネットワークパケットのNORMヘッダに記述されているので、配信サーバ103は、従来と同様の方法でネットワークパケットを処理することができる。すなわち、配信サーバ103は、容易に、そのアトリビュート番号に関する情報を参照して処理することができる。
【0286】
また、解像度・レイヤ算出部304は、プログレッションオーダ情報に基づいて符号化コードストリームのタイプを判定し、そのタイプに応じた算出式を用いてアトリビュート番号から解像度番号やレイヤ番号を求めるので、符号化コードストリームのタイプに依らず、解像度番号やレイヤ番号を正しく求めることができる。
【0287】
さらに、ネットワークパケット選択部305は、符号化コードストリームのタイプに応じた判定式を用いてネットワークパケットの選択を行うので、符号化コードストリームのタイプに依らず、所望の解像度や画質に応じて必要なデータを正しく得ることができる。
【0288】
つまり、配信サーバ103は、符号化コードストリームのタイプを判別し、そのタイプに応じて適切な処理方法を選択することができるので、複数のタイプに対応することができる。
【0289】
もちろん、配信サーバ103は、上述したL-RタイプおよびR-Lタイプ以外のタイプにも対応することができる。例えば、符号化コードストリームは、解像度とレイヤ以外の画像特徴量をプログレッションに関する変数として適用するようにしてもよい。さらに、適用されるタイプの数は任意であり、例えば3つ以上であってもよいし、1つであってもよい。
【0290】
どのようなタイプが設定されるとしても、プログレッションオーダ情報には、適用される全てのタイプについて、符号化コードストリームの構造が示されている。したがって、解像度・レイヤ算出部304およびネットワークパケット選択部305は、適用される全てのタイプの符号化コードストリームの構造を、プログレッションオーダ情報を参照することにより把握することができる。
【0291】
なお、解像度・およびレイヤ以外の特徴量をプログレッションに関する変数として適用する場合、解像度・レイヤ算出部304は、解像度番号やレイヤ番号の場合と同様に、その特徴量についての識別番号を求める。選択対象解像度・レイヤ決定部301は、その特徴量について選択対象とする値を決定し、ネットワークパケット選択部305は、解像度やレイヤの場合と同様に、その特徴量の値を条件として、ネットワークパケットの選択を行う。
【0292】
また、解像度・レイヤ算出部304は、適用される全てのタイプについて、各タイプ専用の算出式を用いて解像度番号やレイヤ番号等の画像特徴量を算出する算出部を有している。タイプ判定部311は、判定したタイプの算出部に、各分割コードストリームのアトリビュート番号等の情報を供給する。
【0293】
同様に、ネットワークパケット選択部305は、適用される全てのタイプについて、各タイプ専用の判定式を用いてネットワークパケットの選択を行う選択部を有している。タイプ判定部321は、判定したタイプの選択部に、各ネットワークパケットを供給する。
【0294】
以上のように、コンテンツ配信システム100は、例えば解像度や画質等、所望の特徴量に応じて、必要なデータをより容易に得ることができる。
【0295】
なお、図1においてコンテンツ配信システム100の構成例を示したが、このコンテンツ配信システム100を構成する各装置の数は任意である。また、コンテンツサーバ102を省略し、配信用データ生成装置101が生成したネットワークパケットを配信サーバ103に供給するようにしてもよい。
【0296】
また、この各装置が、図1で矢印により示される接続先以外の装置にさらに接続されているようにしても良い。例えば、配信用データ生成装置101が、コンテンツサーバ102だけでなく、さらに配信サーバ103や端末装置104および端末装置105と接続されるようにしても良い。その他の各装置についても同様である。
【0297】
さらに、以上においては、アトリビュート番号が付加されたネットワークパケットの利用方法としてそのネットワークパケットを送信(配信)する例について説明したが、ネットワークパケットの利用方法は任意である。
【0298】
また、以上においては、配信用データ生成装置101が、画像データをJPEG2000方式で符号化するように説明したが、符号化コードストリームがプログレッション順の構造を有するようにすればよく、画像データの符号化方式はJPEG2000方式に限定されない。
【0299】
<2.第2の実施の形態>
[パーソナルコンピュータ]
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、例えば、図27に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
【0300】
図27において、パーソナルコンピュータ400のCPU(Central Processing Unit)401は、ROM(Read Only Memory)402に記憶されているプログラム、または記憶部413からRAM(Random Access Memory)403にロードされたプログラムに従って各種の処理を実行する。RAM403にはまた、CPU401が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0301】
CPU401、ROM402、およびRAM403は、バス404を介して相互に接続されている。このバス404にはまた、入出力インタフェース410も接続されている。
【0302】
入出力インタフェース410には、キーボード、マウスなどよりなる入力部411、CRT(Cathode Ray Tube)ディスプレイやLCD(Liquid Crystal Display)等のディスプレイ、並びにスピーカなどよりなる出力部412、フラッシュメモリ等SSD(Solid State Drive)やハードディスクなどよりなる記憶部413、有線LAN(Local Area Network)や無線LANのインタフェースやモデムなどよりなる通信部414が接続されている。通信部414は、インターネットを含むネットワークを介しての通信処理を行う。
【0303】
入出力インタフェース410にはまた、必要に応じてドライブ415が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア421が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部413にインストールされる。
【0304】
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【0305】
この記録媒体は、例えば、図27に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、若しくは半導体メモリなどよりなるリムーバブルメディア421により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM402や、記憶部413に含まれるハードディスクなどにより構成される。
【0306】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【0307】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0308】
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
【0309】
また、以上において、1つの装置(または処理部)として説明した構成が、複数の装置(または処理部)として構成されるようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成が、まとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成が付加されるようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部が他の装置(または他の処理部)の構成に含まれるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【0310】
本発明は、例えば、デジタルシネマ用編集装置、アーカイブシステム、放送局の画像伝送装置、画像データベース、医用画像の記録システム、ネットワークサーバ、インターネット上の画像伝送装置、無線伝送装置、映画館からの2次映像配信装置、ノンリニア編集装置、ゲーム機、テレビ受像機システム、HDDレコーダ、PC上のオーサリング・ツールまたはそのソフトウェア・モジュール等に適用することができる。
【符号の説明】
【0311】
100 コンテンツ配信システム, 101 配信用データ生成装置, 102 コンテンツサーバ, 103 配信サーバ, 104および105 端末装置, 121 JPEG2000エンコーダ, 122 コードストリーム分割部, 123 NORMヘッダ生成部, 124 ネットワークパケット生成部, 191 アドレス抽出部, 192 解像度・レイヤ算出部, 193 アトリビュート番号算出部, 194 ヘッダ記述部, 201 タイプ判定部, 202 L-R用算出部, 203 R-L用算出部, 301 選択対象解像度・レイヤ決定部, 302 プログレッションオーダ情報取得部, 303 ネットワークパケット取得部, 304 解像度・レイヤ算出部, 305 ネットワークパケット選択部, 306 ネットワークパケット送信部, 311 タイプ判定部, 312 L-R用算出部, 313 R-L用算出部, 321 タイプ判定部, 322 L-R用選択部, 323 R-L用選択部

【特許請求の範囲】
【請求項1】
画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる各分割コードストリームについて、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量を含むヘッダ情報を生成するヘッダ情報生成手段と、
前記ヘッダ情報生成手段により生成された前記ヘッダ情報を用いて、各分割コードストリームをパケット化するバケット生成手段と
を備える画像処理装置。
【請求項2】
前記画像データを符号化し、前記プログレッション順の構造を有する前記コードストリームを生成する符号化手段をさらに備え、
前記ヘッダ情報生成手段は、前記符号化手段により前記画像データが符号化されて生成された前記コードストリームが分割されて得られる各分割コードストリームについて、前記ヘッダ情報を生成する
請求項1に記載の画像処理装置。
【請求項3】
前記符号化手段により前記画像データが符号化されて生成された前記コードストリームを所定のデータ長毎に分割する分割手段をさらに備え、
前記ヘッダ情報生成手段は、前記分割手段により前記コードストリームが分割されて得られる各分割コードストリームについて、前記ヘッダ情報を生成する
請求項2に記載の画像処理装置。
【請求項4】
前記コードストリームは、前記画像データがJPEG2000方式により符号化されたものである
請求項1に記載の画像処理装置。
【請求項5】
前記特徴量は、前記JPEG2000方式における解像度およびレイヤを含む
請求項4に記載の画像処理装置。
【請求項6】
前記プログレッション順は、少なくとも2階層の階層構造を有し、上位階層の変数が前記解像度であり、かつ、下位階層の変数が前記レイヤであるか、若しくは、前記上位階層の変数が前記レイヤであり、かつ、前記下位階層の変数が前記解像度である
請求項5に記載の画像処理装置。
【請求項7】
前記ヘッダ情報生成手段は。
各分割コードストリームの先頭アドレスおよび末端アドレスを抽出する抽出手段と、
前記アドレス抽出手段により抽出された前記先頭アドレスおよび前記末端アドレス、並びに、前記プログレッション順に基づいて、各分割コードストリームの先頭および末端の特徴量を算出する特徴量算出手段と、
前記特徴量算出手段により算出された、各分割コードストリームの先頭および末端の前記特徴量から、前記特徴量を他と識別する識別番号であるアトリビュート番号を算出するアトリビュート番号算出手段と、
前記ヘッダ情報を生成し、前記ヘッダ情報に、前記アトリビュート番号算出手段により算出された前記アトリビュート番号を記述する記述手段と
を備える請求項1に記載の画像処理装置。
【請求項8】
前記アトリビュート番号算出手段は、
前記プログレッション順を判定する判定手段と、
前記判定手段により判定された前記プログレッション順専用の算出式を用いて、前記アトリビュート番号を算出する算出処理手段と
を備える請求項7に記載の画像処理装置。
【請求項9】
画像処理装置の画像処理方法であって、
前記画像処理装置のヘッダ情報生成手段が、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる各分割コードストリームについて、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量を含むヘッダ情報を生成し、
前記画像処理装置のパケット生成手段が、生成された前記ヘッダ情報を用いて、各分割コードストリームをパケット化する
画像処理方法。
【請求項10】
画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる分割コードストリームを含むパケットに含まれる、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量に関する情報に基づいて、前記分割コードストリームの先頭および末端の前記特徴量を特定する特徴量特定手段と、
前記特徴量特定手段により特定された前記分割コードストリームの先頭および末端の前記特徴量に基づいて、所望の特徴量に応じた前記パケットの選択を行うパケット選択手段と
を備える画像処理装置。
【請求項11】
前記コードストリームは、前記画像データがJPEG2000方式により符号化されたものである
請求項10に記載の画像処理装置。
【請求項12】
前記特徴量は、前記JPEG2000方式における解像度およびレイヤを含む
請求項11に記載の画像処理装置。
【請求項13】
前記プログレッション順は、少なくとも2階層の階層構造を有し、上位階層の変数が前記解像度であり、かつ、下位階層の変数が前記レイヤであるか、若しくは、前記上位階層の変数が前記レイヤであり、かつ、前記下位階層の変数が前記解像度である
請求項12に記載の画像処理装置。
【請求項14】
前記パケットは、前記パケットに含まれる前記分割コードストリームの先頭および末端の、前記特徴量を他と識別する識別番号であるアトリビュート番号を含み、
前記特徴量特定手段は、前記アトリビュート番号から前記特徴量を求める
請求項10に記載の画像処理装置。
【請求項15】
前記特徴量特定手段は、
前記プログレッション順を判定する判定手段と、
前記判定手段により判定された前記プログレッション順専用の算出式を用いて、前記アトリビュート番号から前記特徴量を算出する算出処理手段と
を備える請求項14に記載の画像処理装置。
【請求項16】
前記パケット選択手段は、
前記プログレッション順を判定する判定手段と、
前記判定手段により判定された前記プログレッション順専用の判定式を用いて、前記パケットの選択を行う選択処理手段と
を備える請求項10に記載の画像処理装置。
【請求項17】
画像処理装置の画像処理方法であって、
前記画像処理装置の特徴量特定手段が、画像データが符号化されて生成されるプログレッション順の構造を有するコードストリームが分割されて得られる分割コードストリームを含むパケットに含まれる、前記分割コードストリームの先頭および末端の、前記画像データの画像の特徴量に関する情報に基づいて、前記分割コードストリームの先頭および末端の前記特徴量を特定し、
前記画像処理装置のパケット選択手段が、特定された前記分割コードストリームの先頭および末端の前記特徴量に基づいて、所望の特徴量に応じた前記パケットの選択を行う
画像処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate