説明

データ圧縮装置、データ復号装置、データ圧縮方法、データ復号方法、および圧縮動画像ファイルのデータ構造

【課題】高精細動画像を高い自由度で応答性よく表示する。
【解決手段】元のRGB画像の動画ストリーム250のうち8フレーム分の画像フレームをさらに所定のサイズに空間分割して画像平面(x,y)および時間軸tの3次元空間で処理単位252を定める。次に当該処理単位252に含まれる8枚のRGB画像から、8枚のY画像列254、およびCbCr画像列256を生成する(S10)。CbCr画像列256は縦横の両方向で1/2のサイズに縮小して得られた画像列である。次にY画像列254およびCbCr画像列256を、あらかじめ準備した分割パターンのいずれかのパターンで時空間分割して符号化単位を形成する(S12)。そして各符号化単位に対しパレットおよびインデックスのデータを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動画像などの3次元データを符号化、復号化する情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
ゲームプログラムを実行するだけでなく、動画を再生できる家庭用エンタテインメントシステムが提案されている。この家庭用エンタテインメントシステムでは、GPUがポリゴンを用いた三次元画像を生成する(例えば特許文献1参照)。
【0003】
動画、静止画に関わらず、画像をいかに効率よく表示するかは常に重要な問題となる。そのため画像データの圧縮技術、伝送技術、画像処理技術、表示技術など多方面で様々な技術が開発、実用化され、高精細な画像を多様な場面で身近に楽しめるようになってきた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第6563999号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
高精細な画像をユーザの要求に従い応答性よく表示させたい、という要求は常に存在する。例えば表示させた全体画像のうちユーザが着目したい領域を拡大して表示させたり別の領域に移動したり、といった、ユーザの視点に対し自由度のある画像表示を応答性よく実現するためには、サイズの大きな画像データを短時間で処理しつつランダムアクセスをも可能にしなければならず、さらなる技術の進歩が求められている。
【0006】
本発明はこのような課題に鑑みてなされたものであり、その目的は様々な要求に対し応答性よく動画像などの3次元データを出力することのできる情報処理技術を提供することにある。
【課題を解決するための手段】
【0007】
本発明のある態様はデータ圧縮装置に関する。このデータ圧縮装置は、圧縮対象の、3次元空間におけるデータ列を当該3次元方向に分割して符号化単位を形成するデータ分割部と、データ分割部が形成した符号化単位ごとに、データのうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を生成して圧縮データとする圧縮符号化部と、を備えたことを特徴とする。
【0008】
本発明の別の態様はデータ復号装置に関する。この動画データ復号装置は、3次元空間におけるデータ列を、当該3次元方向に分割して形成した符号化単位ごとに、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を対応づけた圧縮データを記憶装置から読み出す圧縮データ読み出し部と、パレットが保持する代表値を線形補間して中間値を生成し、インデックスが保持する情報に従い、各符号化単位に含まれるデータを代表値および中間値のいずれかに決定したうえ、符号化単位の配列に基づき、元のデータ列を再構成して生成する復号部と、を備えたことを特徴とする。
【0009】
本発明のさらに別の態様はデータ圧縮方法に関する。このデータ圧縮方法は、圧縮対象の、3次元空間におけるデータ列を記憶装置より読み出すステップと、データ列を3次元方向に分割して符号化単位を形成するステップと、符号化単位ごとに、データのうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を生成して圧縮データとして記憶装置に格納するステップと、を含むことを特徴とする。
【0010】
本発明のさらに別の態様はデータ復号方法に関する。このデータ復号方法は、3次元空間におけるデータ列を、当該3次元方向に分割して形成した符号化単位ごとに、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を対応づけた圧縮データを記憶装置から読み出すステップと、パレットが保持する代表値を線形補間して中間値を生成し、インデックスが保持する情報に従い、各符号化単位に含まれるデータを代表値および中間値のいずれかに決定したうえ、符号化単位の配列に基づき、元のデータ列を再構成して生成するステップと、生成したデータ列を出力装置に出力するステップと、を含むことを特徴とする。
【0011】
本発明のさらに別の態様は圧縮動画像ファイルのデータ構造に関する。このデータ構造は、動画を構成する画像フレーム列に対応し、輝度Yを画素値とするY画像列、色差Cbを画素値とするCb画像列、色差Crを画素値とするCr画像列を、それぞれ時空間分割して形成した符号化単位ごとに生成された、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および代表値のいずれかを指定する情報を画素ごとに保持するインデックスと、を対応づけて画像フレームの画像領域に対応させて配列したことを特徴とする。
【0012】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0013】
本発明によると、ランダムアクセスが可能でスループットの高い3次元データ出力を行える。
【図面の簡単な説明】
【0014】
【図1】本実施の形態に適用できる画像処理システムの使用環境を示す図である。
【図2】図1の画像処理システムに適用できる入力装置の外観構成例を示す図である。
【図3】本実施の形態において処理対象とする動画像の階層データを概念的に示す図である。
【図4】本実施の形態における画像処理装置の構成を示す図である。
【図5】本実施の形態において、階層構造を有する動画データを用いて動画を表示する機能を有する制御部の構成を詳細に示す図である。
【図6】本実施の形態において処理対象となる動画データの構造例を示す図である。
【図7】本実施の形態において処理対象となる動画データの構造例を示す図である。
【図8】本実施の形態において処理対象となる動画データの構造例を示す図である。
【図9】本実施の形態において処理対象となる動画データの構造例を示す図である。
【図10】本実施の形態において一部の階層の動画ストリームを別の階層の動画ストリームで代替させる場合の動画のデータ構造を模式的に示す図である。
【図11】本実施の形態において、動画データ圧縮機能を有する制御部およびハードディスクドライブの構成を詳細に示す図である。
【図12】図11で示した制御部を含む画像処理装置が実施する動画ストリームの圧縮手順を模式的に示す図である。
【図13】本実施の形態においてY画像列の符号化単位からパレットおよびインデックスのデータを生成する手法を模式的に示す図である。
【図14】本実施の形態においてCbCr画像列の符号化単位からパレットおよびインデックスのデータを生成する手法を模式的に示す図である。
【図15】本実施の形態において1つの処理単位を分割するパターンのバリエーションを示す図である。
【図16】本実施の形態における分割パターンマップのデータ構造例を示す図である。
【図17】本実施の形態の圧縮データ記憶部における圧縮データの配列を説明するための図である。
【図18】本実施の形態において圧縮符号化処理を動画ストリーム全体に施したときのデータの変遷を模式的に示す図である。
【図19】本実施の形態において2つのパレットに分割パターンの識別番号を埋め込む手法を説明するための図である。
【発明を実施するための形態】
【0015】
本実施の形態では動画像表示において、ユーザの視点移動要求に対応した表示領域の移動を可能にする。ここでの視点移動は、画像平面へ視点を近づけたり離したりすることを含み、それに応じて動画像は、再生されつつ拡大および縮小されることになる。そこで本実施の形態では処理対象の動画像データを、1つの動画像を異なる解像度で表した画像フレーム列からそれぞれ構成される複数の動画像ストリームを解像度順に階層化してなる階層構造とする。そして視点の遠近方向の移動要求に対し、表示に使用する動画ストリームを異なる階層へ切り替えることで、拡大表示や縮小表示を迅速に行う。以後、このような階層構造を有する動画像データを「階層データ」とも呼ぶ。
【0016】
まず、このような階層データの基本的な表示態様について説明する。図1は、本実施の形態を適用できる画像処理システム1の使用環境を示す。画像処理システム1は、画像処理ソフトウェアを実行する画像処理装置10と、画像処理装置10による処理結果を出力する表示装置12とを備える。表示装置12は、画像を出力するディスプレイおよび音声を出力するスピーカを有するテレビであってよい。
【0017】
表示装置12は、画像処理装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。画像処理システム1において、画像処理装置10は、ケーブル14を介してインターネットなどの外部ネットワークに接続し、階層データをダウンロードして取得してもよい。なお画像処理装置10は、無線通信により外部ネットワークに接続してもよい。
【0018】
画像処理装置10は、たとえばゲーム装置やパーソナルコンピュータであってよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。画像処理装置10は、ユーザからの視点移動要求に応じて、表示装置12のディスプレイに表示する動画像の拡大/縮小処理や、上下左右方向へのスクロール処理などを行う。以後、このような拡大/縮小を含めた表示領域の変更処理を「表示領域の移動」と表現する。ユーザが、ディスプレイに表示された画像を見ながら入力装置を操作すると、入力装置が、表示領域移動要求信号を画像処理装置10に送信する。
【0019】
図2は、入力装置20の外観構成例を示す。入力装置20は、ユーザが操作可能な操作手段として、十字キー21、アナログスティック27a、27bと、4種の操作ボタン26を備える。4種の操作ボタン26は、○ボタン22、×ボタン23、□ボタン24および△ボタン25から構成される。
【0020】
画像処理システム1において、入力装置20の操作手段には、表示画像の拡大/縮小要求、および上下左右方向へのスクロール要求を入力するための機能が割り当てられる。たとえば、表示画像の拡大/縮小要求の入力機能は、右側のアナログスティック27bに割り当てられる。ユーザはアナログスティック27bを手前に引くことで、表示画像の縮小要求を入力でき、また手前から押すことで、表示画像の拡大要求を入力できる。
【0021】
また、スクロール要求の入力機能は、十字キー21に割り当てられる。ユーザは十字キー21を押下することで、十字キー21を押下した方向へのスクロール要求を入力できる。なお、表示領域移動要求の入力機能は別の操作手段に割り当てられてもよく、たとえばアナログスティック27aに、スクロール要求の入力機能が割り当てられてもよい。
【0022】
入力装置20は、入力された表示領域移動要求の信号を画像処理装置10に伝送する機能をもち、本実施の形態では画像処理装置10との間で無線通信可能に構成される。入力装置20と画像処理装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立してもよい。なお入力装置20は、画像処理装置10とケーブルを介して接続して、表示領域移動要求の信号を画像処理装置10に伝送してもよい。
【0023】
図3は、本実施の形態において処理対象とする動画像の階層データを概念的に示している。階層データは、図の上から下へ向かうz軸方向に、第0階層30、第1階層32、第2階層34および第3階層36からなる階層構造を有する。なお同図においては4階層のみ示しているが、階層数はこれに限定されない。上述のとおり各階層は1つの動画像を異なる解像度で表した動画データ、すなわち複数の画像フレームを時系列順に並べたデータで構成される。同図においては各階層を4枚の画像フレームで象徴的に表しているが画像フレームの数は動画像の再生時間やフレームレートによって当然異なる。
【0024】
なお後述するように本実施の形態は動画像データが有する画像平面および時間軸の3次元空間に対するランダムアクセス性に優れている。そのため例えば時間軸を「奥行き」とみなすことにより、動画像データに代えて3次元ボリュームデータを処理対象としてもよい。同様に3次元方向において冗長性を持ち得るデータであれば、パラメータの種類は特に限定されない。
【0025】
階層データは例えば4分木の階層構造を有し、各階層を構成する画像フレームを同一サイズを有する「タイル画像」に分割した場合、第0階層30は1個のタイル画像、第1階層32は2×2個のタイル画像、第2階層34は4×4個のタイル画像、第3階層は8×8個のタイル画像、などとなる。このとき第N階層の解像度(Nは0以上の整数)は、画像平面上で左右(x軸)方向、上下(y軸)方向ともに、第(N+1)階層の解像度の1/2となる。階層データは、最高解像度をもつ第3階層36の動画像をもとに、画像フレームを複数段階に縮小するなどして生成することができる。
【0026】
動画表示時の視点座標およびそれに対応する表示領域は、図3に示すように、画像の左右方向を表すx軸、上下方向を表すy軸、解像度を表すz軸からなる仮想的な3次元空間で表すことができる。なお上述のとおり本実施の形態では複数の画像フレームが連なる動画データを階層として準備するため、実際に表示される画像は再生が開始されてからの時間にも依存し、同図では階層ごとに時間軸tを表している。
【0027】
画像処理装置10は、基本的には時間軸tに沿っていずれかの階層の画像フレームを所定のフレームレートで順次描画していく。例えば第0階層30の解像度の動画像を基準画像として表示する。その過程で入力装置20から表示領域移動要求信号が供給されたら、当該信号から表示画像の変更量を導出し、その変更量を用いて次のフレームの、仮想空間における4隅の座標(フレーム座標)を導出する。そして当該フレーム座標に対応する画像フレームを描画する。この際、z軸に対し階層の切り替え境界を設けておくことにより、フレーム座標のzの値に応じて適宜、フレーム描画に用いる動画データの階層を切り替える。
【0028】
なお、仮想空間におけるフレーム座標の代わりに、画像処理装置10は、階層を特定する情報と、その階層におけるテクスチャ座標(UV座標)を導出してもよい。以下、階層特定情報およびテクスチャ座標の組み合わせも、フレーム座標と呼ぶ。
【0029】
画像処理装置10において、階層データは、所定の圧縮形式で圧縮された状態で記憶装置に保持されている。そしてフレーム描画に必要なデータが記憶装置から読み出されてデコードされる。なお図3は階層データを概念的に表したものであり、記憶装置に格納されるデータの格納順やフォーマットを限定するものではない。例えば階層データの仮想空間における位置と実際の動画データの格納領域とが対応づけてあれば、動画データは任意の領域に格納することができる。また後に述べるように、各階層を構成する画像フレーム列に対し空間分割や時間分割を施し、その単位で圧縮符号化してもよい。
【0030】
図4は画像処理装置10の構成を示している。画像処理装置10は、無線インタフェース40、スイッチ42、表示処理部44、ハードディスクドライブ50、記録媒体装着部52、ディスクドライブ54、メインメモリ60、バッファメモリ70および制御部100を有して構成される。表示処理部44は、表示装置12のディスプレイに表示するデータをバッファするフレームメモリを有する。
【0031】
スイッチ42は、イーサネットスイッチ(イーサネットは登録商標)であって、外部の機器と有線または無線で接続して、データの送受信を行うデバイスである。スイッチ42は、ケーブル14を介して外部ネットワークに接続し、画像サーバから階層データを受信できるように構成される。またスイッチ42は無線インタフェース40に接続し、無線インタフェース40は、所定の無線通信プロトコルで入力装置20と接続する。入力装置20においてユーザから入力された表示領域移動要求の信号は、無線インタフェース40、スイッチ42を経由して、制御部100に供給される。
【0032】
ハードディスクドライブ50は、データを記憶する記憶装置として機能する。階層データはハードディスクドライブ50に格納されてもよい。記録媒体装着部52は、メモリカードなどのリムーバブル記録媒体が装着されると、リムーバブル記録媒体からデータを読み出す。ディスクドライブ54は、読出専用のROMディスクが装着されると、ROMディスクを駆動して認識し、データを読み出す。ROMディスクは、光ディスクや光磁気ディスクなどであってよい。階層データはこれらの記録媒体に格納されていてもよい。
【0033】
制御部100は、マルチコアCPUを備え、1つのCPUの中に1つの汎用的なプロセッサコアと、複数のシンプルなプロセッサコアを有する。汎用プロセッサコアはPPU(Power Processing Unit)と呼ばれ、残りのプロセッサコアはSPU(Synergistic-Processing Unit)と呼ばれる。制御部100はさらにGPU(Graphics Processing Unit)を備えていてもよい。
【0034】
制御部100は、メインメモリ60およびバッファメモリ70に接続するメモリコントローラを備える。PPUはレジスタを有し、演算実行主体としてメインプロセッサを備えて、実行するアプリケーションにおける基本処理単位としてのタスクを各SPUに効率的に割り当てる。なお、PPU自身がタスクを実行してもよい。SPUはレジスタを有し、演算実行主体としてのサブプロセッサとローカルな記憶領域としてのローカルメモリを備える。ローカルメモリは、バッファメモリ70として使用されてもよい。
【0035】
メインメモリ60およびバッファメモリ70は記憶装置であり、RAM(ランダムアクセスメモリ)として構成される。SPUは制御ユニットとして専用のDMA(Direct Memory Access)コントローラをもち、メインメモリ60とバッファメモリ70の間のデータ転送を高速に行うことができ、また表示処理部44におけるフレームメモリとバッファメモリ70の間で高速なデータ転送を実現できる。本実施の形態の制御部100は、複数のSPUを並列動作させることで、高速な画像処理機能を実現する。表示処理部44は、表示装置12に接続されて、ユーザからの要求に応じた画像処理結果を出力する。
【0036】
画像処理装置10は、表示画像の拡大/縮小処理やスクロール処理をスムーズに行うために、現在表示されているフレームに対し空間的、時間的に近接した動画データを逐次、ハードディスクドライブ50からメインメモリ60にロードしておく。また、メインメモリ60にロードした動画データの一部をデコードしてバッファメモリ70に格納しておく。これにより、動画再生を進捗させつつ表示領域を円滑に移動させることが可能となる。このときロードやデコードの対象となるデータは、それまでの表示領域の移動方向に基づき、以後、必要となる領域を先読みすることによって決定してもよい。
【0037】
図3に示す階層データにおいて、z軸方向における位置は解像度を示し、第0階層30に近い位置ほど解像度が低く、第3階層36に近い位置ほど解像度は高い。ディスプレイに表示される画像の大きさに注目すると、z軸方向における位置は、縮尺率に対応し、第3階層36の表示画像の縮尺率を1とすると、第2階層34における縮尺率は1/4、第1階層32における縮尺率は1/16となり、第0階層30における縮尺率は1/64となる。
【0038】
したがってz軸方向において、表示画像が第0階層30側から第3階層36側へ向かう方向に変化する場合、表示画像は拡大していき、第3階層36側から第0階層30側へ向かう方向に変化する場合は、表示画像は縮小していく。例えば表示画像の縮尺率が第2階層34の近傍にある場合、表示画像は、第2階層34の画像データを用いて作成される。
【0039】
具体的には上述のとおり、各階層の中間の縮尺率などにそれぞれ切り替え境界を設ける。例えば表示する画像の縮尺率が、第1階層32と第2階層34の間の切り替え境界と、第2階層34と第3階層36の間の切り替え境界の間にある場合に、第2階層34の画像データを利用してフレームを描画する。第1階層32と第2階層34の間の切り替え境界と、第2階層34の間の縮尺率では、第2階層34の画像フレームを縮尺して表示する。第2階層34と第3階層36の間の切り替え境界と、第2階層34の間の縮尺率では、第2階層34の画像フレームを拡大して表示する。
【0040】
一方、表示領域移動要求信号から予測される将来必要な領域を特定してデコードする場合は、各階層の縮尺率などを先読み境界として設定しておく。例えば、表示領域移動要求信号による要求縮尺率が第2階層34の縮尺率をまたいだときなどに、縮小方向にある第1階層32の画像データの少なくとも一部をハードディスクドライブ50またはメインメモリ60から先読みしてデコードし、バッファメモリ70に書き込む。
【0041】
画像の上下左右方向の先読み処理についても同様である。具体的には、バッファメモリ70に展開されている画像データに先読み境界を設定しておき、画像変更要求信号による表示位置が先読み境界をまたいだときに、先読み処理が開始されるようにする。このようにすることで、ユーザの表示領域移動の要求に応じ、円滑に解像度および表示位置を変化させつつ動画再生も進んでいく態様を実現できる。
【0042】
図5は本実施の形態において、階層構造を有する動画データを用いて動画を表示する機能を有する制御部100aの構成を詳細に示している。制御部100aは、入力装置20からユーザが入力した情報を取得する入力情報取得部102、新たに表示すべき領域のフレーム座標を決定するフレーム座標決定部110、新たにロードすべき動画ストリームの圧縮データを決定するロードストリーム決定部106、必要な動画ストリームをハードディスクドライブ50からロードするロード部108を含む。制御部100aはさらに、動画ストリームの圧縮データをデコードするデコード部112、および画像フレームを描画する表示画像処理部114を含む。
【0043】
図5および後述する図10において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。既述したように、制御部100は1つのPPUと複数のSPUとを有し、PPUおよびSPUがそれぞれ単独または協同して、各機能ブロックを構成できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0044】
入力情報取得部102は、ユーザが入力装置20に対して入力した、動画再生の開始/終了、表示領域の移動などの要求内容を取得し、フレーム座標決定部110に通知する。フレーム座標決定部110は、現在の表示領域のフレーム座標とユーザが入力した表示領域移動要求信号に従い、新たに表示すべき領域のフレーム座標を決定し、ロードストリーム決定部106、デコード部112、表示画像処理部114に通知する。
【0045】
ロードストリーム決定部106は、フレーム座標決定部110から通知されたフレーム座標に基づき、ハードディスクドライブ50からメインメモリ60へ新たにロードすべき動画像の圧縮データを特定し、ロード部108にロード要求を発行する。後述するように本実施の形態の階層データは、各階層を構成するフレーム画像列を同じサイズに空間分割してなるタイル画像列ごとに動画ストリームを個別に保持する。
【0046】
そのため、縮尺率とその表示に用いる階層との対応関係以外に、各階層における空間座標と、その座標に対応する画像データを含む動画ストリームの識別情報およびその格納領域とをあらかじめ対応づけておく。ロードストリーム決定部106はその情報を元に、必要な動画ストリームの識別情報を取得する。そして該当する動画ストリームの圧縮データがロード済みでなければ、ロード部108にロード要求を発行する。また、フレーム座標が変化しない場合であっても、動画の進捗に応じて逐次、必要な動画ストリームの圧縮データがロードされるように要求する。
【0047】
ロードストリーム決定部106は、その時点のフレーム描画に必要な動画ストリームの他、以後必要と予測される動画ストリームを先に述べた先読み処理などにより特定し、ロード部108にロード要求を発行してよい。ロードストリーム決定部106は、ロード部108がロード処理中でない状態において、例えば所定の時間間隔、あるいは、ユーザが表示領域移動要求を入力した際など、所定のタイミングでロード要求を行ってもよい。ロード部108は、ロードストリーム決定部106からの要求に従い、ハードディスクドライブ50からのロード処理を行う。具体的にはロードすべき動画ストリームの識別情報から格納領域を特定し、当該格納領域から読み出したデータをメインメモリ60に格納する。
【0048】
デコード部112は各時刻のフレーム座標に基づき、メインメモリ60から必要な動画ストリームのデータを読み出しデコードし、バッファメモリ70に逐次格納していく。デコード対象は動画ストリーム単位でよく、フレーム座標決定部110が決定したフレーム座標の領域が複数の動画ストリームにまたがる場合は当該複数の動画ストリームをデコードしていく。表示画像処理部114は、各時刻のフレーム座標に基づきバッファメモリ70から対応する画像フレームのデータを読み出し、表示処理部44のフレームメモリに描画していく。
【0049】
一つの動画再生中に拡大縮小を含め表示領域の移動を許す態様においては、全ての階層が時間軸を共有し、利用される動画データの階層が切り替えられたか否かに関わらずシームレスにフレーム描画が進捗することが望ましい。そこで上述のとおり、画像フレームをタイル画像単位の動画ストリームとして階層データを生成しておく。これにより、一度の表示に必要な領域やその後に必要と予測されるデータを優先的にロード、デコードできるため、フレーム描画までに必要な処理の効率を向上させることができる。また時間的にもランダムアクセスが可能な状態でデータを準備することが望ましい。
【0050】
本実施の形態で処理対象となる動画データは、縮尺率方向を含めた3次元のフレーム座標、および時間、という4次元のパラメータを有するため、動画ストリームを生成する単位や全体的な構成を、圧縮手法や動画の内容などに応じて適宜変化させることができる。図6から図9は本実施の形態において処理対象となる動画データの構造例を示している。
【0051】
これらの図において三角形は動画の階層データを表し、直方体は1つの動画ストリームを表している。また各階層データは第0階層、第1階層、第2階層の3階層からなるが、階層の数をそれに限る趣旨ではない。上述のとおり1つの動画ストリームは各階層の画像フレームを同じサイズに分割してなるタイル画像ごとに生成され、これらの例では第0階層の画像のサイズをタイル画像のサイズとしている。
【0052】
まず図6に示す動画データ構造200は、各階層を、動画の開始から終了までを、各タイル画像に対し1つの動画ストリームとした1つの階層データ201からなる。ここで各動画ストリームの画像フレームであるタイル画像は上述のように同じサイズを有するため、第0階層は1個の動画ストリーム202a、第1階層は4個の動画ストリーム202b、第2階層は16個の動画ストリーム202cなどで構成される。
【0053】
図6の動画データ構造200の場合、動画ストリームの時間方向の長さは、元の動画の長さ、すなわち元の画像フレームの数に応じてが変化する。そのため元々画像フレームの数が少ない場合や、長時間データの圧縮が可能かつランダムアクセスが可能な圧縮方式、例えば全てのフレームをIピクチャとするMPEG(Moving Picture Experts Group)などを利用する場合に有利である。
【0054】
図7に示す動画データ構造204は、動画データを所定の画像フレーム数で区切り、各階層を、各タイル画像に対し時間軸方向に複数の動画ストリームとした1つの階層データ205で構成される。すなわち同図の動画ストリームは、図6で示した各動画ストリームを、図の縦方向である時間軸に対し分割している。この例では、図6の動画ストリームがそれぞれ6個の動画ストリームに分割されている。したがって第0階層は1×6個の動画ストリーム206a、第1階層は4×6個の動画ストリーム206b、第2階層は16×6個の動画ストリーム206cなどで構成される。固定数の画像フレーム単位で圧縮を行う圧縮方式を利用する場合にこのような構造となる。
【0055】
図8に示す動画データ構造208は、動画データを所定の画像フレーム数で区切り、その単位で生成した動画ストリームごとに別の階層データ210a、210b、210cを生成した構成を有する。すなわち各階層データ210a、210b、210cは、図6と同様に、階層ごとに時間軸方向に1つの動画ストリームで構成されるが、各動画ストリームは固定数の画像フレームを有する。例えば階層データ210aは、第0階層が1個の動画ストリーム212a、第1階層が4個の動画ストリーム212b、第2階層が16個の動画ストリーム212cで構成されている。
【0056】
図8の動画データ構造208の場合、時間軸方向に複数の階層データで構成されるため、あるシーンのみ別の階層データに差し替えたり、階層データを挿入、削除したり、というように、時間軸方向での動画編集が容易である。また各動画ストリームの画像フレーム数は固定となるため、データサイズが見積もりやすい。例えば後述する圧縮方式を適用すると、各動画ストリームのデータは静止画像を同様に階層構造としたときのタイル画像のデータと同様の構造とすることが可能であるため、静止画像の表示機構を動画像表示に利用したり、一部の領域を静止画にするなどの静止画像との共存が容易になる。
【0057】
図9に示す動画データ構造214は、動画データを所定の画像フレーム数で区切り、その単位で生成した動画ストリームをさらに所定数ずつ分けて別の階層データ216a、216b、216cとした構成を有する。すなわち各階層データ216a、216b、216cは、図7と同様に、各階層につき時間軸方向に複数の動画ストリームで構成されるが、その数は動画の長さによらず固定とし、同図の場合は2個とすることで階層データを分けている。
【0058】
例えば階層データ216aは、第0階層が1×2個の動画ストリーム218a、第1階層は4×2個の動画ストリーム218b、第2階層は16×2個の動画ストリーム218cで構成されている。この場合も、1つの階層データを構成する各階層のデータサイズの見積もりおよび調整が容易であるとともに、階層データを差し替えることにより時間軸方向での動画編集が容易である。
【0059】
図6から図9に示した動画データ構造は全て、各階層で画像フレームの全領域を網羅するように動画ストリームを保持していたが、動画像が有する冗長性に応じて一部の動画ストリームを動画データから省き、別の階層の動画ストリームで代替するようにしてもよい。図10は一部の階層の動画ストリームを別の階層の動画ストリームで代替させる場合の動画のデータ構造を模式的に示している。データ構造の表し方は図6と同様である。同図に示す階層データ222は、領域224に対応する動画ストリームが省かれている。
【0060】
図6に示した階層データ201と比較すると、第1階層228および第2階層230において動画ストリームの数が少なくなっている。この差分が省かれた動画ストリームである。この場合、省かれた動画ストリームが表す領域は、その階層にデータが存在しないことになる。そこでそのような階層のデータを用いるべき縮尺率で該当領域を表示するときは、該当領域のデータを保持する階層、同図の例では第0階層226まで階層を遡り、対応する領域を拡大して描画する。
【0061】
このような態様は、画像フレーム中に詳細な情報を必要としない領域、例えば空、海、芝生などほぼ単色で構成される領域などが存在する場合に適用できる。このように画像フレームにおける冗長性の有無は、画像解析によって検出できる。例えば各時刻の画像フレームごとに、低解像度側の階層の画像フレームを拡大した画像と高解像度側の画像との差分画像を生成し、差分値が所定のしきい値以下となる領域を検出する。そしてその領域に含まれる動画ストリームのうち、高解像度側の階層の動画ストリームを動画データから除外する。
【0062】
このようにすることで動画データのサイズを小さく抑えることができるとともに、動画ストリームのロード処理の一部を省略することができる。このような場合、前述の階層データが定める3次元座標と動画ストリームとを対応づけた情報において、除外した動画ストリームに対応する領域の座標に対し、拡大して用いる上の階層の動画ストリームの識別情報を対応づけ、さらに拡大倍率などの情報を付加することによって描画が可能となる。
【0063】
図10の例は、本実施の形態が、動画データを階層構造にする特徴と、フレーム画像を空間分割し、個別に動画ストリームを生成する、という特徴を併せ持つことによって成り立つ態様である。すなわちフレーム画像をタイル画像に分割することによって、局所的にデータの保持形式を異ならせることができ、さらに解像度の低い階層のデータを代替利用することができるため、一部のデータを省略してデータサイズを抑えることができる。同様の発想で、一部の動画ストリームのみ、構成する画像フレームを間引いてその数を減らし、データサイズを抑えてもよい。
【0064】
このようにすると、当該動画ストリームが担当する領域は時間解像度が低下することになるが、背景など時間的に変化の少ない領域が含まれる動画では有効である。このときの時間冗長性も上述の空間冗長性と同様、例えば隣接する画像フレーム同士の差分画像のうち所定のしきい値以下の差分値を有する領域を検出するなどして特定できる。同様に、一部の動画ストリームを静止画像に置き換えることもできる。
【0065】
また動画ストリームごとに圧縮方式を異ならせてもよい。さらに、階層データ内で時間軸を共有させず、階層ごと、動画ストリームごと、画像中の画素列ごと、など所定の単位で意図的に時間軸をずらすことによって様々な画像表現が可能となるようにしてもよい。
【0066】
上述のとおり本実施の形態で表示対象となる動画データの階層構造は、個々の動画ストリームの圧縮方式については特に制限されず、JPEG(Joint Photographic Experts Group)、MPEG、S3TC(S3 Texture Compression)などの既存の方式のいずれを適用してもよい。ただし階層の切り替えを含む表示領域の移動がシームレスに行えるようにするためには、空間的、時間的にランダムアクセスが可能であること、高精細画像であっても画質とデコードスループットの双方を維持できることが望ましい。
【0067】
次に、図7から図9で示した動画データ構造に適用できる、固定数の画像フレーム単位で動画ストリームを圧縮する手法について説明する。なお同圧縮手法は階層データを構成する複数の動画ストリームのみならず、単体の動画ストリームに対しても適用できる。本圧縮手法を実施する装置も、図4で示した画像処理装置10と同様の構成で実現できる。以下、制御部100の構成に主眼を置き説明する。
【0068】
図11は本実施の形態において、動画データ圧縮機能を有する制御部100bおよびハードディスクドライブ50の構成を詳細に示している。制御部100bは圧縮対象の動画ストリームを構成する画像フレームの色空間をYCbCrへ変換するYCbCr変換部120、変換後の画像列を時空間分割して符号化単位を生成する画像分割部122、および分割された符号化単位ごとに画像データを量子化することで圧縮符号化処理を行う圧縮符号化部124を含む。
【0069】
ハードディスクドライブ50は、個々の画像フレーム列からなる圧縮対象の動画ストリームを格納した動画ストリーム記憶部126、画像分割部122が画像列を分割する際の分割パターンを記憶する分割パターン記憶部128、および圧縮符号化部124が圧縮符号化して生成した圧縮データを格納する圧縮データ記憶部130を含む。
【0070】
YCbCr変換部120は、動画ストリーム記憶部126から圧縮対象の動画ストリームを構成する画像フレームのデータを順次読み出す。そして各画像フレームの画素値であるRGB値を輝度Y、色差CbおよびCrに変換することにより、それぞれの値を画素値とするY画像、Cb画像、Cr画像を生成する。RGBからYCbCrへの色空間の変換は既存の手法を適用することができる。1つの画像フレームからY画像、Cb画像、Cr画像が生成されるため、動画ストリームを構成する複数の画像フレームに対し、Y画像列、Cb画像列、Cr画像列が生成されることになる。
【0071】
画像分割部122は、YCbCr変換部120が生成したY画像列、Cb画像列、Cr画像列のうち、まず各Cb画像およびCr画像を所定の割合で縮小する。そしてY画像列、Cb画像列、Cr画像列を、分割パターン記憶部128に格納された分割パターンで時空間分割する。分割によって生成された単位を「符号化単位」と呼ぶ。
【0072】
詳細は後に述べるが、画像の内容によって最適な分割パターンが異なるため、画像分割部122は、分割パターン記憶部128に格納された複数の分割パターンから最適なパターンを選択する処理を行ってもよい。なお以後の処理において縮小されたCb画像およびCr画像は対応するフレームごとに組として扱う。以後、このようなCb画像とCr画像の組を単に「CbCr画像」と呼ぶ。
【0073】
圧縮符号化部124は、Y画像、CbCr画像の符号化単位ごとに、2つの代表値を表すパレット、および、それら2つの代表値と代表値を線形補間して得られる複数の中間値のうちいずれかを画素ごとに指定するインデックスを生成することにより、画像データを量子化して圧縮符号化する。これにより、Y画像列の符号化単位、およびCbCr画像列の符号化単位ごとに、パレットおよびインデックスが生成される。
【0074】
図12は、制御部100bを含む画像処理装置10が実施する動画ストリームの圧縮手順を模式的に示している。圧縮対象の動画ストリーム250は、例えば図6から図9において直方体で示した動画ストリームに対応してよい。動画ストリーム250はRGB画像の画像フレームによって構成される。本圧縮手法では、当該動画ストリーム250を所定枚数の画像フレーム、図12の例では8フレームごとに圧縮する。
【0075】
まずYCbCr変換部120は、8フレーム分の画像フレームをさらに所定のサイズに空間分割して画像平面(x,y)および時間軸tの3次元空間で処理単位を定める。図の例では8画素×8画素×8フレームのデータを処理単位252としている。次に当該処理単位252に含まれる8枚のRGB画像から、8枚のY画像列254、およびCbCr画像列256を生成する(S10)。
【0076】
ここでCbCr画像列256は上述のとおり、元のRGB画像から直接得られたCb画像、Cr画像を縦横の両方向で1/2のサイズに縮小して得られた画像列である。従ってY画像列254は8画素×8画素の画像フレームが8フレーム、CbCr画像列256は4画素×4画素のCb画像と4画素×4画素のCr画像を連結した画像が8フレーム、となる。
【0077】
次に画像分割部122は、Y画像列254およびCbCr画像列256を、分割パターン記憶部128に格納された分割パターンのうちいずれかのパターンで時空間分割して符号化単位を形成する(S12)。同図の例では、Y画像列254およびCbCr画像列256の各画像フレームを横4画素×縦2画素の同じサイズで空間分割して得られた画像ブロックを、時間方向に隣接する2つの画像フレームごとに分割してなる、4画素×2画素×2枚のデータを符号化単位としている。
【0078】
上述のとおりY画像列254は8画素×8画素であるため、各画像フレームは「A」、「B」、「C」、「D」、「E」、「F」、「G」、「H」の8個の画像ブロックに分割され、1番目のフレームの画像ブロック「A」と2番目のフレームの画像ブロック「A」とで符号化単位258を形成する(網掛けされた領域)。その他の画像ブロックおよび画像フレームも同様であり、結果としてY画像列254について空間分割数8×時間分割数4=32個の符号化単位が形成される。
【0079】
一方、CbCr画像列256はCb画像、Cr画像ともに4画素×4画素であるため、前者は「I」、「J」、後者は「K」、「L」の2個の画像ブロックに分割され、1番目のフレームの画像ブロック「I」および「K」と2番目のフレームの画像ブロック「I」および「K」とで符号化単位260を形成する(網掛けされた領域)。その他の画像ブロックおよび画像フレームも同様であり、結果としてCbCr画像列256について空間分割数2×時間分割数4=8個の符号化単位が形成される。
【0080】
圧縮符号化部124は、各符号化単位に対しパレットおよびインデックスのデータを生成する。パレットおよびインデックスは、基本的にはS3TCのテクスチャ圧縮方式においてRGB画像から生成されるパレットおよびインデックスと同様である。一方、本実施の形態では、パラメータの次元数が一般的なS3TCと異なる。図13はY画像列254の符号化単位258からパレットおよびインデックスのデータを生成する手法を模式的に示している。
【0081】
図12で示したパターンで分割した場合、符号化単位258は4×2×2=16画素を含む。同図において画素は円形で模式的に示されている。各画素が画素値として有する輝度Yのサンプル値を輝度Yの軸上に表すと分布262のようになる。その分布262でプロットされた16個のサンプルのうち、2つの代表値を選択する。例えば最小値(min)および最大値(max)を代表値として選択し、当該2値を保持するデータをパレットとする。さらに輝度Yの軸上、最小値と最大値の間の線分を1:2で内分する輝度Yの値を第1中間値(mid1)、2:1で内分する輝度Yの値を第2中間値(mid2)としたとき、最小値、第1中間値、第2中間値、最大値の4値のいずれかを指定する情報を画素ごとに保持するデータをインデックスとする。
【0082】
すなわちY画像列254の1符号化単位258に対して、パレットは輝度Yを表す8ビット×2値=2バイト、インデックスは4値の識別番号を0〜3で表す情報2ビット×16画素=4バイトのデータとなる。上述のとおり1つの処理単位であるY画像列254は32個の符号化単位で構成されるため、Y画像列254全体では、パレットは32×2バイト=64バイト、インデックスは32×4バイト=128バイトのデータとなる。
【0083】
図14はCbCr画像列256の符号化単位260からパレットおよびインデックスのデータを生成する手法を模式的に示している。図12で示したパターンで分割した場合、符号化単位260は、Cb画像、Cr画像のそれぞれが4×2×2=16画素を含む。そこで、両画像の対応する画素が画素値として有する(色差Cb,色差Cr)を要素とする色差のサンプル値を、色差Cb、色差Crの軸を有する2次元平面上に表すと分布264のようになる。
【0084】
この分布264にプロットされた16個のサンプルのうち、2つの代表値を選択する。例えば分布264を直線で近似したときに、直線の左端、右端にある色差をそれぞれ最小値(min)および最大値(max)として代表値とする。そして当該2値を保持するデータをパレットとする。このとき各代表値は、(色差Cb,色差Cr)を要素とする2次元パラメータである。また近似直線上で最小値と最大値との間の線分を1:2で内分する色差を第1中間値(mid1)、2:1で内分する色差を第2中間値(mid2)としたとき、最小値、第1中間値、第2中間値、最大値の4値のいずれかを指定する情報を画素ごとに保持するデータをインデックスとする。
【0085】
すなわちCbCr画像列256の1符号化単位260に対して、パレットは色差CbおよびCrの2要素×各色差を表す8ビット×2値=4バイト、インデックスは4値の識別番号を0〜3で表す情報2ビット×16画素=4バイトのデータとなる。上述のとおり1つの処理単位であるCbCr画像列256は8個の符号化単位で構成されるため、CbCr画像列256全体では、パレットは8×4バイト=32バイト、インデックスは8×4バイト=32バイトのデータとなる。
【0086】
このように圧縮すると、1処理単位の8画素×8画素×8フレームのRGB画像は、Y画像列のパレット64バイトとインデックス128バイト、CbCr画像列のパレット32バイトとインデックス32バイトの、合計256バイトとなる。すなわち1画素あたり0.5バイトのデータとなる。
【0087】
S3TCを用いて4画素×4画素のRGB画像を圧縮したとき、パレットはRGB値を表す2バイト×2値=4バイト、インデックスはRGB値のうち4値の識別番号を0〜3で表す情報2ビット×16画素=4バイトのデータとなるため、圧縮後のデータは1画素あたり、8バイト/16画素=0.5バイトであり、上述の圧縮手法による圧縮後のデータサイズと同一となる。したがってこのような処理単位で動画データを圧縮していくことにより、ハードディスクドライブ50からメインメモリ60へロードするデータの単位やメインメモリ60内でのキャッシュラインのサイズなどの観点で、静止画と動画を同等に扱うことができる。
【0088】
また本実施の形態では、RGB画像を1次元のパラメータを保持するY画像、および2次元のパラメータを保持するCbCr画像に分解したうえでパレットおよびインデックスを生成した。そのため、1次元のY画像の場合は全てのサンプル値が直線上に分布し、2次元のCbCr画像も、近似直線からはずれるサンプルは当該近似直線の法線方向のみとなる。したがって、3次元のパラメータを保持するRGB画像を直線で近似して量子化する一般的なS3TCの手法と比較し、量子化誤差を小さく抑えることができる。
【0089】
図12の分割パターンでは、動画ストリームを横4画素×縦2画素×2フレーム分に分割して符号化単位とした。この分割パターンは上述のとおり、画像の内容によって適応的に変化させてもよい。図15は1つの処理単位を分割するパターンのバリエーションを示している。同図左端からパターン(A)、パターン(B)、パターン(C)、パターン(D)とし、上段のY画像列および下段のCbCr画像列のいずれも、空間分割の区切りを直線で示し、1つの符号化単位を網掛けして代表的に表している。
【0090】
パターン(A)は横4画素×縦4画素×1フレームごとに分割するパターンである。パターン(B)は図12に示したパターンと同一である。パターン(C)は横2画素×縦2画素×4フレームごとに分割するパターン、パターン(D)は横2画素×縦1画素×8フレームごとに分割するパターンである。
【0091】
これらのパターンはいずれも、1処理単位がY画像列に対し16画素、CbCr画像列に対し16画素×2となるため、量子化する際のサンプル数は図13および図14で示したのと同じである。一方パターン(D)からパターン(A)へ向かうほど、詳細な時間分割を行い、パターン(A)からパターン(D)へ向かうほど詳細な空間分割を行う。このような分割パターンを準備し、空間方向で冗長性を有するか、時間方向で冗長性を有するか、という画像の特性に応じて分割パターンを選択する。
【0092】
具体的には、空や芝など単色に近い領域が多く含まれるなど、画像が空間冗長性を有する場合、その画素値は空間に対してより一様となりやすく、空間分割数を少なくしても量子化による誤差が含まれにくいため、パターン(A)に近い分割パターンを選択する。一方、動きの少ない景色を定点観測した場合など、画像が時間冗長性を有する場合、その画素値は時間方向で一様となりやすく、時間分割数を少なくしても量子化による誤差が含まれにくいため、パターン(D)に近い分割パターンを選択する。
【0093】
例えばパターン(D)の場合、1つの符号化単位は空間方向には2画素のみを有する。同じ符号化単位に含まれる8フレーム分で時間変化がなければ、パレットで保持する2つの代表値がそのまま元の画素値を表していることになるため、量子化誤差は0となる。RGB画像に対してS3TCの手法で圧縮を行う場合、パレットに保持されるRGBのデータは本来の24ビットから16ビットへ低下させるため、デコードした際に十分な階調が得られないなど画質の低下が起こる場合がある。本実施の形態では輝度Y、色差Cb、Crのそれぞれに対し8ビットのパレットを準備するため元の画質を保持できる可能性が高い。
【0094】
分割パターン記憶部128には、パターン(A)〜パターン(D)の4種類の分割パターンと、それらを識別する情報、例えば0,1,2,3の4つの識別番号を対応づけて格納しておく。画像分割部122は、YCbCr変換部120が生成した各画像列に対し分割パターン記憶部128に格納された分割パターンを全て実施して、原画像との誤差が最も少ない分割パターンを選択する。
【0095】
この処理は実際には、各分割パターンで分割したときの画像列の圧縮符号化を圧縮符号化部124に実施させ、各圧縮データをデコードした画像と圧縮前の画像とを画像フレームごとに比較する。そして差分の少ない分割パターンを選択すればよい。画像分割部122は、選択した分割パターンの識別番号を圧縮符号化部124に通知し、圧縮符号化部124は、生成した圧縮データに当該識別番号の情報を含ませて最終的な圧縮データとし、圧縮データ記憶部130に格納する。
【0096】
分割パターンは、画像内の領域で異ならせるようにしてもよい。領域ごとに分割パターンを選択する手順も上記と同様でよい。そして画像分割部122は選択した分割パターンの識別番号と領域とを対応づけたマップを生成し、最終的な圧縮データに含めるようにする。図16は分割パターンマップのデータ構造例を示している。同図の例は、1つの動画ストリームを256画素×256画素の画像フレームで構成した場合を示している。図15で示した4種類の分割パターンを設定可能とした場合、分割パターンを設定できる最小単位は1処理単位である8画素×8画素×8フレームとする。
【0097】
もし最小単位ごとに分割パターンを設定する場合は図16に示すように、256画素×256画素の画像フレームに対し、8画素×8画素の領域ごとに分割パターンの識別番号、すなわち0〜3の値を対応づける。結果として分割パターンマップ270は32×32×2ビット=256バイトの情報となる。このような分割パターンマップ270を、8フレームごとにに付加すれば、時間方向に対しても分割パターンを異ならせることができる。
【0098】
図16の例は分割パターンの設定を最小単位の8画素×8画素ごとに行った場合であるが、同様にして、16画素×16画素ごと、64画素×32画素ごとなど、縦方向、横方向に8画素×8画素の領域を連結した領域ごとに分割パターンを設定するようにしてもい。また全ての領域に対し1つの分割パターンを設定するなど、設定単位自体を様々に設定することができる。分割パターンマップは上述のように実際に圧縮符号化したデータをデコードして元の画像との誤差の小ささによって生成できるほか、同様の内容を有するテスト画像によって設定単位やそこに設定する分割パターンを準備しておいてもよい。
【0099】
次に圧縮符号化部124が、圧縮符号化したデータを圧縮データ記憶部130に格納する手順について説明する。本実施の形態において生成される圧縮データは、S3TCのテクスチャ圧縮方式と同様に、パレットおよびインデックスによって構成される。そのためデコード処理は、図4の画像処理装置10の制御部100に含まれる、一般的なGPUのシェーディング機能をそのまま利用することができる。
【0100】
そのため、Y画像列のデータを量子化して生成されたインデックスおよびパレットと、CbCr画像列のデータを量子化して生成されたインデックスおよびパレットが、通常のテクスチャ画像と同様に読み出されデコードできるようにすることが望ましい。そこで圧縮データを格納する際は、同じ領域を表すY画像列の量子化データとCbCr画像列の量子化データを1つのまとまりとすることにより、少ないデータアクセスで画素を復元できるようにする。
【0101】
図17は圧縮データ記憶部130における圧縮データの配列を説明するための図である。上述のとおりY画像列、CbCr画像列に分解したのちに量子化したデータを、RGB画像の圧縮データと同等に扱うためには、同じ領域を表すそれらのデータをまとめて格納することが望ましい。そこで本実施の形態では、Y画像列に対する圧縮データ280と、同じ領域を表すCbCr画像列に対する圧縮データ282とを1つの格納単位としてまとめる。
【0102】
図中、Y画像列に対する圧縮データ280のうち「I」と表記された直方体はそれぞれ1符号化単位から生成されたインデックス、「P」と表記された直方体はそれぞれ1符号化単位から生成されたパレットである。CbCr画像列に対する圧縮データ282も同様である。上述のとおり、Y画像列のインデックスおよびパレットは、1符号化単位あたりそれぞれ4バイト、2バイトのデータである。CbCr画像列のインデックスおよびパレットはどちらも、1符号化単位あたり4バイトのデータである。
【0103】
そこで図17に示すように、同じ領域を表す、Y画像列の4符号化単位とCbCr画像列の1符号化単位のデータを、深さ4バイトの記憶領域に配列してまとめる。ここでY画像列に対する圧縮データ280のうち、パレットはそれぞれ2バイトのデータであるため、図のように深さ方向に2つ配置することにより、縦方向2×横方向4×4バイトのデータとなる。ここで同じ領域を表すY画像列とCbCr画像列とは、例えば図12におけるY画像の画像ブロック「A」、「B」、「C」、「D」と、Cb画像の画像ブロック「I」、Cr画像の画像ブロック「K」などである。
【0104】
このように圧縮データをまとめると、縦方向2画素×横方向4画素分のRGBA画像のデータを格納する記憶領域284にそのまま格納することができる。上述のとおり8画素×8画素×8フレームの処理単位あたり、Y画像列は32個、CbCr画像列は8個の符号化単位が形成されるため、1処理単位あたりこのような格納単位が8個形成される。1格納単位は縦方向2画素×横方向4画素分のRGBA画像と同じデータサイズであるため、1処理単位あたり8画素×8画素のRGBA画像分のデータとなる。この特徴は、図15で示したどの分割パターンでも同様となる。
【0105】
図18は、これまで述べた圧縮符号化処理を動画ストリーム全体に施したときのデータの変遷を模式的に示している。動画ストリームは256画素×256画素のRGB画像の画像フレームで構成され、それを8フレーム単位で圧縮するとする。まず8枚の画像フレームを8画素×8画素の処理単位に分割する(S20)。これにより縦方向および横方向に32個の処理単位が形成される。
【0106】
次にそれぞれの処理単位に対し、図12に示すように、YCbCr変換を施してY画像、縮小したCbCr画像を生成し、それぞれを符号化単位に分割したうえインデックスおよびパレットを生成する。それをまとめて1処理単位あたり8個の格納単位を生成する(S22)。結果として8フレーム分のRGB画像が、同じ画素数を有するRGBA画像1フレームに圧縮されたことになる。
【0107】
ここで上述の分割パターンマップを圧縮データに埋め込む手法について説明する。図17に示すように1つの格納単位にはY画像列のパレットが4つ格納されている。各パレットには輝度Yの代表値である2値が格納されている。そこで、1つの格納単位に含まれる4つのパレットのうち、深さ方向に並べて配置された2つのパレットを用いて、4つの分割パターンを識別するための2ビットの情報を埋め込む。
【0108】
図19は当該2つのパレットに分割パターンの識別番号を埋め込む手法を説明するための図である。2つのパレットのうち第1のパレット290が保持する2値が、図の手前の先頭アドレスから順に「Pa0」、「Pa1」であり、第2のパレット292が保持する2値がアドレス順に「Pb0」、「Pb1」であるとする。ここで「Pa0」と「Pa1」の大小関係、「Pb0」と「Pb1」の大小関係によって合計2ビットの情報を表す。
【0109】
例えば第1のパレット290の「Pa0」が「Pa1」より大きければ「1」、それ以外であれば「0」とすることで1ビットの情報を表す。同様に第2のパレット292の「Pb0」が「Pb1」より大きければ「1」、それ以外であれば「0」とすることでさらに1ビットの情報を表す。パレットが保持する2値は、どちらが先のアドレスに格納されていてもデコード処理には影響しない。そこで各パレットにおいて大きい方の値をどちらのアドレスに格納するかを、分割パターンの識別番号に応じて入れ替えることにより、分割パターンの識別番号をパレットに埋め込むことができる。
【0110】
このようにすることで、分割パターンマップを圧縮データの本体とは別に生成することなく、圧縮データに含めることができ、全体としてデータサイズを抑えることができる。また対応する領域の圧縮データごとに埋め込むため参照する際の効率がよい。上述のとおり分割パターンは最小で1処理単位(=8個の格納単位)であるため、8個の格納単位のうちいずれかのパレットの対に1つの分割パターンを埋め込めばよい。一方、8個の格納単位に含まれるパレットの対16個全てに同じ分割パターンを埋め込んでもよい。
【0111】
このように分割パターンが埋め込まれた圧縮データを復号する際は、まず処理単位ごとに、分割パターンが埋め込まれたY画像列のパレットを読み出して、当該処理単位に設定された分割パターンの識別番号を特定する。それにより画素と、当該画素を描画するのに必要なデータが含まれているインデックスおよびパレットの格納場所とを対応づけられる。それに従い、描画対象の画素に対応するY画像列のインデックスおよびパレット、CbCr画像列のインデックスおよびパレットを読み出してデコードすればよい。
【0112】
デコード処理は基本的にS3TCと同様に行える。すなわち各パレットが保持する代表値からそれを補間する中間値を生成し、インデックスにおける指定に従い、代表値または中間値を各画素の画素値とする。一方、本実施の形態では符号化単位ごとにパレットおよびインデックスを生成しているため、決定した画素値を、分割パターンに対応した、画像列における符号化単位の配列に基づき、空間方向および時間方向に画素の配列を再構成することによりY画像列、CbCr画像列を復元する。そしてCbCr画像を拡大してCb画像、Cr画像を生成することにより、元の画像フレームに対応するYCbCr画像が得られる。
【0113】
以上述べた本実施の形態によれば、動画を構成する画像フレームを異なる解像度で表した複数の動画ストリームを階層化した階層データを生成し、ユーザからの視点移動要求に応じて表示領域を移動させながら動画を表示する。求められる縮尺率によってフレーム描画に用いるデータの階層を切り替えることにより、一般的な高精細画像やそれを超える解像度の動画像であっても、細部を確認するために拡大したり全体を俯瞰するために縮小したり、といった要求を逐次受け付け、反応性よく表示することができる。
【0114】
階層データの各階層を構成する動画ストリームは、どの階層においても同じサイズの画像フレームで構成されるようにする。結果として高解像度の階層になるほど、1つの階層を構成する動画ストリームの数が増えることになる。このように画像フレームのサイズを揃えることで、表示時のロードやデコードなどの処理を階層によらず均一化できるとともに、表示対象領域の局所性に適合した効率的な描画処理を行える。
【0115】
また1つの画像を複数の動画ストリームで構成することにより、動画ストリームごとにフレームレートを異ならせたり一部の領域を静止画像とするなどの調整を、画像の空間局所性に鑑み実施できる。またある解像度の階層の画像において、低解像度側の階層の画像を拡大して代用できる領域がある場合は、当該領域を担当する動画ストリーム自体をデータから省くこともできる。
【0116】
動画像を全編にわたり1つの階層データで構成せず、時間軸上で分割して複数の階層データで構成するようにしてもよい。また1つの階層データに含まれる各階層の動画ストリームを全編にわたり1つの動画圧縮データとしてもよいし、所定数の画像フレームごとに異なる動画圧縮データとしてもよい。このように階層データの数や階層データ内の動画ストリームのデータ構造、圧縮符号化形式を、動画像の内容のや再生時間などによって適宜選択できるようにすることで、動画表示時の処理の負荷、求められる画質など多角的な観点から最適な表示態様を実現できる。
【0117】
さらに本実施の形態では、所定数の画像フレームごとに動画ストリームを圧縮符号化する。このとき元の動画ストリームを構成する画像フレームのRGB画像を、輝度Y、色差CbおよびCrで表した画像をそれぞれ生成する。そしてCb画像およびCr画像を縮小したうえ、各画像列を所定サイズ、所定画像フレーム数ごとに分割して符号化単位を生成する。そのようにしてY画像列およびCbCr画像列のそれぞれに対しパレットおよびインデックスのデータを生成する。パレットは各画像の代表値を表す2値のデータ、インデックスは、代表値を線形補間して得られる中間値および代表値のうちの1つを画素ごとに指定するデータである。
【0118】
パレットおよびインデックスの概念は、テクスチャのRGB画像に対するS3TCの圧縮手法で導入されているが、本実施の形態ではパレットの2値が輝度Y、色差Cb、色差Crのいずれに対しても8ビットを保持するため画質が劣化しにくい。またY画像列、およびCbCr画像列に対し別個に量子化を行うため、RGBの3次元パラメータを量子化するのと比較してパラメータの次元数が小さく量子化誤差が少ない。また符号化単位を形成する際の空間分割数、時間分割数の組み合わせを変化させ、画像の持つ空間方向の冗長性、時間方向の冗長性に適応するデータ構造を柔軟に提供できる。
【0119】
上記の圧縮手法を用いれば、GPUによるテクスチャマッピングの処理と同様に描画処理を行えるため、階層を切り替えつつ表示領域の動画ストリームを読み込み所定のフレームレートで画像を描画していく、という本実施の階層構造の動画データにも適用できる高いスループットを見込める。既存の圧縮符号化方式と比較すると、例えばJPEGを用いて画像フレームごとにデコードする場合、画像の内容によってはデコードの処理負荷が増大しやすい。またMPEGは複数の動画ストリームのそれぞれについてIピクチャの復号が必要となるため結果的に処理負荷が増大しやすく、Iピクチャを減らすと時間方向のランダムアクセスに対しレイテンシが生じやすい、という問題が生じる。
【0120】
本実施の形態における圧縮符号化技術はGPUでのデコードを実現することによって、上記の既存技術と比較し高速描画が可能である。結果としてCPUにおける処理の負荷を抑えつつ高精細の動画を表示できる。そのためCPUにおいてさらに付加的な処理を行うことも可能であるほか、携帯端末などCPUの処理性能が劣る装置であってもコマ落ちなどのリスクが小さくなる。この特徴は、SSD(Solid Sate Drive)の普及などに伴い記憶装置からのデータ読み出しが高速化され、デコード処理がボトルネックとなりやすい今後の技術動向に適合しているといえる。
【0121】
結果として本圧縮符号化技術は、画質を保持したまま高スループット描画を実現でき、さらに低レイテンシでの時間的、空間的ランダムアクセスが可能であるため、表示領域を変化させながら高精細動画を表示するために用いる階層構造の動画像データへ適用することにより、より効果的な動画像表示技術を実現できる。
【0122】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【0123】
1 画像処理システム、 10 画像処理装置、 12 表示装置、 20 入力装置、 30 第0階層、 32 第1階層、 34 第2階層、 36 第3階層、 44 表示処理部、 50 ハードディスクドライブ、 60 メインメモリ、 70 バッファメモリ、 100 制御部、 102 入力情報取得部、 106 ロードストリーム決定部、 108 ロード部、 110 フレーム座標決定部、 112 デコード部、 114 表示画像処理部、 120 YCbCr変換部、 122 画像分割部、 124 圧縮符号化部、 126 動画ストリーム記憶部、 128 分割パターン記憶部、 130 圧縮データ記憶部。

【特許請求の範囲】
【請求項1】
圧縮対象の、3次元パラーメータ空間におけるデータ列を当該3次元方向に分割して符号化単位を形成するデータ分割部と、
前記データ分割部が形成した符号化単位ごとに、データのうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を生成して圧縮データとする圧縮符号化部と、
を備えたことを特徴とするデータ圧縮装置。
【請求項2】
前記データ列として、画像フレーム平面および時間軸に対する画素値を有する、動画データの各画像フレームにおける画素値を、輝度Yおよび2つの色差Cb、Crに変換することにより前記画像フレームごとに生成した、輝度Yを画素値とするY画像、色差Cbを画素値とするCb画像、色差Crを画素値とするCr画像を時系列順に並べたY画像列、Cb画像列、Cr画像列を生成するYCbCr変換部をさらに備え、
前記データ分割部は、前記YCbCr変換部が生成したY画像列、Cb画像列、およびCr画像列を、それぞれ時空間分割して符号化単位を形成することを特徴とする請求項1に記載のデータ圧縮装置。
【請求項3】
前記データ分割部は、あらかじめ準備された複数の分割パターンで前記データ列の分割を行うことにより複数の符号化単位のパターンを形成し、前記圧縮符号化部に各パターンでデータ圧縮を行わせ、最も誤差の少ない分割パターンを選択することを特徴とする請求項1または2に記載のデータ圧縮装置。
【請求項4】
前記データ分割部は、前記3次元パラーメータ空間の所定単位の領域ごとに分割パターンを選択し、選択した分割パターンの識別情報と前記所定単位の領域とを対応づけた分割パターンマップを生成し、
前記圧縮符号化部は、選択された分割パターンによって形成された符号化単位ごとに前記パレットと前記インデックスを生成したうえ、前記分割パターンマップを前記圧縮データに含めることを特徴とする請求項1から3のいずれかに記載のデータ圧縮装置。
【請求項5】
前記圧縮符号化部は、Y画像列の符号化単位ごとに、輝度Yに対するパレットおよびインデックスを生成し、Cb画像列およびCr画像列の符号化単位ごとに、(色差Cb,色差Cr)を要素にもつパラメータに対するパレットおよびインデックスを生成することを特徴とする請求項2に記載のデータ圧縮装置。
【請求項6】
前記データ分割部は、分割する前に前記Cb画像およびCr画像を画像平面方向に所定の倍率で縮小し、前記符号化単位に含まれる画素数が前記Y画像列、Cb画像列、Cr画像列で等しくなるように時空間分割することを特徴とする請求項2または5に記載のデータ圧縮装置。
【請求項7】
前記圧縮符号化部は、前記符号化単位ごとに生成したパレットおよびインデックスを、元の3次元パラーメータ空間の所定の領域単位でまとめた、格納単位を生成し、当該格納単位ごとに圧縮データとして記憶装置に格納することを特徴とする請求項1から6のいずれかに記載のデータ圧縮装置。
【請求項8】
前記圧縮符号化部は、前記分割パターンの識別情報を前記パレットが保持する2値の大小関係とその格納順によって表現することにより、前記分割パターンマップを前記符号化単位ごとに生成される前記パレットに埋め込むことを特徴とする請求項4に記載のデータ圧縮装置。
【請求項9】
前記動画データは、一の動画を構成する画像フレームを異なる解像度で表した複数の画像フレーム列を解像度順に階層化してなる階層動画データを構成し、各階層の画像フレーム列の画像平面を所定のサイズに区分けしてなるタイル画像単位の動画ストリームであることを特徴とする請求項2、5、および6のいずれかに記載のデータ圧縮装置。
【請求項10】
3次元パラーメータ空間におけるデータ列を、当該3次元方向に分割して形成した符号化単位ごとに、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を対応づけた圧縮データを記憶装置から読み出す圧縮データ読み出し部と、
前記パレットが保持する代表値を線形補間して前記中間値を生成し、前記インデックスが保持する情報に従い、各符号化単位に含まれるデータを前記代表値および前記中間値のいずれかに決定したうえ、前記符号化単位の配列に基づき、元のデータ列を再構成して生成する復号部と、
生成したデータ列を出力する出力部と、
を備えたことを特徴とするデータ復号装置。
【請求項11】
前記圧縮データ読み出し部は、動画を構成する画像フレーム列に対応し、輝度Yを画素値とするY画像列、色差Cbを画素値とするCb画像列、色差Crを画素値とするCr画像列を前記データ列として読み出し、
前記復号部は、前記符号化単位の配列に基づき、画素の配列を再構成することにより前記Y画像列、Cb画像列、Cr画像列のデータを生成し、
前記出力部は、前記Y画像列、Cb画像列、Cr画像列のデータに基づき前記画像フレーム列を表すYCbCr画像列のデータを表示装置に出力することを特徴とする請求項10に記載のデータ復号装置。
【請求項12】
前記圧縮データは、前記3次元方向の分割パターンを識別する情報を、前記3次元パラーメータ空間の所定の領域単位で保持する分割パターンマップをさらに含み、
前記復号部は、前記分割パターンマップが示す分割パターンによって前記符号化単位の配列を特定し、それに基づき元のデータの配列を再構成することを特徴とする請求項10または11に記載のデータ復号装置。
【請求項13】
前記圧縮データは、前記符号化単位ごとのパレットおよびインデックスが、元の3次元パラーメータ空間の所定の領域単位でまとめられた格納単位で記憶装置に格納され、
前記圧縮データ読み出し部は、復号対象の領域ごとに前記格納単位を特定したうえ、当該格納単位に含まれるパレットおよびインデックスを読み出すことを特徴とする請求項10から12のいずれかに記載のデータ復号装置。
【請求項14】
圧縮対象の、3次元パラーメータ空間におけるデータ列を記憶装置より読み出すステップと、
前記データ列を当該3次元方向に分割して符号化単位を形成するステップと、
前記符号化単位ごとに、データのうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を生成して圧縮データとして記憶装置に格納するステップと、
を含むことを特徴とするデータ圧縮方法。
【請求項15】
3次元パラーメータ空間におけるデータ列を、当該3次元方向に分割して形成した符号化単位ごとに、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を対応づけた圧縮データを記憶装置から読み出すステップと、
前記パレットが保持する代表値を線形補間して前記中間値を生成し、前記インデックスが保持する情報に従い、各符号化単位に含まれるデータを前記代表値および前記中間値のいずれかに決定したうえ、前記符号化単位の配列に基づき、元のデータ列を再構成して生成するステップと、
生成した前記データ列を出力装置に出力するステップと、
を含むことを特徴とするデータ復号方法。
【請求項16】
圧縮対象の、3次元パラーメータ空間におけるデータ列を記憶装置より読み出す機能と、
前記データ列を当該3次元方向に分割して符号化単位を形成する機能と、
前記符号化単位ごとに、データのうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を生成して圧縮データとして記憶装置に格納する機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。
【請求項17】
3次元パラーメータ空間におけるデータ列を、当該3次元方向に分割して形成した符号化単位ごとに、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を対応づけた圧縮データを記憶装置から読み出す機能と、
前記パレットが保持する代表値を線形補間して前記中間値を生成し、前記インデックスが保持する情報に従い、各符号化単位に含まれるデータを前記代表値および前記中間値のいずれかに決定したうえ、前記符号化単位の配列に基づき、元のデータ列を再構成して生成する機能と、
生成した前記データ列を出力装置に出力する機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。
【請求項18】
圧縮対象の、3次元パラーメータ空間におけるデータ列を記憶装置より読み出す機能と、
前記データ列を当該3次元方向に分割して符号化単位を形成する機能と、
前記符号化単位ごとに、データのうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を生成して圧縮データとして記憶装置に格納する機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラムを記録した記録媒体。
【請求項19】
3次元パラーメータ空間におけるデータ列を、当該3次元方向に分割して形成した符号化単位ごとに、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を、当該符号化単位の元のデータに代えて保持するインデックスと、を対応づけた圧縮データを記憶装置から読み出す機能と、
前記パレットが保持する代表値を線形補間して前記中間値を生成し、前記インデックスが保持する情報に従い、各符号化単位に含まれるデータを前記代表値および前記中間値のいずれかに決定したうえ、前記符号化単位の配列に基づき、元のデータ列を再構成して生成する機能と、
生成した前記データ列を出力装置に出力する機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラムを記録した記録媒体。
【請求項20】
圧縮動画像ファイルのデータ構造であって、
動画を構成する画像フレーム列に対応し、輝度Yを画素値とするY画像列、色差Cbを画素値とするCb画像列、色差Crを画素値とするCr画像列を、それぞれ時空間分割して形成した符号化単位ごとに生成された、画素値のうち2値を代表値として保持するパレットと、当該代表値を線形補間して定まる複数の中間値および前記代表値のいずれかを指定する情報を画素ごとに保持するインデックスと、を対応づけて前記画像フレームの画像領域に対応させて配列したことを特徴とする圧縮動画像ファイルのデータ構造。
【請求項21】
前記時空間分割時の分割パターンを識別する情報を、前記画像フレームの所定の画像領域単位で保持する分割パターンマップをさらに対応づけたことを特徴とする請求項20に記載の圧縮動画像ファイルのデータ構造。
【請求項22】
請求項20または請求項21に記載のデータ構造を有する圧縮動画像ファイルを記録した記録媒体。

【図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


【公開番号】特開2012−60612(P2012−60612A)
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願番号】特願2010−204806(P2010−204806)
【出願日】平成22年9月13日(2010.9.13)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】