JPH0775090A - ビデオデータを圧縮する方法及びシステム - Google Patents

ビデオデータを圧縮する方法及びシステム

Info

Publication number
JPH0775090A
JPH0775090A JP5354832A JP35483293A JPH0775090A JP H0775090 A JPH0775090 A JP H0775090A JP 5354832 A JP5354832 A JP 5354832A JP 35483293 A JP35483293 A JP 35483293A JP H0775090 A JPH0775090 A JP H0775090A
Authority
JP
Japan
Prior art keywords
block
frame
value
tolerance
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP5354832A
Other languages
English (en)
Other versions
JP3306207B2 (ja
Inventor
Stuart T Laney
ティー レイニー スチュアート
Eric Ledoux
レドゥー エリック
David M Maymudes
エム メイムーデス ディヴィッド
Daniel J Miller
ジェイ ミラー ダニエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JPH0775090A publication Critical patent/JPH0775090A/ja
Application granted granted Critical
Publication of JP3306207B2 publication Critical patent/JP3306207B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/804Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
    • H04N9/8042Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction
    • H04N9/8045Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/84Television signal recording using optical recording
    • H04N5/85Television signal recording using optical recording on discs or drums

Abstract

(57)【要約】 (修正有) 【目的】フレーム内及びフレーム間の圧縮スキーマを用
いて規定のターゲットサイズまでビデオムービーデータ
を圧縮するための方法。 【構成】フレーム内圧縮においては、ムービーフレーム
は、同じフレーム内の隣接する画素を比較して圧縮し、
フレーム間圧縮は、隣接するフレームの類似した形で位
置づけられた画素を比較して圧縮する。損失の無い圧縮
が充分でない状況の下では、さらなる圧縮を達成するた
め、閾値又は許容差を利用する。画素間でのカラーのば
らつきが許容差以下では単一のカラー値を用いて2つの
画素をコード化する。ターゲット範囲内で圧縮を達成す
るべく許容差を加減する。圧縮の結果、受諾できない質
の画像が生み出される場合、生データを半分に分割し、
各データ部分を別々に圧縮する。第1フレームの後のフ
レームは一般にフレーム内及びフレーム間圧縮の組合せ
を用いて圧縮する。

Description

【発明の詳細な説明】
【産業上の利用分野】本発明は、データ圧縮及び圧縮解
除に関し、特に、圧縮画像のサイズの特定の目標の範囲
にビデオデータを符号化するための方法及びシステムに
関する。
【従来の技術】マルチメディアのパーソナルコンピュー
タ(MPC)の到来は、家庭用娯楽産業に変革をもたら
すと思える。一般に、MPCは、例えばインテル386
マイクロプロセッサといった強力なマイクロプロセッ
サ、VGAモニタ、サウンドカード、少なくとも2Mバ
イトのRAM及びCD−ROMドライプを含む。アプリ
ケーションプログラムがMPCの潜在力を完全に実現す
るためには、これらの構成要素をその能力いっぱいまで
使用しなければならない。システムの構成要素を最大に
利用しながら、MPCでのビデオ映画を楽しみたいとい
う希望は、本発明の発端となった。ビデオ映画を見てき
れいであるためには、15フレーム毎秒の速度で作動す
ればよい。しかし、標準のCD−ROMドライブは、1
50Kバイト毎抄のデータを提供することができるのみ
である。従って、MPCで表示するに適する映画を作る
ためには、圧縮方法は、映画の各フレームを約10Kバ
イトに圧縮する必要がある:〔(150Kバイト/秒)
/(15フレーム/抄)=10KバイトB/フレー
ム〕。しかし、フレームをこのサイズに一貫性をもって
圧縮可能とする方法を開発することは−−情報の実質的
な量を失わないで−−複雑な手順となる。この手順は、
二つの基本的な理由で複雑となる。まず、元の生データ
のサイズは、映画から映画で大幅に異なり、例えば、3
20X240ピクセルのビデオ映画のフレームは、17
5Kバイトの生データとなるが、160X120ピクセ
ルのビデオ映画のフレームは、25Kバイトの生データ
に過ぎない。第二に、同じ映画でさえも、フレームのい
くつかは、他のフレームよりも圧縮しにくい。例えば、
明るい色の草原を描くフレームは、薄暗い通りを描くフ
レームより、必然的により細かくなる。従って、圧縮方
法は、画像の品質をかなり落とさなくては、草原のフレ
ームを10Kバイトに符号化することはできない。
【発明が解決しようとする課題】従来技術は、MPCで
の再生用に、ビデオ映画を符号化するための固定圧縮率
を使用している。しかし、この方法は、深刻な欠陥を有
す。即ち、固定圧縮率による方法は、ビデオデータを恒
常的に過剰圧縮を起こすかあるいは圧縮不足を起こす。
例えば、生データを生データの元のサイズの20%に圧
縮する圧縮法は、25Kバイトの生データフレームを5
Kバイトに圧縮する。従って、従来技術の圧縮法は、不
要に5Kバイトのデータを破壊してしまう可能性があ
る。その結果、圧縮データは、拡大されると、劣化した
品質の画像を生成する。一方、同じ圧縮方法は、175
Kバイトのビデオデータを35Kバイトに圧縮する。こ
の場合、得られた圧縮データは、MPCで使用するには
大きすぎる。更に、従来技術の圧縮方法のあるものは、
非標準フォーマットで圧縮データを符号化している。こ
れら従来の圧縮方法は、殆どのMPCのアプリケーショ
ンで、非標準の圧縮データをアプリケーションがデータ
をMPC上へ表示する前に既知のフォーマットへ変換し
なければならないので問題を伴う。従って、再生用のビ
デオデータやその他のデータをあるデータ速度で満足に
圧縮することを可能とする方法とシステムに対する必要
性があった。
【課題を解決するための手段】フレーム内及びフレーム
間圧縮技術を使用して、ビデオデータのフレームを特定
の目標サイズへ圧縮する方法を開示する。フレーム内圧
縮を使用する場合は、この方法は、一フレームのビデオ
データをそのフレームに含まれるそのデータに対しての
み圧縮する。一方、フレーム間圧縮を使用する場合は、
本発明は、現在圧縮過程にあるフレームの直前のビデオ
データのフレームに対して一フレームのビデオデータを
圧縮する。より具体的には、フレーム内圧縮に付いて
は、圧縮方法は、ビデオデータのフレームを構成するピ
クセルから複数のピクセルグループを形成することで始
まる。次に、本発明は、例えば色、強度等といったのグ
ループの特性に基づいて二つのグループの間の変化値を
計算する。計算後、その変化値を特定のフレーム内許容
値と比較する。変化値がフレーム内許容値に等しいかま
たはそれより小さい場合は、本発明は両グループの特徴
を表す一つの値を指定する。この計算と比較は、この方
法でフレームの全てのグループを調べるまで継続され
る。本発明によれば、同じ特徴値を有す連続したピクセ
ルグループの数を計数することによりそのフレームを圧
縮する。本方法によれば、計数を完了すると計数値及び
特徴値をビデオフレームの圧縮バージョンとして記憶す
る。フレーム間圧縮も同様な方法で動作する。この場合
は、しかし、二つの連続したフレームの類似した状況の
ピクセルグループを比較する。本発明では、指定したフ
レーム間許容値内にある連続したフレーム間ピクセルグ
ループの数が計数される。次に、連続したフレーム間ピ
クセルグループのこの数を示すデルタを符号化する。更
に、本圧縮法は、フレーム内及びフレーム間の両方の組
み合わせを使用する。使用する圧縮法にかかわらず、本
方法は、得られた圧縮ビデオフレームと指定目標範囲と
比較している。圧縮ビデオフレームが指定目標範囲にな
い場合は、本方法では、許容値の一つまたは両方を調整
し、データを既に述べた方法で再度圧縮する。更に、本
方法により、ビデオ画像の質を大きく損なわないでは、
指定目標範囲に圧縮できない場合は、生データのビデオ
フレームを半分に分割し、各半分を別々に圧縮する。
【実施例】本発明は、目標範囲内にビデオデータを圧縮
するために、ランレングス符号化及び反復許容値を使用
する。本発明は、基本的に、類似の特徴、例えば、類似
の色を有すピクセルを統合することによってビデオデー
タを圧縮する。まず第一に、発明はピクセル対をなすピ
クセル間の差に基づく変化値を計算する。第二に、この
変化値を許容値と比較する。変化値が許容値より小さい
か同じの場合は、本発明では、両ピクセルは、単一の特
徴値で記述されて、例えば、二つの連続した非常に薄い
青色のピクセルの隣に二つの連続した薄い青色のピクセ
ルがある場合、これらは四つの連続した薄い青色のピク
セルとして記述される。本実施例では、フレーム内圧縮
かまたはフレーム間圧縮を利用してビデオ映画のフレー
ムの圧縮を行う。フレーム内圧縮を用いる場合は、本発
明はその特定のフレーム内に含まれるデータのみを使用
してフレームを圧縮する。一方、フレーム間圧縮を用い
る場合は、本発明は、直前のフレームに対してフレーム
を圧縮する。例えば、本発明は、ビデオ映画のフレーム
(n+1)を、フレーム(n)から実質的に変化してい
るピクセルのみを記憶することにより圧縮する。映画の
殆どのフレームは、動きの錯覚を作り出すために、前後
のフレームに類似しているので、フレーム間圧縮は、極
めて効果的な手法である。再生では、フレーム(n+
1)のフレーム間符号化データは、フレーム(n)に直
接に重なって表示されるので、動きの錯覚は、維持され
る。しかし、本発明が必要なものは、フレーム(n+
1)に更新されねばならないフレーム(n)のピクセル
に素早くアクセスする手段である。本発明は、この条件
を、フレームの圧縮バージョンに於いて、デルタとして
知られる、特別のバイトグループを符号化することによ
って満足している。基本的に、デルタは、フレーム(n
+1)を生成するために更新を必要とするフレーム
(n)のピクセルに対して、ピクセルを着色するの使用
される器具であるブラシを移動させる。本発明は、多く
のやり方でもってデルタを符号化する。一つのデルタ符
号化法は、デルタ符号化のために4バイトグループを使
用する方法がある。この方法は、(1)2バイトのエス
ケープシーケンスと、(2)水平オフセットと、(3)
垂直オフセットとをフレームの圧縮バージョンに記憶す
る。2バイトエスケープシーケンスは、符号化されたバ
イトをデルタとして認識するのに使用される。水平及び
垂直オフセットは、ピクセル更新前に、圧縮解除ルーチ
ンがブラシを移動させるべきピクセルの数を単に記述し
ているのみである。図9を参照(水平及び垂直オフセッ
トを使用したデルタ符号化処理を説明している)。この
符号化技術は、ブラシを適当なピクセルヘ移動させるに
は有効であるが、場合によってはメモリの最も効果的な
使用法とならない場合がある。圧縮ビデオデータで発生
するデルタの大部分は、ゼロの垂直オフセットを有す。
更に、殆どのデルタの水平オフセットは、相対的に短
く、即ち16ピクセルより短い。このような場合は、本
発明はデルタを1バイトとして符号化し、このバイト
は、水平オフセットの大きさを示す。図14を参照(単
バイトを使用するデルタ符号化処理を説明している)。
図14のデルタ符号化法は、従って、図9のデルタ符号
化法より75%少ないバイトを用いる。更に、圧縮ビデ
オデータでデルタは頻繁に起こるので、各デルタで得ら
れる75%の節約は、圧縮ビデオデータの全体サイズで
は、20%の節約に相当する。しかし、本発明がどのデ
ルタ符号化法を適用するかにより、フレーム間圧縮は、
貴重な圧縮ツールとなる。更に、フレーム内圧縮と組み
合わせてフレーム間圧縮を使用することにより本発明
は、極めて高解像度の圧縮フレームを形成することが可
能である。例えば、フレーム(n+1)の70%が、実
質的にフレーム(n)から変化していないとすると、本
発明はビデオフレームの残り30%を記憶する約10K
のメモリを有す。従って、フレーム内圧縮及び小さい許
容値を用いることにより、本発明は非常な細部に付きデ
ータの残り30%を記憶することが可能となる。ある場
合は、フレーム間圧縮を使用して得られる細部のデータ
量にかかわらず、本発明はフレーム内圧縮を使用してフ
レームを符号化する。このフレームをキーフレームと呼
ばれる。キーフレームは、ビデオ映画のランダムフレー
ムに対するユーザのアクセス性を高める。例えば、ユー
ザが、ビデオ映画で約10分間ほど経過した時点で発生
したフレームにアクセスを希望すると、希望フレーム
は、約9,000の先行フレームがある。本発明によ
り、フレーム間圧縮を使用して第一フレームを除く全て
を符号化する場合、フレーム9,000へアクセスする
ことは多大な処理時間を必要とし、即ち、本発明は、希
望フレームを表示する前に9,000フレームを符号化
し、表示する必要がある。この問題を回避するために、
本発明は、映画全体を通じて一定間隔をおいて、例え
ば、30秒毎にキーフレームを挿入する。従って、映画
に10分より若干少ない時間経過した時点で発生するフ
レームを表示するには、本発明は、映画の中の9−1/
2分経過した時点で圧縮されたキーフレームを直ちに指
示する。(1)キーフレーム及び(2)キーフレームと
希望フレームとの間を圧縮解除することによって、本発
明は視聴者の指定フレームを素早く表示する。全体フレ
ームが一旦圧縮されると、圧縮データのサイズと目標範
囲が比較される。圧縮データが目標範囲の上限より大き
い場合は、本発明は(1)許容値を増加させるか、また
は(2)ビデオデータを小さく分割する。本発明は、増
加させた許容値か、または低減したデータ量を使用して
データを再圧縮する。本発明は、データの圧縮バージョ
ンが目標範囲となるまでこの再圧縮処理を繰り返す。一
方、圧縮データが目標範囲より小さい場合は、本発明
は、許容値を低減し、フレームを再圧縮する。この方法
で、本発明は、指定された目標範囲の最適情報量を含む
圧縮ビデオデータを生成する。図示されているように、
本発明は、ビデオ映画を圧縮し、圧縮解除するための方
法及びシステムで実施されている。しかし、本発明によ
る圧縮及び圧縮解除は、他の種類のデータを圧縮するの
にも使用可能である。一般に、ビデオ映画は、複数のビ
デオフレームで形成されている。また、各フレームはと
いうと、複数のピクセルで形成されている。一般に、各
ピクセルは、関連した特徴値、例えば色、強度他を有
す。更に、ピクセルのグループは、そのグレースケール
及び主色を有す。本発明は、個別ピクセルまたはピクセ
ルグループの特徴値を比較することによって圧縮するこ
とを想定する。はっきりさせるために、図1から図14
の説明では個別ピクセルの色値を用いて圧縮及び圧縮解
除が実行される。殆どの着色法では、各ピクセルの色
は、多数の色成分により表現される。色成分のよく使用
される組み合わせは、RGBセットであり、Rは赤成
分、Gは緑成分、Bは青成分を表す。一つのピクセルの
成分を表すために下付き文字2を使用し、他のピクセル
の成分を表すために下付き数字1を使用して、本発明の
実施例は、以下の式を使用してピクセル対の変化値を計
算する。 変化値=(R−R+(G−G+(B
−B これより、本発明は、以下の式を使用して圧縮を目標と
して二つのピクセルが類似した色であるかどうかを決定
する。 変化値≦許容値 変化値が以上の式を満足した場合は、本発明は両ピクセ
ルは単一の色値として参照される。一方、変化値が許容
値より大きい場合は、本発明は、ピクセル対の各ピクセ
ルを二つの異なった色値を使用して参照する。説明の実
施例では、各フレームまたは複数のフレームの各ライン
での全ての連続したピクセル対につき上述の比較法を用
いることによってビデオデータを圧縮する。更に、本実
施例では、フレーム間圧縮及びフレーム内圧縮で異なっ
て許容値を使用する。これらの許容値は、フレーム間許
容値及びフレーム内許容値としてそれぞれ呼称される。
これらの二つの許容値を以下に詳述する。許容値を調整
するか、または(2)フレームの生データを分割するか
によって、本発明は、指定された目標範囲内に生ビデオ
データを圧縮する。 圧縮法ルーチン ビデオ映画を圧縮するルーチンのフローチャートは、図
1に示される。ブロック100がビデオ映画のフレーム
を生データとして受信すると圧縮処理が開始する。ブロ
ック105では、ルーチンが、ルーチンによりまだ圧縮
されていない映画の少なくとも一フレームがあるかどう
か判断する。生データフレームが存在すると、ルーチン
は、ブロック110のサブルーチン圧縮フレームを呼び
出す。このようにして、ブロック110は、生データフ
レームの圧縮バージョンを生成する。この圧縮処理は、
図2を参照して詳細に説明される。ブロック120は、
ブロック110のサブルーチンにより戻された圧縮フレ
ームのサイズを判断する。圧縮フレームが、目標の範囲
にない場合は、ルーチンは、制御をブロック130へ移
管する。ブロック130は、フレームが分割されるべき
かどうかを決定する。本実施例では、ブロック130
は、フレーム間許容値を最大許容値と比較することによ
って、この決定を実行する。フレーム間許容値が最大許
容値より大きければ、ブロック130は、処理制御をブ
ロック150へ移管する。ブロック150は、図6の分
割フレームルーチンを使用して、元の生データフレーム
を二つの生データフレームへ分割し、制御をブロック1
10へ移管する。一方、フレーム間許容値が、最大許容
値より小さい場合は、ブロック130は、制御をブロッ
ク140へ移管する。ブロック140は、修正バイナリ
探索法を使用してフレーム間許容値を増加または低減し
ている。一般に、バイナリ探索は、可能な値のより狭い
範囲の大体の中心点からのテスト値を繰り返し選択する
ことによって理想値を素早く見いだす。探索法がテスト
値を選択すると、探索法は、その選択値が理想値より大
きいが小さいかを決定する。選択値が理想値より大きい
場合は、探索法は、第二テスト値を選択する。探索法
は、範囲の元の最小値と先に選択された値により定義さ
れた、範囲の中心点から第二のテスト値を選択する。逆
に、選択値が理想値より小さい場合は、探索法は、先に
選択された値と、範囲の元の最大値により定義される範
囲の中心点から第二のテスト値を選択する。値の範囲を
より狭め中心点の値を繰り返し選択することによって、
バイナリ探索法は、素早く理想値を求める。しかし、本
発明は、バイナリ探索法をビデオデータ圧縮に理想的に
適切となるように適合化させる。本発明は、目標範囲内
のビデオフレームの圧縮バージョンを生成する許容値を
求めるために、修正バイナリ探索法を使用する。本発明
による第一の修正は、本方法が選択する第一のテスト値
は、許容値の全体の許容範囲の中心点にはない。例え
ば、RGB色値を使用して、許容値の許容できる範囲
は、ゼロから195,075(この値を含む)までであ
る。(255+255+255)。従って、第一
の選択許容値は、ゼロと195,075の中心である9
7,537.50としてもよいかもしれない。理論的に
は、これは有効である。しかし、ビデオデータに付いて
は、本発明者等は、許容値2,000及び250がそれ
ぞれ理想フレーム間及びフレーム内許容値での理想的な
第一推測値であることをヒューリスティックに求めてい
る。または、許容値1,024及び128がうまく使用
できた。バイナリ探索への第二の修正は、最終推測値が
理想許容値より小さかった場合の本発明による次の推測
許容値の決定である。厳密なバイナリ探索理論は、以下
の関係を使用して次の推測値を決定する: 次の推測値=(先行の推測値+許される最大特性値)/
2 しかし、許される最大許容値195,075は、ビデオ
データの質を非常に劣化させるので、実際には使用され
ることは稀である。従って、次の推測値を求めるのに変
数として許される最大許容値を使用すると、ビデオデー
タを許容できない程度までに劣化させる許容値を生成さ
せる。しかし、実験によれば、次の関係は、真のバイナ
リ探索を十分に近似することが分かった。 次のフレーム間許容推測値=先行のフレーム間 許容推測値+2*(2048) 上式に於いて、値“n”は、始めは0に設定され、後続
フレーム間許容推測値の各後続の計算毎に増分される。
例えば、この式を用いて、先行フレーム間許容推測値へ
加える第一の三つの数が2048、4096、8192
である。上述の関係を用いて、本発明は目標範囲内にビ
デオデータを圧縮するために使用できるフレーム間許容
値を素早く決定することができる。このようにして、本
発明により、新規のフレーム間許容値が計算されると、
次に新規のフレーム内許容値が計算される。本発明によ
れば、有効なフレーム間許容値及びフレーム内許容値の
間の、ヒューリスティックに求めた関係を使用して、新
規のフレーム内許容値が計算される: フレーム内許容値=(フレーム間許容値)/8 従って、第一のフレーム内許容推測値は、第一のフレー
ム間許容推測値を8で除したものである。ブロック14
0は、この修正バイナリ探索法を使用して許容値を調整
する。ブロック140が許容値を調整すると、制御は、
ブロック110に返されて、そこでフレームは再圧縮さ
れる。ブロック110、120、130、140及び1
50からなるループは、ブロック120が圧縮データが
目標範囲に納まるまで継続される。その時点で、ルーチ
ンは、制御をブロック105へ戻し、ブロック105
は、他の生データフレームのチェックをする。このよう
にして、本発明は、目標範囲内に映画の全フレームを圧
縮する。ルーチンが全フレームを圧縮し終わると、制御
をブロック180へ移管する。ブロック180は、発明
の処理を呼びだしたアプリケーションに戻る。 圧縮フレーム・ルーチン 図1のブロック110に依ってコールされる、圧縮フレ
ーム・ルーチンのフロー・ダイアグラムが図2に図示さ
れている。ルーチンは、ルーチンが相互フレームまたは
内部フレーム圧縮を呼び出すかどうかについて決定す
る、シリーズのテストを実施することに依って、プロセ
スを開始する。まず、ブロック200は、ルーチンがム
ービーの最初のフレームを圧縮しているかどうかについ
て確認するテストを行う。このケースで、相互フレーム
は不可能である。相互フレーム圧縮は2つのフレームを
要求し、ここで、発明は使用できる1つのフレームしか
搭載していない。ブロック210は、ルーチンがフレー
ムをキー・フレームとして圧縮するかどうかについて確
認するテストを行う。例えば、コール・ルーチンが発明
はキー・フレームを150フレームごとに1回生成する
ことを指定している場合、ルーチンは、カウンターに1
50の値をロードして、カウンターの値を全てフレーム
圧縮の後に減少する。ルーチンがカウンターをゼロまで
下げると、それは、次のフレームがキー・フレームとし
て圧縮されるべきであることを指示するフラグをセット
する。次に、ルーチンはカウンターに150の圧縮を再
びロードする。このようにして、発明は、キー・フレー
ムを頻度ごとに、または、コール・プログラムに依って
指定される、キー・フレーム間隔で生成する。最終的
に、ブロック230は、相互フレーム圧縮が使用できる
唯一のタイプの圧縮であるかどうかについて確認するテ
ストを実施する、例えば、圧縮方法をコールするアプリ
ケーションが任意の相互フレーム圧縮を使用しないこと
を指定している場合があるかも知れない−−これは、圧
縮されるデータが、相互フレーム圧縮を再び分類せす
に、ターゲット・レンジにルーチンで入ることができる
ケースであるかも知れないからである。ブロック20
0、210、または230で行われる任意のテストが肯
定的である場合、ルーチンはコントロールをブロック2
50にパスする。ブロック250は、次に説明される、
サブルーチン内部フレーム圧縮をコールする。図5(内
部フレーム圧縮ルーチンのフロー・ダイアグラム)を参
照すること。一方、ブロック200、210、230で
行われるテストの全てが否定的である場合、ルーチン
は、次に説明されるサブルーチン相互フレーム圧縮をコ
ールするブロック240にコントロールを進める。図3
と4(相互フレーム圧縮ルーチンのフロー・ダイアグラ
ム)を参照すること。ブロック240またはブロック2
50がフレームを圧縮した後に、ルーチンは、図1のブ
ロック110にリターンするブロック260にコントロ
ールを進める。 相互フレーム圧縮ルーチン 相互フレーム圧縮ルーチンのフロー・チャートが図3と
4に図示されている。図2のブロック240(相互フレ
ーム圧縮ルーチンのコール)を参照すること。前述のよ
うに、相互フレーム圧縮は、ビデオ・データのフレーム
を直前のフレームに相応して、例えば、今のフレーム、
フレームn+1を前のフレーム、フレームnに相応して
圧縮することに依ってエンコードする。相互フレーム圧
縮ルーチンは、2つの許容値を用いて、すなわち、相互
フレーム許容値と内部フレーム許容値を用いて、フレー
ムn+1をフレームnに相応して圧縮する。発明は、相
互フレーム許容値を用いて、2つの隣接するフレームと
類似の位置に設定されているピクセルが、圧縮に対して
全く同じと見なされるカラーに十分に似ているかどうか
について決定する。同様に、発明は、内部フレーム許容
値を用いて、同じフレームの2つの連続するピクセル
が、圧縮に対して全く同じと見なされるカラーに十分に
似ているかどうかについて決定する。相互フレーム圧縮
ルーチンは、今のフレームの圧縮を図3のブロック30
0から始める。ブロック300は、今のフレームにビデ
オ・データの圧縮されていないラインが残っているかど
うかについて決定する。ルーチンが今のフレームの全て
のラインを圧縮すると、ブロック300は、コントロー
ルを、図2のブロック260にリターンするブロック3
05に送る。一方、ビデオ・データの少なくとも1つの
圧縮されていないラインが今のフレームに残っている場
合、ブロック300はコントロールをブロック307に
送る。順に、ブロック307は、前のフレーム・ピクセ
ル・ポインタの内容を、前のフレームの次の圧縮されて
いないラインの最初のピクセルのアドレスにセットす
る。同様に、ブロック310は、今のピクセル・ポイン
タの内容を、今のフレームの次の圧縮されていないライ
ンの最初のピクセルのアドレスにセットする。次に、ブ
ロック320はデルタ・オフセットをゼロに初期設定す
る。ここで、ブロック330は、今と前のフレーム・ピ
クセル・ポインタの内容から参照されるピクセルが、有
効な相互フレーム・ピクセル・ペアを形成しているかど
うかについて、すなわち、ピクセルの列の末端が到達さ
れたかどうかについて確認するテストを行う。ペアが有
効な時に、ルーチンは、ブロック340のペアの変動値
を、例えば、変動値=(R2−R1)2+(G2−G
1)2+(B2−B1)2の関係式を用いて計算する。
ルーチンは、次に、変動値と相互フレーム許容値を比較
する。相互フレーム許容値が決定された変動値より大き
いか等しい場合、ブロック350はコントロールをブロ
ック352に送る。順に、ブロック352はデルタ・オ
フセットを更新する、例えば、ブロック352は水平オ
フセットを増加する(このプロセスは次の例で更に詳細
に説明される)。ブロック352がデルタ・オフセット
を更新した後に、それはコントロールをブロック354
に送る。ブロック354は、前のフレーム・ピクセル・
ポインタの内容を増加して、コントロールをブロック3
56に送る。ブロック356は、今のフレーム・ピクセ
ル・ポインタの内容を増加して、コントロールをブロッ
ク330に送る。ブロック330は、再び、別の有効な
相互フレーム・ピクセル・ペアのテストを行う。一方、
ブロック350が変動値が相互フレーム許容値より大き
いと決定すると、ブロック350は、コントロールをブ
ロック360に送る。ブロック360はデルタ・オフセ
ットの値を調べる。水平と垂直の両方のデルタ・オフセ
ットがゼロに等しい場合、ブロック360は、コントロ
ールを図4のブロック407に送る。一方、少なくとも
1つのデルタ・オフセットがゼロでない時に、図3のブ
ロック360は、コントロールをブロック365に送
る。(1)垂直デルタ・オフセットがゼロに等しくて、
なおかつ、(2)水平オフセットが指定されたデルタの
最小値より小さい場合、ブロック365はコントロール
をブロック380に送る。順に、ブロック380は、絶
対モードのデルタ・オフセットに依ってカバーされるピ
クセルをエンコードする。図9(絶対モードについて説
明している)を参照すること。本質的に、絶対モード
は、ピクセルのカラー・インデックスの前の2バイト・
エスケープ・シーケンスを用いて、ピクセルをエンコー
ドする。図10(カラー・ルックアップ・テーブル)を
参照すること。絶対モードで、2バイト・エスケープ・
シーケンスの第1バイトはゼロになる。第2バイトは絶
対エンコード・ピクセルの数を示している。これらの2
つのバイトの次に、各々絶対エンコード・ピクセルは、
ピクセルのカラーを示すインデックスに依って表され
る。図10(カラー・ルックアップ・テーブル)を参照
すること。例えば、図9と10を見ると、3つのピクセ
ルは、各々同じRGBカラー値−−(235,20,2
0)を備えていて、次のバイト・グループ〔00 03
40 40 40〕から表される。前述のように、第1
バイト(00)はエスケープコードである。第2バイト
(03)は、3つのピクセルのカラー値を示す、3つの
バイトが、この2バイト・エスケープ・シーケンスに準
じていることを示している。次の3つのバイト(40,
40,40)はピクセルのカラー・インデックスを説明
している。図10(カラー・ルックアップ・テーブル)
を参照すること、この手順を用いて、図3のブロック3
80は、(1)垂直デルタ・オフセットがゼロに等しく
て且つ(2)水平オフセットが指定されたデルタの最小
値より小さい場合に、ピクセルをエンコードする。一
方、(1)垂直デルタ・オフセットがゼロでなく、なお
かつ、(2)水平オフセットが指定されたデルタの最小
値より大きい場合、ブロック365はコントロールをブ
ロック370に送る。水平オフセットは、適正エンコー
ディングのために指定されたデルタの最小値についてテ
ストされる。この方法は、2つのバイトを用いて、絶対
エンコードのためにエスケープ・シーケンスをエンコー
ドする(図9を参照)、すなわち、デルタをエンコード
するために1つまたは4つのバイトを使用する。図9と
14を参照すること。従って、小さいジャンプのデルタ
をエンコードすることは、コスト経済的でない。この非
効率的な例として、デルタを2つだけのピクセルのジャ
ンプのためにエンコードする効果について考えてみる。
このようなエンコーディングは4バイトまでのコートを
要すると思われる、すなわち、2バイト・デルタ・エス
ケープ・シーケンスと絶対エンコードを再開する2バイ
トである。この例を図示するために、デルタ・エンコー
ディングは、40のカラー・インデックスをもつ3つの
ピクセルに依って何れかの側に置かれる44のカラー・
インデックスをもつ2つのピクセルの上にジャンプする
と想定してみる。図9のエンコーディング技術を用いる
と、デルタをこの状態でエンコードするために、14バ
イト、すなわち、〔00 03 40 40 40〕
〔00 02 0200〕〔00 03 40 40
40〕が必要になる。明確にするために区分けされる、
第1バイト・グループは、各々が40のカラー・インデ
ックスをもつ、3つのピクセルの絶対エンコードにな
る。第2バイト・グループは、2の水平オフセットとゼ
ロの垂直オフセットをもつデルタになる。図9を参照す
ること。最後のバイト・グループは、各々が40のカラ
ー・インデックスをもつ、3つのピクセルの別の絶対エ
ンコードになる。代わりに、純粋に水平のデルタのため
にシングル・バイト・エンコーディングを用いる、図1
4のエンコーディング技術は、更に効果的であるが、ま
だ11バイト、すなわち、〔00 03 40 40
40〕〔02〕〔00 03 40 40 40〕を依
然として必要とする。このエンコーディングの場合、第
1と第3のバイト・グループは前述のグループと同じで
ある。中間のバイト・グループ、シングル・バイト・デ
ルタは、図9の方法に対して3バイト節約できる。この
節約は、しかし、デルタのエンコードを正当化しない。
デルタをエンコードしないので、発明は、図9の方法に
関して4バイト且つ図14の方法に関して1バイト節約
できる。このシーケンスのストレートな絶対エンコード
は10バイトしか要求しない、すなわち〔00 08
40 40 40 44 44 40 40 40〕で
ある。前述の例から指摘された理由のために、発明の今
の実施態様は、長さで4ピクセルより小さい水平ジャン
プに対してデルタをエンコードしない。しかし、図3の
ブロック370は、図9または図14で定める手順に基
づいて、デルタの最小値より大きいジャンプに対して、
デルタをエンコードしない。ルーチンがピクセル・イン
フォーメーションをデルタすると、図3のブロック37
0またはブロック380に依って、ルーチンは、コント
ロールを図4のブロック407にパスする。前述のよう
に、全てのデルタ・オフセットがゼロの時に、ブロック
360は、コントロールを図4のブロック407に直接
移す。ブロック407はラン変数の長さを1に初期設定
する。ルーチンは、ラン変数の長さを用いて、ビデオ・
データの連続するピクセルの数をカウントするが、そこ
では、そのカラーは内部フレーム許容値より大きくなら
ない。次に、ブロック410は、ルーチンが内部フレー
ム圧縮を用いてフレームを圧縮するかどうかについて決
定する。内部フレーム圧縮が有効な時に、ルーチンはコ
ントロールをブロック420にパスする。ブロック42
0は、圧縮の決定を、ラン変数の長さの今の値とライン
に残っている圧縮されていないピクセルの数に基づいて
行う。ランの長さの最小値は、絶対モードと逆に、ラン
の長さでピクセルのストリングを効果的にエンコードで
きるかどうかについて、ルーチンが決定するために用い
るスレショルド値である。ランの長さの最小値より小さ
いか等しい値の場合、絶対モード・エンコーディングか
らランの長さのエンコーディングに向けてブレークする
ことは、コスト経済的でない。従って、小さいランの長
さは前述の絶対値モード方法を用いてエンコードされ
る。図9と14(絶対モード・エンコーディングについ
て説明している)と前述のデルタの最小値の説明(同じ
効率性)を参照すること。代わりに、ランの長さの最小
値より大きいランの長さの場合、ラン変数の長さに依っ
て表されるピクセルをランの長さのエンコーディングと
してエンコードすると、コスト経済的になる。図4のブ
ロック420が(1)ラインに残っているピクセルの数
にラン変数の長さの値をプラスした数値がランの長さの
最小値より小さいか等しい或いは(2)ラインに残って
いるピクセルの数がゼロに等しい場合、ルーチンは、コ
ントロールをブロック465に送る。ブロック465は
ラン変数の長さの大きさを評価する。ラン変数の長さが
ランの長さの最小値より大きいか等しい場合、ブロック
465は、ピクセルをランの長さのエンコーディングと
してエンコードするブロック468にコントロールをパ
スする。図9と14(ランの長さのエンコーディングに
ついて説明している)を参照すること。ブロック468
は、このランの長さを状態の数でエンコードする。ラン
の長さをエンコードする1つの方法が図9に図示されて
いる。この方法の場合、2つのバイトがランの長さのエ
ンコーディングを意味するために用いられている。1〜
255の範囲のプラスの値をもつ、第1バイトは、ラン
の長さの大きさを意味している。0〜255の範囲のプ
ラスの値をもつ、第2バイトは、ピクセルのカラー・イ
ンデックスを意味している。図10(カラー・ルックア
ップ・テーブル)を参照すること。別にランの長さをエ
ンコードする技術が図14に図示されている。図14の
技術は、2つのバイトがランの長さを意味しているとこ
ろが図9の技術と似ている。第2の技術の場合、しか
し、第1バイトは15〜255だけの範囲しかもってい
ない。この範囲の制限は、前述のように、数値1−14
が水平デルタをエンコードするために確保されているの
で必要になる。図14の方法を用いると、ランの長さの
大きさは14をランの長さのエンコーディングの第1バ
イトから減算して求められる。ランの長さのエンコーデ
ィングの第2バイトは、図9を用いて既に説明された同
様の状態でピクセルのカラー・インデックスを意味して
いる。図解のために、ラン変数の長さが5の値をもち且
つ今のフレームのピクセル・ポインタが(255,0,
0)のRGB値をもつピクセルを表していると想定して
みる。図10のカラー・ルックアップ・テーブルに従っ
て、これらのRGB値は43のカラー・インデックスに
依って表される。図10(カラー・ルックアップ・テー
ブル)を参照すること。従って、図9のエンコーディン
グ方法は、ランの長さをバイト・グループ〔05 4
3〕としてエンコードする。すなわち、第1バイト(0
5)はランの長さの大きさであり、第2バイト(43)
はピクセルのカラー・インデックスになる。同様に、図
14のエンコーディング方法は、ランの長さをバイト・
グループ〔19 43〕としてエンコードする。すなわ
ち、第1バイト(19)はランの長さの大きさを(実際
のランの長さの大きさは14をこの値から減算して求め
られる)意味し、第2バイト(43)はピクセルのカラ
ー・インデックスになる。図10(カラー・ルックアッ
プ・テーブル)を参照すること、これらの2つの技術の
中の1つを用いて、ブロック468はランの長さのエン
コーディングを作成する。逆に、ラン変数の長さがラン
の長さの最小値より小さい時に、ブロック465はコン
トロールをブロック469にパスする。ブロック469
は、絶対モード・エンコーディングを用いて、ピクセル
・インフォーメーションを記号化する。図9と14(絶
対モード・エンコーディングについて説明している)を
参照すること。ルーチンがピクセル・インフォーメーシ
ョンをエンコードすると、図4のブロック468または
469を経由して、ルーチンは、コントロールを図3の
ブロック300に戻す。一方、ブロック420は(1)
ラインに残っている圧縮されていないピクセルの数にラ
ン変数の長さの値をプラスした数値がランの長さの最小
値より大きくて且つ(2)ラインに残っている圧縮され
ていないピクセルの数がゼロと等しくないと決定する
と、ブロック420はコントロールをブロック425に
パスする。ブロック425は、変動値=(R2−R1)
2+(G2−G1)2+(B2−B1)2の関係式を用
いて、次に内部フレームピクセル・ペアの変動値を計算
する。内部フレーム許容値が計算された変動値より大き
いか等しい時に、ブロック430は、コントロールをブ
ロック455にパスする。ブロック455は、ラン変数
の長さを増加して、コントロールをブロック420にリ
ターンする。ブロック420,425,455から形成
されるプロセスは、(a)ブロック430が内部フレー
ム・ピクセル・ペアの変動値が内部フレーム許容値に入
っていないと決定するまで、または(b)ブロック42
0が(1)ラインに残っている圧縮されていないピクセ
ルの数にラン変数の長さの値をプラスした数値がランの
長さの最小値より小さいか等しい或いは(2)ラインに
残っている圧縮されていないピクセルの数がゼロに等し
いと決定するまで、継続する。ブロック430が内部フ
レーム許容値より大きい変動値を見いだすと、ルーチン
はコントロールをブロック435にパスする。ブロック
435は、次に、指定されたランの長さの最小値に相応
するラン変数の長さの値を調べる。ラン変数の長さが指
定されたランの長さの最小値より小さい時に、ルーチン
はコントロールをブロック436にパスする。順に、ブ
ロック436は、絶対モードのピクセルを、前述の方式
でエンコードする。図9と14(絶対モード・エンコー
ディングについて説明している)を参照すること。代わ
りに、ラン変数の長さが指定されたランの長さの最小値
より大きいか等しい時に、ルーチンはコントロールをブ
ロック437にパスする。次に、ブロック437は、ピ
クセルをランの長さのエンコーディング・バイト・グル
ープとして(図9の方法または図14の方法を用いて)
エンコードする。ブロック436またはブロック437
が関連するピクセル・インフォーメーションをビデオ・
データの圧縮されたバージョンでエンコードすると、ル
ーチンはコントロールをブロック438に送る。ブロッ
ク438は(1)ラン変数の長さをゼロにセットして
(2)コントロールをブロック440に送る。ブロック
440は、前のフレームのピクセル・ポインタに搭載さ
れているアドレスを、ランの変数の長さをそのアドレス
に加えて更新する。次に、ブロック440は、今のフレ
ームのピクセル・ポインタを同じ形式で更新するブロッ
ク445にコントロールをパスする。ルーチンはコント
ロールを図3のブロック320に送る。ここで、ブロッ
ク320は、相互フレーム圧縮プロセスを、デルタ・オ
フセットをゼロにリセットして再開する。ブロック33
0が全ての内部フレーム・ピクセル・ペアを比較したと
判断すると、それはコントロールをブロック331に送
る。順に、ブロック331,332,333は、ピクセ
ル・インフォーメーションを前述のブロック365,3
70,380と同じ方式でエンコードする方法を決定す
る。ルーチンがピクセル・インフォーメーションをエン
コードすると、ルーチンはコントロールを図3のブロッ
ク300に戻す。次に、ブロック305は図2のブロッ
ク260にリターンする。 内部フレーム圧縮 内部フレーム圧縮ルーチンのフロー・チャートが図5に
図示されている。ブロック250の図2(図5のルーチ
ンをコールする)を参照すること。内部フレーム圧縮ル
ーチンはブロック500のプロセスから始める。ブロッ
ク500は、フレームにビデオ・データの任意に残って
いる圧縮されていないラインがあるかどうかについて決
定する。ルーチンがフレームの全てのラインを圧縮する
と、ブロック500はコントロールをブロック502に
送る。次に、ブロック502は、コントロールを図2の
ブロック260にリターンする。一方、図5のブロック
500は、圧縮されていないビデオ・データの少なくと
も1つの残っているラインがあると決定すると、ブロッ
ク500は、コントロールをブロック505に送る。ブ
ロック505で、ルーチンは、今のピクセル・ポインタ
の内容を、圧縮されていない生のビデオ・データの次の
ラインの最初のピクセルのアドレスにセットする。次
に、ルーチンは、ラン変数の長さを1に初期設定する、
ブロック510にコントロールを送る。前述のように、
ルーチンは、ラン変数の長さを用いて、内部フレーム許
容値に入っている連続するピクセルの数を記録する。次
に、ブロック515は、(1)ラインに残っている圧縮
されていないピクセルの数にラン変数の長さをプラスし
た値がランの長さの最小値より大きいかどうかについ
て、なおかつ、(2)ラインに残っている圧縮されてい
ないピクセルの数がゼロでないかどうかについて決定す
る。ブロック515の両方のテストが肯定的である場合
に、ブロック515はコントロールをブロック520に
送る。順に、ブロック520は、(1)今のピクセル・
ポインタのアドレスと(2)今のピクセル・ポインタに
ラン変数の長さの値をプラスしたアドレスから表される
ピクセルのペア変動値を計算する。次に、ブロック52
5は変動値を内部フレーム許容値に基づいて評価する。
内部フレーム許容値が変動値より大きいか等しい時に、
ブロック525は、コントロールをブロック540に送
る。ブロック540は、ラン変数の長さを増加して、コ
ントロールをブロック515に戻す。ブロック515,
520,525,540は、(1)ブロック525が、
変動値が内部フレーム許容値より大きいピクセルのペア
を見いだすか、または(2)ブロック525が(a)ラ
インに残っている圧縮されていないピクセルの数にラン
変数の長さの値をプラスした数値がランの長さの最小値
より小さいか等しい或いは(b)ラインに残っている圧
縮されていないピクセルの数がゼロに等しいと決定する
まで、内部フレーム・ピクセルのペアの比較を続ける。
ルーチンが、変動値が内部フレーム許容値より大きい、
ピクセルのペア発見すると、ブロック525はコントロ
ールをブロック530に送る。ブロック530は、ラン
変数の長さが指定されたランの長さの最小値より大きい
か等しい値をもつかどうかについて決定する。前述のよ
うに、ランの長さの最小値は、絶対モードと逆のランの
長さとしてピクセルのストリングをエンコードできるか
どうかについて決定するために、ルーチンが使用するス
レショルド値である(図4のブロック468に関する説
明を参照)。ブロック530が指定されたランの長さの
最小値より大きいか等しいランの長さを発見すると、ブ
ロック530は図9のランの長さのエンコード方法また
は図14のランの長さのエンコード方法を用いて、ラン
の長さをエンコードするブロック531にコントロール
を送る(図4のブロック468の説明で既に述べられた
方法)。一方、ブロック530がランの長さが指定され
たランの長さの最小値より小さいことを発見すると、ブ
ロック530はコントロールをブロック532に送る。
順に、ブロック532は、ピクセル・インフォーメーシ
ョンを前述の方式の絶対モードでエンコードする。図9
と14(絶対モード・エンコーディングについて説明し
ている)を参照すること。ルーチンがピクセルをエンコ
ードすると、ブロック531を経由するランの長さのエ
ンコーディングに依って、またはブロック532を経由
する絶対モードのエンコーディングに依って、ルーチン
は、コントロールをブロック535に送る。ブロック5
35は、今のピクセル・ポインタを更新して、次の圧縮
されていないピクセルを生のデータ・フレームで示す。
次に、ルーチンは、内部フレーム圧縮プロセスを、ラン
変数の長さを1に初期設定して更新するブロック510
にコントロールをリターンする。一方、ブロック515
が(1)ラインに残っている圧縮されていないピクセル
の数にラン変数の長さの値をプラスした数値がランの長
さの最小値より小さいか等しい或いは(2)ラインに残
っている圧縮されていないピクセルの数がゼロに等しい
と決定すると、ルーチンは、コントロールをブロック5
45に送る。ブロック545,456,457はピクセ
ル・インフォーメーションを、前述のように、ブロック
530,531,532と同じ方式でエンコードする。
ルーチンがピクセル・インフォーメーションをエンコー
ドすると、それは、圧縮されていないデータの更なるラ
インをチェックするブロック500にコントロールを戻
す。 スプリット・フレーム・ルーチン スプリット・フレーム・ルーチンのフロー・ダイアグラ
ムが図6に図示されている。図1のブロック150(図
6のルーチンをコール)を参照すること。本質的に、図
1のルーチンは、それがエンコードされるイメージの品
質を不当に損ねずに、与えられたターゲット・レンジに
相応してフレームを圧縮できない時に、すなわち、許容
範囲を拡大するとルーチンに最小許容分解能レベルより
低い圧縮されたフレームを生成させる場合に、このスプ
リット・フレーム・ルーチンをコールするだけである。
これらの状態の時に、発明の今の実施態様は生のデータ
を2つの部分に分割する。いちど分割されると、生のデ
ータの各々半分が分離して圧縮される。スプリット・プ
ロセスは、今のフレームの生のデータをテンプフレーム
にリネームするブロック610から始まる。ブロック6
20はテンプフレームのデータを半分に分割する。次
に、ブロック630は、“今のフレーム”のネームをテ
ンプフレーム・データの上半分に再び指定する。同様
に、ブロック640は“次のフレーム”のネームをテン
プフレーム・データの下半分に再び指定する。ルーチン
が今のフレームと次のフレームをこの形式で設定する
と、ブロック650は、図1のブロック110にコント
ロールをリターンする。 圧縮解除方法 本発明の圧縮解除ルーチンのフロー・チャートが図7に
図示されている。本質的に、このルーチンは、図1−6
のルーチンに依って圧縮されるフレームをとり、それら
を表示可能なフォーマットに拡大する。圧縮解除プロセ
スは、ビデオ・ムービーの圧縮データを受け取るブロッ
ク700から始まる。次に、ブロック710は、ルーチ
ンがビデオ・ムービーのエンコードされたフレームの全
ての圧縮を解除したかどうかについて決定する。少なく
とも1つのフレームが圧縮された状態で残っている時
に、ブロック710は、圧縮されたフレームを検索する
ブロック720にコントロールを送る。次に、ブロック
730は、実際にフレームの圧縮を解除するサブルーチ
ンをコールする。順に、ブロック740は、最後に圧縮
されたフレームが単純に生のデータ・フレームの上半分
であったかどうかについて決定する。最後に圧縮を解除
されたフレームが生のデータ・フレームの上半分だけだ
った場合、ルーチンは、それがフレームの下半分の圧縮
を解除するまで、圧縮を解除されたデータの表示を遅延
する。ブロック740は、コントロールをディスプレイ
・ブロック750の代わりにブロック720に送って、
この遅延を行う。次に、ブロック720はスプリッド・
フレームの下半分を検索する。ブロック730は、生の
データ・フレームの下半分の圧縮を解除する、圧縮解除
フレーム・サブルーチンをコールする。ブロック730
のサブルーチンがリターンすると、ブロック750はフ
レームを例えばビデオ・モニターの上に表示する。ブロ
ック750がフレームを表示した後に、それはコントロ
ールをブロック710にリターンする。このようにし
て、ルーチンは、圧縮を解除して、ムービーのフレーム
の全てを表示する。ルーチンが全体のムービーを表示す
ると、ブロック760は、圧縮解除ルーチンをコールし
ていたアプリケーションにリターンする。 圧縮解除フレーム・ルーチン 圧縮解除フレーム・ルーチンのフロー・チャートが図8
に図示されている。図7のブロック730(図8のルー
チンをコールする)を参照すること。圧縮解除フレーム
・ルーチンのプロセスはブロック810から始まる。ブ
ロック810で、ルーチンは、バイト・グループを圧縮
を解除されたビデオ・データから検索する。次に、ブロ
ック815は、バイト・グループをテストして、それが
ビットマップ・エンコーディングの最後であるかどうか
について確認する。ブロック815がバイト・グループ
がビットマップ・エンコーディングの最後であると決定
すると、ルーチンはコントロールをブロック840にパ
スする。ビットマップの最後はフレームに関して圧縮さ
れたデータの最後を示すので、ブロック840は、図7
のブロック740にリターンする。しかし、ユニットが
ビットマップ・エンコーディングの最後でない時に、ブ
ロック815は、コントロールをブロック820に送
る。ブロック820が、バイト・グループがライン・エ
ンコーディングの最後であると決定すると、ルーチン
は、コントロールをブロック845に送る。順に、ブロ
ック845は、ブラッシュをビデオ・データの圧縮を解
除されたバージョンの次のラインに移す。ブロック84
5がブラッシュを移すと、ルーチンはコントロールをブ
ロック810に送る。一方、バイト・グループがライン
・エンコーディングの最後でない時に、ブロック820
は、コントロールをブロック825に送る。ブロック8
25がバイト・グループがデルタ・エンコーディングで
あると決定すると、ルーチンはブロック850に移る。
順に、ブロック850は、ブラッシュをデルタ・オフセ
ットに依って指示されるロケーションに移す。例えば、
デルタは5の水平オフセットとゼロの垂直オフセットを
エンコードしていたかも知れない。このケースで、ルー
チンは、ブラッシュを5ピクセル、その今のポジション
から水平に移動する。ブロック850がブラッシュを移
すと、ルーチンは、コントロールをブロック810に送
る。代わりに、バイト・グループがデルタ・エンコーデ
ィングでない時に、ブロック825はコントロールをブ
ロック830に送る。ブロック830がバイト・グルー
プがランの長さのエンコーディングであると決定する
と、ブロック830はコントロールをブロック855に
送る。ブロック855は、次に使用できるピクセルを圧
縮を解除されたデータで着色して、コントロールをブロ
ック860に送る。ブロック860は、ランの長さの残
りの大きさを減少して、コントロールをブロック865
に送る。次に、ブロック865は、ランの長さの残って
いる大きさについてヌル値をテストする。ランの長さの
残っている大きさがヌル値である時に、ルーチンはラン
の全てのピクセルに着色して、ブロック865はコント
ロールをブロック810に送る。一方、ランの長さの残
っている大きさがゼロでない時に、ブロック865はコ
ントロールをブロック855に戻す。このようにして、
ブロック855,860,865は、エンコードされた
ランの長さと関連するカラーの値から指示される全ての
ピクセルに着色する。バイト・グループがランの長さの
エンコーディングでない時に、ブロック830はコント
ロールをブロック880に移す。ブロック880が、バ
イト・グループが絶対モード・エンコーディングである
と決定すると、ブロック880はコントロールをブロッ
ク885に移す。ブロック885は、次のカラー・イン
デックスを絶対モード・エンコーディングから検索し
て、次に使用できるピクセルを圧縮を解除されたデータ
で、コントロールをブロック890に移す前に着色す
る。順に、ブロック890は、絶対モードでエンコード
されたピクセルの残っている数を示すバイトを値を減算
して、コントロールをブロック865に移す。図9と1
4(絶対モード・エンコーディングについて説明してい
る)を参照すること。次に、図8のブロック865は減
算されたバイトの値についてヌル値をテストする。絶対
モードでエンコードされたピクセルの残っている数を示
すバイトの値がゼロの時に、ルーチンは、絶対エンコー
ド・ピクセルの全てに着色する。そこで、ブロック89
5は、コントロールをブロック810にリターンする。
一方、絶対モードでエンコードされたピクセルの残って
いる数を示すバイトの値がゼロでない時に、ブロック8
95は、コントロールをブロック885に戻す。このよ
うにして、ブロック885,890,895は、バイト
・グループに依って指示された全ての絶対エンコード・
ピクセルに着色する。最後に、ブロック880がバイト
・グループを絶対エンコーディングとして認識しない時
に、ルーチンは、コントロールをブロック810に移す
ことに依って、データを無視する。 圧縮フレーム 図11と12は、例を用いて、ビデオ・ムービーの発明
の圧縮を示している。例について、次に詳細にわたって
説明される。しかし、読者の便宜を考えて、次に示す例
の概略的な説明が用意されている。簡潔にするために、
例のムービーは僅か2つのフレームの長さであり、なお
かつ、各々フレームはシングルの10のピクセル・ライ
ンに組み込まれている。図11を参照すること(ブロッ
ク1100と1125は、2つのフレーム・ムービー
の、各々、フレームnとn+1に対して生のビデオ・デ
ータを示している)。更に、発明は、圧縮されるデータ
のために6−11バイトを包含するターゲット・レンジ
を使用している。圧縮されたデータをエンコードする時
に、発明は、図10のカラー・ルックアップ・テーブル
を使用して、圧縮されたデータが(1)図9のエンコー
ディング技術と(2)図14のエンコーディング技術の
両方から表示される様子を示している。図14の優れた
特性は、2つのエンコーディング技術の結果を対比する
ことに依って明らかになる。その今の実施態様に於い
て、発明は、ビデオ・データのフレームをロストレスで
エンコードすることを試みて、例えば、ゼロの内部フレ
ームと相互フレームの許容値を用いて開始する。発明が
ロストレスでフレームをターゲット・レンジにエンコー
ドできない場合、発明は、いま圧縮されているフレーム
の前のフレームに対してターゲット・レンジで圧縮を行
った許容値を用いて圧縮する、すなわち、発明が今フレ
ーム“n”を圧縮していた場合、発明は、フレーム“n
−1”の最終許容値を用いて、圧縮を始めると思われ
る。前述の許容値でフレーム“n”を与えられたターゲ
ット・レンジに圧縮できない場合、今の実施態様は、最
大許容値を用いてフレームを圧縮する。発明は、時間を
節約するために、すなわち、フレームが分割されなけれ
ばならないかどうかについて瞬時に決定するために、こ
れを行う。ユーザがフレームの分割を希望していないの
で、使用可能な最大許容値がない場合、発明は、前述の
第1推定値、すなわち、内部フレーム許容値に対して2
50の第1推定値と相互フレーム許容値に対して200
0の第1推定値を用いて、フレームの圧縮を試みる。簡
潔にするため、この例は最大許容値を使用する圧縮につ
いて説明しない。代わりに、発明は、まず、ロストレス
・エンコーディング、すなわち、ゼロの許容値を、フレ
ームnに対してだけ試みる。次に、この例は、第1推定
値、すなわち、250の内部フレーム許容値を用いて、
フレームnの圧縮を試みる。フレームn+1を圧縮して
いる時に、この例は、フレームnのために作動していた
内部フレーム許容値から誘導された許容値を使用して、
圧縮を開始する。更に、この例は、1,500が最大内
部フレーム許容値であると想定している。圧縮の例は、
フレームnのロストレスのランの長さのエンコーディン
グ(図11のブロック1100)から始まる。発明は、
ゼロの内部フレーム許容値を用いてフレームnのデータ
をロストレスでエンコードする。しかし、このケース
で、発明は、フレームnを6−11バイトのターゲット
・レンジにロストレスで圧縮できない。フレームnの圧
縮されたバージョンをターゲット・レンジで行うとする
時に、発明は、250の内部フレーム許容値を用いてフ
レームを再び圧縮する(前述のように、250は実験か
ら適切な初期の内部フレーム許容値であると決定されて
いる)。250の許容値で用いて、発明は、フレーム
n、ブロック1100を、ターゲット・レンジで圧縮す
る。例はフレームn+1(図12のブロック1125)
の圧縮を続ける。発明は、250の内部フレーム許容値
と2,000の相互フレーム許容値を用いて、フレーム
n+1を圧縮する。発明は、その数値がフレームnの圧
縮で巧みに作動していたので、250を内部フレーム許
容値として使用することを続ける(フレームn+1はフ
レームnと類似していると思われる)。発明は、2,0
00の相互フレーム許容値を用いて、相互フレーム圧縮
を開始する、何故ならば、前述のように、内部フレーム
許容値の値の8倍の相互フレーム許容値は適切であった
と発見手法的に決定されていたからである。これらの2
つの許容値と図9のエンコード方法を用いて、発明は、
フレームn+1、図12のブロック1125を、ターゲ
ット・レンジで圧縮する。図12、ブロック1210を
参照すること。しかし、これらの同じ2つの許容値を用
いて、図14のエンコード方法は、フレームn+1、ブ
ロック1125を、ターゲット・レンジのフロアより低
く、すなわち6バイト未満に圧縮する。図12、ブロッ
ク1220を参照すること。その結果、発明は、相互フ
レーム許容値を1000に(前述の修正されたバイナリ
・サーチを用いて)減少して、フレームn+1を再び圧
縮する。新しい相互フレーム許容値と図14のエンコー
ド方法を用いると、発明は、フレームをターゲット・レ
ンジで圧縮することができる。更に、発明は、フレーム
n+1を図9のエンコード方法より図14のエンコード
方法を用いて圧縮すると、より多くのインフォーメーシ
ョンをエンコードすることができる。図12のブロック
1210と1230を比較してみること。その例につい
て、ここで詳細にわたって説明される。図1と11の両
方を見ると、圧縮プロセスは図1のブロック100から
始まっている。図1のブロック100は、ムービーの生
のビデオ・データ(図11のブロック1100と112
5)を受け取る。次に、図1のブロック100は、図1
のブロック1100を次の生のデータ・フレームと判定
して圧縮する。その結果、図1のブロック100は、図
2の圧縮フレーム・ルーチンをコールするブロック11
0にコントロールを送る。順に、図2のブロック200
は、図11のブロック1100が圧縮されたビデオ・ム
ービーの第1フレームであることを発見する。そこで、
図2のブロック200はコントロールをブロック250
に移す。ブロック250は図5の内部フレーム圧縮ルー
チンをコールする。前半の注記事項で説明されたよう
に、発明は、生のデータをターゲット・レンジでロスト
レスでエンコードすることを試みて、すなわち、ランの
長さのエンコーディングをゼロの内部フレーム許容値で
使用して、内部フレーム圧縮プロセスを開始する。ま
ず、図5のブロック500は図11のブロック1100
がビデオ・データの圧縮されていないラインであること
を決定すると、次に図5のブロック505はコントロー
ルをブロック510に移す。順に、ブロック505は、
今のピクセル・ポインタの内容を図11のブロック11
00のピクセル1101のアドレスにセットして、ライ
ンのロストレスの圧縮を開始する。次に、図5のブロッ
ク510は、ラン変数の長さを1に初期設定して、コン
トロールをブロック515にパスする。ブロック515
は、(1)ラインに残っている圧縮されていないピクセ
ルの数にラン変数の長さの値をプラスした数値がランの
長さの最小値より大きいか、または(2)ラインに残っ
ている圧縮されていないピクセルの数がゼロに等しいか
どうかについて決定する。このケースで、ラインに残っ
ている圧縮されていないピクセルの数(10)にラン変
数の長さの値(1)をプラスした数値は、ランの長さの
最小値(4)より大きくなる。その結果、ブロック51
5はコントロールをブロック520に移す。順に、ブロ
ック520は、変動値を図11のピクセル1101と1
102のカラー属性に基づいて計算する((1)今のピ
クセル・ポインタの内容と(2)今のピクセル・ポイン
タの内容にラン変数の長さをプラスした数値に依って表
されるピクセル)。この実施態様で、発明は2つのピク
セルの各々カラー要素の差の平方を合計して変動値を計
算する、すなわち、変動値=(255−255)2+
(0−0)2+(0−0)2=0になる。この場合、ゼ
ロの変動値は内部フレーム許容値と等しくなる。そこ
で、図5のブロック525はコントロールをブロック5
40に移す。順に、ブロック540は、ラン変数の長さ
を増加して、コントロールをブロック515にリターン
する。ブロック515は、ラインに残っている圧縮され
ていないピクセルの数(8)にラン変数の長さの値
(2)をプラスした数値がランの長さの最小値(4)よ
り大きいかどうかについて決定し、なおかつ、その結
果、ブロック515はコントロールをブロック520に
移す。ブロック520は図11のピクセル1101と1
103の変動値を計算する。やはり、この値はゼロにな
る(0=(255−255)2+(0−0)2+(0−
0)2)。次に、図5のブロック525は、コントロー
ルをブロック515にパスする前に、ラン変数の長さを
3に増加する、ブロック540にコントロールをパスす
る。再び、ブロック515は、ラインに残っている圧縮
されていないピクセルの数(7)にラン変数の長さの値
をプラスした数値(3)がランの長さの最小値(4)よ
り大きいかどうかについて決定する。この判定に対応し
て、ブロック515は、コントロールをブロック520
にパスする。ブロック520は、図11のピクセル11
01と1104の変動値を計算する。このケースで、計
算された変動値はゼロになる、すなわち(0=(255
−255)2+(0−0)2+(0−0)2)。ペアの
変動値は内部フレーム許容値より大きくないので、図5
のブロック525は再びコントロールをブロック540
にパスする。順に、ブロック540はラン変数の長さを
4に増加する。次に、ブロック540はコントロールを
ブロック515にパスする。ラインに残っている圧縮さ
れていないピクセルの数(6)にラン変数の長さの値を
プラスした数値(4)は、ランの長さの最小値(4)よ
り大きいので、ブロック515は、コントロールをブロ
ック520にパスする。順に、ブロック520は、図1
1のピクセル1101と1105の変動値を計算する。
その値は、62,377になる。すなわち、(62,3
77=(178−255)2+(168−0)2+(1
68−0)2)。この値はゼロの内部フレーム許容値よ
り□かに大きいので、図5のブロック525はコントロ
ールをブロック530に送る。ブロック530はラン変
数の長さの大きさを調べる。このケースで、ラン変数の
長さは、ランの長さの最小値に等しい値(4の値)をも
つ。そこで、ブロック530はコントロールをブロック
531に送る。ブロック531は図11のピクセル11
01,1102,1103,1104をランの長さのエ
ンコーディングとしてエンコードする。図9と14は、
ランの長さのエンコーディングを生成できる2つの可能
性のある方法を示している。完璧にするために、この例
は両方の方法を示している。図11のブロック114
0,1150,1160と図12のブロック1210は
図9のエンコード方法を使用しているが、図11のブロ
ック1170,1180,1190と図21のブロック
1220,1230,1240は図14のエンコード方
法を使用している。通常の条件のもとで、しかし、1つ
のエンコード方法だけアプリケーションで用いられると
思われる。図11のブロック1140は、図9に依って
開示されるエンコード方法を用いて生成される、ブロッ
ク1100のロストレスで圧縮されたデータの部分的な
エンコードである。図11のブロック1140の内部の
バイト・グループ1141は、ピクセル1101,11
02,1103,1104のランの長さのエンコーディ
ングである。このグループの第1バイト(04)はラン
の長さの大きさになる。このグループの第2バイト(4
3)は、(255,0,0)のRGBカラー値のため
に、図10のカラー・ルックアップ・テーブルから導か
れるカラー・インデックスである。同様に、図11のブ
ロック1170は、図14に依って開示されるエンコー
ド方法を用いて、生成されるブロック1100のロスト
レスで圧縮されたデータの部分的なエンコードである。
図11のブロック1180の内部のバイト・グループ1
171は、ピクセル1101,1102,1103,1
104のランの長さのエンコーディングである。このグ
ループの第1バイト(18)は、ランの長さの大きさに
比例する。ランの長さの実際の大きさは、14をバイト
から減算して求められる。このグループの第2バイト
(43)は、ピクセル1101,1102,1103,
1104のカラー・インデックスである。図10(カラ
ー・ルックアップ・テーブル)を参照すること。図5の
ブロック531がランの長さをエンコードすると、ブロ
ック535は、今のピクセル・ポインタの内容を更新し
て、発明が調べた最後のピクセル、このケースでは、図
11のピクセル1105を示す。図5のブロック535
がポインタで更新すると、それは、ラン変数の長さを1
に再び初期設定するブロック510にコントロールをリ
ターンする。次に、ブロック515は、ラインに残って
いる圧縮されていないピクセルの数(6)にラン変数の
長さ(1)をプラスした数値がランの長さの最小値
(4)より大きいことを決定する。その結果、ブロック
515はコントロールをブロック520にパスする。ブ
ロック520は図11のピクセル1105と1106の
変動値を計算する。このケースで、変動値は100にな
る〔100=(168−178)2+(168−16
8)2+(168−168)2〕。100はゼロの内部
フレーム許容値より大きいので、ブロック525は、コ
ントロールをブロック530に送る。順に、ブロック5
30は、ラン変数の長さ(1)がランの長さの最小値
(4)より小さいことを決定して、コントロールをブロ
ック532に送る。ブロック532はピクセル・インフ
ォーメーションを絶対モードでエンコードする。効率的
にするために、絶対モード・エンコーディングは、3つ
のピクセルの中の最小値を記号化する、すなわち、絶対
モード・エスケープ・シーケンスそのものは2つのバイ
トを続けるので、3つのバイトをエンコードして、1つ
のピクセルをエンコードすることは無駄と考えられるか
らである。更に、エスケープ・シーケンス〔00 0
1〕と〔00 02〕、1と2のバイトの絶対モード・
エンコーディングのためのロジカル・エスケープ・シー
ケンスは、ビットマップとデルタ・エンコーディングに
対して既に用いられている。図9と14(絶対とビット
マップの最後とデルタ・エンコーディングについて説明
している)を参照すること。これらの効率性の問題のた
めに、発明は、図9の方法を用いて、図11とピクセル
1105,1106,1107を、ブロック1140の
1142のバイト・グループとしてエンコードする。同
様に、図14の方法を用いて、発明は、図11のピクセ
ル1105,1106,1107を、ブロック1170
のバイト・グループ1172としてエンコードする。図
9と図14の絶対エンコード方法は同じなので、図11
のバイト・グループ1142と1172も同じになる。
各々グループの最初の2つのバイト(00 03)は、
次の3つのバイト(48,42,42)を、絶対エンコ
ード・ピクセルとして識別する。(48)と(42)
は、各々(178,168,168)と(168,16
8,168)のRGB値のカラー・インデックスにな
る。図10(カラー・ルックアップ・テーブル)を参照
すること。図5のブロック532が図11のピクセル1
105,1106,1107をエンコードすると、図5
のブロック532は、コントロールをブロック535に
パスする。順に、ブロック535は、今のピクセル・ポ
インタの内容を更新して、調査される次のピクセル、す
なわち図11のピクセル1108を示す。次に、図5の
ブロック535はコントロールをブロック510にパス
する。ブロック510は、ラン変数の長さを1に再び初
期設定して、コントロールをブロック515にパスす
る。ブロック515は、ラインに残っている圧縮されて
いないピクセルの数(3)にラン変数の長さの値(1)
をプラスした数値がランの長さの最小値(4)より大き
くないと決定する、するとブロック515は、次にコン
トロールをブロック545にパスする。ブロック545
は、ラン変数の長さの値がランの長さの最小値より小さ
いことを発見して、コントロールをブロック547にパ
スする。順に、ブロック547は、ラインの残っている
ピクセル、すなわち、図11のブロック1100のピク
セル1108,1109,1110を絶対モードでエン
コードする。効率的にするために、図5のブロック54
7は、既に絶対モードでエンコードされていたピクセ
ル、すなわち、図11のブロック1100のピクセル1
105,1106,1107(各々、ブロック1140
と1170のバイト・グループ1142と1172に既
にエンコードされていたピクセル1105,1106,
1107)と、それらを組み合わせて、これらのピクセ
ルをエンコードする。その結果、ピクセル1105,1
106,1107,1108,1109,1110はシ
ングル・バイト・グループに依って表される。図9の方
法を用いて、図11のブロック1150のバイト・グル
ープ1152は、これらのピクセルを示している。同様
に、図14の方法を用いて、ブロック1180のバイト
・グループ1182は、これらのピクセルを示してい
る。前述のように、絶対エンコードの場合、図9と14
に依って表される方法は同じである。従って、図11の
バイト・グループ1152と1182は同じである。各
々グループの最初の2つのバイト(00 06)は、次
の6バイト(48,42,42,48,42,42)を
絶対エンコード・ピクセルと識別する。(48)と(4
2)は、各々(178,168,168)と(168,
168,168)のRGB値のカラー・インデックスに
なる。図10(カラー・ルックアップ・テーブル)を参
照すること。図5のブロック547がこれらのピクセル
をエンコードした後に、ブロック547は、ビットマッ
プ・エスケープ・コードの最後をエンコードして、フレ
ームの最後を送る(ブロック1150のバイト・グルー
プ1153とブロック1180のバイト・グループ11
83)。このエンコーディングは、図9と14に依って
明瞭に説明される。図5のブロック547がビットマッ
プ・バイト・グループの最後をエンコードすると、図1
1のブロック1100のデータのロストレスの圧縮は完
璧になる。次に、図5のブロック500は、(1)圧縮
されていないビデオ・データのラインが図11のブロッ
ク1100にないことを認めて、(2)コントロールを
図5の502に送る。順に、ブロック502はコントロ
ールを図2のブロック260にリターンする。このポイ
ントから、ブロック260は、コントロールを図1のブ
ロック120にリターンする。ブロック120は、ロス
トレスでエンコードされて圧縮されたデータのサイズを
調べる「図11のブロック1150(図9の方法を用い
て圧縮)と図11のブロック1180(図14の方法を
用いて圧縮)」。このケースで、図1のブロック120
は、図11の両方のブロック1150と1180が、各
々12バイトのデータを搭載していて、ターゲット・レ
ンジの上限(上限は11バイトに等しい)より大きいと
決定する。その結果、ブロック120は、コントロール
をブロック130にパスする。ブロック130は、フレ
ームが分割されるべきかどうかについて決定する。最初
に用いられた内部フレーム許容値がゼロであり且つ15
00の最大内部フレーム許容値より大きくなかったの
で、ブロック130は、コントロールをブロック140
にパスする。順に、ブロック140は、内部フレーム許
容値を250に増加して、コントロールをブロック11
0にパスする(前述のように、250は実験に依って内
部フレーム許容値に適した第1推定値と決定されてい
た)。順に、ブロック110は、図2の圧縮フレーム・
ルーチンをコールする。図2のブロック200は、図1
1のブロック1100がムービーの最初のフレームであ
ることを決定して、コントロールを図2のブロック25
0にパスする。ブロック250がコントロールをもつ
と、それは図5の内部フレーム圧縮ルーチンをコールす
る。もう一度、図5のブロック500は、(1)図11
のブロック1100がビデオ・データの圧縮されていな
いラインであることを決定して、(2)コントロールを
図5のブロック505に送る。ブロック505は、今の
ピクセル・ポインタの内容を図11のブロック1100
のピクセル1101のアドレスにセットする。次に、図
5のブロック510は、ラン変数の長さを1に初期設定
して、コントロールをブロック515にパスする。ブロ
ック515は、ラインに残っている圧縮されていないピ
クセルの数(10)にラン変数の長さの値(1)をプラ
スした数値がランの長さの最小値(4)より大きいと決
定すると、コントロールをブロック520にパスする。
順に、ブロック520は、変動値を図11のピクセル1
101と1102のカラー属性に基づいて計算して、コ
ントロールを図5のブロック525にパスする。このケ
ースで、ピクセルの変動値はゼロ〔0ー(255−25
5)2+(0−0)2+(0−0)2〕になるので、2
50の内部フレーム許容値より小さくなる。そこで、ブ
ロック525はコントロールをブロック540に送る。
順に、ブロック540は、ラン変数の長さを2に増加し
て、コントロールをブロック515にリターンする。ブ
ロック515は、ラインに残っている圧縮されていない
ピクセルの数(8)にラン変数の長さの値(2)をプラ
スした数値がランの長さの最小値(4)より大きいと決
定すると、その結果、ブロック515はコントロールを
ブロック520にパスする。ブロック520は図11の
ピクセル1101と1103の変動値を計算する。再
び、この値はゼロ〔0=(255−255)2+(0−
0)2+(0−0)2〕になる。図5のブロック525
は、計算された変動値が内部フレーム許容値より小さい
ことを認めて、コントロールをブロック540にパスす
る。順に、ブロック540はラン変数の長さを3に増加
する。再び、ブロック525は、ラインに残っている圧
縮されていないピクセルの数(7)にラン変数の長さの
値(3)をプラスした数値がランの長さの最小値(4)
より大きいことを決定すると、次に、ブロック515は
コントロールをブロック520にパスする。順に、ブロ
ック520は、図11のピクセル1101と1104の
変動値を計算する。計算された変動値はゼロ〔0=(2
55−255)2+(0−0)2+(0−0)2〕にな
る。ペアの変動値は内部フレーム許容値より大きくない
ので、図5のブロック525は、再び、コントロールを
ブロック540にパスする。順に、ブロック540は、
コントロールをブロック515にパスする前に、ラン変
数の長さを4に増加する。ラインに残っている圧縮され
ていないピクセルの数(6)にラン変数の長さの値をプ
ラスした数値(4)は、ランの長さの最小値(4)より
大きいので、ブロック515は、コントロールをブロッ
ク520にパスする。順に、ブロック520は、図11
のピクセル1101と1105の変動値を計算するが、
このケースで、その値は62,377になる、すなわ
ち、(62,377=(178−255)2+(168
−0)2+(168−0)2)。この値は250の内部
フレーム許容値より□かに大きいので、図5のブロック
525はコントロールをブロック530に送る。ブロッ
ク530はラン変数の長さの大きさを調べる。このケー
スで、ラン変数の長さは、ランの長さの最小値に等しい
値(4の値)をもつ。そこで、ブロック530はコント
ロールをブロック531に送る。ブロック531はピク
セル1101,1102,1103,1104をブロッ
ク1160と1190のランの長さのエンコーディング
としてエンコードする。ブロック1160は(1)25
0の内部フレーム許容値と(2)図9のエンコード方法
で生成されたブロック1100の圧縮されたデータであ
る。図11のブロック1160の内部のバイト・グルー
プ1161は、ピクセル1101,1102,110
3,1104をランの長さのエンコーディングとして表
している。前述のように、このグループの第1バイト
(04)はランの長さの大きさであり、第2バイト(4
3)は図10のカラー・ルックアップ・テーブルから導
かれるピクセルのカラー・インデックスである。同様
に、図11のブロック1190は(1)250の内部フ
レーム許容値と(2)図14のエンコード方法で生成さ
れたブロック1100のデータである。図11のブロッ
ク1190の内部のバイト・グループ1191は、ピク
セル1101,1102,1103,1104をランの
長さのエンコーディングとして表している。ブロック1
170に対して既に説明されたように、このグループの
第1バイト(18)は、ランの長さの大きさに比例する
(ランの長さの実際の大きさは14をバイトから減算し
て求められる)。このグループの第2バイト(43)は
ピクセルのカラー・インデックスである。図10(カラ
ー・ルックアップ・テーブル)を参照すること。図5の
ブロック531がランの長さをエンコードすると、ブロ
ック535は、今のピクセル・ポインタの内容を更新し
て、発明が調べた最後のピクセル、すなわち、図11の
ピクセル1105を示す。図5のブロック535がポイ
ンタを更新した後に、ルーチンは、ラン変数の長さを1
に再び初期設定するブロック510に、コントロールを
リターンする。次に、ブロック515は、ラインに残っ
ている圧縮されていないピクセルの数(6)にラン変数
の長さ(1)をプラスした数値がランの長さの最小値
(4)より大きいことを決定する。その結果、ブロック
515は、コントロールをブロック520にパスする。
ブロック520は、図11のピクセル1105と110
6の変動値を計算する。このケースで、変動値は100
(100=(168−178)2+(168−168)
2+(168−168)2)になる。前に行われたロス
トレスの圧縮と対照的に、この変動値は、もはや内部フ
レーム許容値より大きくない(内部フレーム許容値はゼ
ロから250に図1のブロック140に依って増加して
いた)。その結果、図5のブロック525は、コントロ
ールをブロック515に送る前に、ラン変数の長さを2
に増加する、ブロック540にコントロールを送る。ブ
ロック515は、ラインに残っている圧縮されていない
ピクセルの数(4)にラン変数の長さの値(2)をプラ
スした数値がランの長さの最小値(4)より大きいこと
を決定する。その結果、ブロック515は、コントロー
ルをブロック520にパスする。順に、ブロック520
は、図11のピクセル1105と1107の変動値を計
算する。やはり、変動値は100(100=(168−
178)2+(168−168)2+(168−16
8)2)になる。100は250の内部フレーム許容値
より小さいので、図5のブロック525は、(1)ラン
変数の長さを3に増加して、(2)コントロールをブロ
ック515にパスする、ブロック540にコントロール
を送る。ブロック515は、ラインに残っている圧縮さ
れていないピクセルの数(3)にラン変数の長さの値
(3)をプラスした数値がランの長さの最小値(4)よ
り大きいことを決定すると、コントロールをブロック5
20にパスする。ブロック520は図11のピクセル1
105と1108の変動値を計算する。このケースで、
変動値はゼロになる、すなわち(0=(178−17
8)2+(168−168)2+(168−168)
2)である。ゼロは250の内部フレーム許容値より小
さいので、図5のブロック525は、(1)ラン変数の
長さを4に増加して、コントロールをブロック515に
パスする、ブロック540にコントロールを送る。ブロ
ック515は、ラインに残っている圧縮されていないピ
クセルの数(2)にラン変数の長さの値(4)をプラス
した数値がランの長さの最小値(4)より大きいことを
決定する。そこで、ルーチンは、コントロールをブロッ
ク520にパスする。順に、ブロック520は、図11
のピクセル1105と1109の変動値を計算する。こ
のケースで、変動値は100(100=(168−17
8)2)+(168−168)2+(168−168)
2)になる。100は250の内部フレーム許容値より
小さいので、図5のブロック525は、(1)ラン変数
の長さを5に増加して、コントロールをブロック515
にパスする、ブロック540にコントロールを送る。ブ
ロック515は、ラインに残っている圧縮されていない
ピクセルの数(1)にラン変数の長さの値(5)をプラ
スした数値がランの長さの最小値(4)より大きいこと
を決定する。この決定に対応して、ルーチンはコントロ
ールをブロック520にパスする。ブロック520がコ
ントロールをもつと、それは、図11のピクセル110
5と1110の変動値を計算する。このケースで、変動
値は100になる、すなわち、(0=(168−17
8)2+(168−168)2+(168−168)
2)になる。100は250の内部フレーム許容値より
小さいので、図5のブロック525は、(1)ラン変数
の長さを6に増加して、コントロールをブロック515
にパスするブロック540にコントロールを送る。ここ
で、ブロック515は、ラインに残っている圧縮されて
いないピクセルの数がゼロであることを決定して、コン
トロールをブロック545にパスする。順に、ブロック
545は、ラン変数の長さの値(6)がランの長さの最
小値(4)より大きいことを発見して、コントロールを
ブロック546にパスする。その結果、ブロック546
は、図11のピクセル1105,1106,1107,
1108,1109,1110を、ランの長さのエンコ
ーディングとしてエンコードする。このランの長さのエ
ンコーディングは(1)図11のブロック1160のバ
イト・グループ1162と(2)図11のブロック11
90のバイト・グループ1192に依って表される(前
述のように、ブロック1160は図9のエンコード方法
を示し、ブロック1190は図14のエンコード方法を
示している)。図11のバイト・グループ1162に関
して、グループの第1のバイト(06)はランの長さの
大きさである。グループの第2バイト(48)は(25
5,0,0)のRGBカラー値のカラー・インデックス
でる。図10(カラー・ルックアップ・テーブル)を参
照すること。同様に、図11のバイト・グループ119
2に関して、グループの第1バイト(20)はランの長
さの大きさに比例する。ランの長さの実際の大きさは1
4をバイトから減算して求められる。バイト・グループ
1162の第2バイトと同様に、バイト・グループ11
92の第2バイト(48)は(255,0,0)のRG
Bカラー値のカラー・インデックスである。図10(カ
ラー・ルックアップ・テーブル)を参照すること。図5
のブロック546が図11のピクセル1105,110
6,1107,1108,1109,1110をランの
長さのエンコーディングとしてエンコードした後に、図
5のブロック546は、ビットマップ・エスケープ・コ
ードの最後をエンコードする(ブロック1160のバイ
ト・グループ1163とブロック1190のバイト・グ
ループ1193)。ビットマップ・エンコーディングの
最後は図9と14から明瞭に説明される。図5のブロッ
ク546がこれらの最後の2つのバイト・グループをエ
ンコードすると、ブロック500はコントロールをブロ
ック502に送る。次に、ブロック502はコントロー
ルを図2のブロック260にリターンする。このポイン
トから、ブロック260はコントロールを図1のブロッ
ク120にリターンする。ブロック120は、圧縮され
たデータのサイズ(図11のブロック1160(図9の
方法を用いて圧縮)と図11のブロック1190(図1
4の方法を用いて圧縮))を調べる。このケースで、図
1のブロック120は、図11のブロック1150と1
180の両方が、各々6バイトのデータを搭載してい
て、6−11バイトのターゲット・レンジに入っている
ことを決定する。その結果、図1のブロック120はコ
ントロールをブロック105に送る。順に、図1のブロ
ック105は、図12のブロック1125を、圧縮に必
要な生のデータのフレームとして認識する。そこで、ブ
ロック110は、図2の圧縮フレーム・ルーチンをコー
ルする。図2の圧縮フレーム・ルーチンは、ブロック2
00,210,230に依って図示されているように、
データに関するシリーズのテストを行う。図12のブロ
ック1125のデータはムービーの最初のフレームでな
いので、ブロック200はコントロールをブロック21
0に送る。この例は、図1の圧縮方法をコールするアプ
リケーション・プログラムが、ブロック1125の図1
2データのブロック1125のデータをキー・フレーム
として圧縮することを指定していなかったことを想定し
ている。従って、図2のブロック210はコントロール
をブロック230に送る。同様に、この例は、図1の圧
縮方法をコールするアプリケーション・プログラムが内
部フレーム圧縮だけ用いてムービーを圧縮することを指
定していなかったので、図2のブロック230は、コン
トロールをブロック240に送ることを想定している。
順に、ブロック240は図3と4の内部フレーム圧縮ル
ーチンをコールする。例で概略的に示されたように、図
3と4の内部フレーム圧縮ルーチンは、各々、250と
2,000の内部フレームと相互フレームの許容値を使
用している。この例は、250の内部フレーム許容値を
使用している、何故ならば、この値は、図12のブロッ
ク1100のデータを圧縮する際に、好ましい結果を示
して作動していたからである。同様に、この例は2,0
00の内部フレーム許容値を使用している、何故なら
ば、効果的な相互フレーム許容値は成功した内部フレー
ム許容値の一般的に8倍だったことを、実験が示唆して
いたからである。図3のブロック300から開始して、
ルーチンは、図12のブロック1125が圧縮されてい
ないデータのラインであることを決定して、コントロー
ルを図3のブロック307にパスする。ブロック307
は、前のフレームのピクセル・ポインタの内容をセット
して、図12のブロック1100のピクセル1101を
示す。同様に、図3のブロック310は、今のフレーム
のピクセル・ポインタの内容を図12のブロック112
5のピクセル1126にセットする。次に、図3のブロ
ック320は、デルタ・オフセットをゼロに初期設定す
る。相互フレーム圧縮プロセスの中心部は、ブロック3
30,340,350,352,354,356から形
成されるループである。このループは、ペアの変動値が
相互フレーム許容値より大きくなるので、相互フレーム
・ピクセル・ペアのカラーの値を比較する。この例の場
合、ループは、ブロック330が図12のピクセル11
01と1126が有効な相互フレーム・ピクセル・ペア
を形成していると決定すると開始する。次に、図3のブ
ロック340は、これらのピクセルの変動値を、図5の
ブロック520と同じ方式で、すなわち、変動値の関係
式=(84−255)2+(84−0)2+(84−
0)2=43,353を用いて決定する。順に、ブロッ
ク360は、両方のデルタ・オフセットがゼロに等しい
と決定して、コントロールを図4のブロック407にパ
スする。ブロック407がコントロールをもつと、それ
は、ラン変数の長さを1に初期設定して、コントロール
をブロック410にパスする。この例は、図1の圧縮方
法をコールするアプリケーションが、ハイブリッド圧
縮、すなわち、相互フレームと内部フレームの圧縮の混
合を可能にすることを想定している。この想定に基づい
て、図4のブロック410は、コントロールをブロック
420に送る。ブロック420は、(1)ラインに残っ
ている圧縮されていないピクセルの数にラン変数の長さ
をプラスした数値がランの長さの最小値より大きいか、
または(2)ラインに残っている圧縮されていないピク
セルの数がゼロに等しいかどうかについて決定する。こ
のケースで、ラインに残っている圧縮されていないピク
セルの数(10)にラン変数の長さの値(1)をプラス
した数値は、ランの長さの最小値(4)より大きい。そ
の結果、ブロック420は、変動値を図12のピクセル
1126と1127のカラー属性に基づいて計算する。
ブロック425にコントロールを送る((1)今のフレ
ームのピクセル・ポインタの内容と(2)今のフレーム
のピクセル・ポインタの内容にラン変数の長さをプラス
した値に依って表されるピクセル)。このケースで、ピ
クセルの変動値はゼロ〔0=(84−84)2+(84
−84)2+(84−84)2〕になる。ゼロの変動値
は250の内部フレーム許容値より小さいので、図4の
ブロック430はコントロールをブロック455に送
る。順に、ブロック455は、ラン変数の長さを2に増
加して、コントロールをブロック420にリターンす
る。ブロック420は、ラインに残っている圧縮されて
いないピクセルの数(8)にラン変数の長さ(2)をプ
ラスした数値がランの長さの最小値(4)より大きいと
決定すると、その結果、ブロック420は、コントロー
ルをブロック425にパスする。ブロック425は、図
12のピクセル1126と1128の変動値を計算す
る。再び、この値はゼロ〔0=(84−84)2+(8
4−84)2+(84−84)2〕になる。その結果、
図4のブロック430は、ラン変数の長さを3に増加す
る、ブロック455にコントロールをパスする。次に、
ブロック455は、コントロールをブロック420にパ
スする。再び、ブロック420は、ラインに残っている
圧縮されていないピクセルの数(7)にラン変数の長さ
の値(3)をプラスした数値がランの長さの最小値
(4)より大きいことを決定する。次に、ブロック42
0はコントロールをブロック425にパスする。順に、
ブロック425は図12のピクセル1126と1129
の変動値を計算する。ピクセルの計算された変動値はゼ
ロ〔0=(255−255)2+(0−0)2+(0−
0)2〕になる。ペアの変動値は内部フレーム許容値よ
り大きくないので、図4のブロック430はコントロー
ルをブロック455にパスする。そこで、ブロック45
5はラン変数の長さを4に増加する。次に、ブロック4
55はコントロールをブロック420にパスする。ブロ
ック420は、ラインに残っている圧縮されていないピ
クセルの数(6)にラン変数の長さの値(4)をプラス
した数値がランの長さの最小値(4)より大きいことを
決定する。その結果、ブロック420はコントロールを
ブロック425にパスする。順に、ブロック425は、
図12のピクセル1126と1130の変動値を計算す
る。再び、この値はゼロ〔0=(84−84)2+(8
4−8)2+(84ー84)2〕になる。次に、図4の
ブロック430は、ラン変数の長さを5に増加する、ブ
ロック455にコントロールをパスする。次に、ブロッ
ク455はコントロールをブロック420にパスする。
ブロック420は、ラインに残っている圧縮されていな
いピクセルの数(5)にラン変数の長さ(5)をプラス
した数値がランの長さの最小値(4)より大きいと決定
すると、その結果、ブロック420はコントロールをブ
ロック425にパスする。順に、ブロック425は図1
2のピクセル1126と1131の変動値を計算する。
ここでしかし、計算された変動値は10,443〔1
0,443=(143−84)2+(143−84)2
+(143−84)2〕になる。この値は250の内部
フレーム許容値より□かに大きいので、図4のブロック
430は、コントロールをブロック435に送る。ブロ
ック435はラン変数の長さの大きさを調べる。このケ
ースで、ラン変数の長さの値(5)はランの長さの最小
値(4)より大きい。そこで、ブロック435は、コン
トロールをブロック437に送る。ブロック437は、
ピクセル1126,1127,1128,1129,1
130をランの長さのエンコーディングとしてエンコー
ドする。図11のブロック1100の既に圧縮されてい
たデータと同様に、図9のエンコード方法と図14のエ
ンコード方法が共に図12に図示されている。図12の
ブロック1210は図9のエンコード方法を使用してい
るが、ブロック1220と1230は図14のエンコー
ド方法を使用している。やはり、通常の条件のもとで、
1つだけのエンコード方法がアプリケーションに依って
用いられると思われる。図12のブロック1210の内
部のバイト・グループ1211は、図9の方法を使用す
るピクセル1126,1127,1128,1129,
1130のランの長さのエンコーディングである。この
グループの第1バイト(05)はランの長さの大きさで
ある。このグループの第2バイト(41)は、ピクセル
1126,1127,1128,1129,1130の
カラー・インデックスである。図10((84,84,
84)のRGBカラー値のカラー・インデックスとして
41を示すカラー・ルックアップ・テーブル)を参照す
ること。同様に、図12のブロック1220の内部のバ
イト・グループ1221は、図14の方法を使用するピ
クセル1126,1127,1128,1129,11
30のランの長さのエンコーディングである。このグル
ープの第1バイト18はランの長さの大きさに比例す
る。ランの長さの実際の大きさは14をバイトから減算
して求められる。図12のブロック1210のバイト・
グループ1211の第2バイトと同様に、ブロック12
20のバイト・グループ1221の第2バイト41は、
ピクセル1126,1127,1128,1129,1
130のカラー・インデックスである。図10((8
4,84,84)のRGBカラー値のカラー・インデッ
クスとして41を示すカラー・ルックアップ・テーブ
ル)を参照すること。図4のブロック437がランの長
さをエンコードすると、ブロック437はコントロール
をブロック428に送る。ブロック438は(1)ラン
変数の長さをゼロにセットして(2)コントロールをブ
ロック440に送る。ブロック440は、今のフレーム
のピクセル・ポインタの内容を更新して、調査される必
要がある図12のブロック1125の次のピクセル、す
なわち、ピクセル1131を示す。同様に、ブロック4
45は、前のフレームのピクセル・ポインタの内容を更
新して、図12のブロック1100の対応するピクセ
ル、すなわち、ピクセル1106を示す。図4のブロッ
クが前のフレームのピクセル・ポインタを更新すると、
ブロック445は、コントロールを図3のブロック32
0に送る。ブロック320は、デルタ・オフセットをゼ
ロにリセットして、コントロールをブロック330にパ
スする。ブロック330は、図12のブロック1100
のピクセル1106と、図12のブロック1125の1
131を、有効な相互フレームピクセル・ペアとして認
識する。その結果、図3のブロック340は、ペアに対
して1,875の変動値を計算する〔1,875=(1
43−168)2+(143−168)2+(143−
168)2〕。ブロック350は、この値を2,000
の相互フレーム許容値より小さいものと認識して、コン
トロールをブロック352にパスする。ブロック352
は、デルタ・オフセットを更新する、すなわち、水平デ
ルタ・オフセットを1に増加して行い、コントロールを
ブロック354に送る。ブロック354は、前のフレー
ムのピクセル・ポインタの内容を増加して、コントロー
ルをブロック356に送る。類似の方式で、ブロック3
56は、今のフレームのピクセル・ポインタの内容に増
加して、コントロールをブロック330に送る。ブロッ
ク330は、図12のブロック1100のピクセル11
07と、図12のブロック1125の1132を、有効
な相互フレーム・ピクセル・ペアとして認識する。その
結果、図3のブロック340は、ペアに対して675の
変動値を計算する〔675=(153−168)2+
(153−168)2+(153−168)2〕。ブロ
ック350は、この値を21,000の相互フレーム許
容値より小さいものと認識して、コントロールをブロッ
ク352にパスする。再び、ブロック352はデルタ・
オフセットを更新する。ここでは、水平デルタ・オフセ
ットを2に増加して行う。順に、ブロック354は、前
のフレームのピクセル・ポインタの内容を増加して、コ
ントロールをブロック356に送る。同じ方式で、ブロ
ック356は、今のフレームのピクセル・ポインタの内
容を増加して、コントロールをブロック330に送る。
ブロック330は、図12のブロック1100のピクセ
ル1108と、図12のブロック1125の1133
を、有効な相互フレーム・ピクセル・ペアとして認識す
る。その結果、図3のブロック340は、ペアに対して
1,075の変動値を計算する〔1,075=(153
−178)2+(153−168)2+(153−16
8)2〕。ブロック350は、この値を2,000の相
互フレーム許容値より小さいものと認識して、コントロ
ールをブロック352にパスする。ブロック352は、
デルタ・オフセットを更新する、すなわち、水平デルタ
・オフセットを3に増加して行い、次に、コントロール
をブロック354に送る。ブロック354は、前のフレ
ームのピクセル・ポインタの内容を増加して、コントロ
ールをブロック356に送る。類似の方式で、ブロック
356は、今のフレームのピクセル・ポインタの内容を
増加して、コントロールをブロック330に送る。ブロ
ック330は、図12のブロック1100のピクセル1
109と、図12のブロック1125の1134を、有
効な相互フレーム・ピクセル・ペアとして認識する。そ
の結果、図3のブロック340は、ペアに対して1,8
75の変動値を計算する〔1,475=(153−16
8)2+(143−168)2+(143−168)
2〕。ブロック350は、この値を2,000の相互フ
レーム許容値より小さいものと認識して、コントロール
をブロック352にパスする。ブロック352は、デル
タ・オフセットを更新する、すなわち、水平デルタ・オ
フセットを4に増加して行って、コントロールをブロッ
ク354に送る。ブロック354は、前のフレームのピ
クセル・ポインタの内容を増加して、コントロールをブ
ロック356に送る。類似の方式で、ブロック356
は、今のフレームのピクセル・ポインタの内容を増加し
て、コントロールをブロック330に送る。ブロック3
30は、図12のブロック1100のピクセル1110
と、図12のブロック1125の1135を、有効な相
互フレーム・ピクセル・ペアとして認識する。その結
果、図3のブロック340は、ペアに対して675の変
動値を計算する〔675=(153−168)2+(1
53−168)2+(153−168)2〕。ブロック
350は、この値を2,000の相互フレーム許容値よ
り小さいものと認識して、コントロールをブロック35
2にパスする。ブロック352は、デルタ・オフセット
を更新する、すなわち、水平デルタ・オフセットを5に
増加して行って、コントロールをブロック354に送
る。ブロック354は、前のフレームのピクセル・ポイ
ンタの内容を増加して、コントロールをブロック356
に送る。類似の方式で、ブロック356は、今のフレー
ムのピクセル・ポインタの内容を増加して、コントロー
ルをブロック330に送る。ブロック330がコントロ
ールをもつと、しかし、それは、今のフレームのピクセ
ル・ポインタと前のフレームのピクセル・ポインタが生
のビデオ・データの境界を越えている(図12のブロッ
ク1100と1125を越えている)ことを認識する。
その結果、図3のブロック330は、コントロールをブ
ロック331に送る。ブロック331は、水平デルタの
値(5)のデルタの最小値(4)より大きいことを決定
して、コントロールをブロック332に送る。ブロック
332は、図12のピクセル1131,1132,11
33,1134,1135のデルタをエンコードする。
図9のデルタ・エンコード方法は図12のブロック12
10のバイト・グループ1212に依って表される。こ
のグループの最初の2つのバイト(00と02)はデル
タ・エスケープ・シーケンスを意味している。次のバイ
ト(05)は水平デルタ・オフセットの大きさである。
同様に、最終バイト(00)は、垂直デルタ・オフセッ
トの大きさである。従って、図9の方法は、デルタをエ
ンコードするために、4バイトを要求する。図14のデ
ルタ・エンコード方法は、しかし、シングル・バイトだ
け要求する。図12のブロック1220のバイト・グル
ープ1222を参照すること。このグループの唯−のバ
イト(05)はデルタ・オフセットの大きさである。前
述のように、図14のエンコード方法は、1〜14の範
囲の値をもつ、全てのシングル・バイトが水平デルタで
あると想定している。この方式で、図14のエンコード
方法は、図9の方法と比べると、データを20%節約し
てルーチンで圧縮する。図3のブロック332がデルタ
をエンコードした後に、ブロック332はビット・マッ
プ・エスケープ・コードの最後(ブロック1210のバ
イト・グループ1213とブロック1220のバイト・
グループ1223)をエンコードする。ピットマップ・
エンコーディングの最後は、図9と14から明瞭に説明
される。このポイントで、図3のブロック300は、発
明がフレームn+1(図12のブロック1220)をブ
ロックのフレームn(図12のブロック1100)に相
応して完全に圧縮したことを認識する。その結果、図3
のブロック305は、コントロールを図1のブロック2
60にリターンする。順に、ブロック260は、コント
ロールを図1のブロック120にリターンする。ブロッ
ク120は、圧縮されたデータのサイズを6−11バイ
トのターゲット・レンジに相応して調べる。図9のエン
コード方法はデータを8バイトに圧縮していた。図12
のブロック1210を参照すること。対照的に、図14
のエンコード方法はデータを5バイトに圧縮していた。
図12のブロック1220を参照すること。そこで、図
9の方法を使用してエンコードされたデータは、6−1
1バイトのターゲット・レンジのほぼ中間にある。一
方、図14の方法を使用してエンコードされたデータは
ターゲット・レンジのフロアより低い、すなわち、5バ
イトは6バイトのフロアより低い。その結果、ブロック
120は、2つの異なるコースのアクションを、エンコ
ード方法が用いられていた何れかのアクションに基づい
て実施する。図9のエンコード方法に関して、ブロック
120はコントロールをブロック105に送る。ブロッ
ク105は、ルーチンが生のビデオ・データの全てを圧
縮していたことを決定する。その結果、ブロック105
はコントロールをブロック180に送る。順に、ブロッ
ク180は図1の圧縮方法をコールしていたアプリケー
ションにリターンする。一方、図14のエンコード方法
に関して、図1のブロック120はコントロールをブロ
ック130に送る。ブロック130は、ルーチンがフレ
ームをスプリットすべきかどうかについて決定する。発
明はフレームをターゲット・レンジのフロアより低く圧
縮していたので、フレームを分解する必要はなく、ブロ
ック130はコントロールをブロック140にパスす
る。この例で、ブロック140は、既に説明済みの修正
されたバイナリ・サーチ方法を用いて、両方の許容値を
減少する。従って、新しい相互フレーム許容値は1,0
00になり、新しい内部フレーム許容値は125にな
る。許容値の調整後に、ブロック140はコントロール
をブロック110に送る。順に、ブロック110は、図
2の圧縮フレーム・ルーチンをコールする。図2の圧縮
フレーム・ルーチンは、ブロック200,210,23
0に依って図示されているように、データに関するシリ
ーズのテストを実施する。前述のように、これらのテス
トの各々は否定にリターンして、ルーチンは、図3と4
の相互フレーム圧縮ルーチンをコールする、ブロック2
40にコントロールを最終的にパスする。図3のブロッ
ク300から開始して、ルーチンは、図12のブロック
1125が圧縮されていないデータのラインであること
を決定して、コントロールを図3のブロック307にパ
スする。ブロック307は、前のフレームのピクセル・
ポインタの内容をセットして、図12のブロック110
0のピクセル1101を示す。同様に、図3のブロック
310は、今のフレームのピクセル・ポインタの内容を
セットして、図12のブロック1125のピクセル11
26を示す。次に、図3のブロック320は、デルタ・
オフセットをゼロに初期設定する。次に、ブロック33
0は、図12のピクセル1101と1126が有効な相
互フレーム・ピクセル・ペアを形成していることを決定
する。そこで、図3のブロック340はピクセルの変動
値を決定する。このケースで、ピクセルの変動値は4
3,353になる、すなわち〔43,353=(84−
255)2+(84−0)2+(0−84)2〕であ
る。この値は新しい相互フレーム許容値1,000より
大きいので、図3のブロック350はコントロールをブ
ロック360に送る。順に、ブロック360は、両方の
デルタ・オフセットがゼロに等しいことを決定して、コ
ントロールを図4のブロック407にパスする。ブロッ
ク407がコントロールをもつと、それは、ラン変数の
長さを1に初期設定して、コントロールをブロック41
0にパスする。前述のように、この例は、図1の圧縮方
法をコールするアプリケーションが、ハイブリッド圧
縮、すなわち、相互フレームと内部フレームの圧縮の混
合を可能にすることを想定している。そこで、図4のブ
ロック410は、コントロールをブロック420に送
る。ブロック420は、(1)ラインに残っている圧縮
されていないピクセルの数にラン変数の長さをプラスし
た数値がランの長さの最小値より大きいか、または
(2)ラインに残っている圧縮されていないピクセルの
数がゼロに等しいかどうかについて決定する。このケー
スで、ラインに残っている圧縮されていないピクセルの
数(10)にラン変数の長さの値(1)をプラスした数
値は、ランの長さの最小値(4)より大きい。その結
果、ブロック420は、変動値を図12のピクセル11
26と1127のカラー属性に基づいて計算する、ブロ
ック425にコントロールを送る((1)今のフレーム
のピクセル・ポインタの内容と(2)今のフレームのピ
クセル・ポインタの内容にラン変数の長さをプラスした
値に依って表されるピクセル)。この場合、画素のばら
つき値はゼロである〔0=(84−84)+(84−
84)+(84−84)〕。ゼロの「ばらつき値」
は、125という新しい「フレーム内許容差」よりも小
さいことから、図4のブロック430は制御をブロック
455まで移送する。ブロック455の方は、「ランレ
ングス」変数を2まで増分し、制御をブロック420へ
戻す。ブロック420は、ライン内に残された未圧縮画
素の数(8)に「ランレングス」変数(2)を加算した
数が「ランレングス最小値」(4)よりも大きいことを
決定し、結果としてブロック420は制御をブロック4
25へ移行させる。ブロック425は、図12の画素1
126及び1128についての「ばらつき値」を計算す
る:ここでも又この値はゼロである:〔0=(84−8
4)+(84−84)+(84−84)〕。その
結果、図4のブロック430は、制御をブロック455
へと移行させ、このブロック455は「ランレングス」
変数を3まで増分する。これに続いて、ブロック455
は制御をブロック420まで移行させる。さらにもう1
度、ブロック420は、ライン内に残った未圧縮画素数
(7)に「ランレングス」変数の値(3)を加えたもの
が「ランレングス最小値」(4)よりも大きいことを決
定する。それに続いて、ブロック420は制御をブロッ
ク425まで移行させる。ブロック425は、図12の
画素1126及び1129について「ばらつき値」を計
算する。ここで再び、画素の計算上の「ばらつき値」は
ゼロ〔0=(255)−255)+(0−0)
(0−0)〕である。この対の「ばらつき値」は12
5という新しい「フレーム内許容差」より小さいことか
ら、ブロック430は再び制御をブロック455まで移
行させる。ブロック455の方は、「ランレングス」変
数を4まで増分させる。これに続いて、ブロック455
は制御をブロック420まで移行させる。ブロック42
0は、ライン内に残っている未圧縮画素の数(6)に
「ランレングス」変数の値(4)を加えたものが「ラン
レングス最小値」(4)よりも大きいことを決定する。
その結果、ブロック420は制御をブロック425へと
移行させる。ブロック425の方は、図12の画素11
26及び1130についての「ばらつき」値を計算す
る。ここでも又、この値は、ゼロである〔0=(84−
84)+(84−84)+(84−84)〕。そ
の結果、図4のブロック430は制御をブロック455
まで移行させ、このブロック455は、「ランレング
ス」変数を5まで増分させる。これに続いて、ブロック
455は制御をブロック420まで移行させる。ブロッ
ク420は、ライン内に残された未圧縮画素の数(5)
に「ランレングス」変数(5)を加えたものが「ランレ
ングス最小値」(4)よりも大きいことを決定し、その
結果、ブロック420は、制御をブロック425まで移
行させる。ブロック425の方は、図12の画素112
6及び1131についての「ばらつき値」を計算する。
しかしながら今回は、計算された「ばらつき値」は、1
0,443〔10,443=(143−84)+(1
43−84)+(143−84)〕である。この値
は、125という新しいフレーム内許容差よりもはるか
に大きいことから、図4のブロック430は制御をブロ
ック435まで移送する。ブロック435は「ランレン
グス」変数の絶対値を検査する。この場合、「ランレン
グス」変数の値(5)は、ランレングス最小値」よりも
大きい。従って、ブロック453は制御をブロック43
7へ移送する。ブロック437は、ランレングスコード
化として、図12の画素1126、1127、112
8、1129及び1130をコード化する。ブロック1
230のバイト群1231は、画素1126、112
7、1128、1129及び1130のランレングスコ
ード化表示である。(ブロック1221は、図14の方
法を用いてコード化される…図9の方法はターゲット範
囲内で前に圧縮されており、従ってもはや使用されな
い)。前述のとおり、この群の最初のバイト(18)は
ランレングスの絶対値に正比例する:すなわち、ランレ
ングスに対する実際の絶対値は、このバイトから14を
減算することによって得られる。図12のバイト群12
21の第2のバイト41は、画素1126、1127、
1128、1129及び1130に対する色指数であ
る。図10参照のこと。(カラー参照用テーブルは、
(84、84、84)というRGBカラー値についての
色指数として41を示している)。図4のブロック43
7は、ひとたびランレングスをコード化すると、制御を
ブロック428まで移送する。ブロック438は、
(1)「ランレングス」変数をゼロに設定し、(2)制
御をブロック440まで移送する。ブロック440は、
圧縮を受ける必要のある図12のブロック1125の次
の画素すなわち画素1131を指すよう、「現行フレー
ム画素ポインタ」の内容を更新する。同様にして、図4
のブロック445は、図12のブロック1100の相応
する画素すなわち画素1106を指すよう「先行フレー
ム画素ポインタ」の内容を更新する。その後、ブロック
445は制御を図3のブロック320まで移送する。ブ
ロック320は、デルタオフセットをゼロにリセット
し、ブロック330へと制御を移行させる。ブロック3
30は、図12のブロック1100内の画素1106及
び図12のブロック1125内の画素1106を、有効
なフレーム間画素対として認識する。その結果、ブロッ
ク340は、この対について1875という「ばらつき
値」を計算する〔1,875=(143−168)
(143−168)+(143−168)〕。しか
しながら、この「ばらつき値」はこのとき1000とい
う新しい「フレーム間許容差」よりも大きくなる。その
結果、ブロック350は制御をブロック360へと移行
させる。ブロック360の方は、両方のデルタオフセッ
トがゼロに等しいことを決定し、制御を図4のブロック
407まで移行させる。ブロック407は、ひとたび制
御を手中にすると、「ランレングス」変数を1に初期設
定し、制御をブロック410に移行させる。前述のとお
り、この例は、フレーム間とフレーム内の圧縮の混合が
有効であることを仮定している。従って図4のブロック
410は制御をブロック420に移送する。ブロック4
20は、ライン内に残っている未圧縮画素の数(5)に
「ランレングス」変数の値(1)を加えたものが「ラン
レングス最小値」(4)よりも大きいことを決定する。
その結果、ブロック420は制御をブロック425に移
行させ、ブロック425は、図12の画素1131及び
1132((1)「現行フレーム画素ポインタ」の内容
及び(2)「現行フレーム画素ポインタ」の内容に「ラ
ンレングス」変数を加えたものによって参照指示されて
いる画素)のカラー属性に基づき「ばらつき値」を計算
する。この場合、画素の「ばらつき値」は、300〔3
00=(153−143)+(153−143)
(153−143)〕である。125という新しい
「フレーム内許容差」よりも大きい「ばらつき値」のた
め、図4のブロック430は、制御をブロック435に
移行させる。ブロック435は、「ランレングス」変数
の絶対値(1)が「ランレングス最小値」(4)よりも
小さいことを決定し、制御をブロック436へ移送す
る。ブロック436は、絶対モードで画素1131、1
132及び1133をコード化する。(前述のとおり、
絶対モードコード化は、3つの画素の最小値をコード化
する)。図14の方法を用いたこれらの画素の絶対コー
ド化は、図12のブロック1230においてバイト群1
232により表示されている。この群の最初の2つの
(00及び03)バイトは、絶対的にコード化された画
素として次に続く3つのバイト49、50及び50を識
別する:(49)及び(50)は、それぞれ(143、
143、143)及び(153、153、153)のR
GB値についての色指数である。図10(カラー参照用
テーブル)を参照のこと。図4のブロック436は、図
11の画素1131、1132及び1133をひとたび
コード化すると、ブロック438まで制御を移行させ
る。ブロック438は、「ランレングス」変数をゼロに
設定し、制御をブロック440に移行させる(原文 抜
け)。ブロック440は、検査を受ける必要のある図1
2のブロック1125の次の画素すなわち画素1134
を指すように「現行フレーム画素ポインタ」の内容を更
新する。同様にして、図4のブロック445は、図12
のブロック1100の相応する画素すなわち画素110
9を指すように先行フレーム画素ポインタ」の内容を更
新する。図4のブロック445は、「先行フレーム画素
ポインタ」をひとたび更新すると、制御を図3のブロッ
ク320まで移送する。ブロック320は、デルタオフ
セットをゼロにリセットし、制御をブロック330まで
移行させる。ブロック330は、図12のブロック11
00内の画素1109及び図12のブロック1125内
の1134を有効なフレーム間画素対として認識する。
その結果、図3内のブロック340は、この対について
1475という「ばらつき値」を計算する〔1,475
=(153−168)+(143−168)+(1
43=168)〕。しかしながら、ここでも、この
「ばらつき値」はこのとき1000という新しい「フレ
ーム間許容差」よりも大きくなる。その結果、ブロック
350は制御をブロック360へと移行させる。ブロッ
ク360の方は、両方のデルタオフセットがゼロに等し
いことを決定し、図4のブロック407に制御を移行さ
せる。ブロック407は、ひとたび制御を手中にする
と、「ランレングス」変数を1に初期設定し、制御をブ
ロック410へと移行させる。上述のように、この例で
は、フレーム間及びフレーム内の圧縮の混合が有効であ
ることが仮定されている:かくして、図4のブロック4
10は、制御をブロック420へと移送させる。しかし
ながらこの時点で、ブロック420は、ライン内に残さ
れた未圧縮画素の数(2)に「ランレングス」変数の値
(1)を加えたものが「ランレングス最小値」(4)よ
りも小さいことを決定する。その結果、ブロック420
はブロック465に制御を移送する。ブロック465
は、「ランレングス」変数の絶対値を評価し、その値が
1であることを決定した時点で、制御をブロック469
へと移送する。ブロック469は、ブロック1230の
絶対コード化された群1232と組合わせることによっ
て、図12のブロック1125内の画素1134及び1
135をコード化する。画素1131、1132及び1
133と組合わさった状態での(これらの画素はブロッ
ク1230のバイト群1232として以前にコード化さ
れている)画素1133及び1134のバイト群は、図
12のブロック1240内でバイト群1242により表
示されている。この群の最初の2つのバイト(00及び
05)は、絶対的にコード化された画素として次に続く
5つのバイト(49、50、50、49及び50)を識
別する:(49)及び(50)は、それぞれ(143、
143、143)及び(153、153、153)のR
GB値に対する色指数である。図10(カラー参照用テ
ーブル)を参照のこと。図4のブロック469が図12
のブロック1240内の1242のバイト群を作り出し
た後、図4のブロック469は、ビットマップの終りの
エスケープコート(ブロック1240内のバイト群12
43)をコード化する。ビットマップの終りのコード化
は、14により直接的に説明されている。図4の1つの
ブロック469はこの最後のバイト群をコード化し、ル
ーチンは制御を図3のブロック300へと移行させる。
図12のブロック1125の圧縮が完全であることか
ら、図3のブロック300は制御をブロック305に移
行させる。その後、ブロック305は制御を図2のブロ
ック260へと戻す。この時点からブロック260は制
御を図1のブロック120へと戻す。ブロック120
は、6〜11バイトのターゲット範囲に関する圧縮され
たデータのサイズ(図12のブロック1240)を検査
する。このパスで、図14のコード化方法は11バイト
(すなわちターゲット範囲の最高限度)までデータを圧
縮することができた。かくして、図14のコード化方法
は、ターゲット範囲内で図12のブロック1240のデ
ータを圧縮した。その上、図14のコード化方法は、図
9のコード化方法よりもはるかに詳細をコード化した。
図12のブロック1210を図12のブロック1240
と比較されたい。図1のブロック120は図12のブロ
ック1240をターゲット範囲内にあるものとして認識
することから、図1のブロック120はブロック105
へと移行する。ブロック105は、全てのルーチンが全
ての生ビデオデータを圧縮したことを認識する。その結
果、ブロック105は、制御をブロック180まで移送
させる。ブロック180は、図1の圧縮方法を呼出した
アプリケーションまで戻る。この時点で、両方のデータ
フレームがターゲット範囲内で圧縮されている状態で、
圧縮例は完成する。 圧縮解除例 一例として、図11及び12において圧縮されているビ
デオデータのフレームのための圧縮解除プロセスが図1
3に示されている。この例について以下で説明するが、
読者のために、この例の以下のような概観が提供されて
いる。まず第1に、この例は、図9の方法を用いてコー
ド化されたデータの圧縮解除を例示する(図13のブロ
ック160、1310、1210及び1320)。第2
に、この例は、図14の方法を用いてコード化されたデ
ータの圧縮解除を例示する(図13のブロック119
0、1340、1240及び1360)。これらの方法
の両方について、圧縮解除プロセスは、図9の「圧縮解
除方法」ルーチン及び図8の「圧縮解除フレーム」ルー
チンを追跡している。その上、圧縮例の場合と同様に、
圧縮解除例は図10のカラーテーブルを使用し続ける。
まず第1に、この例はフレームnの圧縮されたデータを
圧縮解除する。第2にフレームnのデータがひとたび圧
縮解除された時点で、フレームn+1のデータは圧縮解
除され、フレームnの上部に直接書き込まれてフレーム
n+1の圧縮解除されたバージョンを生成する。図9の
コード化されたデータの圧縮解除に関しては、プロセス
は図7の「圧縮解除方法」ルーチンで始まる。ブロック
700で始まって、ルーチンはビデオムービーの圧縮さ
れたデータを受諾する。その後、ブロック710が、圧
縮解除を必要としているフレームが2つあることを決定
し、制御をブロック720まで移行させる。ブロック7
20の方は、第1のフレーム、図13のブロック116
0を検索する。その後、図7のブロック730は図8の
「圧縮解除フレーム」ルーチンを呼出す。図8のブロッ
ク810は、圧縮ビデオデータからの第1のバイト群す
なわち図13のブロック1160内のバイト群1161
を検索する。図8のブロック810がこのバイト群をひ
とたび検査すると、ブロック815、820、825、
830及び880が、図13のバイト群1161の性質
を決定するべくデータについて一連のテストを行なう。
この場合、図8のブロック830は、ランレングスコー
ド化として図13のバイト群1161を認識する。その
後、図8のブロック830は、制御をブロック855ま
で移送させる。図10のカラー参照用テーブルを用い
て、ランレングスの色指数(41)がRGB値(25
5、0、0)を表わしていることを決定する。従って、
図8のブロック855は、図13のブロック1310内
の画素1301をペイントする。(ブロック1310
は、フレームnの圧縮解除バージョンを表わす)。次
に、図8のブロック860は、ルーチンが図8のブロッ
ク865まで制御を移行させる前に、ブロック1160
内のバイト群1161の第1のバイトによりもともと表
示されていたランレングスの残りの絶対値を減分させ
る。この場合、ブロック865は、ブロック860がラ
ンレングスの残りの絶対値を4から3へ減分させたこと
を決定する。その結果、ブロック865はブロック85
5まで制御を戻すことになる。この要領で、ブロック8
55、860及び865により形成されたループは、図
13のブロック1310内の画素1301−1304を
ペイントする。図8のブロック855、860及び86
5によって形成されたループがひとたび図13の画素1
301〜1304をペイントすると、図8のブロック8
65は制御をブロック810まで戻す。ブロック810
の方は、圧縮ビデオデータから次のバイト群すなわち図
13のブロック1160内のバイト群1162を検索す
る。ここでも又図8のブロック830はこのバイト群を
ランレングスコード化として認識する。その結果、ブロ
ック855、860及び865により形成されたループ
は、図3のブロック1300内の画素1305、130
5、1307、1308、1309及び1310をペイ
ントする。このループがひとたびこれらの画素すべてを
ペイントした時点で、図8のブロック865は制御をブ
ロック810に戻す。ここでも又、ブロック810は、
圧縮ビデオデータからの次のバイト群すなわち図13の
ブロック1160内のバイト群1163を検索する。こ
の場合、図8のブロック815は、ビットマップの終り
のコード化として図13のバイト群1163を認識し、
図8のブロック840まで制御を移送する。結果とし
て、ブロック840は図7のブロック740に制御を戻
すことになる。ブロック740は、新たに圧縮解除され
たフレーム(図13のブロック1310)を検査して、
それが分割フレームの上半分のみであるか否か決定す
る。この場合、図13のブロック1310は分割フレー
ムの上半分ではない。その結果、図7のブロック740
はブロック750まで制御を移送させる。ブロック75
0の方は、例えばビデオモニター上にフレームを表示す
る。ブロック750は、ひとたびフレームを表示する
と、制御をブロック710まで移送させる。圧縮解除プ
ロセスは、ブロック710がフレームn+1すなわち図
13のブロック1210が圧縮解除を必要としているこ
とを決定した時点で、続行する。その結果、ブロック7
20は、(1)図13のブロック1210を検索し、
(2)図7のブロック730に制御を移送する。その
後、ブロック730が図8の「圧縮解除フレーム」ルー
チンを呼出す。図8のルーチンは、ブロック1310
(フレームn)の上部で直接図13のブロック1210
を圧縮解除する。この要領で、このルーチンはブロック
1320(フレームn+1)を生成する。フレームn+
1の実際の圧縮解除は、図8のブロック810が図13
のブロック1210からのバイト群1211を検索した
時点で開始する。図8のブロック830の方は、(5)
という絶対値及び41という色指数をもつランレングス
コード化として図13のバイト群1211を認識する。
図10のカラーテーブルを用いて、ルーチンは、(4
1)という色指数が(84、84、84)というRGB
値を説明していることを決定する。従って、図8のブロ
ック855、860及び865は、ブロック1320内
の次に利用可能な5つの画素すなわち画素1321、1
322、1323、1324及び1325をペイントす
る。ループがこれらの画素をひとたびペイントすると、
図8のブロック865は制御をブロック810まで戻
す。その後、ブロック810は圧縮ビデオデータから次
のバイト群すなわち図13のブロック1210内のバイ
ト群を検索する。従って、図8のブロック825はデル
タコード化として図13のバイト群1212を認識す
る。その結果、ブロック825は制御をブロック850
に移送する。ブロック850は水平及び垂直データオフ
セットの絶対値を検査する。この場合、水平デルタオフ
セットは5という絶対値を有し、垂直デルタオフセット
はゼロという絶対値を有する。その結果、ルーチンはブ
ラシを図13のブロック1300内で5画素分だけ右へ
つまり画素1310まで移動させる。図8のブロック8
45がひとたびブラシを移動させたならば、ルーチンは
制御をブロック810まで戻す。さらにもう一度ブロッ
ク810は、圧縮ビデオデータからの次のバイト群すな
わち図13のブロック1210内のバイト群1213を
検索する。図8のブロック815は、図13のバイト群
1213をビデオマップの終りのコード化として解釈
し、制御を図8のブロック840まで移送する。ブロッ
ク840の方は制御を図7のブロック740まで戻す。
ブロック740は、図13のブロック1320が分割フ
レームの上半分のみではないことを決定し、結果として
ブロック750まで制御を移送する。ブロック750
は、図13のブロック1320を表示、図7のブロック
710まで制御を移送する。この時点で、ルーチンはブ
ロック710を介して、それがムービーの全フレームを
圧縮解除したことを発見し、制御をブロック760まで
移送する。ブロック760は、図7の圧縮解除ルーチン
を呼出したアプリケーションまで戻る。この時点で、図
9の方法を用いたフレームnとフレームn+1のコード
化されたバージョンが圧縮解除され表示されている。次
に、この例は、図14の方法を用いてコード化されたデ
ータのための圧縮解除プロセスを例示する。ここでも
又、プロセスは図7のブロック700で始まる。ブロッ
ク700は圧縮ムービーデータすなわち図13のブロッ
ク1190(フレームn)及び1240(フレームn+
1)を受諾する。その後ブロック710は、フレームn
が圧縮解除を必要としていることを決定し、制御をブロ
ック720まで移送する。ブロック720の方は、図1
3のブロック1190を検索し、図7のブロック730
に制御を移行させる。ブロック730は図8の「圧縮解
除されたフレーム」ルーチンを呼出す。「フレーム圧縮
解除」ルーチンはブロック810でその圧縮解除を開始
する。ブロック810は、図13のブロック1190内
のバイト群1191を検索する。図8のブロック830
の方は、(4)という絶対値及び(43)という色指数
をもつランレングスコード化としてこのバイト群を認識
する(ランレングスコード化の絶対値は、第1のバイト
の値から14を減算することつまり18−14=4によ
って得られる)。図10のカラー参照用テーブルを参照
することによって、ブロック855、860及び865
により形成されたループは、図14のブロック1340
内の画素1341、1342、1343及び1344を
ペイントする。このルーチンがこれらの画素をひとたび
ペイントしたならば、図8のブロック865は制御をブ
ロック810まで戻す。ブロック810の方は、圧縮さ
れたビデオデータから次のバイト群すなわち図13のブ
ロック1190内のバイト群1192を検索する。ここ
で、もう1度、ブロック830は、ランレングスコード
化としてこのバイト群を認識し、制御をブロック855
へと移行させる。図10のカラー参照用テーブルを用い
て、図8のブロック855は、フレームnの圧縮解除さ
れたバージョン内の次に利用可能な画素すなわち図13
のブロック1340内の画素1345を着色する。その
後ブロック860は、ランレングスコード化の最初のバ
イトの値を減分することによって、ランレングスの残り
の絶対値を減分する。ブロック865の方は、ナル値に
対するランレングスの残りの絶対値を検査する。この要
領で、ブロック855、860及び865により形成さ
れたループは図13のブロック1340内の画素134
5、1346、1347、1348、1349及び13
50をペイントする。これらの画素全てがひとたひペイ
ントされると、ブロック865は制御をブロック810
まで移送する。この時点で、ブロック810は圧縮ビデ
オデータからの次のバイト群すなわち図13のブロック
1190内のバイト群1193を検索する。この場合、
ブロック815はビットマップの終りのコード化として
バイト群を認識し、制御をブロック840に移送する。
ブロック840の方は制御を図7のブロック740まで
戻す。ブロック740は、図13のブロック1340が
分割フレームの上半分でないことを決定し、その後制御
をブロック750まで移送する。ブロック750は、
(1)フレームを表示し、(2)制御をブロック710
まで戻す。この時点で、ブロック710は、ルーチンが
フレームn+1(図13のブロック1240)を圧縮解
除しなかったことを決定する。その結果図7のブロック
710はブロック720まで制御を移送する。ブロック
720の方は、(1)図13のブロック1240(フレ
ームn+1)を検索し、(2)制御を図7のブロック7
30まで移送する。その後、ブロック730は図8の
「フレーム圧縮解除」ルーチンを呼出す。フレームn+
1の圧縮解除は、ブロック810が図13のブロック1
240内でバイト群1221を検索するときに開始す
る。その後、図8のブロック830は、(5)という絶
対値及び(4)という色指数をもつランレングスコード
化としてこのバイト群を認識する。図10のカラー参照
用テーブルを参照すると、図8のブロック855はこの
指数をRGB値(84、84、84)を表わすものとし
て認識する。その結果、図8のブロック855、860
及び865は、図13のブロック1350内で画素13
61、1362、1363、1364及び1365をペ
イントする。このループがひとたびこれらの画素をペイ
ントすると、図8のブロック865は制御をブロック8
10に戻す。この時点で、ブロック810は、圧縮ビデ
オデータから次のバイト群すなわち図13のブロック1
240内のバイト群1242を検索する。ブロック88
0の方はこのバイト群を絶対モードコード化として認識
し、制御をブロック885に移送する。ブロック885
は、最初の絶対コード化された画素の色指数すなわち4
9を検索する。この時点から、ブロック885は、図1
0の色指数テーブルを用いて画素のRGB値すなわち
(143、143、143)を決定する。その後、図8
のブロック885は、次の利用可能な画素すなわち図1
3のブロック1360内の画素1366を着色する。次
に、ブロック890は、ペイントすべき絶対コード化さ
れた画素の残数を減分する。この場合、ブロック890
は、図13のバイト群1242内の第2のバイトを減分
することによってこのタスクを達成する。(第2のバイ
ト、05、は絶対コード化された画素の数を表わす)。
図8のブロック890がひとたびこのバイトを減分する
と、ブロック895の方は、ブロック885、890及
び895によって形成されたループが絶対コード化され
た全ての画素をペイントしたか否かを決定するため、第
2のバイトの残りの値を検査する。この要領で、ループ
は、図13のブロック1360の画素1366、136
7、1368、1369及び1370をペイントする。
その後、ブロック895は制御をブロック810まで戻
す。この時点で、ブロック810は、圧縮ビデオデータ
からの次のバイト群すなわち図13のブロック1240
内のバイト群1243を検索する。図8のブロック81
5はこのバイト群をビットマップの終りのコード化とし
て認識し、制御をブロック840に移送する。ブロック
840の方は図7のブロック740に制御を戻す。ブロ
ック740は、図13のブロック1360が分割フレー
ムの上半分でなかったことを決定し、制御をブロック7
50に移送する。その後、ブロック750はフレームを
表示し制御をブロック710に移送する。この時点で、
ブロック710は、ルーチンがムービーの全てのフレー
ムを圧縮解除したことを認識する。その結果、ブロック
710は制御をブロック760まで移送する。ブロック
760は、圧縮解除方法を呼出したアプリケーションプ
ログラムまで戻る。この時点で、この方法は、図14の
方法を用いて圧縮されたフレームn及びn+1を表わす
データを圧縮解除した。図14のコード化方法の有利性
は、図13のブロック1320(図9の方法を用いて圧
縮、圧縮解除されたフレームn+1)に比べて、図13
のブロック1360(図14の方法を用いて圧縮、圧縮
解除されたフレームn+1)のデイテールが強化されて
いるということによって明示されている。
【図面の簡単な説明】
【図1】圧縮ルーチンのフローチャートである。
【図2】図1の圧縮フレームルーチンのフローチャート
である。
【図3】図のフレーム間及びフレーム内圧縮ルーチンの
フローチャートである。
【図4】図3に続くフローチャートである。
【図5】図2のフレーム内圧縮ルーチンのフローチャー
トである。
【図6】図1の分割フレームルーチンのフローチャート
である。
【図7】圧縮解除のフローチャートである。
【図8】図7の従来例で利用可能なルーチンである、圧
縮解除フレームルーチンのフローチャートである。
【図9】本発明と共に使用される従来技術の符号化法を
示すチャートである。
【図10】本発明と共に使用される色参照用テーブルで
ある。
【図11】図5のフレーム内圧縮ルーチンを使用した圧
縮データの生成を示す。
【図12】図3及び図4のフレーム間圧縮ルーチンを使
用した圧縮データの生成をしめす。
【図13】図8の圧縮解除フレームルーチンを使用した
フレーム内圧縮データ及びフレーム間圧縮データの両方
の圧縮解除を示す。
【図14】本発明と共に使用される新規の符号化法を示
すチャートである。
フロントページの続き (72)発明者 エリック レドゥー アメリカ合衆国 ワシントン州 98052 レッドモンド 1 ワンハンドレッドアン ドセヴンティフィフス アベニュー ノー スイースト 3841 (72)発明者 ディヴィッド エム メイムーデス アメリカ合衆国 ワシントン州 98112 シアトル イースト ヘレン ストリート 2614 (72)発明者 ダニエル ジェイ ミラー アメリカ合衆国 ワシントン州 98052 レッドモンド ノースイースト シックス ティフィフス コート 14607

Claims (33)

    【特許請求の範囲】
  1. 【請求項1】 複数の画素によって形成されているビデ
    オデータを圧縮するための方法において、 (a) 複数の画素群を形成する段階; (b) 各画素群について1つの特性値を決定する段
    階; (c) 許容差を特定する段階; (d) 画素群の特性値間のばらつきを決定する段階; (e) 決定されたばらつきが許容差内にある場合、画
    素群を表わす規定の特性値を特定し、、各画素群の特性
    値を規定の特性値に設定する段階、及び (f) 同じ規定の特性値をもつ連続した画素群の数を
    計数し、ビデオデータの圧縮バーションの形で計数した
    数と規定の特性値を記憶する段階 を含む方法。
  2. 【請求項2】 − ビデオデータの圧縮バージョンのた
    めのターゲット範囲を特定する段階;及び − ビデオデータの圧縮バージョンがターゲット範囲内
    にくるまで、許容差を反復的に調整する段階、 を含む、請求項1に記載の方法。
  3. 【請求項3】 許容差を反復的に調整する段階には、 − ビデオデータの圧縮バージョンのサイズを決定する
    段階及び − 決定されたサイズがターゲット範囲内にない場合、
    許容差を調整し、調整された許容差を用いて段階(e)
    −(f)を反復する段階、 を反復的に実行することが含まれている、請求項2に記
    載の方法。
  4. 【請求項4】 許容差を調整する段階には、 − 許容差範囲を識別すること、 − 識別された許容差範囲から新しい許容差値を選択す
    ること;及び − 新たに選択された許容差に等しい限界を有するもの
    として許容できる許容差の範囲を再度定義づけすること が含まれている、請求項3に記載の方法:
  5. 【請求項5】 新しい許容差を選択する段階には; − 予め定められた値を、以前に使用した許容差のうち
    の1つに付加すること、が含まれる、請求項4に記載の
    方法。
  6. 【請求項6】予め定められた値が、許容差の各反復的調
    整毎に増大させられる、請求項5に記載の方法。
  7. 【請求項7】 複数の画素で形成されている複数の生ビ
    デオフレームにより形成されている1つのビデオをマッ
    ピングするための方法において、 (a) 各生データフレームの画素から複数の画素群を
    形成する段階; (b) 各画素群について1つの特性値を決定する段
    階; (c) 許容差を特定する段階; (d) 画素群の特性値の間のばらつきを決定する段
    階;及び (e) 決定されたばらつきが許容差内にある場合、画
    素群を表わす規定の特性値を特定し、各画素群の特性値
    を規定の特性値に設定する段階、 を含む方法。
  8. 【請求項8】 (f) 許容差範囲を特定する段階; (g) マッピングされたビデオのための受諾できる解
    像度の範囲を特定する段階; (h) マッピングされたビデオの解像度を決定する段
    階;及び (i) 決定された解像度が受諾できる解像度の範囲内
    に無い場合、規定の許容差範囲内から新しい許容差を選
    択し、選択された新しい許容差に等しい末端限界をもつ
    ものとして許容差範囲を再度定義づけする段階、及び (j) マッピングされたビデオが受諾できる解像度の
    範囲内にくるまで、段階(e)、(h)及び(i)を反
    復的にくり返す段階、 を含む、請求項7に記載の方法。
  9. 【請求項9】 新しい許容差が許容差範囲のほぼ中間点
    から選択される、請求項8に記載の方法。
  10. 【請求項10】 新しい許容差が、前に使用された許容
    差の1つに対して予め定められた値を付加することによ
    って選択される、請求項8に記載の方法。
  11. 【請求項11】 予め定められた値が許容差の各反復的
    調整毎に増大させられる、請求項10に記載の方法。
  12. 【請求項12】 複数の画素により形成される複数の生
    データビデオフレームにより形成されている1つのビデ
    オを圧縮するための方法において、 (a) 各生データフレームの画素から複数の画素群を
    形成する段階、 (b) 各画素群について1つの特性値を決定する段
    階; (c) 許容差を特定する段階; (d) 画素群の特性値の間のばらつきを決定する段
    階; (e) 決定されたばらつきが許容差内にある場合、画
    素群を表わす規定の特性値を特定し、各画素群の特性値
    を規定の特性値に設定する段階、及び (f) 同じ規定の特性値をもつ連続した画素群の数を
    計数し、圧縮されたデータビデオフレーム内に計数した
    数と規定の特性値を記憶する段階、 を含む方法。
  13. 【請求項13】 − 圧縮されたデータビデオフレーム
    のためのターゲット範囲を特定する段階;及び、 − 圧縮されたデータビデオフレームがターゲット範囲
    内にくるまで許容差を反復的に調整する段階、 を含む、請求項12に記載の方法。
  14. 【請求項14】 許容差を反復的に調整する段階には、 − 圧縮されたデータビデオフレームのサイズを決定す
    る段階、及び − 決定されたサイズがターゲット範囲内に無い場合、
    許容差を調整し、調整された許容差を用いて段階(e)
    −(f)を反復する段階、 を反復的に実行することが含まれている、請求項13に
    記載の方法。
  15. 【請求項15】 許容差を反復的に調整する段階には、 − 前に決定された有効許容差を識別する段階; − 有効許容差を用いて段階(e)−(f)を反復し、
    圧縮されたデータビデオフレームのサイズを決定する段
    階; − 有効許容差を用いて決定されたサイズがターゲット
    範囲内に無い場合、最大許容差を特定し、最大許容差を
    用いて段階(e)−(f)を反復し、圧縮データビデオ
    フレームのサイズを決定する段階、及び − 最大許容差を用いて決定されたサイズがターゲット
    範囲内に無い場合、発見的に決定された許容差を特定
    し、この発見的に決定された許容差を用いて段階(e)
    −(f)を反復し、圧縮データビデオフレームのサイズ
    を決定する段階、 が含まれている、請求項13に記載の方法。
  16. 【請求項16】 − 最大値を特定する段階;及び、 − 許容差が最大値より大きい場合、生データビデオを
    複数の生データ部分に分割する段階; − 生データフレームとして各生データ部分を用いて段
    階(a)−(f)を反復する段階;及び − 分割生データフレームに続く生データフレームのう
    ちの1つに生データ部分のうちの1つを置換する段階、 を含む、請求項13に記載の方法。
  17. 【請求項17】 複数の画素により形成されている複数
    の生データビデオフレームによって形成されているビデ
    オを圧縮するための方法において、 (a) 各生データフレームの画素から複数の画素群を
    形成する段階、 (b) 各画素群について1つの特性値を決定する段
    階; (c) フレーム間許容差を特定する段階; (d) 複数の相応するフレーム間画素について、フレ
    ーム間画素群の特性値間のフレーム間ばらつきを決定す
    る段階; (e) 決定されたフレーム間ばらつきがフレーム間許
    容差内にある連続したフレーム間画素群の数を計数する
    段階、及び (f) 圧縮データビデオフレーム内で連続するフレー
    ム間画素群の計数された数を表わすデータをコード化す
    る段階、 を含む方法。
  18. 【請求項18】 デルタをコード化する段階には、 − 受諾できるデルタ値の範囲を選択する段階;及び − 連続するフレーム間画素群の計数された値がデルタ
    値の範囲内にある場合、デルタを計数された数としてコ
    ード化する段階、 が含まれている、請求項17に記載の方法。
  19. 【請求項19】 − 連続するフレーム間画素群の計数
    された数がデルタ値の範囲内にない場合、エスケープシ
    ーケンス、即ち計数された数及び付加的な位置づけ情報
    を用いてデルタをコード化する段階が含まれる、請求項
    18に記載の方法。
  20. 【請求項20】 特性値がカラー値であり、画素群の各
    々が単一の画素によって形成されている、請求項17に
    記載の方法。
  21. 【請求項21】 − 決定されたフレーム間ばらつきが
    フレーム間許容差(than不要?)内にない場合、フ
    レーム内許容差を特定し、複数のフレーム内画素群につ
    いてフレーム内画素群の特性値間のフレーム内ばらつき
    を決定する段階; − 決定されたフレーム内ばらつきがフレーム内許容差
    内にある場合、各フレーム内画素群を表わすべく規定の
    特性値を特定し、各フレーム内画素群の特性値を規定の
    特性値に設定する段階; − 同じ規定の特性値を有する連続したフレーム内群の
    数を計数する段階;及び − 計数された数及び規定の特性値を圧縮データビデオ
    フレーム内に記憶する段階 を含む、請求項17に記載の方法。
  22. 【請求項22】 −圧縮データビデオフレームのための
    ターゲット範囲を特定する段階; − 圧縮データビデオフレームのサイズを決定する段
    階;及び − 決定されたサイズがターゲット範囲内にない場合、
    フレーム間許容差を調整し、調整されたフレーム間許容
    差を用いて段階(c)−(f)を反復する段階、 が含まれている、請求項21に記載の方法。
  23. 【請求項23】 フレーム間許容差を調整する段階に
    は; − フレーム間許容差の範囲を特定すること、 − フレーム間許容差の特定された範囲から新しいフレ
    ーム間許容差値を選択すること、及び − 新しい選択されたフレーム間許容差に等しい限界を
    もつものとしてフレーム間許容差の範囲を再度定義づけ
    すること、 が含まれている、請求項21に記載の方法。
  24. 【請求項24】 − 最大値を特定する段階;及び − 許容差のうち少なくとも1つが最大値よりも大きい
    場合、複数の生データ部分に生データフレームを分割
    し、生データフレームとして各生データ部分を用いて段
    階(a)−(f)を反復する段階 を含む、請求項21に記載の方法。
  25. 【請求項25】 − 圧縮データビデオフレームのため
    のターゲット範囲を特定する段階; − 圧縮データビデオフレームのサイズを決定する段
    階;及び − 決定されたサイズがターゲット範囲内に無い場合、
    フレーム間又はフレーム内許容差のうち少なくとも1つ
    を調整し、この調整された許容差を用いて段階(e)−
    (f)を反復する段階; が含まれている、請求項21に記載の方法。
  26. 【請求項26】 − 圧縮データビデオフレームについ
    てターゲット範囲を特定する段階; − 圧縮データビデオフレームのサイズを決定する段
    階; − 決定されたサイズがターゲット範囲内に無い場合、
    許容差のうち少なくとも1つを調整し、調整された許容
    差を用いて段階(e)−(f)を反復する段階; − 最大値を特定する段階;及び − 許容差のうちの少なくとも1つが最大値よりも大き
    い場合、生データフレームを複数の生データ部分に分割
    し、生データフレームとして生データ部分の各々を用い
    て段階(a)−(f)を反復する段階、 が含まれている、請求項21に記載の方法。
  27. 【請求項27】 − 周期的キーフレーム間隔を特定す
    る段階; − 周期的キーフレーム間隔の終結時点でキーフレーム
    として生データフレームを指定する段階;及び − キーフレームの複数のフレーム内画素群について、
    フレーム内画素群の間の特性値間のばらつきを決定し、
    決定されたばらつきがフレーム内許容差内にある場合フ
    レーム内画素群を表わすべく特性値を特定し、各フレー
    ム内画素群の特性値を規定の特性値に設定し、同じ規定
    の特性値をもつ連続したフレーム内画素群の数を計数
    し、圧縮データビデオフレーム内に、計数された数及び
    規定の特性値を記憶する段階、 を含む、請求項21に記載の方法。
  28. 【請求項28】 第1のデータ群内の同一に位置づけさ
    れたデータ単位に類似したものである第2のデータ群内
    の連続したデータ単位の数(原文of抜け)を表わすデ
    ルタをコード化する方法において、 − 受諾できるデルタ値の範囲を選択する段階; − 連続するデータ単位の数を決定する段階;及び − 決定された連続するデータ単位の数がデルタ値の範
    囲内にある場合、連続するデータ単位の決定された数と
    してデータをコード化する段階、 を含む方法。
  29. 【請求項29】 − 決定された連続するデータ単位の
    数がデルタ値の範囲内に無い場合、エスケープシーケン
    ス、即ち計数された数及び付加的な位置づけ情報を用い
    てデルタをコード化する段階、 を含む、請求項28に記載の方法。
  30. 【請求項30】 − 方向的オフセットを決定する段
    階、及び − 単一の値すなわち方向的オフセットの絶対値を表わ
    す値としてデルタをコード化する段階、 を含む、データをコード化するための方法。
  31. 【請求項31】 デルタが最大デルタ値を有し、 − 第1のランレングス値を定義づけするためランの長
    さの値に対し最大デルタ値を付加する段階; − 第1のランレングス値をコード化する段階; − 第2のランレングス値を定義づけするため特性値を
    決定する段階;及び − 第2のランレングス値をコード化する段階、 を含む、請求項30に記載の方法。
  32. 【請求項32】 各々1つの特性値及び1つの比例絶対
    値で形成された複数のランレングスデータ群及び各々可
    能なかぎり最大のデルタ値をもつ複数のデルタによって
    形成されている複数の圧縮データ群から、ビデオデータ
    の圧縮解除バージョンを作り出す方法において、 − 圧縮データ群を検索する段階; − 圧縮データ群がランレングス表示である場合、この
    表示の特性値を決定し、比例絶対値から可能なかぎり最
    大のデルタ値を減算することによってこの表示のランレ
    ングス値を決定し、ランレングス値に等しい数につい
    て、ビデオデータの圧縮解除バージョンの一定数のデー
    タ記憶場所の中に特性値を書き込む段階;及び − 圧縮データ群がデルタ単位である場合、デルタ単位
    の値を決定しデルタ単位の値に等しい数のデータ単位
    (原文of抜け)だけ位置づけポインタを移動させる段
    階、 を含む方法。
  33. 【請求項33】 ビデオデータの圧縮されたバージョン
    からビデオデータの圧縮解除されたバージョンを作り出
    すための方法において; − ビデオデータの圧縮されたバージョンから圧縮デー
    タ群を検索する段階; − 受諾できるデルタ値の範囲を識別する段階; − 圧縮データ群の絶対値を決定する段階;及び − 圧縮データ群の絶対値が受諾可能なデルタ値の範囲
    内にある場合、圧縮デルタ群の絶対値に等しいデータ値
    の数だけ位置づけポインタを移動させる段階、 を含む方法。
JP35483293A 1992-12-22 1993-12-22 ビデオデータを圧縮する方法及びシステム Expired - Lifetime JP3306207B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/995504 1992-12-22
US07/995,504 US5467134A (en) 1992-12-22 1992-12-22 Method and system for compressing video data

Publications (2)

Publication Number Publication Date
JPH0775090A true JPH0775090A (ja) 1995-03-17
JP3306207B2 JP3306207B2 (ja) 2002-07-24

Family

ID=25541903

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35483293A Expired - Lifetime JP3306207B2 (ja) 1992-12-22 1993-12-22 ビデオデータを圧縮する方法及びシステム

Country Status (4)

Country Link
US (1) US5467134A (ja)
EP (1) EP0606629A3 (ja)
JP (1) JP3306207B2 (ja)
CA (1) CA2112051A1 (ja)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06149990A (ja) * 1992-11-02 1994-05-31 Fujitsu Ltd 画像圧縮方法及び画像処理装置
JPH07154795A (ja) * 1993-12-01 1995-06-16 Canon Inc 動画像符号化装置
EP0665513B1 (en) * 1994-01-31 2002-11-20 Canon Kabushiki Kaisha Motion image editing apparatus and method
US5625712A (en) * 1994-12-14 1997-04-29 Management Graphics, Inc. Iterative compression of digital images
JPH08275170A (ja) * 1995-03-30 1996-10-18 Canon Inc 画像処理装置
US5612900A (en) * 1995-05-08 1997-03-18 Kabushiki Kaisha Toshiba Video encoding method and system which encodes using a rate-quantizer model
AU5556496A (en) * 1995-05-09 1996-11-29 Apple Computer, Inc. Method and apparatus for compressing image data
JPH09247671A (ja) * 1996-03-04 1997-09-19 Mitsubishi Electric Corp デジタル画像復号装置
US6215910B1 (en) * 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US6571016B1 (en) * 1997-05-05 2003-05-27 Microsoft Corporation Intra compression of pixel blocks using predicted mean
BR9702270A (pt) 1996-05-17 1999-07-20 Matsushita Electric Ind Co Ltd Aparelho de codificacão de imagem aparelho de codificacão de imagem método de codificacão de imagem meio de gravacao do programa de codificacão de imagem
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5987245A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US5745890A (en) * 1996-08-09 1998-04-28 Digital Equipment Corporation Sequential searching of a database index using constraints on word-location pairs
US5864681A (en) * 1996-08-09 1999-01-26 U.S. Robotics Access Corp. Video encoder/decoder system
US6745194B2 (en) 2000-08-07 2004-06-01 Alta Vista Company Technique for deleting duplicate records referenced in an index of a database
US5724033A (en) * 1996-08-09 1998-03-03 Digital Equipment Corporation Method for encoding delta values
US5990852A (en) * 1996-10-31 1999-11-23 Fujitsu Limited Display screen duplication system and method
US5974182A (en) * 1997-04-24 1999-10-26 Eastman Kodak Company Photographic image compression method and system
US6091850A (en) * 1997-04-30 2000-07-18 Fujitsu Microelectronics, Inc. Method of compressing and decompressing graphic images
US6181821B1 (en) * 1997-04-30 2001-01-30 Massachusetts Institute Of Technology Predictive source encoding and multiplexing
WO1999033242A1 (en) 1997-12-19 1999-07-01 British Telecommunications Public Limited Company Data communications
US6005503A (en) * 1998-02-27 1999-12-21 Digital Equipment Corporation Method for encoding and decoding a list of variable size integers to reduce branch mispredicts
GB9806767D0 (en) * 1998-03-31 1998-05-27 Philips Electronics Nv Pixel colour valve encoding and decoding
US6549652B1 (en) 1998-09-11 2003-04-15 Cirrus Logic, Inc. Method and apparatus for reducing noise during lossy transformation processes
US7158681B2 (en) * 1998-10-01 2007-01-02 Cirrus Logic, Inc. Feedback scheme for video compression system
US6310978B1 (en) 1998-10-01 2001-10-30 Sharewave, Inc. Method and apparatus for digital data compression
US6304339B1 (en) 1998-11-16 2001-10-16 Hewlett-Packard Company Compound document page data processing
US6373583B1 (en) * 1998-11-16 2002-04-16 Hewlett-Packard Company Compound document page data compression
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US7050503B2 (en) * 1999-04-17 2006-05-23 Pts Corporation Segment-based encoding system using residue coding by basis function coefficients
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
GB0007782D0 (en) * 2000-03-30 2000-05-17 Sony Uk Ltd Data compression
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7149878B1 (en) 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7268903B2 (en) * 2001-01-22 2007-09-11 Matsushita Electric Industrial Co., Ltd. Data transfer method, image processing method, data transfer system and image processor
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US7206453B2 (en) * 2001-05-03 2007-04-17 Microsoft Corporation Dynamic filtering for lossy compression
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US20030086118A1 (en) * 2001-09-05 2003-05-08 Miller Steven O. Compound document page data processing
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US7027982B2 (en) * 2001-12-14 2006-04-11 Microsoft Corporation Quality and rate control strategy for digital audio
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US20050281470A1 (en) * 2001-12-26 2005-12-22 Adams Michael A System and method for streaming media
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US20040001546A1 (en) 2002-06-03 2004-01-01 Alexandros Tourapis Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US6980695B2 (en) * 2002-06-28 2005-12-27 Microsoft Corporation Rate allocation for mixed content video
US7280700B2 (en) 2002-07-05 2007-10-09 Microsoft Corporation Optimization techniques for data compression
US7154952B2 (en) 2002-07-19 2006-12-26 Microsoft Corporation Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures
US7433824B2 (en) * 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
DE60330198D1 (de) 2002-09-04 2009-12-31 Microsoft Corp Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
US7343291B2 (en) 2003-07-18 2008-03-11 Microsoft Corporation Multi-pass variable bitrate media encoding
US7609763B2 (en) 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
US7830963B2 (en) * 2003-07-18 2010-11-09 Microsoft Corporation Decoding jointly coded transform type and subblock pattern information
US7383180B2 (en) * 2003-07-18 2008-06-03 Microsoft Corporation Constant bitrate media encoding techniques
US7502415B2 (en) * 2003-07-18 2009-03-10 Microsoft Corporation Range reduction
US10554985B2 (en) 2003-07-18 2020-02-04 Microsoft Technology Licensing, Llc DC coefficient signaling at small quantization step sizes
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US8014450B2 (en) 2003-09-07 2011-09-06 Microsoft Corporation Flexible range reduction
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7782954B2 (en) * 2003-09-07 2010-08-24 Microsoft Corporation Scan patterns for progressive video content
US7688894B2 (en) * 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
WO2005078989A1 (en) * 2004-02-15 2005-08-25 Matrixview Limited Repetition coded compression for encrypting highly correlated data
US7649539B2 (en) * 2004-03-10 2010-01-19 Microsoft Corporation Image formats for video capture, processing and display
US7684981B2 (en) 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US7599840B2 (en) 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US7693709B2 (en) 2005-07-15 2010-04-06 Microsoft Corporation Reordering coefficients for waveform coding or decoding
US7933337B2 (en) 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
US8599925B2 (en) 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US7565018B2 (en) 2005-08-12 2009-07-21 Microsoft Corporation Adaptive coding and decoding of wide-range coefficients
US7830800B1 (en) 2006-01-12 2010-11-09 Zenverge, Inc. Architecture for combining media processing with networking
US8102916B1 (en) 2006-01-12 2012-01-24 Zenverge, Inc. Dynamically changing media compression format in compressed domain
US7873212B2 (en) * 2006-01-24 2011-01-18 Nokia Corporation Compression of images for computer graphics
US8144363B2 (en) 2006-03-22 2012-03-27 Kabushiki Kaisha Toshiba Image process system, image process method and image process program
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
US8880571B2 (en) * 2006-05-05 2014-11-04 Microsoft Corporation High dynamic range data format conversions for digital media
US8085274B2 (en) * 2006-07-18 2011-12-27 Via Technologies, Inc. Video data compression
US8311114B1 (en) 2006-12-06 2012-11-13 Zenverge, Inc. Streamlined transcoder architecture
US8238424B2 (en) 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
US8054886B2 (en) * 2007-02-21 2011-11-08 Microsoft Corporation Signaling and use of chroma sample positioning information
US8184710B2 (en) 2007-02-21 2012-05-22 Microsoft Corporation Adaptive truncation of transform coefficient data in a transform-based digital media codec
US7774205B2 (en) * 2007-06-15 2010-08-10 Microsoft Corporation Coding of sparse digital media spectral data
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US8750390B2 (en) * 2008-01-10 2014-06-10 Microsoft Corporation Filtering and dithering as pre-processing before encoding
US8265168B1 (en) 2008-02-01 2012-09-11 Zenverge, Inc. Providing trick mode for video stream transmitted over network
WO2009097284A1 (en) * 2008-02-01 2009-08-06 Zenverge, Inc. Intermediate compression of reference frames for transcoding
US8160132B2 (en) 2008-02-15 2012-04-17 Microsoft Corporation Reducing key picture popping effects in video
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7925774B2 (en) 2008-05-30 2011-04-12 Microsoft Corporation Media streaming using an index file
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
US9571856B2 (en) 2008-08-25 2017-02-14 Microsoft Technology Licensing, Llc Conversion operations in scalable video encoding and decoding
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US8189666B2 (en) 2009-02-02 2012-05-29 Microsoft Corporation Local picture identifier and computation of co-located information
JP2015005835A (ja) * 2013-06-19 2015-01-08 シャープ株式会社 画像処理装置、画像形成装置及び記録媒体
KR101832418B1 (ko) * 2015-12-31 2018-02-26 네이버 주식회사 이미지 압축 품질을 최적화 하기 위한 방법 및 시스템

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1189982A (en) * 1966-06-15 1970-04-29 Xerox Corp Binary Encoding
US4897717A (en) * 1988-03-30 1990-01-30 Starsignal, Inc. Computer-based video compression system
US4958225A (en) * 1989-06-09 1990-09-18 Utah State University Foundation Full-search-equivalent method for matching data and a vector quantizer utilizing such method
US5136374A (en) * 1990-04-03 1992-08-04 At&T Bell Laboratories Geometric vector quantization
JP2549013B2 (ja) * 1990-10-08 1996-10-30 日本ビクター株式会社 データ圧縮装置
US5235418A (en) * 1991-11-19 1993-08-10 Scientific-Atlanta, Inc. Method and apparatus for low frequency removal in vector quantization
US5159449A (en) * 1991-12-26 1992-10-27 Workstation Technologies, Inc. Method and apparatus for data reduction in a video image data reduction system
US5272529A (en) * 1992-03-20 1993-12-21 Northwest Starscan Limited Partnership Adaptive hierarchical subband vector quantization encoder

Also Published As

Publication number Publication date
EP0606629A2 (en) 1994-07-20
JP3306207B2 (ja) 2002-07-24
US5467134A (en) 1995-11-14
CA2112051A1 (en) 1994-06-23
EP0606629A3 (en) 1996-02-21

Similar Documents

Publication Publication Date Title
JPH0775090A (ja) ビデオデータを圧縮する方法及びシステム
US8022963B2 (en) Method, system and software product for color image encoding
US6031937A (en) Method and apparatus for video compression using block and wavelet techniques
JP3464075B2 (ja) ディジタル画像の圧縮および圧縮解除のためのシステムおよび方法
Hang et al. Interpolative vector quantization of color images
US4319267A (en) Picture coding and/or decoding equipment
US7843998B2 (en) Method for improved entropy coding
US7675969B2 (en) Adaptive rate control for digital video compression
US5867221A (en) Method and system for the fractal compression of data using an integrated circuit for discrete cosine transform compression/decompression
EP1341126A2 (en) Image compression using a shared codebook
US6836564B2 (en) Image data compressing method and apparatus which compress image data separately by modifying color
US20040218825A1 (en) Method and apparatus for video compression using microwavelets
AU2005236504A1 (en) Method, system and software product for color image encoding
JP2002507354A (ja) 効率的なルックアップテーブルに基づく視覚的に無損失の画像圧縮方式
WO1994006098A1 (en) Improved preprocessing and postprocessing for vector quantization
CA2545414A1 (en) Image processing
US6738074B2 (en) Image compression system and method
EP1324618A2 (en) Encoding method and arrangement
CN1155256C (zh) 使用分级图象分割技术编码视频信号的装置
US5594503A (en) Image information compressing method, compressed image information recording medium and compressed image information reproducing apparatus
JP3462867B2 (ja) 画像圧縮方法および装置、画像圧縮プログラムならびに画像処理装置
US5896467A (en) Method and apparatus for encoding a contour image of an object in a video signal
CN114930815A (zh) 基于上下文和特征的视频编码预分析比特预算
US20030219167A1 (en) Method and system for forming HCVQ vector library
KR950009460B1 (ko) 부호화된 칼라 비데오 데이타를 감압하는 방법 및 시스템

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020327

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090510

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100510

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110510

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110510

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120510

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130510

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130510

Year of fee payment: 11

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term