(57)【要約】【課題】  ビットストリーム・フォーマットの読み取りおよび書き込み装置を提供する。【解決手段】  ビット深度がｍビットである画像データを２部分に分割して格納することができる。ｍは２の累乗ではない。第１部分（２００）は、上位側のｎビットであり、ｎは２の累乗である。第２部分（２０４）は、下位側のｋビットであり、ｋ＝ｍ−ｎおよびｋ＜ｎである。所与の画像のｍビット・データは、隣接ブロックとしてビットストリーム内に置かれ、データの終端（２０２）を、ページ境界のような、メモリ境界と位置合わせさせる。第２データ部分は、ビットストリーム内に隣接ブロックとして置く。第１データ部分は、第２データ部分に先行しかつこれに隣接してビットストリーム内に置かれる。パディング（２１２）を行って、画像データの先頭を、メモリの境界と位置合わせすることができる。【選択図】  図２
2004328723.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ情報製品であって、
コンピュータ読み取り可能媒体と、
前記コンピュータ読み取り可能媒体上に格納されているデータであって、コンピュータによって解釈されたときに、ｍビット画像データであって、画像データのフレーム毎に、
前記フレームにおける全画素のｍビット画像データの内上位側ｎビットを、隣接ブロックに含む第１データ部分であって、ｎが整数であり、２の累乗である、第１データ部分と、
前記フレームにおける全画素のｍビット画像データの内下位側ｋビットを、隣接ブロックに含む第２データ部分であって、ｋがｍとｎとの差に等しい、第２データ部分と、
を含む前記のｍビット画像データを、格納するためのビットストリームから成るデータと、
を備え、
前記第１データ部分がメモリ・ページ境界上にて終了し、
前記第２データ部分が先行し、前記ビットストリームにおいて前記第１データ部分と隣接すること、
を特徴とするコンピュータ情報製品。
【請求項２】
請求項１記載のコンピュータ情報製品において、前記ビットストリームは、更に、画像データの各フレームに対応するアルファ情報を備えていること、を特徴とするコンピュータ情報製品。
【請求項３】
請求項２記載のコンピュータ情報製品において、前記アルファ情報は、ｍビットのアルファ情報であって、
前記フレームのｍビット・アルファ情報の内上位側ｎビットを、隣接ブロックに含む第１アルファ部分と、
前記フレームのｍビット・アルファ情報の内下位側ｋビットを、隣接するブロックに含む第２アルファ部分と、
から成ること、を特徴とするコンピュータ情報製品。
【請求項４】
請求項３記載のコンピュータ情報製品において、前記第１アルファ部分がメモリの境界上にて開始すること、を特徴とするコンピュータ情報製品。
【請求項５】
請求項４記載のコンピュータ情報製品において、前記第２アルファ部分は、前記ビットストリームにおいて、前記第１アルファ部分に後続しかつそれと隣接すること、を特徴とするコンピュータ情報製品。
【請求項６】
請求項１記載のコンピュータ情報製品において、ｍは１０に等しく、ｎは８に等しく、ｋは２に等しいこと、を特徴とするコンピュータ情報製品。
【請求項７】
ｍビットの画像・データのビットストリームを読み取る方法であって、前記ビットストリームは、画像データのフレーム毎に、前記フレームにおける全画素のｍビット画像データの内上位側ｎビットを隣接ブロックに含み、ｎが整数であり２の累乗である、第１データ部分と、前記フレームにおける全画素のｍビット画像データの内下位側ｋビットを隣接ブロックに含み、ｋがｍとｎとの差に等しい、第２データ部分とを備え、前記第１データ部分がメモリ・ページ境界上にて終了し、前記第２データ部分が、前記ビットストリームにおいて前記第１データ部分に先行しかつこれと隣接し、前記読み取り方法が、
単一フレームのｎビット表現の画像データにアクセスするステップであって、
前記ビットストリームにおける前記単一フレームのｎビット・データのオフセットおよびサイズを決定するステップと、
前記オフセットを最も近いメモリ境界に切り下げるステップと、
前記サイズを最も近い境界に切り上げるステップと、
前記切り下げたオフセットおよび前記切り上げたサイズを用いて、前記ビットストリーム上で読み取り動作を実行するステップと、
を含む、前記のアクセスするステップ、
を備えたことを特徴とする読み取り方法。
【請求項８】
請求項７記載の方法において、前記ビットストリームは、更に、画像データの各フレームに対応するアルファ情報を備えており、フレームに対する該アルファ情報は、前記ビットストリームにおいて、対応するフレームの前記第１データ部分に後続しかつそれに隣接しており、前記方法が、更に、
前記ビットストリームにおけるｎビット・アルファ情報のオフセットおよびサイズを決定するステップと、
前記サイズを最も近いメモリ境界に切り上げるステップと、
前記オフセットおよび切り上げたサイズを用いて、前記ビットストリーム上で読み取り動作を実行するステップと、
を含むこと、を特徴とする方法。
【請求項９】
請求項７記載の方法であって、更に、追加フレームのｎビット表現の画像データにアクセスするステップであって、
前記ビットストリームにおいて、追加フレーム毎に、前記ｎビット画像データのオフセットおよびサイズを決定するステップと、
前記オフセットを最も近いメモリ境界に切り下げるステップと、
前記サイズを最も近い境界に切り上げるステップと、
各追加フレームに対応して、前記ビットストリーム内における他のデータのオフセットおよびサイズを決定するステップと、
オペレーティング・システムに、散乱／収集動作を用いて、追加フレーム毎の前記他のデータおよび前記ｎビット画像データを含む前記ビットストリームを読み取って、前記他のデータを破棄し、前記ｎビット画像データをメモリ内に保持するように命令するステップと、
を含む、前記のアクセスするステップ、
を備えたこと、を特徴とする方法。
【請求項１０】
コンピュータ・プログラム製品であって、
コンピュータ読み取り可能媒体と、
コンピュータ読み取り可能媒体上に格納されているコンピュータ・プログラム命令であって、コンピュータによって解釈されたときに、ｍビットの画像データのビットストリームを読み取る方法を前記コンピュータに実行するように命令する、コンピュータ・プログラム命令と、
を備え、
前記ビットストリームは、画像データのフレーム毎に、前記フレームにおける全画素のｍビット画像データの内上位側ｎビットを隣接ブロックに含み、ｎが整数であり２の累乗である、第１データ部分と、前記フレームにおける全画素のｍビット画像データの内下位側ｋビットを隣接ブロックに含み、ｋがｍとｎとの差に等しい、第２データ部分とを備え、前記第１データ部分がメモリ・ページ境界上にて終了し、前記第２データ部分が、前記ビットストリームにおいて前記第１データ部分に先行しかつこれと隣接し、前記読み取り方法が、
単一フレームのｎビット表現の画像データにアクセスするステップであって、
前記ビットストリームにおける前記単一フレームのｎビット・データのオフセットおよびサイズを決定するステップと、
前記オフセットを最も近いメモリ境界に切り下げるステップと、
前記サイズを最も近い境界に切り上げるステップと、
前記切り下げたオフセットおよび前記切り上げたサイズを用いて、前記ビットストリームに読み取り動作を実行するステップと、
を含む、前記のアクセスするステップ、
を備えたこと、を特徴とするコンピュータ・プログラム製品。
【請求項１１】
ｍビットの画像データをビットストリームに書き込む方法であって、
前記画像データのフレーム毎に、
ビットストリームにメモリを割り振るステップと、
前記フレームの各ｍビット値の上位側ｎビットを収集して、ｎビット値を得るステップであって、ｎが整数であり、２の累乗である、前記のステップと、
前記収集したｎビット値を、前記割り振られたメモリにおける前記ビットストリームの第１データ部分内に、隣接ブロックとして置くステップであって、前記第１データ部分が、メモリ境界で終了する、前記のステップと、
前記フレームの各ｍビット値の下位側ｋビットを、ｋビット値のｎビット・ワード内へ収集するステップと、
前記ｋビット値のｎビット・ワードを、前記割り振られたメモリにおける前記ビットストリームの第２データ部分内に、隣接ブロックとして置くステップであって、前記第２データ部分が、前記ビット・ストリームにおいて前記第１データ部分に先行しかつそれに隣接した、前記のステップと、
を備えた書き込み方法。
【請求項１２】
コンピュータ・プログラム製品であって、
コンピュータ読み取り可能媒体と、
コンピュータ読み取り可能媒体上に格納されているコンピュータ・プログラム命令であって、コンピュータによって解釈されたときに、ｍビットの画像データをビットストリームに書き込む方法を前記コンピュータに実行するように命令する、コンピュータ・プログラム命令と、
を備え、前記方法が、
前記画像データのフレーム毎に、
前記ビットストリームにメモリを割り振るステップと、
前記フレームの各ｍビット値の上位側ｎビットを収集して、ｎビット値を得るステップであって、ｎが整数であり、２の累乗である、前記のステップと、
前記収集したｎビット値を、前記割り振られたメモリにおける前記ビットストリームの第１データ部分内に、隣接ブロックとして置くステップであって、前記第１データ部分がメモリ境界で終了する、前記のステップと、
前記フレームの各ｍビット値の下位側ｋビットを、ｋビット値のｎビット・ワード内へ収集するステップと、
前記ｋビット値のｎビット・ワードを、前記割り振られたメモリにおける前記ビットストリームの第２データ部分内に、隣接ブロックとして置くステップであって、前記第２データ部分が、前記ビット・ストリームにおいて前記第１データ部分に先行しかつそれに隣接した、前記のステップと、
を備えたこと、を特徴とするコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビットストリーム・フォーマット、ならびにその読み取りおよび書き込み方法および装置に関する。
【背景技術】
【０００２】
画像データには、多数のサンプリング分解能がある。動画データには、時間的サンプリング・レートがあり、一般にはフレーム・レートと呼ばれている。各画像にも、垂直および水平サンプリング分解能があり、当該画像の水平および垂直方向における、個々のエレメントの数を示す。これは一般に画素と呼ばれている。通例、各画素は、色を規定する、ある数の成分によって表される。これらの成分は、輝度およびクロミナンス（例えば、ＹＣｒＣｂ）を表すことができ、あるいは色チャネル（例えば、赤、緑および青）を表すことができる。成分毎の値を表すには、一般には、ビット深度(bit  depth)と呼ばれる、ある数のビットが用いられる。画像に用いられる典型的なビット深度は、８ビット、１０ビット、および１６ビットである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
高品質のディジタル・ビデオ処理システムは、成分毎に１０ビットのビット深度を用いることが多い。このビット深度では、品質、帯域幅、およびハードウエアにおける処理機能の効率的な実施の間で妥当な折衷案が得られる。しかしながら、汎用コンピュータでは、ビット・パス(bit path)のビット深度は、２の累乗に基づく（例えば、８、１６、３２または６４ビット）。したがって、１０ビット・データは、一般に、１６ビット・データに変換されてから、コンピュータによって処理される。しかしながら、１６ビット全体を送信または格納するとすれば、これは非効率的である。
【０００４】
場合によっては、８ビットのみのビット深度を用いて画像データを処理することが望ましい場合もある。８ビット表現は、切り捨てまたは丸めによって、１０ビット表現から得ることもできる。しかしながら、８ビットのみを送信または格納すると、データが失われることになる。
【０００５】
ディスク上に１０ビット・データを格納するために、１０ビット・データを、２の累乗に基づいたビット深度を有するデータ・ワード（８ビットおよび３２ビット・ワード等）にパックする技法が開発されている。例えば、米国特許第６，２３９，８１５号では、２画素分の１０ビットＹＣｒＣｂデータを５バイトにパックする。一般に用いられる別のパッキング・フォーマットに、「１０：１０：１０：２」と呼ばれるものがあり、例えば、OpenGL グラフィック・システムにおいて用いられている。OpenGLは、Silicon Graphics, Inc.の商標である。このフォーマットでは、３つの１０ビット値を３２ビット・ワードに格納し、２ビットは未使用のまま残しておく。このパック化データでは、しかしながら、８ビット・データまたは１０ビット・データのいずれかを抽出するために、多くの処理が行われる。
【課題を解決するための手段】
【０００６】
ビット深度がｍビットである画像データを、２部分に分割して格納することができる。ｍは２の累乗ではない。第１部分は、上位側のｎビットであり、ｎは２の累乗である。第２部分は、下位側のｋビットであり、ｋ＝ｍ−ｎ、およびｋ＜ｎである。例えば、１０ビット・データの場合、８ビット部分および２ビット部分に分離することができる。所与の画像の８ビット・データは、隣接ブロックとしてビットストリーム内に置かれ、データの端部を、ページ境界のようなメモリ境界と位置合わせする。２ビット・データをバイト単位に収集し、これらを隣接ブロックとしてビットストリーム内に置く。２ビット・データのブロックを、８ビット・データのブロックの前でこれと連続するビットストリーム内に置く。パディング(padding)を行い、画像データの先頭をメモリ境界と位置合わせする。多数の画像の画像データを隣接してビットストリーム内に置き、格納することができる。
【０００７】
アルファ・チャネルに対する１０ビット・データがある場合、これも８ビット部分および２ビット部分に分割する。所与の画像に対する８ビット・アルファ・データを、隣接ブロックとしてビットストリーム内に置き、データの先頭を、ページ境界のようなメモリ境界と位置合わせする。２ビットのアルファ・データをバイト単位で収集し、隣接ブロックとしてビットストリーム内に置く。２ビットのアルファ・データのブロックを、８ビットのアルファ・データのブロックに後続しかつこれに隣接してビットストリーム内に置く。パディングを行って、アルファ・データの終端をページ境界と位置合わせする。多数の画像のアルファ・データをビットストリームに隣接して置き、格納することができる。
【０００８】
格納について、アルファ・データは、画像データを格納するデータ・ファイルとは別個のデータ・ファイルに格納することができる。こうすれば、アルファ・データを処理しない場合には、アクセスしなくても済むことになる。アルファ・データを処理する場合、これをアルファ・データ・ファイルから読み出して、メモリ内の画像データ・ファイルからの画像データとインターリーブすれば、効率的な処理が可能となる。このように、画像データおよびアルファ・データは、画像毎に隣接しており、多数の画像のデータは、ビットストリームにおいて隣接している。
【０００９】
このようなフォーマットに１０ビット・データを格納することにより、パッキングが効率的となる。また、これによって、ＣＰＵ、ディスクまたはメモリの帯域幅のオーバーヘッドを全く伴わずに、単一の画像の８ビット部分にアクセスすることが可能となる。多数のデータに対するアクセスでは、オペレーティング・システムによる散乱／収集動作によって、画像の８ビット部分に効率的なアクセスが可能となる。散乱／収集および単純なシフト動作によって、１０ビット・データを読み取って１６ビット・ワードに変換することや、その逆が可能となる。このフォーマットのデータは、最小の処理オーバーヘッドで、成分あたり１６ビットに変換することができる。
【００１０】
したがって、１つの形態では、コンピュータ情報製品は、コンピュータ読み取り可能媒体と、このコンピュータ読み取り可能媒体上に格納されているデータであって、コンピュータによって解釈されたときに、画像データのフレーム毎に、ｍビット画像データを格納するビットストリームから成る、データとを含む。ビットストリームは、画像データのフレーム毎に、当該フレームにおける全画素のｍビット画像データの内上位側ｎビットを隣接ブロックに含む第１データ部分を含む。ｎは、整数であり２の累乗である。第２データ部分は、フレームにおける全画素のｍビット画像データの内下位側ｋビットを、隣接ブロック内に含む。ｋは、ｍとｎとの差に等しい。第１データ部分がメモリ・ページ境界上にて終了する。第２データ部分は、ビットストリームにおいて第１データ部分に先行し、第１データ部分と隣接する。
【００１１】
別の形態は、ｍビットの画像データのビットストリームを読み取る方法およびコンピュータ・プログラム製品である。ビットストリームは、画像データのフレーム毎に、当該フレームにおける全画素のｍビット画像データの内上位側ｎビットを隣接ブロックに含む第１データ部分と、フレームにおける全画素のｍビット画像データの内下位側ｋビットを、隣接ブロック内に含む第２データ部分とを含む。ｎは、整数であり２の累乗である。ｋは、ｍおよびｎ間の差である。第１データ部分はメモリ・ページ境界上にて終了する。第２データ部分は、ビットストリームにおいて第１データ部分に先行し、これと隣接する。この読み取り方法は、単一フレームのｎビット表現の画像データにアクセスすることを含む。ビットストリーム内の単一フレームのｎビット・データのオフセットおよびサイズを決定する。オフセットは、最も近いメモリ境界に切り下げられる。サイズは、最も近い境界に切り上げられる。切り下げたオフセットおよび切り上げたサイズを用いて、ビットストリームに対して読み取り動作を実行する。
【００１２】
別の形態は、ｍビット画像データをビットストリームに書き込む方法およびコンピュータ・プログラム製品である。画像データのフレーム毎に、ビットストリームにメモリが割り振られる。フレームの各ｍビット値の上位側ｎビットを収集して、ｎビット値を得る。ｎは、整数であり２の累乗である。収集したｎビット値は、割り振られたメモリにおいて、ビットストリームの第１データ部分内に、隣接ブロックとして置かれる。第１データ部分は、メモリ境界上で終了する。フレームの各ｍビット値の下位側ｋビットを収集して、ｋビット値のｎビットワードとする。ｋビット値のｎビットワードは、割り振られたメモリにおいて、ビットストリームの第２データ部分に、隣接ブロックとして置かれる。第２データ部分は、ビットストリーム内において、第１データ部分に先行し、これと隣接する。
【発明を実施するための最良の形態】
【００１３】
ビット深度がｍビットである画像データを２部分に分割し格納することができる。ここで、ｍは２の累乗ではない。第１部分は、上位側のｎビットであり、ｎは２の累乗である。第２部分は、下位側のｋビットであり、ｋ＝ｍ−ｎおよびｋ＜ｎである。以下の例では、１０ビット・データを８ビット部分および２ビット部分に分離する。
【００１４】
図１は、パック化１０ビット・データを用いる画像処理システムの一例のデータ・フロー図である。画像処理システム１００は、ビットストリーム内にパックされた１０ビット・データを格納するデータ・ストレージ１０２を含む。ビットストリームは、例えば、１つ以上のデータ・ファイルに格納することができ、あるいはＭＸＦまたはＡＡＦのようなファイル・フォーマットにおけるメタデータによって参照することもできる。このようなビットストリームは、キャッシュのようなメモリに格納するとよい。このビットストリーム・フォーマットは、データ送信用フォーマットとしても用いることができ、その場合、１０２は送信媒体を表し、これを通じて、圧縮画像データを、コンピュータ読み取り可能信号として送信する。１０ビットのパック化ビットストリームを含むデータ１０４は、読み取りアプリケーション１０６によって読み取る。１０８に示すこのようなデータは、書き込みアプリケーション１１０によって、以下に説明するようにして、このようなフォーマットに書き込まれる。
【００１５】
読み取りアプリケーション１０６は、以下に説明するように、８ビット画像データの単一フレームまたは多数のフレーム、あるいはビットストリームからの１０ビット画像データの単一フレームまたは多数のフレームのいずれかを読み取る。読み取りアプリケーション１０６は、読み取った画像データ１１２を画像処理アプリケーション１１４に供給する。
【００１６】
画像処理アプリケーション１１４は、画像データに対して動作を行い、処理画像データ１１６を生成する。例えば、このような画像処理動作は、限定ではないが、複合化(compositing)、配合(blending)、および偏移(keying)のような、画像を結合する動作、またはサイズ変更、フィルタ処理、および色補正のような画像内部における動作、あるいは動き推定のような２つの画像間の動作を含むことができる。このような画像処理動作の結果は、１０ビット・フォーマットの画像データにすることができ、あるいは別のフォーマットにすることもできる。また、画像処理アプリケーションは、入力画像データを全く用いずに、ディジタル画像データの取り込みおよび／または作成を行うアプリケーションでもよい。また、画像処理アプリケーションは、画像データに関するメタデータを操作し、例えば、動画ビデオ情報の一連の場面を規定することもできる。また、画像処理アプリケーションは、出力データを全く供給せずに、１つ以上のフォーマットで画像データを再生することもできる。
【００１７】
図１は１つの画像処理動作のみを示すが、多数の画像処理動作があってもよく、これらは、並列にデータを処理することができ、あるいは一連の動作として処理することもできる。画像処理動作によって画像データを処理する方法は多種多様であり、本発明はこれに限定されることはない。一例として、読み取りアプリケーションおよび／または画像処理アプリケーションおよび／または書き込みアプリケーションは、ビデオ情報を編集するためのもっと大きなアプリケーションの一部であってもよく、メモリ内の同じバッファにある画像データにアクセスすることもできる。別の例として、読み取りアプリケーションおよび／または画像処理アプリケーションおよび／または書き込みアプリケーションは、編集アプリケーションに「プラグイン」し、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を通じてメモリ内の画像データにアクセスすることができる。読み取りおよび書き込みアプリケーションをハードウエアで実施すれば、画像処理アプリケーションによってアクセスすることができる。
【００１８】
これより図２を参照すると、所与の画像の８ビット・データを隣接ブロック２００としてビットストリーム内に置き、データの端部２０２をページ境界のような、メモリ境界と位置合わせする。２ビット・データをバイト単位で収集し、隣接ブロック２０４としてビットストリーム内に置く。２ビット・データのブロックを置くビットストリームは、８ビット・データのブロック２００の前にあり、これと隣接する。パディング２１２を行えば、画像データの先頭をメモリ境界と位置合わせすることができる。多数の画像の画像データを隣接してビットストリーム内に置き、格納することもできる。
【００１９】
アルファ・チャネルがある場合、その１０ビット・データも、８ビット部分および２ビット部分に分割することができる。所与の画像の８ビット・アルファ・データを、隣接ブロック２０６としてビットストリーム内に置き、データの先頭２０８をメモリ・ページ境界と位置合わせする。２ビット・アルファ・データをバイト単位で収集し、隣接ブロック２１０としてビットストリーム内に置く。２ビット・アルファ・データのブロックは、ビットストリームにおいて、８ビット・アルファ・データのブロック２０６に後続しかつこれと隣接して置く。パディング２１４を行えば、アルファ・データの終端をメモリ境界と位置合わせすることができる。多数の画像に対するアルファ・データがある場合、ビットストリーム内に隣接して配置し格納することができる。
【００２０】
格納について、アルファ・データは、画像データを格納するデータ・ファイルとは別個のデータ・ファイルに格納することができる。このようにすると、アルファ・データを処理しない場合、これにアクセスしなくて済む。アルファ・データを処理する場合、これをアルファ・データ・ファイルから読み出し、メモリ内の画像データ・ファイルからの画像データとインターリーブすることにより、効率的な処理が可能となる。このように、画像データおよび画像毎のアルファ・データは、ビットストリーム内で隣接しており、多数の画像に対するデータもビットストリーム内で隣接している。
【００２１】
ビットストリーム内の１つのデータ・ブロックのオフセットおよびサイズを用いて、当該ビットストリーム内においてこれと隣接する別のデータ・ブロックのオフセットを決定することができれば、データは、ビットストリーム内で隣接する。隣接とは、いずれの記憶媒体においても、データが隣接する記憶位置に格納されることを意味するのではない。各データ・ブロックには、ヘッダ、および／またはフッタ情報が当該ブロック内に格納されている。このようなヘッダおよびフッタの存在は、データ・ブロックが隣接しているか否かには関与しない。
【００２２】
図３は、図２に示すようなビットストリームから８ビット画像データの単一フレームを読み取る過程を説明するフロー・チャートである。所望の８ビット・データの大きさ、およびビットストリームにおけるそのオフセットを決定する（３００）。ビットストリーム内の所望の８ビット・データのオフセットを、最も近いページ境界に切り下げる(round down)ことによって、読み取り動作のオフセットを決定する（３０２）。この値を切り下げるには、オフセット・モジュロ４０９６を計算し、この値をオフセットから減算する。８ビット・データのサイズを、ページ境界の倍数に切り上げることによって、読み取り動作のサイズを決定する（３０４）。この値を切り上げるには、オフセット・モジュロ４０９６を計算し、これを８ビット・サイズに加算する。次に、決定したオフセットにて開始し、決定したサイズを有するデータを読み取る（３０６）。実際の８ビット・オフセットと、切り下げた８ビット・オフセットとの間の差は、読み取ったデータの先頭におけるデータ量であり、これは破棄してもよい。
【００２３】
例えば、ある画像の全アクティブ画像データ・サイズが５１８４０００バイトであると仮定する。ページ・サイズを４０９６（４Ｋ）バイトと仮定すると、データの総サイズは５１８５５３６バイトとなる。したがって、画像を表すデータ・ブロックは、１５３６バイトのパディング、１０３６８００バイトの２ビット・データ、および４１４７２００バイトの８ビット・データを含む。８ビット・データ部分のオフセットは、パディング・サイズと２ビット・データ・サイズの和、つまり、１０３８３６６バイトである。読み取り動作のオフセットは、８ビット・オフセットからオフセット・モジュロ４０９６を減算した値、したがって１０３６２８８となる。読み取り動作のサイズは、８ビット・サイズに８ビット・オフセット・モジュロ４０９６を足したもの、したがって４１４９２４８となる。つまり、読み取ったデータの先頭において、２０４８バイトを破棄する。画像のアルファ情報は全く読み取られない。
【００２４】
アルファ情報がある場合、単一フレームの８ビット・アルファ情報には、次のようにしてアクセスすることができる。読み取り動作では、画像の８ビット・アルファ情報の先頭から読み取りを開始する。読み取り動作のサイズは、最も近いページ・サイズに切り上げた、８ビット・アルファ情報のサイズである。読み取りサイズと８ビット・アルファ情報の実際のサイズの差が、読み取ったデータの終端において破棄するデータ量を示す。１０ビット・アルファ情報の先頭を、１０ビット画像データの終端と隣接させて、ビットストリーム内に置く。
【００２５】
図４は、１０ビット画像データの単一フレームをビットストリームから読み取る過程を説明するフロー・チャートである。画像データのフレーム全体をバッファに読み込む（４００）。８ビットおよび２ビット部分に対するバッファ内のオフセットを決定する（４０２）。８ビット画像データの４バイトを、最上位ビットから先に、４つの１６ビット・レジスタの最下位ビット内にシフトする。２ビット画像データの対応するバイトから、各２ビット・データを、最上位ビットから先に、対応する８ビット・データを格納する１６ビット・レジスタの同じ最下位ビットにシフトする（４０６）。これらの動作の結果、各レジスタ内に１６ビットの整数値が得られ、上位側の６ビットは０に設定され、下位側の１０ビットが所望の１０ビット値を表す。ハードウエアの実現例では、２つのＤＭＡエンジンを用いれば、データをバッファからビット・シフタに書き込み、各１０ビット値を発生することができる。これら４つの値を処理した後、未だ処理すべき何らかの画像データがバッファ内に残っている場合（４０８にて判定する）、残りの画像データに対して処理を繰り返す。
【００２６】
アルファ情報がある場合、単一フレームの１０ビット・アルファ情報には、同様の方法でアクセスすることができる。読み取り動作は、８ビット・アルファ情報の先頭から読み取り始める。フレームの８ビット・アルファ、２ビット・アルファ、およびパディング・データの総量をバッファに読み込む。８ビットおよび２ビット・アルファ・データを処理して、８ビットおよび２ビット画像データと同様に、１６ビット整数で表される１０ビット・データとする。１０ビット・アルファ情報の先頭を、１０ビット画像データの終端と隣接して、ビットストリーム内に置くことができる。
【００２７】
図５は、８ビット画像データの多数のフレームをビットストリームから読み取る過程を説明するフロー・チャートである。８ビット・データの多数のフレームを読み取るには、図３に関連付けて先に説明したように、８ビット・データの最初のフレームにアクセスし、次いで、２ビット部分を含む、後続画像のビットストリームを読み取る。後続画像からのデータにアクセスするには、オペレーティング・システムが提供する散乱／収集動作(scatter/gather operation)を用いる。即ち、画像毎に、パディングよび２ビット部分を、同じメモリ位置に読み込み、これを破棄する。
【００２８】
更に特定すれば、ビットストリームにおいて、最も近いページ境界に対する、８ビット・データの最初のフレームのオフセットおよびサイズを、図３に関して先に説明したようにして決定する（５００）。後続のフレーム毎に、８ビット・データのオフセットおよびサイズを決定する（５０２）。そのフレームのパディングおよび２ビット・データのオフセットおよびサイズも決定する（５０４）。全てのフレームについて２ビット・データおよび８ビット・データのオフセットおよびサイズが決定され終えるまで、これらの計算（５０２、５０４）を繰り返す（５０６）。次いで、８ビットおよび２ビット・データのオフセットおよびサイズのリストを作成する（５０８）。このリストは、散乱／収集読み取り動作要求（５１０）のためのパラメータとして、オペレーティング・システムに提供する。具体的には、オペレーティング・システムには、パディングおよび２ビット・データを同じメモリ位置に送出し、それを破棄するように要求する。
【００２９】
別個のデータ・ファイルの中にアルファ情報があり、このアルファ情報が用いられていない場合、これを無視することができる。別個のデータ・ファイルの中にアルファ情報があり、８ビット・アルファ情報が用いられている場合、アルファ情報の各部分のビットストリームにおけるオフセットおよびサイズも決定する。この情報は、散乱／収集リストに追加され、８ビット・アルファ情報を、８ビット画像データとインターリーブしながら、適切なバッファに読み込むように、オペレーティング・システムに命令する。また、この情報は、散乱／収集リストにおいて、２ビット画像データまたはパディングを破棄するのと同様に、読み取り動作の間に２ビット・アルファ情報およびパディングを読み取り動作の間に破棄するように、オペレーティング・システムに命令する。
【００３０】
図６は、１０ビット画像データの多数のフレームをビットストリームから読み取る過程を説明するフロー・チャートである。１０ビット・データの多数のフレームでは、処理は、多数のフレーム分繰り返すことを除いて、図４のそれと同様である。即ち、画像データのフレーム全体をバッファに読み込む（６００）。８ビットおよび２ビット部分に対するバッファ内のオフセットを決定する（６０２）。８ビット画像データの４バイトを、最上位ビットから先に、４つの１６ビット・レジスタの最下位ビットにシフトする（６０４）。２ビット画像データのその対応するバイトから、各２ビットデータを、最上位ビットから先に、対応する８ビット・データを格納する１６ビット・レジスタの同じ最下位ビットにシフトする（６０６）。これら４つの値を処理した後、処理する何らかの画像が未だバッファ内に残っている場合（６０８において判定する）、残りの画像データについて過程を繰り返す。画像に対する画像データを処理し終えた後、処理する何らかの画像がまだ残っていると６１０において判定した場合、過程（６００、６０２、６０４、６０６、６０８）を繰り返す。
【００３１】
別個のデータ・ファイル内にアルファ情報があり、このアルファ情報が用いられていない場合、これを無視することができる。別個のデータ・ファイルにアルファ情報があり、アルファ情報が用いられている場合、このアルファ情報は、画像データと同様に、散乱／収集リストを用いて読み取り、処理して、画像データおよびアルファ・データをメモリ内においてインターリーブする。また、アルファ・データは、１６ビットの整数を用いて表される１０ビット・データに変換してもよい。
【００３２】
図７は、１０ビット画像データの各フレームをパック化フォーマットに変換する過程を説明するフロー・チャートである。一般に、１０ビット・データを処理するには、１０ビット値を１６ビット整数値として表す。この例では、これを入力フォーマットと仮定する。ビデオ情報のフレーム毎に、バッファを割り振り（７００）、画像のビットストリームを構築する。フレーム内の全画素の１０ビット・ビデオ情報の上位側８ビットを突き止める。８ビット部分を収集し、バッファの終端にある、ビットストリームの第１データ部分に置く（７０２）。即ち、画像の最後の画素に対応する８ビット・データを、８ビット・データ・ブロックの終端に置き、メモリ・ページの境界と位置を合わせる。フレーム内の全画素の１０ビット・ビデオ情報の下位側２ビットを、突き止める。２ビット部分をバイト単位で収集し、バッファ内の８ビット・データの前にある、ビットストリームの第２データ部分に置く（７０４）。次いで、バッファ内における第２データ部分の前に、パディングまたはヘッダ情報を置く（７０６）。
【００３３】
いずれのアルファ情報でも、同様に処理することができる。即ち、アルファ情報の８ビット部分を収集し、ビットストリームにおけるバッファの先頭にある第１アルファ部分に置く。アルファ情報の２ビット部分を収集し、８ビット・アルファ部分の後ろにある、ビットストリーム内の第２アルファ部分に置く。次いで、バッファ内において、パディングまたはヘッダ／フッタ情報をバッファの終端に置く。多数の画像のアルファ・データは、ビットストリーム内において隣接配置され、画像データとは別個のファイルに格納することもできる。
【００３４】
図１に示すシステムの種々のコンポーネント、および図３〜図７のフローチャートは、汎用コンピュータ・システムを用いて、コンピュータ・プログラムとして実装することもできる。このようなコンピュータ・システムは、通例、情報をユーザに表示する出力デバイス、およびユーザから入力を受け取る入力デバイス双方に接続された主ユニットを含む。一般に、主ユニットは、相互接続機構を通じて、メモリ・システムに接続されているプロセッサを含む。また、入力デバイスおよび出力デバイスも、相互接続機構を通じて、プロセッサおよびメモリ・システムに接続されている。
【００３５】
１つ以上の出力デバイスをコンピュータ・システムに接続してもよい。出力デバイスの例には、限定としてではなく、陰極線管（ＣＲＴ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）およびその他のビデオ出力デバイス、プリンタ、モデムのような通信機器、ならびにディスクまたはテープのような記憶装置が含まれる。１つ以上の入力デバイスをコンピュータ・システムに接続してもよい。入力デバイスの例には、限定としてではなく、キーボード、キーパッド、トラック・ボール、マウス、ペンおよびタブレット、通信機器、ならびにデータ入力デバイスが含まれる。本発明は、コンピュータ・システムと組み合わせて用いられる特定の入力または出力デバイスにも、ここに記載されたものにも限定されることはない。
【００３６】
コンピュータ・システムは、「Ｃ＋＋」、Visual Basic、Java（登録商標）のようなコンピュータ・プログラミング言語、あるいはスクリプト言語やアセンブリ言語といったようなその他の言語を用いてプログラム可能な、汎用コンピュータ・システムとすることができる。また、コンピュータ・システムは、特別にプログラムされた、特殊目的ハードウエアとすることもできる。汎用コンピュータ・システムでは、プロセッサは、通例、Intel社、AMD社、Cyrix社、Motorola社、およびIBM社から入手可能な種々のプロセッサのような、市販のプロセッサである。また、汎用コンピュータは、通例、オペレーティング・システムを有し、他のコンピュータ・プログラムの実行を制御し、スケジューリング、デバッグ、入出力制御、アカウンティング、コンパイル、ストレージ割り当て、データ管理およびメモリ管理、ならびに通信制御および関連サービスを行う。オペレーティング・システムの例には、限定ではないが、UNIX（登録商標）オペレーティング・システム、ならびにMicrosoft社およびApple Computer社から入手可能なオペレーティング・システムが含まれる。
【００３７】
メモリ・システムは、通例、コンピュータ読み取り可能媒体を含む。この媒体は、揮発性または不揮発性、書き込み可能または書き込み不可能、および／または再書き込み可能または再書き込み不可能の場合もある。メモリ・システムは、通例、二進形態でデータを格納する。このようなデータは、マイクロプロセッサが実行するアプリケーション・プログラム、またはアプリケーション・プログラムが処理するためにディスク上に格納されている情報を規定することができる。本発明は、特定のメモリ・システムに限定されることはない。
【００３８】
ここに記載したようなシステムは、ソフトウエアまたはハードウエアまたはファームウエア、あるいはこれら３つの組み合わせで実現することもできる。システムの種々のエレメントは、個別でもあるいは組み合わせでも、１つ以上のコンピュータ・プログラム製品として実現することができ、この場合、コンピュータ・プログラムの命令は、コンピュータ読み取り可能媒体上に格納され、コンピュータによって実行される。プロセスの種々のステップは、コンピュータがこのようなコンピュータ・プログラム命令を実行することによって、実行することができる。コンピュータ・システムは、マルチプロセッサ・コンピュータ・システムとすることもでき、またはコンピュータ・ネットワークを通じて接続された多数のコンピュータを含むこともできる。図１に示す構成要素は、コンピュータ・プログラムの別個のモジュールとすることができ、あるいは別個のコンピュータ・プログラムとすれば、別個のコンピュータ上で動作可能となる。これらの構成要素によって生成されるデータは、メモリ・システムに格納することや、コンピュータ・システム間で送信することができる。
【００３９】
以上、実施形態の例について説明してきたが、これまでの説明は単なる例示であって限定ではなく、一例として提示したに過ぎないことは、当業者には当然明白なはずである。多数の変更も、当業者の能力の範囲内であり、本発明の範囲に該当するものと見なす。
【図面の簡単な説明】
【００４０】
【図１】図１は、パック化１０ビット・データを用いる画像処理システムの一例のデータ・フロー図である。
【図２】図２は、１０ビット・データのパック化形態の一例を示す図である。
【図３】図３は、８ビット画像データの単一フレームを読み取る過程を説明するフロー・チャートである。
【図４】図４は、１０ビット画像データの単一フレームを読み取る過程を説明するフロー・チャートである。
【図５】図５は、８ビット・画像データの多数のフレームを読み取る過程を説明するフロー・チャートである。
【図６】図６は、１０ビット・画像データの多数のフレームを読み取る過程を説明するフロー・チャートである。
【図７】図７は、１０ビット画像データの各フレームを書き込む過程を説明するフロー・チャートである。
【符号の説明】
【００４１】
１０４    パック化データ
１０６    読み取りアプリケーション
１０８    パック化データ
１１０    書き込みアプリケーション
１１２    アンパック化データ
１１４    画像処理アプリケーション
１１６    アンパック化データ
２０４    ２ビット画像データ
２００    ８ビット画像データ
２０６    ８ビット・アルファ・データ
２１０    ２ビット・アルファ・データ
２１２    パディング
２１４    パディング
【図１】
2004328723.tif 000003
【図２】
2004328723.tif 000004
【図３】
2004328723.tif 000005
【図４】
2004328723.tif 000006
【図５】
2004328723.tif 000007
【図６】
2004328723.tif 000008
【図７】
2004328723.tif 000009
【外国語明細書】
2004328723000001.pdf