(57)【要約】【課題】MCUバッファを用いて画像データを格納するための方法及び装置。【解決手段】発明は、ブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するための方法並びに装置に関するものである。画像データの第１最小符号化単位が第１メモリに格納される。第１最小符号化単位の画像データが画素にグループ化される。グループ化された画像データは第２メモリに画像データの第２最小符号化単位として格納される。画像データは第１色フォーマットから第２色フォーマットに変換されるのが好ましい。さらに、画像が次元変換されるのが好ましい。【選択図】  図１
2006014341.tif 000002
【特許請求の範囲】
【請求項１】
ブロックインタリーブ方式のフォーマットで受け取った画像データを格納するための方法であって、
画像データの第１最小符号化単位を第１メモリに格納するステップと、
前記第１最小符号化単位の画像データを画素にグループ化するステップと、
グループ化された画像データを第２メモリに画像データの第２最小符号化単位として格納するステップとを含む方法。
【請求項２】
前記第１最小符号化単位は第１色フォーマットの画像データを含み、前記第２最小符号化単位として格納するために画像データを前記第１色フォーマットから第２色フォーマットに変換するステップをさらに含む、請求項１に記載の方法。
【請求項３】
第２最小符号化単位は２個の隅の画素PX,YとPX+N,Y+Nで定義され、ここでNは整数で、X及びYは前記画素の２次元座標を表わしており、前記格納のステップは、nは順番にゼロからNまでの範囲の整数であるとして、画素PX,YからPX+n,Yを格納し、さらにその後、mは順番にゼロからNまでの範囲の整数であるとして、画素PX,Y+1からPX+m,Y+1を格納するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記第１最小符号化単位を格納するステップの前に画像データを次元変換するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記方法は集積回路の中で実行され、グループ化された画像データを第２メモリに格納する前記ステップは前記集積回路の外にある第２メモリに画像データを格納することを含む、請求項１に記載の方法。
【請求項６】
前記第１メモリ及び前記第２メモリは別個のものである、請求項１に記載の方法。
【請求項７】
ブロックインタリーブ方式のフォーマットで受け取った画像データを格納する方法を実行するために機械が実行可能な命令プログラムを実装している機械可読媒体であって、前記方法が、
画像データの第１最小符号化単位を第１メモリに格納するステップと、
前記第１最小符号化単位の画像データを画素にグループ化するステップと、
グループ化された画像データを第２メモリに画像データの第２最小符号化単位として格納するステップとを含む、機械可読媒体。
【請求項８】
前記第１最小符号化単位は第１色フォーマットの画像データを含み、前記方法が前記第２最小符号化単位として格納するために画像データを前記第１色フォーマットから第２色フォーマットに変換するステップをさらに含む、請求項７に記載の媒体。
【請求項９】
第２最小符号化単位は２個の隅の画素PX,YとPX+N,Y+Nで定義され、ここでNは整数で、X及びYは前記画素の２次元座標を表わしており、前記格納のステップは、nは順番にゼロからNまでの範囲の整数であるとして、画素PX,YからPX+n,Yを格納し、さらにその後、mは順番にゼロからNまでの範囲の整数であるとして、画素PX,Y+1からPX+m,Y+1を格納するステップをさらに含む、請求項７に記載の媒体。
【請求項１０】
前記方法が前記第１最小符号化単位を格納するステップの前に画像データを次元変換するステップをさらに含む、請求項７に記載の媒体。
【請求項１１】
前記方法は集積回路の中で実行され、グループ化された画像データを第２メモリに格納する前記ステップは前記集積回路の外にある第２メモリに画像データを格納することを含む、請求項７に記載の媒体。
【請求項１２】
前記第１メモリ及び前記第２メモリは別個のものである、請求項７に記載の方法。
【請求項１３】
ブロックインタリーブ方式のフォーマットで受け取った画像データを格納するための装置であって、
画像データの第１最小符号化単位を格納するための第１メモリと、
画像データの第２最小符号化単位を格納するための第２メモリと、
第１メモリの画像データを画素にグループ化し、そのグループ化された画像データを第２メモリに第２最小符号化単位として格納するようになっているデバイスとを含む装置。
【請求項１４】
前記第１最小符号化単位は第１色フォーマットの画像データを含み、デバイスはさらに前記第２最小符号化単位として格納するために画像データを前記第１色フォーマットから第２色フォーマットに変換するようになっている、請求項１３に記載の装置。
【請求項１５】
第２最小符号化単位は２個の隅の画素PX,YとPX+N,Y+Nで定義され、ここでNは整数で、X及びYは前記画素の２次元座標を表わしており、前記デバイスはさらに、nは順番にゼロからNまでの範囲の整数であるとして、画素PX,YからPX+n,Yを格納し、さらにその後、mは順番にゼロからNまでの範囲の整数であるとして、画素PX,Y+1からPX+m,Y+1を格納するようになっている、請求項１３に記載の装置。
【請求項１６】
第１最小符号化単位を第１メモリに格納すると共に、画像を次元変換するようになっている次元変換デバイスをさらに含む、請求項１３に記載の装置。
【請求項１７】
前記第１メモリ及び前記デバイスは集積回路の中に設けられているが、第２メモリはオフチップであり、前記デバイスはさらにグループ化された画像データを第２メモリに格納するようになっているインタフェースデバイスにグループ化された画像データを提供するようになっている、請求項１３に記載の装置。
【請求項１８】
ブロックインタリーブ方式のフォーマットで受け取った画像データを格納するためのコンピュータシステムであって、
中央処理装置と、
表示装置と、
グラフィックスコントローラとを備え、グラフィックスコントローラは、
画像データの第１最小符号化単位を格納するための第１メモリと、
画像データの第２最小符号化単位を格納するための第２メモリと、
第１メモリの画像データを画素にグループ化し、そのグループ化された画像データを第２メモリに第２最小符号化単位として格納するようになっているデバイスとを含む、コンピュータシステム。
【請求項１９】
前記第１最小符号化単位は第１色フォーマットの画像データを含み、デバイスはさらに前記第２最小符号化単位として格納するために画像データを前記第１色フォーマットから第２色フォーマットに変換するようになっている、請求項１８に記載のコンピュータシステム。
【請求項２０】
第２最小符号化単位は２個の隅の画素PX,YとPX+N,Y+Nで定義され、ここでNは整数で、X及びYは前記画素の２次元座標を表わしており、前記デバイスはさらに、nは順番にゼロからNまでの範囲の整数であるとして、画素PX,YからPX+n,Yを格納し、さらにその後、mは順番にゼロからNまでの範囲の整数であるとして、画素PX,Y+1からPX+m,Y+1を格納するようになっている、請求項１８に記載のコンピュータシステム。
【請求項２１】
第１最小符号化単位を第１メモリに格納すると共に、画像を次元変換するようになっている次元変換デバイスをさらに含む、請求項１８に記載のコンピュータシステム。
【請求項２２】
前記第１メモリ及び前記デバイスは集積回路の中に設けられている一方、第２メモリはオフチップであり、前記デバイスはさらにグループ化された画像データを第２メモリに格納するようになっているインタフェースデバイスにグループ化された画像データを提供するようになっている、請求項１８に記載のコンピュータシステム。
【請求項２３】
前記第２メモリは前記表示デバイスの中に設けられている、請求項２２に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的には画像処理に関し、より具体的にはブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するための方法及び装置に関する発明である。
【背景技術】
【０００２】
今日では幅広いデバイスに「コンピュータシステム」という表現は用いることができる。この表現には、メインフレーム及びパーソナルコンピュータだけでなく、パーソナルデジタルアシスタントや携帯電話といった電池を電源とするコンピュータシステムも含まれる。コンピュータシステムにおいて、CPUをCRTやLCDといった表示装置と接続するのにグラフィックスコントローラが広く使用されている。CPUが表示のための画像データ処理に関する一定の専用機能を実行しなくていいようにグラフィックスコントローラがそうした機能を実行する。例えば、グラフィックスコントローラは画像データを解凍するための回路機構だけでなく、そうしたデータを格納するための埋め込みメモリも含んでいることがある。
【０００３】
表示装置はラスタ順に並んだ画像データを受け取り、ビュー可能なフォーマットで描画する。ラスタ順は配列の一番上の行の一番左の画素から始まり、画素毎に左から右に進み、一番上の行の終わりまで来ると２行目に進み、再び一番左の画素から始まる。このようにして最後の行の終わりに達するまで下に向かって一行ずつ逐次的に進み続ける。
【０００４】
表示装置において、画像は「画素」として知られる小さな離散要素の配列（フレームと呼ばれることが多い）から形成されている。但し、この表現には別の意味がある：明度(brightness）や色といった表示されている画素の属性を定義するのに使用される画像データの要素のことを画素と呼ぶ。例えば、デジタルカラー画像において、画素は、ある色モデルによって画素を定義する２４ビットワードを合わせて形成する８ビット成分のトリプレットから構成されているのが普通である。色モデルはある色域の範囲内で個々の色を指定するための方法で、３次元デカルト座標系（x, y, z）によって定義される。LCD又はCRTに表示可能な色域を定義するのに一般にRGBモデルが使われる。RGBモデルにおいて、各原色（赤・緑・青）は軸を表わし、各軸に沿ってある値が加算されて望みの色が生成される。同様に、表示装置の画素には、１つの原色を生み出すために一つずつ、３つの要素があり、成分毎にある値が結合されて望みの色をもつ表示画素が生成される。デジタルのグレースケール画像では、単一８ビット成分が各画素を定義する。
【０００５】
画像データは相当な記憶域と伝送容量を必要とする。例えば、２４ビット画素からなる５１２×５１２の単一カラー画像を考えてみよう。この画像は７８６Kバイトのメモリを必要とし、毎秒１２８Kの伝送速度で送信に４８秒かかる。メモリは比較的に安価になり、高速なデータ伝送速度が普通になってきているのは確かにそうだけれども、画像記憶容量及び伝送バンド幅に対する要求は増え続けている。さらに、大型メモリと高速プロセッサによって電池を電源とするコンピュータシステムの限りある資源にかかるエネルギー需要が増す。この問題の一つの解法は、格納又は伝送する前に画像データを圧縮することである。Joint Photographic Experts Group（JPEG）は静止画像を圧縮する人気のある方法を開発した。JPEG符号化方法を用いると、５１２×５１２のカラー画像を、表示したときに目に見える欠陥を画像に生じることなく、（圧縮率及び特定の画像のビジュアルプロパティいかんにより）サイズがわずか４０〜８０Kバイトとなり得るJPEGファイルに圧縮することができる。
【０００６】
カラー画像のJPEG符号化の前に、画素をRGB色モデルからYUVモデルに変換するのが普通である。さらに、カラーのソース画像は成分画像、つまりY画像、U画像、V画像に分離される。（言うまでもなく、ソース画像がグレースケール画像ならば、これらの画像は一つの成分しかもっていないので、このステップは不要である。）
【０００７】
JPEG標準は圧縮（又は符号化）プロセスの１ステップとして順方向離散コサイン変換（DCT）を用い、復号化ステップの一部として逆DCTを用いる。画像において、画素とその成分は等しく間を置いた間隔で分布されている。オーディオ信号を等間隔の時間間隔でサンプリングして振幅対時間のグラフで表現できるように、画素成分を明度といったビジュアル信号のサンプルとみなし、振幅対距離のグラフにプロットすることができる。オーディオ信号は時間周波数をもつ。ビジュアル信号は空間周波数をもつ。さらに、フーリエ変換を用いてオーディオ信号を時間領域から周波数領域に写像できるように、順方向DCTを用いてビジュアル信号を空間領域から周波数領域に写像すすることができる。人間の聴覚系はオーディオ信号の中の一定周波数成分を認知できないことが多い。同様に、人間の視覚系はビジュアル信号の中の一定の周波数成分を認知できないことが多い。JPEG符号化は認知不能な成分を表わすのに必要なデータを放棄して、データ量を減らすことができることを認識している。
【０００８】
JPEG標準によれば、DCTで符号化されたデータ単位の最小グループが最小符号化単位（MCU: minimum coded unit）で、YUV画像の３又は４ブロックとグレースケール画像の１ブロックとから構成される。「ブロック」は「サンプル」の８×８配列で、サンプルは成分を示す２次元配列の中の１つの要素である。JPEG圧縮には各成分画像の全てのサンプルを選択して構わない。この場合、YUV画像のMCUは、３ブロック（成分毎に１ブロック）からなる。しかし、Uブロック及びVブロックのサンプルの部分集合が圧縮のために選択されるのが普通である。このステップはクロマサブサンプリングと呼ばれることが多い。例えば、圧縮のためにU成分及びV成分のサンプルの５０％か２５％しか選択（クロマサブサンプリング）されないことがある。こういった場合、MCUは４ブロックと６ブロックそれぞれからなる。「サンプリングフォーマット」という表現はクロマサブサンプリングの様々なタイプ間で区別をつけるために用いられる。典型的なサンプリングフォーマットは４：４：４、４：２：２、４：２：０、４：１：１である。以下にさらに説明する。各MCUのブロックは、例えば、Y0U0V0といったように順序付けされた順番でグループにまとめられる。下付け文字はブロックを示す。MCUは圧縮される前に互い違いの又は「インタリーブ配置の」順番に並べられるが、このデータフォーマットは「ブロックインタリーブ方式」と呼ばれる。
【０００９】
JPEGファイルは受け取られると、CODEC（コンプレッサ／デコンプレッサ）として知られているロジックの専用ブロックによって復号化されるのが普通である。復号化プロセスからの出力はブロックインタリーブ方式の画像データである。CODECは多数のいろいろ異なるコンピュータシステムで機能するようになっているから、ブロックインタリーブ方式画像データ以外のフォーマットで画像データを出力するように設計されていない。但し、表示装置はブロックインタリーブ方式の画像データを受け取るようになっていない。むしろ、表示装置は画素がラスタ順に並んでいるものと考える。さらに、サイズ調整や色空間変換といった、画素が表示装置に供給される前にグラフィックスコントローラによって行なわれる操作が、ラスタ配列になった画素に対して行なわれるようになっている。
【００１０】
画像データに操作を行ない、ラスタ配列になった画素として表示装置に提供できる順序で、CODECの出力、つまりブロックインタリーブ方式の画像データは、一般にラインバッファと呼ばれるメモリにブロックとして格納されるのが普通である。ある画素の画像データが必要になると、ラインバッファの散在した場所に格納されているそれぞれの成分ブロックから３個のサンプルがフェッチされる。サンプルは画素のアセンブルされ、処理されて、普通はディスプレイ又はフレームバッファと呼ばれるメモリにラスタ順に格納される。画素は次に、フレームバッファから順次フェッチされ、表示装置に供給される。
【００１１】
ラインバッファは画像の少なくとも１行の画素を保持できるだけの大きさがなければならない。その理由は、グラフィックスコントローラはラスタ配列になった画素に対して操作を行なうように設計されているからである。さらに、ラインバッファは概して少なくとも２行の表示行を保持できる程度の大きさがなければならない。その理由は、「ピンポン」スキームで１行がCODECによって格納されている間にもう１行がラインバッファから読み出されるからである。JPEG復号化されたブロックインタリーブ方式のデータは８×８のブロックからなるサンプルから構成されているから、単に１行を格納することはできない。そうではなく、１行をアセンブルするのに必要なブロック数を格納しなければならない。これは、８行を格納できるブロック数と同じ数である。言い換えれば、１行を格納するには、８行を保持できる大きさのラインバッファでなければならない。ピンポン方式で交互に一行が読み出されている間にもう一行を格納するには、ラインバッファは１６行を格納できるだけの大きさがなければならない。
【００１２】
【特許文献１】米国特許第6,212,300号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ラインバッファは少なくとも１６行分の画像データを保持できなければならないので、相当なメモリ量を必要とする。さらに、グラフィックスコントローラに埋め込まれているラインバッファのサイズは、集積回路（IC）を設計する時点で予め決められている。JPEG符号化が可能なソース画像の最大幅はラインバッファのサイズによって限定されるから、サイズが異なるソース画像に対応できる柔軟性を提供できる唯一の方法は予想される最大画像幅を保持できる大きさのラインバッファを用意することである。
【００１４】
公知のコンピュータシステムでは大型のラインバッファを必要とする上に、大型のフレームバッファもなければならない。画像全体を格納できる大きさでなければならない。フレームバッファはグラフィックスコントローラに埋め込まれることが多いから、ICの大きな部分がフレームバッファ専用になることがある。しかし、これはメモリの無駄遣いになる。コンピュータシステムによっては、表示装置自体が画像を格納するためのメモリを含んでいる。こうしたシステムにおいて、グラフィックスコントローラのフレームバッファは重複になる。
【００１５】
メモリは物理的空間及び必要とする電力から考えると高価なものである。こうした理由から、ラインバッファに要するメモリ量を減らすことが望ましい。さらに、幅の狭い画像を処理することが多いけれども予想される最大画像幅に対応できる大きさのラインバッファを有するICを作成しなくても、様々なサイズのJPEG符号化された画像を解凍する柔軟性を提供できるのが好ましい。さらに、可能な限りグラフィックスコントローラに埋め込まれたフレームバッファを不要するのが好ましい。そこで、ブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するための方法及び装置に対するニーズがある。
【課題を解決するための手段】
【００１６】
発明は、ブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するための方法並びに装置に関する。
【００１７】
この方法は、（a）画像データの第１最小符号化単位を第１メモリに格納し、（b）第１最小符号化単位の画像データを画素にグループ化し、（c）グループ化された画像データを画像データの第２最小符号化単位として第２メモリに格納するステップを有する。方法は、画像データを第１色フォーマットから第２色フォーマットに変換するステップを含んでいるのが好ましい。さらに、第１最小符号化単位を格納するステップは画像を次元変換するステップを含んでいるのが好ましい。この方法は集積回路の中で実行可能で、グループ化された画像データを第２メモリに格納するステップは集積回路とは別のところにあるオフチップの第２メモリに画像データを格納することを含んでいても構わない。
【００１８】
装置は第１メモリ、第２メモリ、及びデバイスからなる。第１メモリは画像データの第１最小符号化単位を格納するためのものである。第２メモリは画像データの第２最小符号化単位を格納するためのものである。デバイスは第１メモリに格納された画像データを画素にグループ化し、そのグループ化された画像データを第２メモリに第２最小符号化単位として格納する。第１最小符号化単位は第１色フォーマットの画像データを含み、デバイスは第２最小符号化単位として格納するために画像データを第１色フォーマットから第２色フォーマットに変換するのが好ましい。さらに、装置は画像を次元変換するための次元変換デバイスを含んでいるのが好ましい。第１メモリとデバイスは集積回路の中に提供され、第２メモリはオフチップで、好ましくは表示装置の中に、提供されるのが好ましい。
【００１９】
発明の目的、構成、作用効果については、添付の図面と共に、以下に詳細に述べる発明の説明を考慮すれば、容易に理解できるようになる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態を図面に基づいて説明する。
【実施例１】
【００２１】
発明は、ブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するための方法並びに装置に関するものである。本明細書は、添付の図面に示した現時点で好適な発明の実施例を例にあげて説明している。可能な限り、図面及び説明において、同じ又は類似した部品、ブロック、ステップには同じ参照番号を用いている。
【００２２】
図１に示すのは、グラフィックスコントローラ２２がCPU２４及びLCD４０に接続されたコンピュータシステム２０のブロック図である。図１は発明の一つの好適な文脈にしかすぎない。グラフィックスコントローラ２２は、CPU２４及びCODEC２８から受け取ったデータをバッファリングするために使用されるFIFOメモリ２６を含んでいる。さらに、グラフィックスコントローラ２２には埋め込みメモリ２９があり、その一部はラインバッファ３０としてとってあり、残りはフレームバッファ３６としてとってある。グラフィックスコントローラ２２は、次元変換（"DT"）回路３２、色空間変換（"CSC"）回路３４、LCDインタフェース（"I/F"）回路３８も含んでいる。
【００２３】
コンピュータシステム２０の動作を説明する前に、更なる背景として、次元変換回路３２が実行する変換操作と画像データのフォーマットについて説明する。
【００２４】
図２に、表示装置に表示される前にフレームに実施できる一つのタイプの次元変換操作を示す。これはクロッピング操作である。オリジナルフレーム５０とクロップされたフレーム５２を図２に示した。各フレームは複数の画素５４からなり、各画素は正方形で表わされている。ある特定の画素５４の座標位置はフレームの上辺と左辺に沿った番号で与えられる。画像をクロップする量はクロッピングパラメータ集合によって決められる。具体的には、クロッピングパラメータはどの領域をオリジナルフレーム５０から削除するかを定義し、座標値で指定することができる。例えば、クロッピングパラメータを水平方向及び垂直方向の開始画素と停止画素とすることができる。例えば、オリジナルフレーム５０で画素４個分の距離をフレームの上下左右から削除しようとする場合には、開始画素の座標は（４，４）で、停止画素の座標は（１５、１５）である。
【００２５】
図３に、表示される前にフレームに実施できる別の次元変換操作を示す。図３に表示したのはスケーリング操作である。画像をスケール処理する量は倍率によって決められる。例えば、クロップされたフレーム５２をオリジナルサイズの四分の一に縮小しようとする場合には、倍率は二分の一である。数あるアルゴリズムのどれを用いて画像をスケール処理して構わない。倍率「二分の一」を用いる単純な線形アルゴリズムに従って画像をスケール処理するとき、一行置きに画素５４が放棄されると共に一つの行内で画素が一つ置きに放棄される。この線形アルゴリズムと倍率「二分の一」を用いてクロップされたフレーム５２をスケール処理すると、クロップ及びスケール処理されたフレーム５６が生まれる。画素５４の行の写像と放棄されない行内の画素を示すために、図３にはフレーム５２内の２個の模式的画素の座標（［２，９］及び［１０，３］）とスケール処理されたフレーム５６内のこれらの画素の位置も表示している。フレームをクロップするかスケール処理するかどちらかによって、或いはその両方によってフレームのサイズを変える処理のことをここでは「次元変換」と呼んでいる。この表現には、クロッピング、スケーリングのほか、当技術分野で知られている或いはこれから知られるようになる類似の処理のためのアルゴリズムが含まれるものと考える。
【００２６】
図４に、発明の文脈を理解する一助となると考える画素のフレームを示す。述べたように、表示装置上のRGB画素の属性を定義する数値を３バイトのワードで表わすことができる。１バイトが各色成分を表わす。図４に、３個の成分画像７４を示している。すなわち、画素のR成分を全てRフレーム内のそれぞれの座標位置に示し、G成分を全てGフレーム内に示し、B成分を全てBフレーム内に示している。図５に示すような成分画像は「画素平面」と呼ばれることがある。画像をYUVといった他の色モデルで表現して同じような画素平面を形成することができる。
【００２７】
図５は、JPEGファイルの生成の態様を示すブロック図である。概して、JPEGファイルの生成はRGBフォーマットのソース画像７０から始まる。第１ステップ７２（"SEP"）はRGB画像をR, G, Bの成分画像７４に分離する。成分画像７４は図４の画素平面に対応しており、色成分毎に１個の画素平面７４が生成される。第２ステップ７６（"CSC"）はR, G, Bの画素平面７４をY, U, Vの画素平面７８に変換する。
【００２８】
クロマサブサンプリングのステップ８０（"SAM"）で、UとVの画素平面７８を所定のサンプリングフォーマットに従ってクロマサブサンプリングする。普通には、サンプリングフォーマットは４：４：４、４：２：２、４：１：１か、４：２：０である。４：４：４のサンプリングフォーマットでは、Y、U、Vの各サンプルがY、U、Vの画素平面からそれぞれ圧縮のために選択される。言い換えれば、サンプリングフォーマットが４：４：４の場合には、U、Vのサンプルが１００％選択される。サンプリングフォーマットが４：２：２の場合には、ここでもYのサンプルは全て選択されるが、U、Vのサンプルは５０％しか選択されない。
【００２９】
図６a〜cは、３つの模式的水平方向サンプリングフォーマットに従ってクロマサブサンプリングするステップ８０（"SAM"）でサンプルがどのように選択されるかを描いている。各ブロック１１０はY、U又はVのサンプルの８×８行列である。JPEGプロセスで、必ずN×N（正方形）行列であるブロックからサンプルが選択される。各サンプルはブロック内の正方形で表わされ、正方形内の丸はサンプルが選択されることを示している。中に丸が入っていない正方形は選択されない、つまり放棄される。各ブロックで、各行は４個の連続するサンプルからなる２個のグループGから構成される。
【００３０】
図６aで、グループGの４個のサンプルは全て選択されている。図６bでは、各グループGの最初と３番目のサンプルが選択されている。そして、図６cでは、各グループの最初のサンプルだけが選択されている。ブロックは８×８だから、サンプル集合１１４と１１６は正方形ブロックを形成できる大きさではない。これらの集合は、８×８のブロックを生成するために同じタイプの成分の同じような集合と結合される。
【００３１】
図７a〜cは、ソース画像６０の成分ブロック６２への写像を示している。図７aに示すのはソース画像６０である。画像６０は画素P0からP24を有する２４個の８×８のブロックからなる。図７bで、サンプルは４：４：４のサンプリングフォーマットを用いて選択されている。（破線で示したように）成分ブロックY0、U0、V0が画素ブロックP0とP1からそれぞれ生成される。図７cで、サンプルは４：２：２のサンプリングフォーマットを用いて選択されている。成分ブロックY0及びY1が画素ブロックP0とP1からそれぞれ生成される。これらのブロックが一緒に一つの８×８のUサンプルのブロックと一つの８×８のVサンプルのブロック、つまりU0及びV0を生成する。図７dで、サンプルは４：１：１のサンプリングフォーマットを用いて選択されている。画素ブロックP0〜P3からYの成分ブロックが４個生成される。しかし、これら４個の画素ブロックからU成分とV成分は各々１ブロックしか生成されない。順方向DCTで符号化された最小のデータ単位グループがMCUである。これらの図で、ブロック６２は指定されたサンプリングフォーマットのMCUを形成している。
【００３２】
再び図５において、各ブロックはステップ９６（"ENC"）でJPEG符号化されている。すなわち、各ブロックはJPEG方法に従って別々に圧縮されている。ステップ９８（"SAA"）で、画素成分の圧縮ブロックが選択されJPEGファイル１００に配列される。
【００３３】
図８にJPEGファイル１００を示す。JPEGファイル１００で、画像データは４：２：２のサンプリングフォーマットに従ってブロックインタリーブ配置になっている。JPEGファイル１００は、Y画素平面９０から２個のシーケンシャルブロックと、その後にU及びVの画素平面９２、９４からそれぞれ１ブロック続くという構成になっている。全ての平面から全てのブロックが選択され終わるまでこのパターンが繰り返される。異なるサンプリングフォーマットを採用する場合には、それに応じてブロックインタリーブ方式のフォーマットを修正変更することになる。
【００３４】
図１は、画像データがJPEGファイルフォーマットから表示できる状態のラスタ配列画素になるまでの経路を示している。操作時、CPU２４はFIFO２６にJPEGファイルを書き込む。CPU２４は例証のためのデバイスであり、JPEGファイルはカメラ、ネットワークインタフェースモジュール、メモリコントローラや、その他のデータ転送機能をもつデバイスといった別のデバイスによって書き込まれても構わない。CODEC２８はFIFO２６にアクセスし、逆DCTベースのプロセスを用いてJPEGファイルを解凍して、復号化されたブロックインタリーブ方式の画像データをラインバッファ９０に書き込む。
【００３５】
図９a〜cは、ブロックインタリーブ方式の画像データをラインバッファ３０に格納する公知の方法の一つを示している。図９a〜cは、４：４：４、４：２：２、４：１：１のサンプリングフォーマットに従って生成されたMCUをどのようにしてラインバッファに格納できるかを示している。図において、ラインバッファ３０の前半にはYサンプルが格納され、後半にUとVのブロックが格納されている。ラインバッファの各半分はさらに上下の領域R1及びR2に分割されている。これらの領域は、ピンポン方式で交互に一つの行のブロックが読み出されている間に別の行のブロックを格納するために使用される。次元変換回路３２がその動作を始めるためには完全な一行の画素を必要とする。図９a〜cに表示していないけれども、CODECは完全な一行の画素を形成できる程度のブロック数をラインバッファに格納する。例えば、幅５１２の表示は完全な一行の画素を形成するのに６４のMCUを必要とする。
【００３６】
次元変換回路３２はラインバッファ３０に格納されたサンプルを読み取り、そのサンプルを画素にアセンブルし、クロッピング又はスケーリングといった所望する次元変換処理を行なった後、画素を色空間変換回路３４に送る。ある画素を得るには、次元変換回路３２はメモリの散在した場所からサンプルをフェッチしなければならない。色空間変換回路３４は画素データをRGBフォーマットに変換して、ラスタ順にフレームバッファ３６に格納する。LCDインタフェース回路３８はフレームバッファ３６から画素を読み取って、表示のために表示装置４０にラスタ順で送る。表示装置４０をLCDとして示しているが、CRT又はビューイングできるように画像データを描画する類似のデバイスを代わりに使用して構わない。
【００３７】
図１０に示すのは、発明の原理に基づいたグラフィックスコントローラ１２２を有するコンピュータシステム１２０のブロック図である。グラフィックスコントローラ１２２は構造的にはグラフィックスコントローラ２２に多少似ている。しかし、ラインバッファ３０の代わりにMCUバッファ１３０が使用されている。さらに、データ経路を変更している。次元変換回路１３２はCODECから復号化されたブロックインタリーブ方式の画像データを受け取り、サイズ変更された画像データをMCUバッファ１３０に格納する。さらに、色空間変換器１３４は画像データをMCUバッファ１３０からフェッチする。そのために、メモリ１２９がメモリ２９に比べ実質的に小さくなっている。
【００３８】
次元変換回路１３２はJPEG復号化されたブロックインタリーブ方式のデータによって表わされた画像をその画像データをアンダーサンプリングすることによってクロップ又はスケール処理する。CODEC２８はブロックインタリーブ方式フォーマットのY、U、V画素成分を次元変換回路１３２に書き込む。画素単位で次元変換処理を行なう公知の次元変換回路３２と違って、次元変換回路１３２はサンプル単位で次元変換処理を行なう。
【００３９】
図１１に、次元変換回路１３２をはるかに詳細に示す。DT回路１３２にはデータ受信器があり、好適な実施例においてデータ受信器にはデータ経路１４０と書き込み経路１４２とがある。データ経路１４０は画像データのストリームを受け取り、MCUバッファ１３０に提供するためのものである。データ経路１４０は１バイト幅が好ましいが、どんな幅でも構わない。データ経路１４０はレジスタなどデータを一時的に格納するためのしかるべきメモリ構造体をオプションで含んでいても構わない。DT回路にはデータ経路１４０に新たなバイトの（或いは他の単位の）画像データを出力したという知らせをCODEC２８から受け取るための書き込み経路１４２も含まれている。書き込み経路はイネーブルスイッチ１５０を介してMCUバッファ１３０に接続されている。カウンタ１４４はバイトカウンタが好ましく、書き込み経路１４２に接続され、入ってくるサンプルを数えるのに使用される。カウンタ１４４はサンプル毎にシーケンス番号を割り当てる。シーケンス番号によってDT回路１３２はどのタイプのサンプルを受け取るか判定することが可能になるだけでなく、サンプルと関連付けられた画素の行と列（x, y）の座標位置を判定することが可能になる。例えば、６４まで数えると、DT回路１３２は一つのタイプの成分のサンプルの８×８ブロック全体を受け取ったことを認識する。次元変換回路１３２は、６４に達したという事実も利用して、次の成分、すなわち、６５番目のバイトは別のタイプの成分であると判定する。
【００４０】
次元変換回路１３２には比較器１４６も含まれている。比較器１４６はカウンタ１４４の出力を受け取り、クロッピングやスケーリングといった次元変換操作を実行するのに各サンプルの算出（x, y）座標値を用いる。クロッピング及びスケーリング操作を定義するのに使用されるパラメータはパラメータメモリ１４８に格納されるのが好ましい。サンプルのシーケンス番号、つまり、等価（x, y）座標値がしかるべき単数又は複数のパラメータと比較される。（パラメータはユーザによる次元変換操作より前に直接又は間接に選択されるのが一般的である。）比較結果がサンプルと関連付けられた画素は次元変換された画素に含まれることを示していれば、比較器は書き込み経路１４２をイネーブルにする信号１４７を生成する。それに対し、画素が画像に含まれない場合、イネーブル信号は生成されない。イネーブル信号によってイネーブルスイッチ１５０が閉じて、次に書き込み信号がMCUバッファに渡される。MCUバッファは書き込み信号を受け取ると、データ経路１４０に乗っているデータを格納する。MCUバッファは書き込み信号を受け取らないと、データ経路上のデータを格納しないので、その場合次のサンプルで上書きされることがある。
【００４１】
書き込みイネーブル信号１４７及びスイッチ１５０は様々なやり方でインプリメントできる。イネーブル信号及びスイッチは一つの好適な実施例ではあるけれども、発明はこのインプリメンテーションに限定されるものでない。カウンタ１４４が提供したシーケンス番号（又は座標値）を所定の次元変換パラメータと比較した結果に基づいてサンプルをMCUバッファに格納させる又は格納させないハードウェア、ソフトウェア、又はファームウェアを考えている。
【００４２】
色空間変換器１３４はMCUバッファ１３０からサンプルをフェッチし（図１０）、それを画素にグループ化し、画像データをYUVからRGBに色変換する。色空間変換器１３４は、MCUバッファの散在した場所に格納されているY、U、V成分ブロックからサンプルをフェッチするためのロジックを含んでいるという点で先行技術の回路３４とは異なる。タイミング要件しだいで、メモリ１２９をSRAMとして提供するのが有効なことがある。その理由は、このタイプのメモリは高速アクセスを可能にするからである。サンプルをフェッチし、サンプルを画素にグループ化して、画像データを色変換した後、色空間変換器１３４はフレームバッファ３６に、好ましくはラスタ順で、画素を格納する。
【００４３】
要約すれば、グラフィックスコントローラ１２２はブロックインタリーブ方式の画像データのストリームを受け取り、次元変換し、色空間変換し、MCUバッファを用いて画素をフレームバッファなどメモリに格納する。こうすると、MCUバッファはラインバッファに比べかなり小さいから、物理的スペース及びパワーの節約になるだけでなく、グラフィックスコントローラ１２２はどんなサイズのJPRG画像でも復号化できる柔軟性を提供する。
【００４４】
発明は、ブロックインタリーブ方式の画像データのストリームを受け取り、次元変換し、色空間変換し、MCUバッファを用いて画素をフレームバッファなどメモリに格納するための方法にも関する。この方法は、ハードウェア、ファームウェア、ソフトウェア、又はそうした実施例の組合せで実施することができる。さらに別の実施例において、この方法を命令プログラムとして実施し、機械可読媒体に格納することもできる。コンピュータシステムなど機械は媒体を読み、この方法を実行するための命令を実行する。
【００４５】
この方法を実行する機械は画像データの第１最小符号化単位をMCUバッファなどメモリに格納する。機械は画像データを格納するときにそのデータを次元変換することができる。機械は最小符号化単位の画像データを画素にグループ化する。この方法を実行する機械は一般的に、画素を定義するのにどのサンプルが必要か判定してからそうしたサンプルを読み出すことによってデータをグループ化する。機械はグループ化された画像データを別のメモリに格納する。別のメモリとは一般的にフレームバッファで、グラフィックスコントローラに埋め込むことができる。その別のメモリに画像データを格納する前に、機械はデータを第１から第２の色フォーマットに変換するのが好ましい。
【００４６】
図１２に示すのは、ブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するためのグラフィックスコントローラ２２２の別の実施例である。この実施例において、グラフィックスコントローラ２２２にはフレームバッファがない。色空間変換器２３４は画素を直接LCDインタフェース２３８に送り、LCDインタフェースは（ラスタ配列になった画素ではなく）画素のブロックを表示装置２４０に書き込み。表示装置２４０は、メモリ２４２を備えていないという点で、表示装置４０とは異なる。フレームメモリが削除されているから、メモリ２２９はメモリ１２９に比べ実質的に小さくなっている。
【００４７】
表示装置２４０のメモリ２４２は画素データの１個のフレーム全体を格納する。表示装置２４０はその表示画面を自己リフレッシュするためのリフレッシュ回路機構を含んでいる。この回路機構は、表示画面を更新するために、メモリ２４２に格納されている画素データを読み取る。メモリ２４２の画素はラスタ順に並んでいる。メモリ２４２は表示装置２４０に埋め込まれているのが好ましいが、グラフィックスコントローラ２２２及び表示装置２４０とは別のところにあっても構わない。
【００４８】
グラフィックスコントローラ２２２は、表示装置２４０の表示画面のために規定されたリフレッシュタイミング要件とは無関係にメモリ２４２を更新することができる。さらに、グラフィックスコントローラ２２２は１個のフレーム全体を或いはその一部を用いてメモリ２４２を更新することができる。したがって、フレームからフレームで画像の一部分だけが変化する場合には、グラフィックスコントローラは変化する部分だけを更新すればいい。グラフィックスコントローラがメモリ２４２を更新するのに用いる手順は表示装置４０をリフレッシュするためのすでに知られている手順とは異なる。
【００４９】
従来の方法では、表示装置４０を更新する際、公知のグラフィックスコントローラ２２は開始アドレスと終止アドレスを表示装置４０に送る。送られた開始アドレスはフレームの最上行の一番左の画素のアドレスである。終止アドレスはフレームの最後の行の一番右の画素のアドレスである。LCDインタフェース３８が次に、フレームバッファ３６に格納されている画素をラスタ順に読み取って、各画素を表示装置４０に書き込む。LCDインタフェース３８はそのタイミング要件に合わせて画素を表示装置に書き込む。新たな各画素を受け取ると、表示装置４０は画素を表示画面の増分するアドレスに送る。
【００５０】
公知のグラフィックスコントローラ２２と同じように、グラフィックスコントローラ２２２のLCDインタフェース２３８も開始アドレスと終止アドレスを表示装置２４０に送る。グラフィックスコントローラ２２２が画素ブロックを送る準備をしている場合、送られているブロックの最上行の一番左の画素のアドレスが開始アドレスである。終止アドレスはそのブロックの最後の行の一番右の画素のアドレスである。LCDインタフェース２３８は画素を色空間変換器２３４から受け取る。画素を受け取ると、それを表示装置２４０に書き込み、表示装置２４０は画素をメモリ２４２に開始アドレスから増分するアドレスに格納する。
【００５１】
図１３に、色空間変換器２３４からLCDインタフェース２３８を介して表示装置２４０に画素が送られる順序を示す。図１３は画素ブロック２５０を例証したものである。各ボックスの中にシーケンス番号を表示したが、各ボックスはブロック内のある特定の座標にある画素を表わしている。表示した画素が送られる順序について次の段落でさらに詳しく説明する。
【００５２】
概して、画素ブロックは、X、Y、Nは整数であるとして、２個の隅の画素PX,YとPX+N,Y+Nで定義することができる。変数X及びYはそれぞれ画像の任意の水平座標及び垂直座標を示している。例えば、図７aに表示した画素ブロックが８×８であると仮定すれば、画素ブロックP8は隅の画素P16,8とP23,15で定義することができる。nは整数であるとして、各画素ブロックは複数の画素PX+n,Y+nを含んでいる。画素ブロックP8は、Xが１５でYが７、nは順番にゼロからN-1までの範囲である。画素ブロックP8はN×Nの行列だから、Nは８とすれば、nは順番に０から７までの範囲である。（ブロック２５０でも、nは順番に０から７までの範囲である。）一般的な専門用語を用いると、画素を送る順序は画素PX,YからPX+n,Yを送り、次に画素PX,Y+1からPX+m,Y+1を送り（mは順番に０から７までの範囲）、行Yが全て送られ終えるまでこのパターンで送り続ける。
【００５３】
例をあげて説明すると、画素０，１，２，３，４，５，６，７が先ず最初に送られる。画素８，９，１０，１１，１２，１３，１４，１５が次に送られる。画素１６，１７，１８，１９，２０，２１，２２，２３がその次に送られる。といった具合に送られ、送られる最後の８画素は５６、５７、５８，５９，６０，６１，６２，６３である。
【００５４】
画素ブロックをメモリ２４２に送った後、グラフィックスコントローラ２２２は別のブロックを送ることができる。グラフィックスコントローラ２２２はこれを表示装置２４０に新たなブロックの開始アドレスと終止アドレスを先ず送ることによって行なう。新たな画素ブロックは画像のどのブロックでも構わない。グラフィックスコントローラ２２２は次にその新たな画素ブロックを表示装置に送る。
【００５５】
図１２に表示されていないけれども、LCDインタフェース２３８には色空間変換器２３８から画素を受け取るための受信器と画素をメモリ２４２に書き込むための送信器が含まれている。
【００５６】
発明は、ブロックインタリーブ方式の画像データのストリームを受け取り、次元変換し、色空間変換し、表示装置のメモリなどメモリにMCUバッファを用いて画素を格納するための方法にも関する。この方法は、ハードウェア、ファームウェア、ソフトウェア、又はそうした実施例の組合せで実施することができる。さらに別の実施例において、この方法を機械可読媒体に格納された命令プログラムに実施することもできる。コンピュータなど機械は媒体を読み、この方法を実行するための命令を実行する。
【００５７】
この方法を実行する機械は画像データの第１最小符号化単位をMCUバッファなどメモリに格納する。機械は画像データを格納するときにそのデータを次元変換することができる。機械は最小符号化単位の画像データを画素にグループ化する。この方法を実行する機械は一般的に、画素を定義するのにどのサンプルが必要か判定してからそうしたサンプルを読み出すことによってデータをグループ化する。機械はグループ化された画像データを別のメモリに格納する。この別のメモリはMCUバッファを保有している集積回路の外にある。その別のメモリは表示装置の表示装置の一部であるのが好ましい。その別のメモリに画像データを格納する前に、機械は第１から第２の色フォーマットにデータを変換するのが好ましい。
【００５８】
発明を４：４：４、４：２：２、４：１：１のサンプリングフォーマットに従ってMCUで例証してきた。但し、発明はこれらの模式的サンプリングフォーマットに限定されるものではない。発明の原理は、４：２：０或いは４：０：０など他のサンプリングフォーマットにも同じように適用可能である。
【００５９】
発明をYUV及びRGBの色フォーマットに関して例証してきた。発明は、CMY、YIQ、又はCIEといった他の色フォーマット又は色モデル、或いはどんな色フォーマット又はモデルの変形版で実施することができる。さらに、発明をグレースケール画像で実施しても構わない。
【００６０】
発明をLCDで例証してきた。発明は、CRT、OLED、プラズマディスプレイ、或いはプリンタやハードコピーの画像を描画するためのその他のデバイスなど、画素で構成されたソース画像を描画するための類似の又は同等のデバイスで実施できることを理解するだろう。
【００６１】
上記の明細書において使用した言葉使いや表現は説明の用語としてであって限定の用語として使用していない。また、表示し説明した構成の均等物或いはその一部を除外するつもりはない。発明の範囲は以下に述べる請求項によってのみ定義並びに限定されるものである。
【図面の簡単な説明】
【００６２】
【図１】JPEGファイルを受信及び復号化し、復号化された画像データを表示できるように処理し、ソース画像を表示するためのコンピュータシステムのブロック図。
【図２】オリジナルフレーム及びクロップされたフレームを示す図。
【図３】図３のクロップされたフレームとスケール処理されたフレームを示す図。
【図４】画素平面(pixel plane）集合としてのフレームをそれぞれ示す図。
【図５】JPEGファイルの作成を例証するブロック図。
【図６】成分画像からサンプルを選択するための３つの模式的方法をそれぞれ示す。
【図７】ソース画像と、３つの模式的サンプリングフォーマットに従ってソース画像からサンプルを選択して形成されたブロックを示す。
【図８】ブロックインタリーブ方式のJPEGファイルを示す。
【図９】第１、第２、第３サンプリングフォーマットに従って作成されたMCUをどのようにラインバッファに格納できるかを示すブロック図。
【図１０】発明の一つの好適な実施例に従って、ブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するためのコンピュータシステムのブロック図。
【図１１】図１０に示した次元変換回路のブロック図。
【図１２】発明の別の好適な実施例に従って、ブロックインタリーブ方式のフォーマットで受け取った画像データをMCUバッファを用いて格納するためのコンピュータシステムのブロック図。
【図１３】サンプルが配列される順序を示すサンプルブロックの図。
【符号の説明】
【００６３】
22  グラフィックスコントローラ
24  CPU
26  FIFO
28  CODEC
29  メモリ
30  ラインバッファ
32  次元変換器
34  色空間変換回路
36  フレームバッファ
38  LCDインタフェース
40  表示装置
100  JPEGファイル
122  グラフィックスコントローラ
130  MCUバッファ
132  次元変換回路
134  色空間変換回路
140  データ
142  書き込み
144  カウンタ
146  比較器
147  イネーブル信号
148  パラメータ
150  イネーブルスイッチ
152  アドレス生成器
222  グラフィックスコントローラ
229  メモリ
234  色空間変換回路
238  LCDインタフェース
240  表示装置
242  メモリ
【図１】
2006014341.tif 000003
【図２】
2006014341.tif 000004
【図３】
2006014341.tif 000005
【図４】
2006014341.tif 000006
【図５】
2006014341.tif 000007
【図６】
2006014341.tif 000008
【図７】
2006014341.tif 000009
【図８】
2006014341.tif 000010
【図９】
2006014341.tif 000011
【図１０】
2006014341.tif 000012
【図１１】
2006014341.tif 000013
【図１２】
2006014341.tif 000014
【図１３】
2006014341.tif 000015