以下、本発明の第1の実施形態を、図面を用いて詳細に説明する。
[第1の実施形態]
図1は本発明の第1の実施形態に係る動画像符号化装置を示すブロック図である。第1の実施形態では、動画像符号化装置が使用する画像の符号化方式として、MotionJPEG2000符号化方式を例にとって説明するが、これに限定されない。また、形状符号化方式として、MPEG−4符号化方式を例にとって説明するがこれに限定されない。
図1において、1は入力された画像データをブロック単位に分割するブロック分割部であり、2は分割されたブロックに対して離散ウェーブレット変換を施すDWT部である。3は離散ウェーブレット変換で得られたサブバンド係数を量子化する量子化部である。4は量子化結果で領域内のサブバンド係数と形状情報を統合する係数統合部である。5は係数統合部4から出力されたサブバンド係数を格納する係数メモリである。
6は係数統合部4から出力された形状情報を格納する形状情報メモリである。7は形状を考慮して、JPEG2000符号化方式のEBCOT符号化をビットプレーン毎に行う符号化部であり、8はビットレートを調整するビット切り捨て部である。9は入力された形状情報をブロック単位に分割するブロック分割部であり、10はブロック分割された形状情報をDWT部2の周波数帯に合わせて縮小を行う縮小部である。
11はMPEG−4符号化方式の形状符号化方式で符号化する形状情報符号化部である。12は必要なヘッダを生成し、ビット切り捨て部8と形状情報符号化部11の出力から符号化データを形成する符号形成部である。
上記のように構成された動画像符号化装置における動画像符号化動作を以下で説明する。
本実施形態では、動画像データをフレーム単位に入力する。同時に別途抽出された形状情報を入力するものとするが、内部で形状情報の抽出を行ってももちろん構わない。ここで、入力画像データは図32(a)に示すようになり、その形状情報は図32(b)に示すようになる。
ブロック分割部1は動画像データが、ブロック分割部9は形状情報が入力され、1フレーム分を保持して、ブロックに分割し、後段にブロック単位で出力する。ブロック分割部1でブロック分割された動画像データはDWT部2に入力される。DWT部2で行う離散ウェーブレット変換は適用回数を2回とし7分割する場合を例にとって説明するが、これに限定されない。
ブロック分割された形状情報は形状情報符号化部11と縮小部10に入力される。形状情報符号化部11ではMPEG−4符号化方式の形状符号化方式で符号化され、符号形成部12に出力される。
縮小部10では入力された形状情報を、DWT部2での適用回数に従って、縮小する。本実施形態で説明する適用回数が2回であれば、1/2、1/4の縮小を行った形状情報を生成する。すなわち適用回数をTとすると(1/2)N(但し、N=1・・・T)の縮小画像を生成する。縮小された形状符号化はそれぞれの周波数帯に対応しており、これを並べた状態を図32(c)に示す。
図2にDWT部2の詳細なブロック図を示す。図2において、50、69は水平方向のローパスフィルタを行うHLPF部、53、72は水平方向のハイパスフィルタを行うHHPF部、57,63,76,82は垂直方向のローパスフィルタを行うVLPF部、60、66、79、85は垂直方向のハイパスフィルタを行うVHPF部である。56、75は形状情報の水平方向の1/2サブサンプリングを行うサブサンプリング部、51,54,70,73はフィルタの出力を水平方向に1/2サブサンプリングするサブサンプリング部、58、61、64、67、77、80、83、86は垂直方向に1/2サブサンプリングするサブサンプリング部、52、55、59、62、65、68、71、74、78、81、84、87はフィルタ処理結果を格納するメモリである。
ブロック分割部1から画像データが、ブロック分割部9から縮小されていない形状情報が、縮小部10から(1/2)に縮小された形状情報が入力される。画像データはHLPF部50とHHPF部53に入力され、水平方向にフィルタ処理が施される。例えば、JPEG2000で使用される9−7フィルタを使用する例を取って説明する。すなわち、領域外の部分に関しては仮想的に画素値を補い、水平方向に7タップのローパスフィルタと9タップのハイパスフィルタを施す。但し、これに限定されない。
図3に各フィルタ部の詳細なブロック図を示す。図3において、タップ数はそれぞれのフィルタに依存するがここでは9タップの場合を例にとって説明する。
100は形状情報の9画素分のデータを蓄積するラッチ群であり、101は画像データの9画素分のデータを蓄積するラッチ群である。102は入力された形状情報から境界を判定する境界判定器であり、103は境界判定器102の結果とラッチ群101の画像データからフィルタ処理を行うためのデータを生成する補填器であり、104は補填器103からの出力を係数ごとに格納するラッチ群である。105はフィルタ演算を行うフィルタ演算部である。
形状情報とフィルタ処理を行う画素値はラッチ群100とラッチ群101に入力される。境界判定器102は形状情報から領域内外を分ける境界を検出し、その状況を補填器103に入力する。補填器103はフィルタの中央の画素とそれに隣接する領域内画素値に関してはそのままとして、それ以外の画素値を補填する。それ以外の画素について領域内の画素値を用いて境界を境に点対称で補填を行う。
図6に入力される画像のデータ例を示す。水平方向に9画素がある状態を示しており、太枠で囲まれた画素が中央であり、その画素値をAとする。灰色の部分が領域外を表わす。中央から左方向に画素値をB、C、D、E、とし、中央から左方向に画素値をF、G、H、Iとする。第1列では中央の画素Aの左右から領域外となっており、境界はこの中央画素の両脇にあると考えられる。第2列は画素Bの左側と画素Aの右側にあると考えられ、以下、同様に境界を検出することができる。
この境界を境に点対象に拡張・補填を行う。その様子を図7に示す。図7では小文字は複写された結果を表し、aはAを複写した値を表し、以下、bとB、cとC、dとD、eとE、fとF、gとG、hとH、iとIはそれぞれを複写した値を表している。第1列では両方向に向かってAの画素値を複写する。第2列では画素Aの右側に画素Bの値を複写する。Bの左側に対しては画素Aの値を複写する。画素Aの2つ右側には画素Aを画素Bの左側に複写した画素aを複写する。以下同様にして9タップの全てに画素を補填する。以下、第3列以降も同様にして補填を行う。
また、境界の形状によっては複数の領域が存在する場合が生じる。図8にその一例を表す。第1列では画素Aの領域のほかに画素G、H、Iからなる領域も存在する。これらに関しても中央の両隣の境界を検出して補填を行う。その結果を図9に示す。第1列では画素Aを含む領域と画素G、H、Iを含む領域は離れているため、中央の画素Aの左右から領域外として補填を行われ、全て画素Aを複写した画素aとなる。第2列以下でも同様に中央の画素を含む領域の両側に境界があるものとして補填が行われている。
図3に戻って、補填器103で上記のように補填した結果がラッチ群104に格納されている。フィルタ演算器105はそれぞれの重みを積算し、それらの値を加算して出力することで画素Aに対する変換値が出力される。
図2に戻って、変換の結果はサブサンプリング部51、54で水平方向に1/2にサブサンプリングされ、メモリ52、55に格納される。入力された形状情報はサブサンプリング部56で水平方向に1/2にサブサンプリングされ、VLPF部57、63とVHPF部60、66に入力される。各フィルタ部は上記のHLPF部50、HHPF部53と同様に領域外の値を補填・拡張しながらフィルタ処理を行い、それぞれサブサンプリング部58、61、64、67に入力され、垂直方向に1/2サブサンプリングされてメモリ59、62、65、68に格納される。メモリ59、62、65、68は周波数帯1LL、1LH、1HL、1HHの内容が格納される。
適用回数を2回としたので、1LLに対して同様の変換を施す。HLPF部69、HHPF部72に入力されるサイズは入力に対して縦横1/2に縮小されたものであり、それに合わせて縮小部10から縦横1/2に縮小した形状情報を入力することが異なるが、それ以外の処理は同じである。その結果、メモリ78、81、84、87に周波数帯2LL、2HL、2LH、2HHの内容が格納される。それぞれの周波数帯の関係を図33に示す。
図1に戻って、DWT部2で生成された各周波数帯のサブバンド係数は量子化部3で量子化され、係数統合部4に入力される。係数統合部4は縮小部10から縮小された形状情報が入力され、領域内のサブバンド係数を統合する。
図4は係数統合部4の詳細なブロック図である。同図において、110は水平方向1ライン分の形状情報を格納するラッチ群であり、111は水平方向1ライン分のサブバンド係数を格納するラッチ群であり、112は入力された形状情報から境界を判定する境界判定器であり、113は境界判定器112の内容に従ってラッチ群110からの入力を切換えるセレクタである。114は境界判定器112の内容に従ってラッチ群111からの入力を切換えるセレクタである。115はセレクタ113の出力である形状情報を格納するラッチ群である。116はセレクタ114の出力であるサブバンド係数を格納するラッチ群である。117はメモリであり、形状情報を格納したラッチ群115の出力を1ブロック分格納する。118はメモリであり、サブバンド係数を格納したラッチ群116の出力を1ブロック分格納する。
119は垂直方向1ライン分の形状情報を格納するラッチ群であり、120は垂直方向1ライン分のサブバンド係数を格納するラッチ群であり、121は入力された形状情報から境界を判定する境界判定器であり、122は境界判定器121の内容に従ってラッチ群119からの入力を切換えるセレクタである。123は境界判定器121の内容に従ってラッチ群120からの入力を切換えるセレクタである。124はセレクタ122の出力である形状情報を格納するラッチ群である。125はセレクタ123の出力であるサブバンド係数を格納するラッチ群である。126はメモリであり、形状情報を格納したラッチ群124の出力を1ブロック分格納する。127はメモリであり、サブバンド係数を格納したラッチ群125の出力を1ブロック分格納する。
上記の構成において、形状情報とサブバンド係数の水平1ライン分ずつが入力され、ラッチ群110とラッチ群111にそれぞれ格納される。境界判定器112は水平方向で左から1つずつ形状情報をラッチ群110から読み込み、領域内であればセレクタ113と114が入力されたデータを出力するように制御する。一方、領域外であれば、セレクタ113と114が出力を行わないように制御する。
ラッチ群115、116は処理を開始する前に必ず0でクリアされる。ここで、0は、形状情報の場合には領域外をあらわすこととする。ラッチ群110と111とにそれぞれ格納されたデータは、クロックに従って1つずつ読み出され、領域内であれば形状情報とサブバンド係数とがラッチ群115、116に順に格納され、領域外であれば格納されない。この処理が1ライン分終了すると、形状情報とサブバンド係数とは、領域外のデータが除外されて格納されているので、左側に寄った状態になる。
このようなラッチ群への格納結果は、形状情報についてはメモリ117、サブバンド係数についてはメモリ118に格納される。図10は、メモリ117及び118における格納の様子を示す図である。図10において、白が領域内、灰色が領域外のデータを示している。
図10aは入力される形状情報またはサブバンド係数を表す。このような入力に対して上記の処理を施し、メモリ117、またはメモリ118に格納された形状情報またはサブバンド係数の様子は図10bのようになる。
1ブロック分の水平方向の処理が終了すると、メモリ117とメモリ118から形状情報とサブバンド係数の垂直1ライン分ずつが入力され、ラッチ群119とラッチ群120にそれぞれ格納される。その際、境界判定器121は垂直方向で上から1つずつ形状情報をラッチ群119から読み込み、領域内であればセレクタ122と123が入力を出力するように制御し、一方、領域外であればセレクタ122と123が出力を行わないように制御する。
ラッチ群124、125は処理を開始する前に必ず0でクリアされる。ラッチ群119と120とにそれぞれ格納されたデータは、クロックに従って1つずつ読み出され、領域内であれば形状情報とサブバンド係数がラッチ群124、125に順に格納され、領域外であれば格納されない。この処理が垂直1ライン分終了すると、形状情報とサブバンド係数が上側に寄った状態になる。その結果は形状情報についてはメモリ126、サブバンド係数についてはメモリ127に格納される。図10cは図10bに対して上記の処理を施した結果の形状情報またはサブバンド係数を示している。メモリ126、メモリ127の出力は、統合形状情報及び統合サブバンド係数として図1の形状情報メモリ6及び係数メモリ5に格納される。
図1に戻って、係数メモリ5及び形状情報メモリ6に格納された統合サブバンド係数と統合形状情報は符号化部7に入力され、サブバンド係数はビットプレーン毎にEBCOT符号化され、ビット切り捨て部8に入力される。
図5に符号化部7の詳細なブロック図を示す。同図において、150は統合サブバンド係数ごとのクロックを発生させるクロック発生器である。151は形状情報メモリ6から入力された統合形状情報を格納する形状情報メモリであり、152、153、154、155は統合サブバンド係数の各ビットをビットプレーン毎に格納するビットプレーンメモリである。156は形状情報メモリ151の統合形状情報にしたがって入力と出力を制御するセレクタである。157はメモリ151の統合形状情報にしたがって出力を制御するセレクタである。158は参照するサブバンド係数を格納する参照サブバンドメモリである。159はエントロピー符号化器である。
形状情報メモリ151には形状情報メモリ6の形状情報が格納され、ビットプレーンメモリ152、153、154、155にビットプレーン単位で係数メモリ5のサブバンド係数が格納されると、クロック発生器150はクロックを発生し、ビットプレーンの上位から算術符号化を開始する。セレクタ157ではクロックに従って、符号化対象のビットをビットプレーンメモリ152、153、154、155から読み出し、形状情報メモリ151に格納された対応する統合形状情報が領域内を表している場合はエントロピー符号化器159に入力する。一方、領域外を表している場合は出力を行わず、エントロピー符号化器159も動作しない。
セレクタ156は符号化する統合サブバンド係数が、形状情報メモリ151に格納された対応する統合形状情報に基づいて領域内にあると識別される場合には、符号化対象の統合サブバンド係数の周囲の統合サブバンド係数で符号化済みサブバンド係数のビットをビットプレーンメモリ152、153、154、155から適宜読み出し、出力する。一方、形状情報メモリ151に格納された対応する統合形状情報に基づいて、参照するサブバンド係数で領域外のものについては、入力として「0」を選択し、出力する。セレクタ156の出力は参照サブバンドメモリ158に格納される。エントロピー符号化器159はセレクタ157から符号化対象ビットを読み込み、参照サブバンドメモリ158からは参照値を読み込んで符号化対象ビットをエントロピー符号化する。符号化結果は図1のビット切り捨て部8に入力される。
ビット切り捨て部8は不図示のバッファ等の容量からレート制御を行うため、出力するビットプレーンの数を決定して、当該のビットプレーンの符号化データを符号形成部12に入力する。符号形成部12は必要なヘッダと形状情報符号化部11から出力された形状情報の符号化データと、ビット切り捨て部8から出力された符号化データを多重化して出力する。
このような一連の選択動作により、形状に対応した画像データを符号化することが可能になり、離散ウェーブレット変換部で形状を考慮した拡張を行い、係数統合部ではサブバンド係数を形状情報に従って統合することで、相関の高い領域内のサブバンド係数を纏めることと、符号化する対象を減少させることで符号化効率を改善することができる。さらに、エントロピー符号化する対象が減少するので高速に処理することも可能となる。
[第2の実施形態]
図11は、本発明の第2の実施形態に係る動画像復号装置の構成を示すブロック図である。本実施形態では第1実施形態で生成された符号化データを復号する場合を例にとって説明するが、これに限定されない。
200はヘッダを解析し、解析結果に基づいて、後段を制御し、入力された符号化データをビット切り捨て部205と形状情報復号部201に入力する符号解析部である。201はMPEG−4符号化方式の形状符号化方式で復号する形状情報復号部である。202は復号して得られた形状情報を格納するフレームメモリである。203は復号された形状情報を逆DWT部210の周波数帯に合わせて縮小を行う縮小部である。204は形状情報を統合して統合形状情報を生成する形状情報統合部である。
205は復号するビット数を調整するビット切り捨て部である。206はJPEG2000符号化方式のEBCOT符号化によってビットプレーン毎に復号を行う復号部である。207は復号されたサブバンド係数を格納する係数メモリである。208は形状情報に基づいて、サブバンド係数を展開する係数展開部である。209は量子化されたサブバンド係数を逆量子化する逆量子化部である。210は逆量子化したブロックに対して形状情報に基づいて逆離散ウェーブレット変換を施す逆DWT部である。211は復号して得られた画像データを格納するフレームメモリである。
上記のように構成された動画像復号装置における動画像復号動作を以下で説明する。本実施形態では、動画像データの符号化データをフレーム単位に入力する。
入力された符号化データは符号解析部200に入力される。付加されたヘッダを解析し、符号化の特性を把握し、後段の各部の初期化等を行う。また符号解析部200は入力された符号化データから形状情報に関する符号化データと画像データに関する符号化データを分離し、前者を形状情報復号部201に、後者をビット切り捨て部205に入力する。
形状情報復号部201は、MPEG−4符号化方式の形状符号化方式に従って復号し、形状情報を生成し、フレームメモリ202に格納する。同時に縮小部203に入力する。縮小部203は符号解析部200で解析されて得られた離散ウェーブレット変換の適用回数に従って、形状情報の縮小画像を生成して保持する。本実施形態では第1実施形態で生成された符号化データを復号するので、適用回数は2回である。縮小された形状情報は形状情報統合部204、係数展開部208、逆DWT部210に入力される。
形状情報統合部204は、第1の実施形態における係数統合部4(図4)における形状情報の統合処理と同様の処理が実行され、フレームメモリ202に格納された形状情報と対応する統合形状情報が生成され、復号部206へ提供される。より具体的には、図4のラッチ群110、境界判定器112、セレクタ113、ラッチ群115、メモリ117、ラッチ群119、境界判定器121、セレクタ122、ラッチ群124、メモリ126で構成される。これにより、領域内を表す形状情報が統合されて統合形状情報が生成され、図11の復号部206に出力される。
一方、画像データに関する符号化データはビット切り捨て部205に入力される。ビット切り捨て部205は復号部206やその他の状況から復号するビット数を調整する。復号部206はビット切り捨て部205から画像データに関する符号化データを、形状情報統合部204から統合された形状情報が入力される。
図12に復号部206の詳細なブロック図を示す。同図において、220はサブバンド係数ごとのクロックを発生させるクロック発生器である。221は形状情報統合部204から入力された形状情報を格納する形状情報メモリであり、222は形状情報メモリ221の形状情報にしたがって入力と出力を制御するセレクタである。223は参照する係数を格納する参照サブバンドメモリである。224はエントロピー復号器である。225、226、227、228はサブバンドの各ビットをビットプレーン毎に格納するビットプレーンメモリである。
形状情報メモリ221に形状情報統合部204からの形状情報が格納されたら、クロック発生器220は係数単位に処理をするためのクロックを発生する。セレクタ222は復号するサブバンド係数が領域内であれば、符号化対象サブバンド係数の周囲のサブバンド係数で符号化済みサブバンド係数のビットをビットプレーンメモリ225、226、227、228から適宜読みだす。
また、形状情報メモリ221で参照するサブバンド係数で領域外のものについては0を出力する。セレクタ222は、復号する領域外であれば出力を行わず、エントロピー復号器224も動作しない。エントロピー復号器224は符号化データと参照サブバンドメモリ223から参照値を読み込み、ビットを復号する。復号されたビットはビットプレーンメモリ225、226、227、228にクロック発生器220に従って格納される。
復号結果は図11の係数メモリ207に入力される。係数展開部208は係数の展開を行う。図13に係数展開部208の詳細なブロック図を示す。250は周波数帯に合わせて縮小された形状情報を格納するメモリである。251は形状統合器204で統合された形状情報の水平方向1ライン分のデータを蓄積するラッチ群であり、252は復号されたサブバンド係数データの水平方向1ライン分のデータを蓄積するラッチ群である。
253は入力された形状情報から水平方向の境界を判定する境界判定器である。254はセレクタであり、境界判定器253の出力に応じて出力を制御する。255はセレクタであり、境界判定器253とラッチ群251の出力に応じて出力を制御する。256はセレクタ254の出力を蓄積するラッチ群であり、257はセレクタ255の出力を蓄積するラッチ群である。258、259はブロック単位のメモリであり、メモリ258は形状情報を、メモリ259はサブバンド係数を格納する。
260は形状情報の垂直方向1ライン分のデータを蓄積するラッチ群であり、261はサブバンド係数データの垂直方向1ライン分のデータを蓄積するラッチ群である。262は入力された形状情報から垂直方向の境界を判定する境界判定器である。263はセレクタであり、境界判定器262とラッチ群260の出力に応じて出力を制御する。264はセレクタ263の出力を蓄積するラッチ群であり、265はブロック単位のメモリであり、サブバンド係数を格納する。
上記の構成において、図11の縮小部203から処理する周波数帯に適応した形状情報を入力し、メモリ250に格納する。その後、図11の形状統合部204から統合形状情報と係数メモリ207からサブバンド係数の水平1ライン分ずつが入力され、ラッチ群251とラッチ群252にそれぞれ格納される。
境界判定器253はメモリ250の水平方向で左から1つずつ形状情報を読み込み、領域内であればラッチ群251からセレクタ254が入力を出力するように制御信号を生成する。同様にラッチ群252からセレクタ255が入力を出力するように制御信号を生成する。領域外であれば、何れのセレクタも入力は行わないように制御する。
ラッチ群256、257は処理を開始する前に必ず0でクリアされる。0は形状情報では領域外をあらわすこととする。クロックに従って1つずつ読み出し、領域内であれば形状情報とサブバンド係数をラッチ群256、257に順に格納し、領域外であれば格納は行わずにラッチの位置を1つだけ左に移動する。セレクタ254とセレクタ255はラッチ群251からの出力が領域外になった場合、ラインの処理を終了する。
この処理を1ライン分終了すると、形状情報とサブバンド係数が水平方向に元の配置状態になる。その結果は形状情報についてはメモリ258、サブバンド係数についてはメモリ259に格納される。図10にその様子を示す。図10cに上記の処理を施し、メモリ258、またはメモリ259に格納される形状情報またはサブバンド係数は図10dのようになる。
1ブロック分の水平方向の処理が終了したら、メモリ258とメモリ259から形状情報とサブバンド係数の垂直1ライン分ずつが入力され、ラッチ群260とラッチ群261にそれぞれ格納される。境界判定器262は垂直方向で上から1つずつ形状情報を読み込み、領域内であればラッチ群261からセレクタ263が入力を出力するように制御信号を生成する。
領域外であれば、何れのセレクタも入力は行わないように制御する。ラッチ群264は処理を開始する前に必ず0でクリアされる。クロックに従って1つずつ読み出し、領域内であれば形状情報とサブバンド係数をラッチ群264に順に格納し、領域外であれば格納は行わずラッチの位置を1つだけ左に移動する。セレクタ263はラッチ群260からの出力が領域外になった場合、ラインの処理を終了する。
この処理を1ライン分終了すると、形状情報とサブバンド係数が垂直方向にも元の配置状態になる。すなわち図10aの状態に戻る。その結果、サブバンド係数についてはメモリ265に格納される。
メモリ265の出力は図11の逆量子化部209に出力される。図11に戻り、逆量子化部209は入力された値に対して所定の逆量子化を行い、サブバンド係数を再生し、逆DWT部210に入力される。
図14に逆DWT部210の詳細なブロック図を示す。図14において、450、451、452、453、472、473、474、475は垂直方向に2倍のアップサンプリングするアップサンプリング部、454、456、476、478は垂直方向のローパスフィルタを行うVLPF部、455、457、477、479は垂直方向のハイパスフィルタを行うVHPF部、458、459、460、461、469、470、480、481、482、483、492、493はフィルタ処理結果を格納するメモリ、462、463、471、484、485、494は周波数合成を行う合成部である。
464、465、486、487はフィルタの出力を水平方向に2倍のアップサンプリングするアップサンプリング部、467、490は水平方向のローパスフィルタを行うHLPF部、468、491は水平方向のハイパスフィルタを行うHHPF部、である。466、489は形状情報の垂直方向の2倍のアップサンプリングを行うアップサンプリング部である。
図11の逆量子化部209からサブバンド係数が、縮小部203から(1/4)に縮小された形状情報と(1/2)に縮小された形状情報が入力される。またブロックの周波数帯2LL、2LH、2HL、2HHのサブバンド係数がアップサンプリング部450、451、452、453にそれぞれ入力される。アップサンプリング部450、451、452、453は垂直方向に2倍のアップサンプリングするために間に0値を挿入する。
アップサンプリングされたそれぞれのサブバンド係数は(1/4)に縮小された形状情報と共にVLPF部454、VHPF部455、VLPF部456、VHPF部457に入力される。各部のフィルタは第1の実施形態で図3に表したような構成のフィルタで構成されており、逆離散ウェーブレット変換の係数に従って、補填を行いながらフィルタ処理を行う。求められた結果はメモリ458、459,460、461にそれぞれ格納される。
合成部462はメモリ458、459からそれぞれの係数値を読み出し、逆離散ウェーブレット変換で規定されている周波数での合成を行う。同様に、合成部463はメモリ460、461からそれぞれの係数値を読み出し、逆離散ウェーブレット変換で規定されている周波数での合成を行う。
アップサンプリング部464、465は水平方向に2倍のアップサンプリングするために間に0値を挿入する。一方、入力された(1/4)に縮小された形状情報はアップサンプリング部466に入力され、形状情報の係数単位での繰り返しによって垂直方向に2倍にアップサンプリングする。
アップサンプリング部464、465でアップサンプリングされたそれぞれのサブバンド係数は、アップサンプリング部466で拡大された形状情報と共にHLPF部467、HHPF部468に入力される。HLPF部467、HHPF部468も図3のフィルタ部の構成をとっており、求められた結果はメモリ469、470にそれぞれ格納される。合成部471はメモリ469、470からそれぞれの係数値を読み出し、逆離散ウェーブレット変換で規定されている周波数での合成を行う。これにより、周波数帯1LLを算出する。
同様に周波数帯1LH.1HL、1HHを図11の逆量子化部209から入力してフィルタ処理を行い、最終的に合成部494で画素値を得る。図11に戻って、求められた画素値はフレームメモリ211に格納され、フレームメモリ202に格納された形状情報と共に外部に出力される。
このような一連の選択動作により、離散ウェーブレット変換部で形状を考慮した統合を行って符号化された符号化データを復号することが可能になり、符号化効率の高い符号化データを劣化なく復号することが可能になった。また、シンボル数も全てのサブバンド係数で処理を行うより少ないため、高速化が図られている。さらにビット切り捨てを行うことで、適宜情報量を減らして高速な処理を行うことも可能になった。
[第3の実施形態]
図15は、本発明の第3の実施形態に係る動画像符号化装置の構成を示すブロック図である。図15において第1の実施形態の図1と同様の機能を果たす部分に関しては同じ番号を付与し、説明を省略する。
500は形状情報を格納するフレームメモリであり、501は動き補償部507で求められた動きベクトルで求められる形状情報の予測データとの差分を求める差分部である。502は動き補償部507で求められた動きベクトルで求められる画像データの予測データとの差分を求める差分部である。503は量子化部3の逆量子化を行う逆量子化部であり、504はDWT部2の逆変換を行う逆DWT部である。DWT部2と同様に形状情報を参照して逆変換を行う。
逆DWT部504は図14で示されるブロックで構成され、第2の実施形態の逆DWT部210と同様に動作する。505は予測データとの加算を行う加算部である。506は動き補償の参照のために復号画像を格納しておくフレームメモリである。507はフレームメモリ506と入力画像から動き予測を行い、動きベクトルと予測データを算出する動き補償器である。
508は形状を考慮してJPEG2000符号化方式のEBCOT符号化をビットプレーン毎に行う符号化部である。509は動きベクトル等を符号化する動き符号化部である。510は必要なヘッダを生成し形状情報符号化部11と符号化部508、動き符号化部509の出力から符号化データを形成する符号形成部である。
上記のように構成された動画像符号化装置における動画像符号化動作を以下で説明する。本実施形態では、動画像データをフレーム単位に入力する。同時に別途抽出された形状情報を入力するものとするが、内部で形状情報の抽出を行ってももちろん構わない。
第1の実施形態と同様にブロック分割部1は動画像データを、ブロック分割部9は形状情報を入力し、1フレーム分を保持して、ブロックに分割し、後段にブロック単位で出力する。ブロック分割部1でブロック分割された動画像データは動き補償部507と差分部502に入力される。
動き補償部507は入力された画像データとフレームメモリ506に格納された1枚以上の復号画像のデータと比較し、予測誤差を最小とする動きベクトルとその予測データを生成する。生成された動きベクトルは動き符号化部509で符号化され、符号形成部510に入力される。
一方、ブロック分割部9でブロック分割された形状情報は差分部501、縮小部10、フレームメモリ500に入力される。フレームメモリ500に格納される形状情報は他のフレームの形状情報を動き補償するために使用される。差分部501では動き補償部507で算出された動きベクトルに基づいてフレームメモリ500に格納された符号化済みの形状情報から形状情報の予測データを求め、差分を求める。形状情報符号化部11では差分部501から出力された差分をMPEG−4符号化方式の形状符号化方式で符号化し、符号形成部510に出力される。縮小部10では入力された形状情報を、DWT部2での適用回数に従って、縮小する。
差分部502で動き補償部507で算出された予測データを引く。DWT部2ではブロック分割部9から形状情報を、縮小部10から縮小された形状情報を、差分部502からイントラ符号化時には画素値を、動き補償時は予測誤差を入力し、第1の実施形態と同様に形状情報を参照して補填・拡張を行いつつ、離散ウェーブレット変換を行う。量子化部3で量子化を行い、符号化部508と逆量子化部503に入力される。
符号化部508は第1の実施形態の符号化部7と同様に領域外の係数に対して周囲の係数に0を補填する。図16に符号化部508の詳細なブロック図を示す。図16において第1実施形態の図5と同様の機能を果たす部分に関しては同じ番号を付与し、説明を省略する。520は境界を判定する境界判定器であり、521は境界判定器520の内容に従ってビットプレーンメモリ152、153、154、155からの入力または0を選択して出力するセレクタである。522は参照する係数を格納する参照サブバンドメモリである。523はエントロピー符号化器である。
上記の構成において、符号化部508は、形状情報メモリ151に縮小部10で縮小された形状情報が、ビットプレーンメモリ152、153、154、155にビットプレーン単位で図15の量子化部3からのサブバンド係数が格納されたら、クロック発生器150がクロックを発生し、ビットプレーンの上位から算術符号化を開始する。境界判定器520は符号化する画素が領域内か領域外かを判定する。
セレクタ521ではクロックに従って、符号化対象のビットが領域内であればビットプレーンメモリ152、153、154、155から符号化するビットを読み出す。また、セレクタ521は符号化対象のビットの周囲の形状情報を参照して、領域内で符号化済みの係数に対してはビットプレーンメモリ152、153、154、155から同レベルのビット又は上位ビットの符号化済みのビットを適宜読み出す。
また形状情報で領域外の画素値を参照する場合、参照値として0を選択する。セレクタ521の出力は参照サブバンドメモリ522に格納される。本実施形態で図10の形状情報に対して、0が選択される係数は図17に示した黒い部分が対象となる。エントロピー符号化器523は参照サブバンドメモリ522から符号化対象ビットと参照値とを読み込み、符号化対象ビット符号化する。符号化結果は図15の符号形成部510に入力される。
図15に戻り、符号化部508で符号化されて得られた符号化データは符号形成部510に入力される。符号形成部510でヘッダ情報を付加し、動きに関する符号化データ、形状情報の符号化データ、量子化された係数の符号化データと共に出力する。
同時に量子化部3の出力は逆量子化部503で逆量子化され、逆DWT部504で離散ウェーブレット変換の逆変換を施し、加算部505で予測データを加算してフレームメモリ506に格納する。
このような一連の選択動作により、形状に対応した画像データを符号化することが可能になり、動き補償を行いながら、離散ウェーブレット変換部で形状を考慮した拡張を行い、形状情報に従って符号化する対象を減少させることで符号化効率を改善する効果がある。さらに、エントロピー符号化する対照が減少するので高速に処理するといった効果がある。
[第4の実施形態]
図18は、本発明の第4の実施形態に係る動画像復号装置の構成を示すブロック図である。本実施形態では第3実施形態で生成された符号化データを復号する場合を例にとって説明するが、これに限定されない。
図18において第2の実施形態の図11と同様の機能を果たす部分に関しては同じ番号を付与し、説明を省略する。
400は動きベクトル等を復号する動き復号部である。401は動きベクトルに基づいて、画像データの予測データを算出する動き補償部である。402は形状情報に基づいて、JPEG2000符号化方式のEBCOT符号化によってビットプレーン毎に復号を行う復号部である。403は予測データとの加算を行う加算部である。404は動きベクトルに基づいて、形状情報の予測データを算出する動き補償器である。405は予測データとの加算を行う加算部である。
上記のように構成された動画像復号装置における動画像復号動作を以下で説明する。本実施形態では、動画像データの符号化データをフレーム単位に入力する。
第2実施形態と同様に、入力された符号化データは符号解析部200に入力される。付加されたヘッダを解析し、符号化の特性を把握し、後段の各部の初期化等を行う。また符号解析部200は入力された符号化データから動きに関する符号化データと、形状情報に関する符号化データと、画像データに関する符号化データを分離し、それぞれを動き復号部400、形状情報復号部201、復号部402に入力する。
動き復号部400は動きベクトル等の動きに関する情報を復号し、動き補償部401と動き補償部404に入力する。動き補償部401は復号された画像が格納されているフレームメモリ211から動きベクトル等に従って、予測データを生成し、加算部403に出力する。同様に、動き補償部404は復号された形状情報が格納されているフレームメモリ202から動きベクトル等に従って、形状情報の予測データを生成し、加算部405に出力する。
第2の実施形態と同様に形状情報復号部201は、MPEG−4符号化方式の形状符号化方式に従って復号し、加算部405に入力する。加算部405では動き補償部404から供給される予測データと加算し、形状情報を再生し、フレームメモリ202に格納し、同時に縮小部203に入力する。縮小部203は形状情報の縮小画像を生成して保持する。縮小された形状情報は復号部402、逆DWT部210に入力される。
復号部402は第2の実施形態の図12の構成でサブバンド係数を復号する。但し、復号されるサブバンド係数は統合され多係数ではないことが異なる。復号結果は図18の係数メモリ207に入力される。以下、第2実施形態と同様に逆量子化部209は所定の逆量子化を行い、逆DWT部210で予測誤差または画素値を再生する。逆DWT部210の出力は加算部403に入力され、動き補償部401から供給される予測データと加算し、復号画像を得て、フレームメモリ211に格納する。復号画像はフレームメモリ211から、形状情報はフレームメモリ202から適宜読み出される。
このような一連の選択動作により、離散ウェーブレット変換部で形状を考慮して符号化された符号化データを復号することが可能になり、符号化データを劣化なく復号することが可能になった。また、シンボル数も全てのサブバンド係数で処理を行うより少ないため、高速化が図られている。さらに動き補償を行うことで、符号化効率の向上を行うことも可能になった。
[第5の実施形態]
図19は、本発明の第5の実施形態に係る動画像符号化装置の構成を示すブロック図である。図19において、300は装置全体の制御、及び種々の処理を行う中央演算装置(CPU)、301は本装置の制御に必要なオペレーティングシステム(OS)、ソフトウェア、演算に必要な記憶領域を提供するメモリである。302は種々の装置をつなぎ、データ、制御信号をやり取りするバスである。303は装置の起動、各種条件の設定、再生の指示を行うための端末である。304はソフトウェアを蓄積する記憶装置である。
305はストリームを蓄積する記憶装置である。記憶装置304および、305はシステムから切り離して移動できるメディアで構成することも出来る。306は動画像を撮像するカメラである。307は画像を表示するモニタであり、309は通信回路であり、LAN、公衆回線、無線回線、放送電波等で構成されている。308は通信回路309を介してストリームを送受信する通信インターフェースである。
メモリ301には装置全体を制御し、各種ソフトウェアを動作させるためのOS601や動作させるソフトウェア602〜605を格納し、画像データを格納する画像エリア606、生成した符号化データを格納する符号エリア607、各種演算や符号化の際のパラメータ等を格納しておくワーキングエリア608が存在する。
このような構成において動画像符号化処理について説明する。カメラ306から入力された画像データを符号化し、通信回路309に出力する場合を例にとって説明する。
メモリ301のメモリの使用、格納状況を図20aに示す。メモリ301には装置全体を制御し、各種ソフトウェアを動作させるためのOS601、動画像符号化する動画像符号化ソフトウェア602、動画像からオブジェクトを抽出するオブジェクト抽出ソフトウェア603、通信する通信ソフトウェア604、カメラ305から動画像をフレーム単位で入力する画像入力ソフトウェア605が格納されている。
動画像符号化ソフトウェア602はMotion JPEG2000符号化方式を例にとって説明するが、これに限定されない。処理に先立ち、端末303から装置全体に対して起動が指示され、各部が初期化される。すると記憶装置304に格納されているソフトウェアがバス302を介してメモリ301に展開され、ソフトウェアが起動される。
このような構成において、処理に先立ち、メモリ301上の符号エリア607、ワーキングエリア608は0でクリアされる。画像入力ソフトウェア605はカメラ305で撮像された画像データを1フレームずつ、メモリ301上の画像エリア606に格納する。その後、オブジェクト抽出ソフトウェアは画像エリア606の画像からオブジェクトを抽出し、その形状情報を画像エリア606に格納する。以後、特に、画像エリア606の画像データと形状情報の格納については言及しない。
次に、CPU300による動画像符号化ソフトウェア602での画像データを符号化する動作について図21に示すフローチャートに従って説明する。
まずステップS1にて、MotionJPEG2000符号化方式で必要なヘッダを生成して、メモリ301上の符号エリア607に格納する。通信ソフトウェアは、符号エリア607に符号化データが格納されたら、通信インターフェース308を介して通信回線309に送出し、送出後、符号エリア607の該当する領域をクリアする。以後、特に、符号エリア607の符号化データの送信については言及しない。
ステップS2にて、符号化処理の終了判定を行う。端末303から符号化処理の終了が入力されれば全ての処理を終了する。そうでなければステップS3に進む。ステップS3にて、画像入力ソフトウェア605に同期して、メモリ301上の画像エリア606から画像データを読み込む。ステップS4にて、オブジェクト抽出ソフトウェア603に同期して、メモリ301上の画像エリア606から形状情報を読み込む。
ステップS5にて、1フレームに含まれる全てのブロックについて処理が終了したか否かを判定し、終了していればステップS2に戻り、次のフレームの処理を行う。そうでなければステップS6に進む。ステップS6にて、入力された形状情報から1つのブロックを選択し、をMPEG−4符号化方式の形状符号化方式で符号化し、符号化データをメモリ301上の符号エリア607に格納する。ステップS7にて、全ての周波数帯の符号化が終了したか否かを判定し、終了していればステップS12に進む。そうでなければステップS8に進み、周波数帯の符号化を行う。
ステップS8にて、入力された画像データから1つのブロックを選択し、形状に適応した離散ウェーブレット変換を施し、その変換係数をメモリ301上のワーキングエリア608に格納する。
図22にステップS8の形状適応離散ウェーブレット変換の処理についてフローチャートを用いて説明する。
ステップS51にて、画像エリア606の画像データから符号化するブロックを切り出す。ステップS52にて、画像エリア606の形状情報から符号化するブロックを入力する。ステップS53にて、形状適応離散ウェーブレット変換処理の終了判定を行う。所定の適用回数が終了したかを判定し、所定の適用回数になったらこの処理を終了して図21のステップS9に進む。一方、終了していなければステップS54に進む。
ステップS54にて、ステップS51で切り出されたブロックまたは画像エリア606に格納された周波数帯のデータに対して、ステップS52で画像エリア606に格納された形状情報画像エリア606に格納された形状情報、または縮小されて画像エリア606に格納された形状情報を参照して水平方向のローパスフィルタ処理を行う。
図23にステップS54、S56、S59、S61、S63、S65の形状適応離散ウェーブレット変換のフィルタ処理についてフローチャートを参照して説明する。図23では係数やその方向が各種のフィルタで異なるだけで基本的な手順は同じである。
ステップS80にて、全ての係数について処理が終了したか判定し、終了していなければステップS81に進み、終了していれば図22のサブサンプリングの各処理に進む。ステップS81にて、中央の値が領域外か否かを判定し、領域外であれば、フィルタ演算を行わないため、ステップS80に戻る。ステップS82にて、中央の値が境界を含むか否かを判定し、境界を含まないのであれば、補填・拡張処理を行わないため、ステップS84に進み、境界を含むのであればステップS83へ移行する。
ステップS83にて、領域外の値を第1の実施形態と同様に点対称で補填を行う。ステップS84にて、各値に重みを乗じ、加算して、その値をメモリ301上のワーキングエリア608に格納し、ステップS80に戻り、次の係数の処理を行う。
図22に戻って、ステップS55にて、ステップS84でワーキングエリア608に格納されたデータに対して、水平方向のサブサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。
ステップS56にて、ステップS51で切り出されたブロックまたは画像エリア606に格納された周波数帯のデータに対して、ステップS52で画像エリア606に格納された形状情報、または縮小されて画像エリア606に格納された形状情報を参照して水平方向のハイパスフィルタ処理を行う。
ステップS57にて、水平方向のサブサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。ステップS58にて、ステップS52で切り出されたかまたは縮小されて画像エリア606に格納された形状情報から水平方向にサブサンプリングして縮小された形状情報を作成し、これをメモリ301上のワーキングエリア608に格納する。
ステップS59にて、ステップS55でサブサンプリング処理され、ワーキングエリア608に格納された周波数帯のデータに対して、ステップS58で縮小されてワーキングエリア608に格納された形状情報を参照して垂直方向のローパスフィルタ処理を行い、その結果をメモリ301上のワーキングエリア608に格納する。ステップS60にて、ステップS59にてフィルタ処理されワーキングエリア608に格納されたデータに対して、垂直方向のサブサンプリングを行い、その値をメモリ301上の画像エリア606に格納する。これはLLに該当する。
ステップS61にて、ステップS55でサブサンプリング処理され、ワーキングエリア608に格納された周波数帯のデータに対して、ステップS58で縮小されてワーキングエリア608に格納された形状情報を参照して垂直方向のハイパスフィルタ処理を行い、その結果をメモリ301上のワーキングエリア608に格納する。ステップS62にて、ステップS61にてフィルタ処理されワーキングエリア608に格納されたデータに対して、垂直方向のサブサンプリングを行い、その値をメモリ301上の画像エリア606に格納する。これはLHに該当する。ステップS63にて、ステップS57でサブサンプリング処理され、ワーキングエリア608に格納された周波数帯のデータに対して、ステップS58で縮小されてワーキングエリア608に格納された形状情報を参照して垂直方向のローパスフィルタ処理を行い、その結果をメモリ301上のワーキングエリア608に格納する。
ステップS64にて、ステップS63にてフィルタ処理されワーキングエリア608に格納されたデータに対して、垂直方向のサブサンプリングを行い、その値をメモリ301上の画像エリア606に格納する。これはHLに該当する。ステップS65にて、ステップS57でサブサンプリング処理され、ワーキングエリア608に格納された周波数帯のデータに対して、ステップS58で縮小されてワーキングエリア608に格納された形状情報を参照して垂直方向のハイパスフィルタ処理を行い、その結果をメモリ301上のワーキングエリア608に格納する。
ステップS66にて、ステップS65にてフィルタ処理されワーキングエリア608に格納されたデータに対して、垂直方向のサブサンプリングを行い、その値をメモリ301上の画像エリア606に格納する。これはHHに該当する。ステップS67にて、ステップS58で切り出されてワーキングエリア608に格納された形状情報から垂直方向にサブサンプリングして縮小された形状情報を作成し、これをメモリ301上の画像エリア606に格納する。
ステップS54からステップS67を行うことによって離散ウェーブレット変換を1回適用した周波数帯とそれに適応する形状情報をメモリ301上の画像エリア606に得ることができる。ステップS53にて所望する適用回数に至らない場合は、入力する画像データ及び、形状情報を直前で求め、画像エリア606に格納されているLLに対して行うことで所望する周波数帯の全てを得ることができる。ステップS53で所望する適用回数に達した場合は図21のステップS9に進む。
図21に戻って、ステップS9にて、メモリ301上の画像に格納された各周波数帯のサブバンド係数に対して量子化を行い、その結果をワーキングエリア608に格納する。ステップS10にて、ステップS7で画像エリア606に格納した形状情報を参照して、ステップS9でワーキングエリア608に格納された量子化値を統合する。図24に係数統合の処理について詳細なフローチャートを示して説明する。
ステップS100にて、メモリ301上のワーキングエリア608内部の形状情報のためのエリアS1とサブバンド係数のためのエリアV1を0でクリアし、カウンタ値jを−1にする。ステップS101にて、ブロック内の周波数帯の全ての水平ラインについて統合処理が終了したか否かを判定し、処理が終了していなければステップS102に進み、終了していればステップS111に進む。
ステップS102にて、カウンタ値jに1を加える。ステップS103にて、画像エリア606に格納された形状情報を用いて、処理する水平のラインで全てのサブバンド係数が領域外か否かを判定し、全てが領域外、すなわちライン内に領域内がなければステップS101に進み、次の水平ラインの処理を行う。そうでければ、ステップS104にてカウンタ値cとxを0にする。
ステップS105にて、処理する水平のラインで全てのサブバンド係数の処理を終了したか否かを判定し、水平ラインの全てのサブバンド係数を処理したのであれば、ステップS101に進み、次の水平ラインの処理を行う。そうでなければステップS106に進む。ステップS106にて、注目している量子化値が同一周波数帯の同一位置に該当する形状情報を参照して領域外か否かを判定する。領域内と判定された場合はステップS107に進み、そうでなければステップS110に進む。
ステップS107にて、同一位置の形状情報をメモリ301上のワーキングエリア608のエリアS1[x,j]に領域内を表す値を格納する。ステップS108にて、画像エリア606に格納されている同一位置のサブバンド係数Vi〔c、j〕をワーキングエリア608のV1[x,j]に格納する。ステップS109にて、カウンタ値xに1を加える。
ステップS110にて、カウンタ値cに1を加え、次のサブバンド係数の処理を行うためにステップS105に進む。ステップS101にて、全ての水平ラインについてステップS102からステップS110の処理が終了したら、ステップS111に進み、終了していなければステップS102以下を繰り返す。ステップS111以下で、垂直方向の統合処理を行う。
ステップS111にて、メモリ301上のワーキングエリア608内部の形状情報のためのエリアS2とサブバンド係数のためのエリアV2を0でクリアし、カウンタ値iを0にする。ステップS112にて、ブロック内の全ての垂直ラインについて統合処理が終了したか否かを判定し、処理が終了していなければステップS113に進み、終了していれば図21のステップS11進む。ステップS113では、カウンタ値iに1を加える。ステップS114にて、画像エリア606に格納された形状情報を用いて、処理する垂直のラインで全てのサブバンド係数が領域外か否かを判定し、全てが領域外、すなわちライン内に領域内がなければステップS112に進み、次の垂直ラインの処理を行う。
ステップS115にて、カウンタ値cとyとを0にする。ステップS116にて、処理する垂直のラインで全てのサブバンド係数の処理を終了したか否かを判定し、垂直ラインの全てのサブバンド係数を処理したのであれば、ステップS112に進み、次の垂直ラインの処理を行う。そうでなければステップS117に進む。ステップS117にて、注目しているサブバンド係数が同一周波数帯の同一位置に該当する形状情報S1[i,c]を参照して領域外か否かを判定する。領域内と判定された場合はステップS118に進み、そうでなければステップS121に進む。
ステップS118にて、形状情報S1[i,c]をメモリ301上のワーキングエリア608のエリアS2[i,y]に格納する。ステップS119にて、ワーキングエリア608に格納されている同一位置のサブバンド係数Vi〔i、c〕をワーキングエリア608のV2[i,y]に格納する。ステップS120にて、カウンタ値yに1を加える。ステップS121にて、カウンタ値cに1を加え、次のサブバンド係数の処理を行うためにステップS116に進む。
ステップS112にて、全ての垂直ラインについてステップS113からステップS121の処理が終了したら、係数統合の処理を終了し、図21のステップS11に進み、終了していなければステップS113以下を繰り返す。
図21に戻り、ステップS11にて、ステップS10で統合され、ワーキングエリア608に格納されている統合された量子化値V2を統合された形状情報S2を参照して符号化する。
図25に符号化処理の詳細なフローチャートを示す。ステップS150にて、ビットプレーンのカウンタ値pを0、水平方向のカウンタ値xを‐1に、垂直方向のカウンタ値yを0にする。ステップS151にて、処理するかカウンタ値pを参照して符号化する全てのビットプレーンの符号化処理が終了したか否かを判定し、終了であれば、図21のステップS7に進む。そうでなければステップS152に進む。
ステップS152にて、符号化処理するサブバンド係数の上位からpビット目のビットプレーンの全ビットの符号化処理を全て終了したか否かを判定し、全てのビットを処理したのであれば、ステップS163に進み、そうでなければステップS153に進む。ステップS153にて、カウンタ値xに1を加える。ステップS154にて、統合された形状情報S2〔x、y〕(x、yはブロック内のサブバンド係数の位置)を参照して、符号化する対象のビットを含むサブバンド係数V2〔x、y〕が領域外か否かを判定し、領域外であれば、ステップS162に進み、そうでなければステップS155に進む。
ステップS155にて、符号化対象のビットを符号化するのに必要な参照ビットが全て揃ったかを判定し、揃っていなければラスタ順に次の参照ビットを決定するためステップS156に進み、揃っていればステップS161に進む。ステップS156にて、対象となる参照ビットを含むサブバンド係数が領域外であるか否かを、統合された形状情報S2〔x+i、y+j〕(但し、i=−1〜1、j=−1〜1)を参照して判定する。領域外であればステップS157に進む。そうでなければステップS158に進む。
ステップS157にて、対象となった参照ビットに0を補填し、次の参照ビットの値を決定するためにステップS155に戻る。ステップS158にて、対象となる参照ビットを含むサブバンド係数のビットが符号化済みか否かを判定し、符号化済みならばステップS159に進み、そうでなければステップS160に進む。
ステップS159にて、符号化済みの同レベルのビットをメモリ301上のワーキングエリア608に格納されているサブバンド係数V2〔x+i、y+j〕から読み出し、次の参照ビットの値を決定するためにステップS155に戻る。ステップS160にて、符号化済みの上位レベルのビットをメモリ301上のワーキングエリア608に格納されているサブバンド係数V2〔x+i、y+j〕から読み出し、次の参照ビットの値を決定するためにステップS155に戻る。
ステップS155にて、全ての参照ビットが揃ったと判断されたら、ステップS161にて、エントロピー符号化し、生成した符号をメモリ301上の符号エリア607に格納し、次のビットを処理するために、ステップS153に戻る。ステップS154にて、領域外と判断されたら、その水平ラインにはすでに符号化すべきビットは無いので、ステップS162にて、次のラインの処理を行うため、カウント値xを−1にし、カウント値yに1を加える。
ステップS152にて、全てのビットが終了したと判断されたら、ステップS163にて、次のビットプレーンの符号化を行うため、カウント値pに1を加え、カウント値xを−1にし、カウント値yを0にする。ステップS151ですべてのビットプレーンの処理が終了したら、図21のステップS7に戻る。図21に戻り、ステップS7で前周波数帯が終了したと判断されたら、ステップS12にて、メモリ301上に格納されたステップS1のヘッダがあればヘッダデータと、ステップS6で格納された形状情報の符号化データと、ステップS11で符号化された量子化値の符号化データとを多重化し、メモリ301上の符号エリア607に格納しておく。その後、ワーキングエリア608、画像エリア606のデータをクリアし、次のブロックの処理を行うためにステップS5に進む。端末303で処理の終了が指示されたら、全てのソフトウェアを停止する。
このような一連の選択動作により、形状に対応した画像データを符号化することが可能になり、離散ウェーブレット変換で形状を考慮した拡張を行い、係数統合で領域内のサブバンド係数を纏めることで、サブバンド係数間の相関を利用し、符号化効率の向上が行えるといった効果がある。なお、本実施形態においては画像の符号化方式をJPEG2000符号化方式としたが他の符号化方式、たとえば、MPEG−4のStill Texture Object符号化などの静止画像符号化方式やでももちろんかまわない。また、動き補償符号化を行うことで符号化効率を向上させることもできる。
また、形状情報の符号化をMPEG−4符号化方式としたが、JBIGやMMRなどの符号化方式であってももちろん構わない。本実施形態では通信ソフトウェアを起動し、符号エリア607内の符号化データを通信インターフェース308を介して通信回線309に送信する例について説明したが、記憶装置305に格納してももちろんかまわない。
また、本実施形態の各部または全部の機能をハードウェアで構成してももちろんかまわない。また、CPU300による動画像符号化ソフトウェアが符号化する別な動作について図26に示すフローチャートに示す。図21との相違点は係数統合のステップS10がない点である。参照ビットに領域外が多くなるため、符号化時の相関が低下するが、統合処理を省略できるため、高速化が可能である。
[第6の実施形態]
本実施形態では、図19の構成を用いて、第5実施形態で生成された符号化データの復号動作について説明する。記憶装置305に格納されている符号化データを復号してモニタ307に表示する場合を例にとって説明する。
本実施形態では、動画像データの符号化データをフレーム単位に入力する。メモリ301のメモリの使用、格納状況を図20bに示す。第5実施形態と同様にメモリ301にはOS601、画像エリア606、符号エリア607、ワーキングエリア608が存在する。その他に、動画像を復号する動画像復号ソフトウェア701、通信する通信ソフトウェア604、モニタ307に動画像を表示する画像表示ソフトウェア702が格納されている。
第5の実施形態と同様に各部の初期化が行われ、記憶装置304に格納されているソフトウェアが起動される。CPU300による動画像復号ソフトウェア701が復号する動作について図27に示すフローチャートに従って説明する。
動画像復号ソフトウェア701は、ステップS201にて、記憶装置305から動画像データの符号化データのヘッダに入力し、メモリ301上の符号エリア607に格納した後、符号化の特性を把握し、メモリ301上のワーキングエリア608に各初期値等を格納する。
ステップS202にて、終了判定を行う。記憶装置305の符号化データの全てを復号するか、端末303から中断の指示が合った場合、全てのメモリ領域をクリアし、ソフトウェアの動作を終了する。そうでなければステップS203に進み、次のフレームの処理を行う。
ステップS203にて、動画像データの符号化データを記憶装置305からフレーム単位に入力し、メモリ301上の符号エリア607に格納する。ステップS204にて、フレーム内の全ブロックに対して復号が終了したか否かを判定し、終了していればステップS213進み、そうでなければステップS205に進む。
ステップS205にて、符号エリア607から形状情報に関する符号化データを読み出し、復号する。本実施形態ではMPEG−4符号化方式の形状符号化方式に従って復号し、形状情報を生成し、画像エリア606に格納する。生成された形状情報は領域内外を表す画素あたり1ビットの情報である。ステップS206にて、画像エリア606の形状情報に対して、ステップS201で解析した結果から離散ウェーブレット変換の適用回数nを読み出し、n段階の縮小画像を生成して、画像エリア606に格納しておく。
ステップS207にて、全ての周波数帯の復号が終了したか否かを判定し、終了していればステップS204に進み、次のブロックの復号処理を行う。そうでなければステップS208に進む。ステップS208にて、ステップS206で生成された縮小された形状情報で、復号する周波数帯に適合した形状情報をメモリ301上の画像エリア606から読み出し、形状の統合処理を行う。形状統合処理に関しては、第5実施形態の図24に記載された係数統合における形状情報の処理のみを行うことで、ワーキングエリア608の統合された形状情報S2に格納される。
ステップS209にて、符号エリア607から画像データに関する符号化データを読み出し、復号して、量子化されたサブバンド係数を求めて、ワーキングエリア608に格納する。図28に復号処理の詳細なフローチャートを示す。ステップS250にて、メモリ301上のワーキングエリア608の内部のサブバンド係数のためのエリアV2を0でクリアし、ビットプレーンのカウンタ値pを0、水平方向のカウンタ値xを−1に、垂直方向のカウンタ値yを0にする。
ステップS251にて、処理するかカウンタ値pを参照して復号する全てのビットプレーンの復号処理が終了したか否かを判定し、終了であれば、図27のステップS210に進み、係数の展開の処理を行う。そうでなければステップS252に進む。ステップS252にて、復号処理するサブバンド係数の上位からpビット目のビットプレーンの全ビットの復号処理を全て終了したか否かを判定し、全てのビットを処理したのであれば、ステップS263に進み、そうでなければステップS253に進む。
ステップS253にて、カウンタ値xに1を加える。ステップS254にて、形状情報S2〔x、y〕(x、yはブロック内のサブバンド係数の位置)を参照して、復号する対象のビットを含むサブバンド係数V2〔x、y〕が領域外か否かを判定し、領域外であれば、ステップS262に進み、そうでなければステップS255に進む。ステップS255にて、復号対象のビットを復号するのに必要な参照ビットが全て揃ったかを判定し、揃っていなければラスタ順に次の参照ビットを決定するためステップS256に進み、揃っていればステップS261に進む。
ステップS256にて、対象となる参照ビットを含むサブバンド係数が領域外であるか否かを、形状情報S2〔x+i、y+j〕(但し、i=−1〜1、j=−1〜1)を参照して判定する。領域外であればステップS257に進む。そうでなければステップS258に進む。ステップS257にて、対象となった参照ビットに0を補填し、次の参照ビットの値を決定するためにステップS255に戻る。
ステップS258にて、対象となる参照ビットを含むサブバンド係数のビットが復号済みか否かを判定し、復号済みならばステップS259に進み、そうでなければステップS260に進む。ステップS259にて、復号済みの同レベルのビットをメモリ301上のワーキングエリア608に格納されているサブバンド係数V2〔x+i、y+j〕から読み出し、次の参照ビットの値を決定するためにステップS255に戻る。
ステップS260にて、復号済みの上位レベルのビットをメモリ301上のワーキングエリア608に格納されているサブバンド係数V2〔x+i、y+j〕から読み出し、次の参照ビットの値を決定するためにステップS255に戻る。ステップS255にて、全ての参照ビットが揃ったと判断されたら、ステップS261にて、エントロピー復号し、生成したビットをメモリ301上のワーキングエリア608のサブバンド係数V2〔x+i、y+j〕の該当するビットに格納し、次のビットを処理するために、ステップS253に戻る。
ステップS254にて、領域外と判断されたら、その水平ラインにはすでに復号すべきビットは無いので、ステップS262にて、次のラインの処理を行うため、カウント値xを−1にし、カウント値yに1を加える。ステップS252にて、全てのビットが終了したと判断されたら、ステップS263にて、次のビットプレーンの復号を行うため、カウント値pに1を加え、カウント値xを−1にし、カウント値yを0にする。
図27に戻り、ステップS209の復号処理によって生成されたサブバンド係数はワーキングエリア608のサブバンド係数のエリアV2に統合された形状情報はエリアS2に格納されている。その後ステップS210に進む。ステップS210にて係数の展開を行う。
図29に係数展開の処理について詳細なフローチャートを示して説明する。
ステップS220にて、メモリ301上のワーキングエリア608内部の形状情報のためのエリアS1に該当する周波数帯に適応した縮小された形状情報を格納する。ステップS221にて、サブバンド係数のためのエリアV1を0でクリアし、カウンタ値jを−1にする。ステップS222にて、ブロック内の周波数帯の全ての水平ラインについて展開処理が終了したか否かを判定し、処理が終了していなければステップS223に進み、終了していればステップS231に進む。
ステップS223にて、カウンタ値jに1を加える。ステップS224にて、画像エリア606に格納された形状情報を用いて、処理する水平のラインで全てのサブバンド係数が領域外か否かを判定し、全てが領域外、すなわちライン内に領域内がなければステップS222に進み、次の水平ラインの処理を行う。ステップS225にて、カウンタ値cとxを0にする。
ステップS226にて、処理する水平のラインで全てのサブバンド係数の処理を終了したか否かを判定し、水平ラインの全てのサブバンド係数を処理したのであれば、ステップS222に進み、次の水平ラインの処理を行う。そうでなければステップS227に進む。ステップS227にて、注目しているサブバンド係数が同一周波数帯の同一位置に該当する形状情報S1[i,c]を参照して領域外か否かを判定する。領域内と判定された場合はステップS228に進み、そうでなければステップS230に進む。
ステップS228にて、ワーキングエリア608に格納されているサブバンド係数V2〔x、j〕をワーキングエリア608のV1[c,j]に格納する。ステップS229にて、カウンタ値xに1を加える。
ステップS230にて、カウンタ値cに1を加え、次のサブバンド係数の処理を行うためにステップS226に進む。ステップS222にて、全ての水平ラインについてステップS223からステップS230の処理が終了したら、ステップS231に進み、終了していなければステップS223以下を繰り返す。ステップS231以下で、垂直方向の展開処理を行う。
ステップS231にて、メモリ301上のワーキングエリア608のサブバンド係数のためのエリアVを0でクリアし、カウンタ値iを0にする。ステップS232にて、ブロック内の全ての垂直ラインについて展開処理が終了したか否かを判定し、処理が終了していなければステップS233に進み、終了していれば図27のステップS211に進む。
ステップS233にて、カウンタ値iに1を加える。ステップS234にて、ワーキングエリア608に格納された形状情報を用いて、処理する垂直のラインで全てのサブバンド係数が領域外か否かを判定し、全てが領域外、すなわちライン内に領域内がなければステップS232に進み、次の垂直ラインの処理を行う。そうでなければ、ステップS235にてカウンタ値cとyを0にする。
ステップS236にて、処理する垂直のラインで全てのサブバンド係数の処理を終了したか否かを判定し、垂直ラインの全てのサブバンド係数を処理したのであれば、ステップS232に進み、次の垂直ラインの処理を行う。そうでなければステップS237に進む。
ステップS237にて、注目している量子化値が同一周波数帯の同一位置に該当する形状情報S1[i,c]を参照して領域外か否かを判定する。領域内と判定された場合はステップS238に進み、そうでなければステップS240に進む。ステップS238にて、ワーキングエリア608に格納されている同一位置のサブバンド係数V1〔i、y〕をワーキングエリア608のV[i,c]に格納する。
ステップS239にて、カウンタ値yに1を加える。ステップS240にて、カウンタ値cに1を加え、次のサブバンド係数の処理を行うためにステップS236に進む。ステップS232にて、全ての垂直ラインについてステップS233からステップS240の処理が終了したら、係数展開の処理を終了し、図27のステップS211に進み、終了していなければステップS232以下を繰り返す。
図27に戻り、ステップS210で展開されたサブバンド係数はワーキングエリア608内のエリアVに格納されている。ステップS211にて、ワーキングエリア608の量子化されたサブバンド係数を読み込み、逆量子化を施し、サブバンド係数を再生して、ワーキングエリア608の同じ領域に戻す。
ステップS212にて、ワーキングエリア608の再生されたサブバンド係数を読み込み、画像エリア606の形状情報に適応した逆離散ウェーブレット変換を施し、その変換係数をメモリ301上のワーキングエリア608に格納する。
図30にステップS212の形状適応逆離散ウェーブレット変換の処理についてフローチャートを用いて説明する。
ステップS300にて、ワーキングエリア608のサブバンド係数Vを読み込む。ステップS301にて、画像エリア606の形状情報から復号したブロックに対応する縮小された形状情報を入力する。
ステップS302にて、形状適応逆離散ウェーブレット変換処理の終了判定を行う。所定の適用回数が終了したかを判定し、所定の適用回数になったらこの処理を終了して図27のステップ207に進む。ステップS303にて、逆量子化されてワーキングエリア608に格納された周波数帯LLのデータに対して、垂直方向のアップサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。
ステップS304にて、ステップS304でアップサンプリングされたLLの周波数帯のデータに対して、ステップS302で画像エリア606に格納された形状情報を参照して垂直方向のローパスフィルタ処理を行い、結果をワーキングエリア608に格納する。本フィルタ処理は第5実施形態の図23に示したフローチャートに従って処理される。以後の各フィルタ処理も同様である。
ステップS305にて、逆量子化されてワーキングエリア608に格納された周波数帯LHのデータに対して、垂直方向のアップサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。
ステップS306にて、ステップS305でアップサンプリングされたLHの周波数帯のデータに対して、ステップS302で画像エリア606に格納された形状情報を参照して垂直方向のハイパスフィルタ処理を行い、結果をワーキングエリア608に格納する。ステップS308にて、逆離散ウェーブレット変換で規定されている周波数での合成を行い、ワーキングエリア608に格納する。
ステップS308にて、逆量子化されてワーキングエリア608に格納された周波数帯HLのデータに対して、垂直方向のアップサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。ステップS309にて、ステップS308でアップサンプリングされたHLの周波数帯のデータに対して、ステップS302で画像エリア606に格納された形状情報を参照して垂直方向のローパスフィルタ処理を行い、結果をワーキングエリア608に格納する。
ステップS310にて、逆量子化されてワーキングエリア608に格納された周波数帯HHのデータに対して、垂直方向のアップサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。ステップS311にて、ステップS310でアップサンプリングされたHHの周波数帯のデータに対して、ステップS302で画像エリア606に格納された形状情報を参照して垂直方向のハイパスフィルタ処理を行い、結果をワーキングエリア608に格納する。
ステップS312にて、逆離散ウェーブレット変換で規定されている周波数での合成を行い、ワーキングエリア608に格納する。ステップS313にて、ワーキングエリア608に格納された縮小された形状情報は形状情報の係数単位での繰り返しによって水平方向に2倍にアップサンプリングされてワーキングエリア608に格納される。ステップS314にて、ステップS308でワーキングエリア608に格納された周波数帯LLのデータと周波数帯LHを合成したデータに対して、水平方向のアップサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。
ステップS315にて、ステップS314でアップサンプリングされたデータに対して、ワーキングエリア608に格納された垂直方向にアップサンプリングされた形状情報を参照して水平方向のローパスフィルタ処理を行い、結果をワーキングエリア608に格納する。ステップS316にて、ステップS312でワーキングエリア608に格納された周波数帯LHのデータと周波数帯HHを合成したデータに対して、水平方向のアップサンプリングを行い、その値をメモリ301上のワーキングエリア608に格納する。
ステップS317にて、ステップS316でアップサンプリングされたデータに対して、ステップS313でワーキングエリア608に格納された水平方向にアップサンプリングされた形状情報を参照して水平方向のハイパスフィルタ処理を行い、結果をワーキングエリア608に格納する。ステップS318にて、逆離散ウェーブレット変換で規定されている周波数での合成を行い、画像エリア606に格納して、次の周波数帯の処理に進むため、ステップS302に進む。
ステップS302にて、所定の適用回数が終了していたらこの処理を終了して図27のステップS207に進む。
図27に戻って、ステップS207にて、全ての周波数帯の復号が終了したら次のブロックの復号処理を行うためにステップS204に進む。ステップS204にて、フレーム内の全ブロックについて処理が終了した場合、ステップS213に進む。
ステップS213にて、ステップS212で画像エリア606に格納された画像データを出力する。ステップS214にて、出力された画像データは画像表示ソフトウェアによってモニタ307上に表示される。
このような一連の選択動作により、離散ウェーブレット変換部で形状を考慮して符号化され、相関を高めるために係数を統合した符号化データを復号することが可能になり、符号化データを劣化なく復号することが可能になった。また、シンボル数も全てのサブバンド係数で処理を行うより少ないため、高速化が図られている。さらに動き補償を行うことで、符号化効率の向上を行うことも可能になった。
なお、本実施形態においては画像の符号化方式をJPEG2000符号化方式としたが他の符号化方式、たとえば、MPEG−4のStill Texture Object符号化などの静止画像符号化方式やでももちろんかまわない。
また、形状情報の符号化をMPEG−4符号化方式としたが、JBIGやMMRなどの符号化方式であってももちろん構わない。さらには、サブバンド係数の上位ビットの上に形状情報をビットプレーンとして符号化しても構わない。
また、本実施形態の各部または全部の機能をハードウェアで構成してももちろんかまわない。また、CPU300による動画像符号化ソフトウェアが符号化する別な動作について図31に示すフローチャートに示す。図27との相違点は係数統合のステップS206と係数展開のステップS210がない点である。参照ビットに領域外が多くなるため、符号化時の相関が低下するが、統合処理を省略できるため、高速化が可能である。
[第7の実施形態]
上記の実施形態においては、画像データのうち、動画像データの符号化・復号化処理について説明した。本発明の適用対象は動画像データに限定されるものではなく、静止画像についても同様にして適用可能である。そこで、本実施形態では、本発明に対応する静止画像符号化装置の実施形態について説明する。
図37は、本発明をファクシミリ通信装置に適用した例である。10001は原稿を読み取るスキャナであり、カラー原稿、グレースケール原稿等を読み込み、光電変換とデジタル化によって入力画像を生成する。10002はフレームメモリであり、生成された入力画像を蓄積する。10003はディスプレイ部であり、フレームメモリ10002に蓄積された画像データを表示する。
10004はデジタイザ部であり、不図示のユーザがディスプレイ部10003に表示された画像を見ながら必要とする部分を指示する。10005は境界処理部であり、デジタイザ部10004で指示された領域の内部を符号化対象領域として決定し、その領域を形状情報メモリ10006に格納する。形状情報メモリ10006は領域内を1、領域外を0としてそれぞれの画素値を形状情報として格納する。
10007は本発明を適用した静止画符号化装置である。10008は通信インターフェースであり、通信回路10009に送信するためのパケット化などを行い、通信回路10009に送信する。通信回路10009はLAN、公衆回線などで構成される通信回路である。
スキャナ部10001で読み込まれた画像データはフレームメモリ10002に格納される。フレームメモリ10002に格納された画像データはディスプレイ部10003に表示され、不図示のユーザがデジタイザ部10004を用いて、必要とする部分の輪郭をなぞって、境界処理部10005は対象領域を決定し、対象領域の内部の画素を1、そうでない画素を0とした2値画像情報を生成し、形状情報として形状情報メモリ10006に格納される。形状情報メモリ10006に格納された形状情報とフレームメモリ10002に格納された画像データは静止画像符号化装置10007に入力される。静止画像符号化装置10007では、画像データの符号化が行われ、符号化データが通信インターフェース10008に入力される。ここでパケット化等が行われて、通信回線10009を介して宛先装置に送信される。
図38は本実施形態に対応する、図37の静止画像符号化装置10007の構成の一例を示すブロック図である。ここで静止画像符号化装置10007が使用する画像の符号化方式として、JPEG2000符号化方式を例にとって説明するが、これに限定されない。また、形状情報の符号化方式として、MMR符号化方式を例にとって説明するがこれに限定されない。
図38においては、図1に記載した動画像符号化装置と基本的な構成は同一である。しかし、図38においては、図1におけるブロック分割部9を備えていないので、縮小部10は、形状情報メモリ10006から入力される形状情報を、DWT部2の周波数帯に合わせて縮小を行う。
他の処理については、基本的に第1の実施形態において記載した動画像符号化装置における処理と同様であるので、ここでの記載は省略する。
[第8の実施形態]
第7の実施形態においては、本発明の実施形態のうち、静止画像データの符号化処理について説明した。本実施形態では、更に静止画データを復号する静止画像復号化装置の実施形態について説明する。
図39は本発明をファクシミリ通信装置に適用した例である。通信回路10010はLAN、公衆回線などで構成される通信回路である。10011は通信インターフェースであり、通信回路10010から受信されたパケットデータ等を解析し、符号化データを再構成する。10012は本実施形態に対応する静止画復号装置である。10013は復号された形状情報を格納する形状情報メモリである。10014は描画部であり、形状情報メモリ10013に格納された形状情報を参照して、静止画復号装置で復号された静止画像を描画する。10015は描画された画像データを格納するフレームメモリである。10016はフレームメモリ10015の内容を印字するプリンタ部である。
通信回線10010から受信されたパケット化されたデータは通信インターフェース10011に入力され、符号化データを再構成する。再構成された符号化データは静止画像復号装置100012に入力される。なお、図37の静止画像復号装置10012の構成の一例に対応するブロック図は図11に示したものと同様であり、静止画像復号装置10012における処理も図11に関連して記載した第2の実施形態における説明と同様であるので、ここでの説明は省略する。
なお、図11において、フレームメモリ202に格納された形状情報は、図39の形状情報メモリ10013に格納される。また、描画部10014は形状情報メモリ10013に格納された形状情報に従って、フレームメモリ211から画像データを読み出し、印刷フォーマットに描画する。描画された画像データはフレームメモリ10015に格納される。フレームメモリ100015に格納された画像データはプリンタ部10016で印字されて出力される。
以上のように、本発明では、離散ウェーブレット変換で形状を考慮した拡張を行い、形状情報を参照した符号化・復号を行うことで、任意形状に対応した符号化・復号を行うことが可能になる。また、係数の統合によって、領域内の係数の相関を高めることが可能になり、高能率の符号化・復号が可能になる。
なお、以上に記載の実施形態においては画像の符号化方式をJPEG2000符号化方式としたが他の符号化方式、たとえば、MPEG−4のStill Texture Object符号化などの静止画像符号化方式やでももちろんかまわない。
また、形状情報の符号化をMMR符号化方式としたが、JBIGやMPEG−4符号化方式などの符号化方式であってももちろん構わない。さらには、サブバンド係数の上位ビットの上に形状情報をビットプレーンとして符号化しても構わない。
また、メモリやラッチの構成はこれに限定されず、形状情報メモリや係数メモリを他のメモリと兼用したり、ラッチ群を用いずにメモリから直接読み出すようにしたりしてももちろん構わない。
また、本実施形態の各部または全部の機能をソフトウェアで記述し、CPU等の演算装置によって処理をさせてももちろんかまわない。
[その他の実施形態]
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。