JP2004320804A - 可変長復号化回路及び方法 - Google Patents
可変長復号化回路及び方法 Download PDFInfo
- Publication number
- JP2004320804A JP2004320804A JP2004177746A JP2004177746A JP2004320804A JP 2004320804 A JP2004320804 A JP 2004320804A JP 2004177746 A JP2004177746 A JP 2004177746A JP 2004177746 A JP2004177746 A JP 2004177746A JP 2004320804 A JP2004320804 A JP 2004320804A
- Authority
- JP
- Japan
- Prior art keywords
- image
- circuit
- code
- encoding
- signal
- 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.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】 画面を分割し各小領域毎に符号化あるいは復号化を行う分割画像回
路において、画面分割による画像圧縮率の低下を防ぎ、しかも小型で低コストの
画像符号化装置あるいは画像復号化装置を提供することを目的とする。
【解決手段】 入力された画像を所定の形状の小領域に分割する画像分割回路80
1、分割した各小領域を符号化する小符号化装置1101−1〜4、小領域の符
号を統合する符号統合回路803、各小符号化装置が局所復号化した画像を格納
する共有メモリ回路1102により構成される。
【効果】 本発明によれば、画像の符号化効率をほとんど落すことなく回路各
所の動作速度の低速化が図れるため、小型・低価格の画像符号化装置あるいは画
像復号化装置あるいは画像符号化復号化装置を実現することができる。
【選択図】 図11
路において、画面分割による画像圧縮率の低下を防ぎ、しかも小型で低コストの
画像符号化装置あるいは画像復号化装置を提供することを目的とする。
【解決手段】 入力された画像を所定の形状の小領域に分割する画像分割回路80
1、分割した各小領域を符号化する小符号化装置1101−1〜4、小領域の符
号を統合する符号統合回路803、各小符号化装置が局所復号化した画像を格納
する共有メモリ回路1102により構成される。
【効果】 本発明によれば、画像の符号化効率をほとんど落すことなく回路各
所の動作速度の低速化が図れるため、小型・低価格の画像符号化装置あるいは画
像復号化装置あるいは画像符号化復号化装置を実現することができる。
【選択図】 図11
Description
本発明は画像符号化装置あるいは復号化装置もしくはこれら両者の機能を兼ね備えた画像符号復号化装置に係わり、特にデジタル放送あるいはケーブルテレビジョン等の映像符号化装置あるいは映像受信端末や、画像蓄積装置におけるリアルタイム符号入力装置、テレビ電話あるいはテレビ会議などの映像通信装置の符号化復号化部分に適用される。
画像信号をデジタル化してそのまま伝送や蓄積するには通常のテレビジョン(TV)信号で100Mbps以上、ハイデフィニションTV(HDTV)では1Gbps程度の伝送路あるいは蓄積媒体が必要になる。そのため画像信号の冗長度を削減し、画像の情報量を1/10から1/1000程度までに低減する高能率符号化の研究が盛んになされている。その代表的なものに、インターナショナル オーガニゼーション スタンダーダイゼーション(ISO)が標準化を行ったISO/IEC 11172-2(92.11、通称MPEG1)とその拡張であるISO/IEC CD 13818-2(93.11、通称MPEG2)がある。以下、MPEG1とMPEG2を総称してMPEGと呼び、MPEGを中心に従来の技術を説明する。なお、これらの詳細については上記のISO/IEC 11172-2およびISO/IEC CD 13818-2に詳しい説明が記載されているため、本説明ではこの概略のみを説明する。
図1はMPEG1,2を含む従来の符号化装置のブロック図である。入力されたデジタル画像2はバッファ3に一時的に蓄えられた後、マクロブロックと呼ばれる輝度信号16画素x16画素、色差信号R-Y 8x8画素、B-Y 8x8画素からなる処理単位に分割される。各マクロブロックは動き補償(MC)および離散コサイン変換(DCT)回路4にて、画面の動きを補正した予測信号との差分がとらた後、離散コサイン変換され周波数成分の一種であるDCT係数8が得られる。DCTの演算はマクロブロックの輝度信号をさらに4分割したブロック(色輝度とも8画素x8ライン)単位に行われる。DCT係数8とMC/DCT処理時に得られた動きベクトル9等の付加情報は可変長符号化(VLC)回路5に入力され、それぞれあらかじめ規定された順番に規定された符号に変換され符号バッファ6に入力される。符号バッファからは外部の伝送機器あるいは蓄積装置の読み出し速度に合わせた速度で符号7が読みだされる。符号バッファでは一定周期で符号量計算し、発生符号量10を符号量制御回路212に通知する。符号量制御回路では符号量が所定の値になるように量子化ステップサイズ213等を調節し、これらの制御情報をMC/DCT回路4に通知する。
図2に上記に示した従来例のMC/DCT回路4の詳細図を示す。図2を説明する前に図3を用いてMPEG1,2における動き補償動作を説明する。MPEG1およびMPEG2ではTVの画面をIピクチャ、Pピクチャ、Bピクチャの3種類に分類した後に符号化を行う。Iピクチャは画面をマクロブロック、ブロックに分割した後、これらのブロックに対し直接DCTを施す符号化方法である。このため、以下に説明するP、Bピクチャとは異なりIピクチャの情報単独で1つの画面を再生することができる。一方P、Bピクチャは事前に符号化した画面を元に予測画像を作成し、予測画像との差分に対しDCTを施し符号化を行う。
図3はBピクチャにおける予測画像生成の方法を説明するための図である。図3において前方(forward)参照画面と後方(backward)参照画面は先に符号化を行った画像であり、前方参照画面は今から符号化する符号化画面に対して時間的に前に位置し、後方参照画面は時間的に後に位置する。符号化画面の1つの符号化マクロブロックに対する予測画像を生成するときには、前方、後方各参照画面の同じ位置の周辺で符号化マクロブロックに最も類似した部分を探し、予測マクロブロックを生成する。画面内での符号化マクロブロックの位置と予測マクロブロックの位置との差分を動きベクトルと呼ぶ。予測信号の生成法には前方参照画面の予測マクロブロックを用いる前方予測と、後方参照画面の予測マクロブロックを用いる後方予測と、これら2つの予測信号を画素ごとに平均した補間予測、予測信号をすべて同じ固定値(128)にしたフレーム内予測がある。一般にはこれら4つの予測モードのうち最も予測誤差電力が小さいものを選び予測信号とする。Pピクチャでは前方予測とフレーム内予測のみが使用でき、後方予測、補間予測は禁止される。なお、MPEG2ではPピクチャに対して、2つの前方予測信号を画素ごとに平均した予測(デュアル プライム予測)が追加されている。
前方参照画面および後方参照画面にはIピクチャおよびPピクチャのみが使用され、一組の前方、後方参照画面の間には別のIピクチャ、Pピクチャは存在しない、すなわちBピクチャのみが連続して存在する。また、Bピクチャが全く存在しないことも許されている。Iピクチャ、Pピクチャの間隔は任意に設定できるが、3画面おき以下の固定値にとることが多い。また、Iピクチャはランダムアクセスの基点あるいはエラー時の復帰点として用いられ、その間隔は任意に設定できる。一般には0.5秒以下の間隔でIピクチャを固定的に挿入する、すなわち12あるは15フレームおき、場合が多い。MPEGでは、これらIピクチャの周期とIおよびPピクチャの周期の記述にはそれぞれN、Mの記号が用いられる。たとえばN=12、M=3と記述した場合には「BBIBBPBBPBBP」の周期で各フレームが符号化される。実際に符号化する場合には、3番目のIピクチャのフレームが一番先に符号化され、引き続き1番目、2番目のフレーム、次に6番目のpピクチャのフレーム、そして4番目、5番目のフレームの順で符号化される。そしてたとえば6番目のPピクチャのフレームは3番目のIピクチャのフレームから予測され、4番目のフレームは3番目のIピクチャのフレームと6番目のPピクチャのフレームから予測される。
図3に戻り従来のMC/DCT回路の説明を行う。入力されたデジタルの画像信号11は画像メモリ201に入力され上記で説明した符号化順に並べ替えられる。一方、同時に動き検出回路12に入力され、すでに符号化され参照画像メモリ200に格納されている参照画像信号202との間で、マクロブロックごとの動きベクトルが検出される。なお、このときに画像メモリ201にて遅延された画像信号214を同時に動き検出回路202に入力し参照画像データ202からの後方予測のベクトルを検出する。画像メモリ201にて所定の時間遅延した信号は符号化画像信号203として、動き補償回路13に入力される、これと同時に動き補償回路13は動き検出回路12にて検出された動きベクトル9を元に参照画像メモリ200より参照画像信号202を読み出し予測信号とする。なお、Iピクチャではこの参照画像信号は読み出さず固定値が用いられる。動き補償回路では符号化信号203と参照画像信号202を対応する画素ごとに差分をとり、差分画像信号204を生成する。差分画像信号204はDCT回路205にてDCT係数に変換され、量子化回路206にて予め設定された量子化ステップサイズ213により量子化される。量子化されたDCT係数8は動きベクトル9とともに可変長符号化回路5に供給される。符号化する画像がBピクチャの場合はこれでMC/DCT回路の処理は終わるが、IあるいはPピクチャの場合には後の画像のために参照画像信号再生する処理が必要となる。量子化されたDCT係数8は逆量子化回路207にて、量子化したときと同じ量子化ステップサイズにて逆量子化され、その結果は逆DCT回路208にてDCTの逆変換が施される。逆変換された再生差分画像信号209は、加算回路210にて、そのブロックの参照画像信号202を所定時間遅延させた信号と加算され再生画像信号211が得られる。再生画像信号211は参照画像メモリ200に格納され後の画面の符号化時に参照画像信号として使用される。
なお、画像復号化装置では、符号を解読した後、逆量子化207から参照画像メモリ200への格納までの処理を行うことにより、画像を再生することができる。
図4は画像メモリ201、参照画像メモリ200、動き検出回路12の詳細図である。図4の動作は第5図のタイミングチャートに示される動作をおこなう。
なお、図4、図5はMが1から3までの場合に対応している。すなわちBピクチャがないモード(M=1)からBピクチャが2枚ずつ連続して入るモード(M=3)にまでに対応している。以下、M=3の場合を中心に動作の説明を行う。入力画像がPピクチャの場合、すなわち図5のフレーム番号が3、6、9の場合にはベクトル検出回路450−1において、参照画像メモリ200に格納されている、3フレーム前の参照画像との間で動きベクトルが検出が行われる。参照画像メモリ200では前方、後方2つの参照画像のための2つのフレームメモリ410、411をもち選択回路412にて参照画像信号202−1に前方参照画像信号、202−2に後方参照画像信号が対応するように、Mフレーム周期で切り替えを行う。動き検出処理が終わった画像は、直後に符号処理される。すなわちフレームメモリ401にて約1フレーム時間遅延された信号が選択回路405にて選択され符号化画像信号203として出力される。符号化され、再生された画像信号211は参照画像メモリの中の2つのフレームメモリ410、411のいずれか、より古い参照信号が格納されている方に上書きされ格納される。符号化処理の開始時刻を、同じ時間帯に行う動き検出処理開始時刻よりも若干早めることにより動き検出処理時刻には画面先頭部分の参照画像信号を該当フレームメモリ410あるいは411に格納しておくことができる。
なお、図4、図5はMが1から3までの場合に対応している。すなわちBピクチャがないモード(M=1)からBピクチャが2枚ずつ連続して入るモード(M=3)にまでに対応している。以下、M=3の場合を中心に動作の説明を行う。入力画像がPピクチャの場合、すなわち図5のフレーム番号が3、6、9の場合にはベクトル検出回路450−1において、参照画像メモリ200に格納されている、3フレーム前の参照画像との間で動きベクトルが検出が行われる。参照画像メモリ200では前方、後方2つの参照画像のための2つのフレームメモリ410、411をもち選択回路412にて参照画像信号202−1に前方参照画像信号、202−2に後方参照画像信号が対応するように、Mフレーム周期で切り替えを行う。動き検出処理が終わった画像は、直後に符号処理される。すなわちフレームメモリ401にて約1フレーム時間遅延された信号が選択回路405にて選択され符号化画像信号203として出力される。符号化され、再生された画像信号211は参照画像メモリの中の2つのフレームメモリ410、411のいずれか、より古い参照信号が格納されている方に上書きされ格納される。符号化処理の開始時刻を、同じ時間帯に行う動き検出処理開始時刻よりも若干早めることにより動き検出処理時刻には画面先頭部分の参照画像信号を該当フレームメモリ410あるいは411に格納しておくことができる。
入力画像がIピクチャの時はベクトル検出は行わず、Pピクチャと同様に1フレーム遅延した後に符号化画像信号203として出力される。
入力画像がBピクチャの場合はまず入力時にPピクチャと同様に前方参照画像に対する動きベクトルが検出される。次にその3フレーム時間後に後方参照画像に対する動きベクトル検出を行う。遅延させるフレーム数はMの値に相当し、選択回路406にてM=2の場合と3の場合を切り替える。なおM=1の場合にはBピクチャは存在しないため、後方予測は不要である。後方予測の動き検出処理が終わった画像は、直後に符号処理される。すなわちフレームメモリ403あるいは404にて約1フレーム時間遅延された信号がMの値に応じて選択回路405にて選択され符号化画像信号203として出力される。
ベクトル検出回路450−1,2では入力された信号11あるいは214に最も類似した部分を参照信号202−1あるいは202−2から探し出し、そのときのベクトルの値を451−1,2として出力する。出力された信号はバスにまとめられて動きベクトル信号9として出力される。
動きベクトル検出回路の動作内容を簡単に説明する図を図6に、その動作タイミングチャートを図7に示す。図6は図7の下に示すように2x2画素の符号化ブロックに最も類似するする部分を6(=W)xV(Vは3以上)の参照画面から探索する例である。図6において、探索開始時はスイッチ603は入力信号11または214側を選択している。入力信号11または214は図7に示されるように参照信号0、1、6、7のタイミングでA、B、C、Dの画素データを入力し、遅延回路604−1〜3においてそれぞれ1クロックずつ遅延される。同時にRAM603に格納され、検出単位である4画素の入力の後は、スイッチ603を切り替えて4個の入力信号を8画素周期で周期的に入力する。8画素周期中データの存在しない期間はどのような値でも構わない。一方、入力信号の入力開始と同時に参照画像のうち探索する範囲のデータを参照信号202として入力する。これらの信号は検出回路601−1〜8に入力され、類似性が計測される。各々の検出回路に入力されるデータは、参照信号はすべて同じデータ、入力信号は1クロックずつ遅延させたデータがそれぞれ入力される。その結果、図7に示すように入力開始から8クロック経過すると各検出回路からそれぞれ位置が1画素ずつ異なった部分との類似度614が出力される。この類似度の出力は1クロックにいずれかの1検出回路のみが出力するため最小値選択回路602は1クロックに1回ずつ最小値の判定を行うことにより最も類似したベクトルを検出することができる。類似度614の中には参照画面の画面両端の境界にかかるブロック(例えば図7下の番号で5、6、11、12の画素からなるブロック)も含まれるので、最小値選択回路602はこうした境界にかかるブロックは除外して処理を行う。なお、検出回路601の内部は差分回路610にて2信号の差分をとった後、絶対値回路611にて絶対値をとり、レジスタ613に記憶していたこれまでの累積値614に加算する。4画素の最初画素のの加算直前にレジスタ613を0にクリアすることにより、4クロック後に、累積値614が該当部との類似度を表す値となる。図6および図7では、説明をわかりやすくするために、通常16x16画素単位でおこなう動きベクトル検出を2x2画素単位に簡略化した。図6の回路にて16x16画素単位の検出を行う場合は検出回路数を増やす(参照画面の幅Wx16個程度)ことにより対応ができる。この検出回路数を減らすために参照画面の左右境界部にかかる部分に対応する検出器を省略し(w−16)x16個の検出回路にてベクトル探索を行う方法も知られている。また、入力信号を間欠的に入力するのではなく、連続的に入力し回路内部で遅延させる方法も知られている。
以上が従来の画像符号化回路の概要である。これらの処理量は単位時間に入力される画素数に比例する。そのため、各画素に対する全処理を1画素の入力時間時内に処理する必要がある。すなわち、通常のTV信号では15M画素/秒程度の入力画素数であるため、1画素当りの処理を約70nsで実行しなければならない。通常は8x8画素あるいは16x16画素単位で1つの処理を4μsあるいは16μs程度の時間で実行し、これらの処理をパイプライン処理することにより、この条件を実現している。一方、HDTV信号では通常のTV信号の4倍から5倍程度の処理が必要である。上記のようなパイプライン処理では非常に高速動作の演算素子が必要になり装置のコストが上がり、回路規模も大きくなる。
そのため、HDTVでは画面を複数の小画面に分割し、各画面ごとに複数の小符号化回路を割り当てて並列処理を行うことが行われることが多い。
そのため、HDTVでは画面を複数の小画面に分割し、各画面ごとに複数の小符号化回路を割り当てて並列処理を行うことが行われることが多い。
図8は従来の分割処理の画像符号化装置である。入力画像信号2は画像分割回路801にて図の例では4つの信号805−1,2,3,4に分割され、それぞれ4つの小符号化装置1−1,2,3,4にて符号化され、符号806−1,2,3,4が得られる。符号806−1,2,3,4は符号統合回路803にて1つの符号7に統合される。この場合、小符号化装置の構成は図1のものがそのまま使用できる。画面の分割の仕方は、画面を数走査線単位(たとえば1画面1024走査線を256走査線ずつ4分割)に分割する方法や、画面を縦横4分割にする方法などがある。
図9は図8における画像分割回路801の詳細図である。入力された画像信号1は画像の位置に応じた切り替え信号903を出力する切り替え制御回路902の指示に従い、スイッチ901にて4つの信号のうちのいずれかへ、画像信号を転送する。
図10は図8における符号統合回路803の詳細図である。それぞれの小符号化回路で生成された符号806はファーストインファーストアウトメモリ(FIFO)1001に格納される。一方、FIFOの読み出しは該当画像分の符号の格納が終了した後に開始する。読み出した符号1011はスイッチ1003を介して符号7として出力される。FIFO1001−1より該当画像分の符号の出力が終了すると終了信号1010−1が出力され、終了信号を受けた切り替え制御回路1002はFIFO1001−1の読み出しを終了し、FIFO1001−2の読み出しを開始する。これと同時にスイッチ1004を出力1011−2側に切り替える。以下同様に予め規定した順序に従い4つのFIFOを順次読み出した後、再びFIFO1001−1から次のフレームの符号の読み出しを行う。
上記に示した従来の分割処理の画像符号化装置では、次の2つの課題がある。
第1の課題は、分割処理する各小符号化回路がそれぞれ独立に符号化処理をするため、各領域の境界付近では画面内、画面間の相関を充分用いて符号化をすることができず、単一の符号化回路を用いて符号化した場合に比べ符号化効率が低下する。特に動き補償フレーム間予測を用いた方式では他の領域の画像を予測画像として使えないために、符号化効率の劣化が特に大きい。
第1の課題は、分割処理する各小符号化回路がそれぞれ独立に符号化処理をするため、各領域の境界付近では画面内、画面間の相関を充分用いて符号化をすることができず、単一の符号化回路を用いて符号化した場合に比べ符号化効率が低下する。特に動き補償フレーム間予測を用いた方式では他の領域の画像を予測画像として使えないために、符号化効率の劣化が特に大きい。
第2の課題は、、各小符号化回路がそれぞれ独立に符号化処理をするため、各小符号化回路内でしか発生符号量を調節することしかできない。このため、例えば、ある部分で多くの情報量が発生した場合、その部分を符号化担当する小符号化回路の以降の処理担当部分に割り当てる符号量が少なくなり、画質が低下し、特に周辺の領域との境界部分で劣化が目立つ。
本発明は上記の課題を解決し、小型で低コストの画像符号化装置を提供することを目的とする。
本発明は上記の目的を達成するために、まず、互いに隣接する領域どおしが重なる領域を有する複数個の小画像に分割し、重複した領域部分に書き込む信号は該当する各小符号化装置全てに伝送する手段を設け符号化する。次に、隣接する領域を担当する各小符号化装置間に、発生した情報量を通知する手段を設け、1つの小符号化装置にて一時的に発生した大量の情報量を隣接した小符号化装置にて吸収させる手段を設ける。
本発明によれば、画像の符号化効率をほとんど落すことなく回路各所の動作速度の低速化が図れるため、小型・低価格の画像符号化装置あるいは画像復号化装置あるいは画像符号化復号化装置を実現することができる。
各小符号化装置にて重複した領域部分を持つことにより領域の境界付近においても画面内、画面間の画素間の相関を利用することができ、単一の符号化装置に比べた符号化効率の劣化を防止することができる。また、発生した情報量を通知することにより、一時的に発生した大量の情報量による画質の劣化を広範囲に分散することができ、劣化を目立ちにくくすることができる。
図11に本発明を用いた実施例を示す。図11は図8の画像符号化装置に本発明を適用した例である。図中1100に示した部分が本発明による部分であり、その他の部分は図8のものと同じ機能であるため説明を省略し、1100の部分を中心に説明を行う。
小符号化装置1101は入力された画像信号805を符号化し符号806を出力するが、符号化処理に用いる画面を保持するメモリを2種類持つ。1つは符号化画像を格納するメモリであり各小符号化装置の処理領域に対応する。もう1つは、参照画像を格納するメモリであり各小符号化装置の処理領域より広い、隣接した領域と重複した領域に対応するのメモリである。符号化画像のメモリは、従来と同様に各小符号化装置1101内に持ち、参照メモリは共有メモリ回路1102内に持つ。小符号化装置1101から共有メモリ回路1102へのアクセスはアクセス信号1103と読み出し信号1104を用いる。
図12は小符号化回路1101の詳細図である。小符号化回路1101の動作は図1の符号化装置1とほとんど同じで、MC/DCT回路1201に共有メモリ回路1102への書き込み信号1103、読み出し信号1104が追加されている点が異なる。図12の小符号化回路では重複領域として予測画像メモリを割り当てている。予測画像を重複領域に割り当てることにより、従来該当領域外であった部分からも動き補償による予測を行うことができるようになり、単一の符号化処理装置による場合と同じ符号化効率が得られる。
図13に共有メモリ回路1102の詳細図を示す。書き込みは信号1103−1〜4を介して行い、読み出しは信号1104−1〜4を用いて直接メモリにアクセスする。各小符号化回路より入力された書き込み信号1103−1〜4はメモリ管理回路1301に入力される。書き込み信号1103はメモリに対する制御信号とデータを並べた信号列であり、例えば、書き込み先頭アドレス、書き込みデータ数、書き込みデータ列が順次転送される。書き込みデータ数は64画素(8画素x8ライン:ブロックデータ)あるいは256画素(16画素x16ライン)あるいは384画素(8画素x8ライン信号を6つ:マクロブロックデータ)程度が適当であり、2次元データを予め定められた走査法によって一次元信号に変換して転送する。なお、書き込みデータ数は8画素あるいは16画素の1次元データでも構わない。また、分割後の小画面の符号化開始時に画面先頭を示す信号と画面の大きさを転送する信号を転送し、その後は符号化順にデータを転送するだけで予め定められたアドレス順に書き込む方法でも構わない。メモリ管理回路1301は書き込みアドレスにより該当するメモリを判断し、メモリアクセス信号1310−1〜4の該当部分に信号を出力し、メモリ1303あるいはメモリ1304に書き込む。書き込みは入力1次元データを元の2次元データに戻したアドレスを用いて行う。
一方、読み出しの場合には読み出し信号1104を用いてメモリ1303あるいは1304のいずれか一方にアクセスする。読み出し信号1104は読み出しアドレス線、データ線からなり書き込みとは独立に読み出しを行うことができる。
図14にメモリ管理回路1201の詳細図を示す。入力された書き込み信号1103のうち、アドレスの部分はスイッチ1401を経由してアドレスFIFO1402に格納されデータ部分はデータFIFO1403に格納される。格納されたアドレス、データはスイッチ1404およびスイッチ1407により選択され該当するメモリに同時に書き込まれる。この際、アドレスデータはアドレス変換回路1405により各小符号化回路の使用するアドレスに変換する。書き込み信号1103−1〜4による書き込みが時間的に重なった場合には、重なった信号のうち1つのみを書き込み、他の書き込みは最初の書き込みが終了するまで遅延させた後に実行する。なお、FIFOがオーバーフローする恐れがある場合は該当する小符号化回路に通知し、データの入力を中止させる。
図15にメモリ管理回路のアドレス変換の例を示す。図15は水平1920画素、垂直1024ラインの画面を4分割する例である。なお、MPEG等の画像符号化方式では輝度信号16画素x16ライン毎に処理をするため分割する領域の大きさは、水平垂直ともに16の倍数の矩形が好ましい。但し、画面の右端あるいは下端を含む領域に関しては16の倍数でなくても構わない。また、インターレース画像の2つのフィールドを1ライン毎に合成して作りだしたフレームを処理する符号化装置においては、領域の垂直方向の画素数はフレーム画像上で32の倍数が望ましい。分割例(1)は水平に4分割し、分割例(2)は水平垂直にそれぞれ2分割した例である。ともに境界を接する隣接領域との間で境界より128ラインあるいは128画素分の共有領域を持った例である。なお、以降の説明ではメモリを2次元のアドレスにより指定するものと考え、特に指定のないかぎり垂直アドレスを単にアドレスと呼ぶ。
分割例(1)では、画面を256走査線ごとに分割した符号化装置において、各メモリ1303、1304に垂直方向512走査線分のメモリを実装し、どの小符号化回路もアドレス0〜255までを符号化処理する領域、アドレス256〜511に共有領域を格納している。第1のメモリ、例えば1304−1では、走査線256〜383までを垂直アドレス256〜383に、メモリ1304−2では領域1の走査線128〜255までを垂直アドレス384〜511に、領域3の走査線512〜639までを垂直アドレス256〜383に格納している。従って、例えば走査線240のデータはメモリ1304−1のアドレス240に書き込まれるのと同時にメモリ1304−2のアドレス496(240+256)に書き込まれる。また、走査線300のデータはメモリ1304−2のアドレス44(300−256)に書き込まれるのと同時にメモリ1304−1のアドレス300(300−256+256)に書き込まれる。一般に走査線P本ずつの小領域に分割し、境界を接する隣接領域1つに対しQ走査線分のデータを共有する場合、各メモリの垂直アドレスはP+2Q必要である。記号/を割り算後の小数点以下切り捨て処理、記号%を剰余計算とすると、走査線Yのデータは領域n(=Y/P)のアドレスy(=Y%P、0≦y≦P−1)に書き込まれ、y<Qの場合には領域(n−1)と共有され、領域(n−1)のメモリのアドレス(y+P)に、y≧P−Qの場合には領域(n+1)と共有され、領域(n+1)のメモリのアドレス(y−(P−Q)+P+Q=y+2Q)に格納される。上記の計算はアドレス変換回路1405で実行され、固定値の加算・減算で実現できる。特にP=256、Q=128のようにPが2のベキ乗、Qがその1/2の例では上記の例で示したように加算・減算はビット操作のみで実現でき回路規模削減の効果が大きい。Pが2のベキ乗、Qがその1/2未満の場合もQがPの1/2の場合と同じアドレスを割り当てることによりビット操作のみによる演算が可能になる。この場合、アドレスの途中にアクセスしない領域が存在するが、この領域に対して実際のメモリ素子を割り当てても割り当てなくても構わない。
図15の分割例(2)では画面を960x512画素の4つの小画面に分割する。この場合は符号化する領域はメモリのアドレス0〜511に格納され、アドレス512以降に共有領域のデータが格納される。メモリ1304−1の例ではアドレス512〜639に領域3の960画素x128ライン(走査線512〜639ライン)を、アドレス640〜767に領域2の128画素x512ライン(走査線0〜511ライン)の垂直、水平アドレスを交換したものを、アドレス768〜960に領域4の128画素x128ライン(走査線512〜639ライン)を格納する。書き込み時には、例えば領域1〜4すべてに共有される部分のデータはメモリ1304−1〜4に同時に書き込まれる。アドレス変換回路1405では以上のアドレス変換走査を行う。水平垂直分割では水平分割に比べアドレス変換回路1405はやや複雑になる。一方同じ共有範囲(境界より同画素数の範囲)を実現する場合には各メモリ1303、1304の容量は少なくなる。図15の例では3/4の容量になっている。なお、上記の説明は輝度信号を例に取っておこなったが、色信号、あるいは輝度信号と色信号の両方、すべてに適用可能である。
図11から図15までの説明は画面の分割数を4として行ってきたが、画面の分割数は4以外のいくつの値にも適用できることは明白である。分割数が多くなると1つの小符号化装置あたりの処理量が少なくなるため、より低処理能力の回路を用いたり、逆に同じ処理能力でより大面積の画像を符号化することが可能になる。ただし、1つの小画像符号化装置がある画面を符号化終了し、次の画面の符号化を開始するには、領域を共有する全ての小符号化装置の処理の終了を待つ必要がある。例えば水平分割の場合では、領域1の信号が入力され終わった時点で小符号化装置1101−1が処理を開始し、領域2が入力され終わった時点で小符号化装置1101−1が処理を開始するように、処理開始時間を小符号化装置毎にずらした方が遅延が少なくなり、遅延補正用のバッファ容量も少なくてすむ利点がある。こうした方法では、小符号化装置1101−1が次の符号化を開始するには小符号化装置1101−2の終了を待たなければ、同様に小符号化装置1101−2は小符号化装置1101−3の終了を、小符号化装置1101−3は小符号化装置1101−4の終了を待たなければならない。いいかえれば、1つ前の小符号化装置の画面が入力される前に符号化処理を終了しなくてはならない。その結果、各小符号化装置が実質符号化処理を行う時間は3/4になり、各小符号化装置の処理能力は全体の処理量を1とした場合、1/4ではなく、1/3(=1/4*4/3)になる。分割数を増やし、更に共有する領域の小符号化装置数が増えた場合には、該当する全ての小符号化装置の終了を待たないと次の画面の符号化を開始することができない。そのため、分割数を増やしていっても共有する領域が広い場合は必ずしも各小符号化装置の処理能力を低くすることはできない。画像符号化の処理単位が輝度信号で16x16画素である点と、動きベクトルの探索範囲が−15〜+15程度で大部分の動きを補償できることから、共有領域の走査線数は境界から16ライン(境界の上下32ライン分が2つの領域により共有される)が最適である。ただし、垂直方向の画面の相関はあまり強くないことから共有領域を8ラインにしても画質への影響は少ない。16ライン程度以下の共有の場合は上記の符号化開始待ち時間による影響は小さい。
一般に水平方向の画面の相関が強いことから水平方向には全画素を同じ領域として処理した方が符号化効率が向上する。小符号化装置の数と分割領域の数は必ずしも一致しなくてもよい。小符号化装置の数が少ない場合には処理を終了した小符号化装置が同じ画面の別の領域を符号化することになる。小符号化装置の数が多い場合には、1つの小符号化装置あたりの処理を少なくできるが、実際には、前の画面の符号化が終わらないと次の符号化が開始できないため、16ライン程度共有の例では領域分割数をRとすると小符号化装置の処理能力は1/(R−1)必要になる。ただし、Bピクチャのように他の画面の予測には用いない画面の符号化に対しては1/Rの処理能力で対応できる。
以上の共有メモリの書き込み操作では、以下の効果がある。各小符号化装置1101において隣接する小符号化装置の参照画像をアクセスすることができるため動き補償の範囲が単一の符号化装置の場合と同じにとることができ、分割符号化方式の欠点を補うことができる。共有領域を同時に書き込むことにより単位時間当りのメモリへの書き込み回数は単一符号化装置を用いた場合と同じ回数になる。従って、メモリ管理回路やメモリは、単一符号化装置を用いた場合と同じ動作速度のものを用いることができ、特に高速な素子や複雑な回路を必要としない。
図16は図12のMC/DCT回路1103の詳細図である。MC/DCT回路1103全体の動作は従来のMC/DCT回路4とほぼ同じであるので説明を省略する。図16のMC/DCT回路1103では図2の参照画像メモリ200に相当する部分が外部の共有メモリ回路1102の中に設けられている点が本発明に係わる部分である。そのため書き込み信号1103、読み出し信号1104が追加されている。この部分を除けばMC/DCT回路1103とMC/DCT回路4とは全く同じである。
このように本発明を適用した画像符号化装置800は、単一の符号化装置と同じ符号化効率を保ちながら、画面を4分割し処理することにより各小符号化装置処理量が約1/3〜1/4になり、低速デバイスのみを用いて符号化処理が可能となる。その結果、低速で小規模あるいは低速で低コストが実現でき、装置全体の小型化あるは低コスト化あるいはその両方が達成できる。また、本発明は小符号化装置1101としてプロセッサ等によるソフトウエア処理をしたときにその効果が大きい。現在のプロセッサの能力では通常のTV信号を単一プロセッサで符号化することは難しい。一方、ソフトウエア処理により符号化処理が実現できれば、処理方法の改良や、新符号化方式への対応など容易に実行できるほか、装置の開発、メンテナンスの時間、手間も削減できる。本発明を適用することにより、ソフトウェア処理の利点を生かしながら、かつ、単一ハードウェアによる符号化効率と同じ効率を得ることが可能になる。このとき、各小符号化装置1101に固有の番号をつけておき、その番号をもとに符号化領域位置、アドレス変換方法等を設定するようにすれば、全ての小符号化装置を同じ構成にすることができ、ハードウエェア処理で実現する場合には装置の基版あるいはLSI等の生産性・検査効率が向上し、ソフトウェア処理で実現する場合には上記の生産性向上の他に実行ソフトウェアの配送の時間・手間を削減できる。
図17は本発明を適用した第2の実施例である。図17では本発明を画像復号化装置1700に適用している。画像復号化装置1700は画像符号化装置1もしくは800などで生成した符号列を入力し、元の画像を再生する装置である。
入力符号列7は符号分割回路1701に入力され、予め分割された領域に対応する符号1710−1〜4に分割される。分割された符号1710は小復号化装置1702に入力され、画像が再生1702される。再生された画像1702−1〜4は画像合成回路1703において、1枚の画像2に合成される。
入力符号列7は符号分割回路1701に入力され、予め分割された領域に対応する符号1710−1〜4に分割される。分割された符号1710は小復号化装置1702に入力され、画像が再生1702される。再生された画像1702−1〜4は画像合成回路1703において、1枚の画像2に合成される。
図18は符号分割回路1701の詳細図である。入力された符号7は、ヘッダ検出回路1802において、そのヘッダ部分が検出・解析され画面上のどの位置の符号化が調べられる。その位置情報1811に従って、切り換え制御回路1803はスイッチ1801を制御信号1810を用いて切り替える。
図19に復号化回路1702の詳細図を示す。入力された符号1710は、一旦、符号バッファ1901に蓄えられた後に可変長復号化回路1902によって読みだされ、解読される。解読の結果、差分画像のDCT係数8と動きベクトル9等の復号化情報がMC/iDCT回路1903に入力される。MC/iDCT回路1903ではDCT係数8を逆量子化をした後、DCT逆変換(iDCT)により差分画像を再生する。一方、動きベクトル9等の情報で示された予測画像を共有メモリ回路1102に格納された参照画像から読み出し信号1713を用いて生成し、再生した差分画像に加える。これらの処理は先に述べたように第3図の逆量子化207から参照画像メモリ200への格納までの処理をと同じである。この操作により再生画像が得られる。再生画像は出力バッファ1904に蓄えられ、表示に同期して読みだされ、TVの画面等に表示される。同時に、共有メモリ回路1102に書き込み信号1712を介して格納する。
図20に画像合成回路1703の詳細図を示す。切り換え制御回路2002は表示タイミングを監視し、表示部分に該当する領域の再生画像信号1711−1〜4をスイッチ2001で選択し、画素データを読み出し出力画像信号2へ出力する。
以上、本発明は図17のように画像復号化装置にも適用することができる。従来、分割処理を行う復号化装置は他の小領域からの予測を禁止した特殊な符号でなければ画像を再生することができなかった。本発明を適用することにより、この制約がなくなり、あわせて、符号化装置の場合と同様に回路規模の削減の効果も得られる。また、符号化装置の場合と同様に、特にソフトウェア処理を行った場合にその効果が大きい。画像の分割の仕方は水平分割のみ垂直方向のライン数は16の倍数、インターレース画像の場合は32の倍数でなければならない。
以下、上記2実施例の変形例を示す。以下の変形例あるいは以下の変形例の組み合わせが本発明に包含されることは明白である。
図21に小符号化回路1101の変形例を示す。図21の符号化回路ではMC/DCT回路4と可変長復号化回路5と間にDCT係数8、動きベクトル9等の情報を一時的に蓄えれるバッファ2102が置かれている点である。MC/DCT4の処理は先にも説明したように画素数に比例した処理量になるため、予め固定的に定められた時間内に1処理単位(8x8ブロックの処理あるいはマクロブロックの処理)を行うことがハードウェアの実現上望ましい。一方、可変長符号化5の処理量は発生する符号量に依存し上記の1処理単位ごとの処理量は異なる。これら性質の異なる2つの処理をパイプライン処理する場合には、例えば可変長符号の処理時間がMC/DCT処理時間よりも長くなると、MC/DCTの1処理単位の処理が終了しても可変長符号化の該当処理が終わらず、MC/DCT回路4が次の処理の開始待つ問題点がある。この解決策として、MC/DCT4の1処理単位時間内に可変長符号化5の該当する処理終わらせるように、高速な可変長符号化回路を用いる方法と、MC/DCT回路4の処理を高速化し可変長符号化処理の待ち時間が生じても規定時間内に規定の処理を実行できるようにする方法の2つが知られている。いずれの方法も高速処理回路が必要になるため装置の低コストか小型化には不向きであった。図21のようにバッファ2102を置くことにより、MC/DCT、可変長符号化の両処理の処理量の片寄を吸収することができ、両回路とも低速で処理を行うことが可能になる。バッファの量は最大、画面1枚の情報を格納できる量、すなわち1画面の画素数と同じ数のDCT係数と動きベクトル情報等を保持できることが望ましいが、実質的には1画面の画素数の1/2〜1/4程度の容量でかまわない。実際の動作時には、バッファ2101に予め定めた個数のDCT係数が入力された時点で可変長符号化回路5の処理を開始させる。なお、本発明は第11図に示した実施例と組み合わせて用いると、さらに回路規模を削減できるが、単一の小符号化回路を用いた画像符号化装置に適用しても同程度の回路規模削減効果が得られる。
図22は図16のMC/DCT回路1201の変形例である。図16と異なる第一の点は動き検出回路2203に参照画像1104ではなく遅延させた入力画像2210が入力されている点である。通常、参照画像とそれに対応する入力画像の差は小さいため、本来は参照画像1104を用いて動き検出を行う所を、入力画像を遅延させた信号2210を用いて動き検出を行うことができる。図22の実施例では参照画像による検出と入力画像による検出との誤差を吸収するために動き補償回路2202内にて、参照画像を用いた小範囲の動き検出を行っている。
図23は図22におけるフレームメモリ回路2201の詳細図である。従来、図4にあるように参照画像211を入力していたメモリ410、411の代わりに入力画像11を格納するメモリ2301、2302が使われる。メモリ2301、2302は各小領域に共有領域の部分を加えただけの容量が必要であり、格納する画素数は他のメモリ401〜404よりも多い。これは信号11に全画面分の画像データを流しておき、メモリ401、2301、2302にて必要な部分のみを書き込むことにより実現できる。なお、メモリ2301あるいは2302への格納は入力された画像11がIピクチャあるいはPピクチャに該当するときにのみ行われる。入力された画像は選択回路2303により2210−1が前方予測用の信号、2210−2が後方予測用の信号に並び替えられて出力される。
これら図22、図23の処理により、図16の実施例において、動き検出時の参照画像の読み出し回数を大幅に削減することができる。参照画像は、前の画像の符号化および局所的な復号化が終了した後に該当部分を符号化するまでの期間に読み出し、動き検出を行わなければならない。そのため、高速な読み出しと、大量なデータ転送が要求されていた。参照画像の代わりに入力画像を用いて動き検出を行うことにより、読み出し信号1104の信号線数の削減や、共有メモリ回路1102の読み出し回路の低速化、メモリ素子1303、1304の低速化を図ることができ、回路規模、回路コストの低減が図れる。参照画像が書き込まれた後でなければ動き検出処理が行えなかった点が、参照画像の書き込みとは独立に動き検出を行うことができるため回路構成の自由度が増えさらに回路規模コストを削減することができる。また、フレームメモリ2201と動き検出回路12を画像符号化装置から切り離し時間的あるいは空間的もしくはその両方とも別に処理を行うことも可能である。このような機能を有する画像符号化装置あるいは画像符号化方法も本発明に含まれる。具体的には、オフラインで画像の並び替えや動きベクトルの検出を行い蓄積しておき、符号化装置の動作に連動して、蓄積した画像および動きベクトルデータを信号線203、9を用いて入力することにより実現できる。なお、これらの変形例は単一の符号化回路を用いた画像符号化装置にも適用が可能なことは明白である。図11に示した実施例と組み合わせて用いると、さらに高い効果が得られる。すなわち、図11では、符号化装置部分は入力された画素レートの数分の1の処理レートで動作しているが、共有メモリ回路1102は入力される画像の画素レートに比例した処理レートが要求される。図22の発明を適用することにより、この処理レートの高い箇所の処理の一部を小符号化装置内の低速処理にて実行することができ、装置全体の小型化が図れる。
図24は図22の動き検出回路12の詳細図である。図4の回路と異なる点は、インターレース走査された画像に対応したことである。インターレース画像が入力された場合は、1つの16画素x16ラインのマクロブロックをそのままの形で検出したベクトル2410と、奇数ラインのみの16画素x8ラインと偶数ラインのみの16画素x8ラインとに分離した後にそれぞれ検出したベクトル2411、2412との3種類のベクトルが1つの動きベクトル検出回路2401から出力される。出力されたベクトルはそれぞれバッファ2402、2403、2404に蓄えられ信号線9を介して読みだされる。動き検出回路12には前方予測の動きベクトル検出回路2401−1と後方予測の動きベクトル検出回路2401−2と2つが設置される。一方、非インターレース画像すなわちフィールド画像などの順次走査画像が入力された場合には、1つの16画素x16ラインのマクロブロックをそのままの形で検出したベクトル2410と、マクロブロックの上半分の16画素x8ラインと下半分の16画素x8ラインとに分離した後にそれぞれ検出したベクトル2411、2412との3種類のベクトルが1つの動きベクトル検出回路2401から出力される。これらの機能により、限られた回路規模で種々の走査構造を持つ画像に対して高い予測効率を実現することが可能となる。
図25は図24の動きベクトル検出回路2401の詳細図である。全体の動作は図6、図7に示した回路と同じである。検出単位は16x16画素であるが、検出回路の数は従来例で説明したように探索範囲によって異なるため汎用的にN個としてある。本発明の特徴は各検出回路2501の内部の信号処理が2系等になった点と、最小値選択回路2503、2504、2505が3つになった点である。検出回路2501ではマクロブロックの各画素毎の差分値の絶対値和を計算するが、絶対値回路611で計算された差分の絶対値をスイッチ2550を用いて加算器612と加算器2551に出力先を切り替える。この切り替え方法を奇数ラインと偶数ラインに応じて行うと先のインターレース走査信号対応の動きベクトル検出が実現でき、上部8ラインと下部8ラインで切り替えると16x8画素の動きベクトル検出が実現できる。これら加算器612、2551の加算結果はそれぞれレジスタ613、2552に格納される。1つのマクロブロック分、すなわち256画素の演算が終わった時点で、レジスタ613には偶数ライン分あるいは上部8ライン分の差分値2510、レジスタ2552には奇数ライン分あるいは下部8ライン分の差分値2512が格納されている。この2つの差分値を加算器2553で加算するとマクロブロック全体の差分値2511が得られる。これら3つの差分値を各対応する最小値選択回路2503、2504、2505に入力し、各最小値選択回路内で独立に最小値を選択すれば、すべての処理を終了した時点で、マクロブロック全体に対するベクトル2410、奇数ライン分あるいは上部8ライン分に対するベクトル2412、偶数ライン分あるいは下部8ライン分に対するベクトル2411の3つのベクトルが得られる。図25において、スイッチ2550の切り替え方を変えることによって上記で説明した分割以外の分割方法、例えばマクロブロックの左右分割等、を容易に実現できる。
なお、これらの動作は探索範囲や検出単位の大きさには依存せず、また動くベクトル検出回路の従来例の項目で述べた検出方法の変形例全てに適用が可能である。
なお、これらの動作は探索範囲や検出単位の大きさには依存せず、また動くベクトル検出回路の従来例の項目で述べた検出方法の変形例全てに適用が可能である。
また、分割加算器2551、レジスタ2552の信号処理系統と最小値選択回路の数を増やし、それに対応したスイッチ2550、加算器2553をもちいれば1つのマクロブロックの分割の数を増やすことができる。例えば、図26(1)に示すように、スイッチ2601を用いて誤差信号を4系等に分割し、左上8x8画素は蓄積加算器2560−1、右上8x8画素は蓄積加算器2560−2、左下8x8画素は蓄積加算器2560−3、右下8x8画素は蓄積加算器2560−4、となるようにスイッチ2601を切り替えれば、図の右に示したようにマクロブロック内の8x8のブロック単位のベクトル4つと16x16のベクトルの合計5つを同時に1つの回路で検出することができる。また、図26(2)に示すように、例えば蓄積加算結果2610−1、2を加算する加算器2603、蓄積加算結果2610−3、4を加算する加算器2604を設置し、それぞれの加算結果2610−6、7を用いることにより、図26(1)の例に加え新たにマクロブロックを上下に2分割した単位での動きベクトルを求めることができる。図26(3)は誤差信号の分割にスイッチ2605、2606の2つを用いた例である。スイッチ2605、2606の切り替え方を変えることにより、1つのマクロブロックを、例えば図の右に示したような異なる2つの分割法によって分割した単位での動きベクトル検出が可能になる。ここで、蓄積加算信号2601−1、2のそれぞれの最小値の和と、蓄積加算信号2601−3、4のそれぞれの最小値の和を比較することにより2つの分割法のうち最適な方法を選択することができる。これらの変形例により、わずかな回路規模の増加で、複数の分割法の動きベクトルを求めることが可能になり、画像の予測効率を高めることができる。図26において、スイッチ2601の出力数を3あるいは5以上の値Ns個にし、それと同じNs個の蓄積加算回路2560を用いてNs個の領域単位での動きベクトル検出を行う方法あるいは回路も本発明に包含される。またスイッチ2605、2606の他に1つ以上のスイッチを設け、合計Ms個のスイッチを互いに異なる切り替え方をすることにより、Ms個の分割方法に対応した動きベクトルおよび最適な分割方法を検出する方法あるいは回路も本発明に包含される。さらに、これらを組み合わせて、Ns個の領域に分割する方法Ms通りの各動きベクトルおよび最適な分割方法を検出する方法あるいは回路も本発明に包含される。なお、Ms通りの分割方法における領域の分割数は同じ個数でなくても構わない。
図27は図11の符号化回路800の変形例である。図11と異なる点は各小符号化回路2701−1〜4の間に符号量制御の情報を通知する信号線2710〜2715が付加された点である。これらの信号線により他の小符号化回路の符号量制御情報を得て、それに応じた符号量制御を行うことにより、一時的な大量な符号発生により1つの小符号化回路の符号化した画質のみが著しく劣化したり、逆に符号が発生が少ないために周辺の領域に比べ画質が著しく向上することを防止することができる。各小符号化回路間の通知の組み合わせは、小符号化装置の数をCとした場合、最大C*(C−1)本の信号線が考えられる。しかし、画質の違いが目立つのは2つの領域の境界部分であることから、画面上で境界を接する領域を担当する小符号化回路間でのみ符号量制御の情報を通知すれば信号本数を削減することができ、回路規模の削減ができる。水平分割の例では小符号化装置の数をCとした場合、2*(C−1)本の信号線でC*(C−1)本の信号線の場合とほぼ同等の効果が得られる。また、画面上の距離が一定値以下の領域を担当する小符号化回路間でのみ符号量制御の情報を通知しても、上記と同様の効果が得られる。
図28に図27の符号化回路2601−2の詳細図を示す。なお、他の符号化回路2601−1、3、4もほぼ同様な動作を行う。現在符号化している画面の符号量は信号線10を介して符号制御回路2801に入力される。符号制御回路2801では予め定められた値と発生符号量を比較し、発生符号量が大きければ符号量を減らす方向に、発生符号量が少なければ符号量を増加させる方向に制御する。すなわち、予め定められた値と発生符号量の差に応じた値を符号量制御情報として信号線2711、2713に出力し隣接する小符号化回路に通知する。
一方、隣接する小符号化回路から信号線2710、2712を介して入力された符号量制御情報は先の符号量10に加味され制御される。
一方、隣接する小符号化回路から信号線2710、2712を介して入力された符号量制御情報は先の符号量10に加味され制御される。
図29に図28の符号化制御回路2801の詳細図を示す。隣接する小符号化回路より通知された符号量制御情報2710、2712をそれぞれ係数回路2902、2901にてk2倍、k1倍され、現在符号化している画面の符号量10と加算される。加算された結果2910は予め設定された符号量2915との差分をとられる。この差分値2911の絶対値が一定値以上であれば制御回路2907は制御線2912、2913を介して、係数回路2906、2908の係数値k3、k4を制御して、隣接する小符号化回路へ差分値2911のそれぞれk3倍、k4倍の値を符号量制御情報2711、2713へ出力させる。一方、差分情報2911は、現在の量子化ステップサイズや係数k3、k4や画面内の位置情報等からから算出される制御情報2914とあわせて、予め定められた算出法により量子化ステップサイズ213が得られ、出力される。なおここで、k1、k2、k3、k4は全て1以下、0以上の値であり、k3+k4も1以下、0以上であることが望ましい。また、2つの隣接する小符号化回路間で符号量制御情報が往復・発振しないように、信号2710の値が大きな正数のときには信号2711が大きな正の値とならないように、また信号2712の値が大きな正数のときには信号2713が大きな正の値とならないように、同様に信号2710の値が絶対値の大きな負数のときには信号2711が絶対値の大きな負の値とならないように、また信号2712の値が絶対値の大きな負数のときには信号2713が絶対値の大きな負の値とならないようにk3、k4を制御される。具体的な数値例としてk1=1、k2=1、k3+k4=0.25等が挙げられる。
信号2713の出力系統を遅延回路2907によって遅延させることにより、小符号化回路2702−2と2702−3の処理開始時刻の時間差を吸収し、画面上でほぼ同じ水平位置から制御がかかるようになる。逆に信号2711が到達した時点では、小符号化回路2701−1はすでに該当水平位置の符号化処理が終わっているため、制御の対象となる位置が画面上右にずれる。
図30は小符号化回路1101の変形例であり、符号調整回路3001が設置された点が図12の回路と異なる。また、図31は小符号化回路1101の別の変形例であり、符号調整回路3101が設置される位置が図30の回路と異なる。30図、図31の符号調整回路3001、3101は可変長符号化回路5から出力された符号3010を操作して所定の符号量にする機能を持つ。符号量の設定は符号化装置外部より行い、たとえば、1フレームの符号量の最大値、あるフレームから別のフレームまでの間の符号量の値を設定することにより行う。符号量の調整は先に説明した符号量制御回路212等で主に行うが、正確に制御することは難しく、ある程度の符号量の誤差が生じてしまう。符号調整回路3001、3101はこの誤差を調整しさらに高精度な符号量の制御を行う。
図32に符号量調整回路3001の詳細図を示す。入力された符号3010はシフト回路3201に順次入力される。シフト回路3201では所定のビット数が入力された時点で入力された信号をパラレル符号3210に出力を行う。テーブル3202ではパラレル符号3210のどの部分が可変長符号の切れ目かを判断し、そのビット数3211と一連の符号列の区切り符号を示す信号3212を出力する。テーブル3210の内容は、たとえば可変長符号が10、11、010、011、0010、0011の6種類(A〜F)で符号0001が区切り信号(z)とすると、4ビットの入力値を持ち、各入力値に対応して以下の出力値設定しておく。
テーブル3202の設定例1
入力値 出力値(ビット数) 出力値(区切り符号)
A 10xx 2 0
B 11xx 2 0
C 010x 3 0
D 011x 3 0
E 0010 4 0
F 0011 4 0
z 0001 3 1
0000 1 0 (未使用)
ここで、入力値は2進数で表示してあり、xの記号は0、1のいずれの値でもよいことを示す。すなわち、入力値01xは入力値010と011の両方を示す。
また、区切り符号出力は1の時、その符号が区切り符号であることを示す。この例では、入力された符号3010は入力値の上位ビット(左側)から詰められている。テーブル3202より出力されたビット数3211はシフト回路3201に入力され、ビット数3211のビット数だけデータがシフトされる。このとき、必要であれば符号3010が入力される。一方、パラレル符号3210とそれに対応したビット数3211はそれぞれ符号FIFO3203および符号長FIFO3204に入力され、格納される。ここで符号FIFO3203には実際の符号の長さ(ビット数3211)にかかわらずパラレル符号3210全ビット数、すなわち上記のテーブルの例では4ビットが格納される。一方、該当符号が区切り符号の場合には区切り符号を示す信号線3212を介して制御回路3205に通知される。通常の場合、符号FIFO3203および符号長FIFO3204に格納された信号は所定のタイミングで信号線3213および3214に出力され、パラレル−シリアル変換回路3206にて、符号3213と符号長3214から、可変長符号列3011が再生される。ここで、制御回路3205は区切り符号の位置をもとにパラレル−シリアル変換回路3206を制御し、符号の追加、削除を行い、所定の符号量になるよう調整を行う。以下に、調整の例を示す。
入力値 出力値(ビット数) 出力値(区切り符号)
A 10xx 2 0
B 11xx 2 0
C 010x 3 0
D 011x 3 0
E 0010 4 0
F 0011 4 0
z 0001 3 1
0000 1 0 (未使用)
ここで、入力値は2進数で表示してあり、xの記号は0、1のいずれの値でもよいことを示す。すなわち、入力値01xは入力値010と011の両方を示す。
また、区切り符号出力は1の時、その符号が区切り符号であることを示す。この例では、入力された符号3010は入力値の上位ビット(左側)から詰められている。テーブル3202より出力されたビット数3211はシフト回路3201に入力され、ビット数3211のビット数だけデータがシフトされる。このとき、必要であれば符号3010が入力される。一方、パラレル符号3210とそれに対応したビット数3211はそれぞれ符号FIFO3203および符号長FIFO3204に入力され、格納される。ここで符号FIFO3203には実際の符号の長さ(ビット数3211)にかかわらずパラレル符号3210全ビット数、すなわち上記のテーブルの例では4ビットが格納される。一方、該当符号が区切り符号の場合には区切り符号を示す信号線3212を介して制御回路3205に通知される。通常の場合、符号FIFO3203および符号長FIFO3204に格納された信号は所定のタイミングで信号線3213および3214に出力され、パラレル−シリアル変換回路3206にて、符号3213と符号長3214から、可変長符号列3011が再生される。ここで、制御回路3205は区切り符号の位置をもとにパラレル−シリアル変換回路3206を制御し、符号の追加、削除を行い、所定の符号量になるよう調整を行う。以下に、調整の例を示す。
発生した情報が”AEADzAABz”のとき入力符号3010は”10 0010 10 011 0001 10 10 11 0001”の25ビットとなる。なお、符号列は左側が先頭すなわち先に送信されるビットを表す。見やすくするために符号の切れ目部分に空白文字をいれてあるが、実際には連続した符号列が入力される。このとき、テーブル3202により符号は分離され、以下のデータが順番に符号FIFO3203および符号長FIFO3204に入力される。
符号FIFO 符号長FIFO (区切り符号)
1 1011 2(A) 0
2 0010 4(E) 0
3 1001 2(A) 0
4 0110 3(D) 0
5 0001 4(z) 1
6 1010 2(A) 0
7 1011 2(A) 0
8 1100 2(B) 0
9 0001 4(z) 1
ここで区切り符号の1つ前の符号を削除することにより符号量を削減する。すなわち4番目の情報Dと8番目の情報Bを削除する。その結果、
出力される可変長符号列3011は”10 0010 10 0001 10 10 0001”の20ビットとなる。一般に符号を削減すると再生される信号に劣化が生じる。さらに、劣化した画像が予測画像として用いられる場合には、符号化装置の予測画像と復号化装置の予測画像がこの劣化により若干異なるため、以降の画面にも劣化が波及する。従って、以下ような場合を優先的に符号削除を行うことにより視覚的に画像劣化を最小限にとどめることができる。(1)BピクチャのDCT係数、(2)振幅の小さいDCT係数(すなわち+1、−1のもの)、(3)高い周波数のDCT係数。
また符号を削除するのではなく、符号語長の短い符号に置き換えることによっても同様な効果を得ることができる。たとえば、高い周波数のDCT係数あるいは直流成分の振幅を1レベル小さくすることにより実現できる。
1 1011 2(A) 0
2 0010 4(E) 0
3 1001 2(A) 0
4 0110 3(D) 0
5 0001 4(z) 1
6 1010 2(A) 0
7 1011 2(A) 0
8 1100 2(B) 0
9 0001 4(z) 1
ここで区切り符号の1つ前の符号を削除することにより符号量を削減する。すなわち4番目の情報Dと8番目の情報Bを削除する。その結果、
出力される可変長符号列3011は”10 0010 10 0001 10 10 0001”の20ビットとなる。一般に符号を削減すると再生される信号に劣化が生じる。さらに、劣化した画像が予測画像として用いられる場合には、符号化装置の予測画像と復号化装置の予測画像がこの劣化により若干異なるため、以降の画面にも劣化が波及する。従って、以下ような場合を優先的に符号削除を行うことにより視覚的に画像劣化を最小限にとどめることができる。(1)BピクチャのDCT係数、(2)振幅の小さいDCT係数(すなわち+1、−1のもの)、(3)高い周波数のDCT係数。
また符号を削除するのではなく、符号語長の短い符号に置き換えることによっても同様な効果を得ることができる。たとえば、高い周波数のDCT係数あるいは直流成分の振幅を1レベル小さくすることにより実現できる。
符号量を増加させるためにはパラレル−シリアル変換回路3206にて復号化装置において復号化に使われないスタッフィングの符号を挿入することによって実現できる。たとえばMPEGの場合には、符号の同期を示すスタートコードの前に0ビットを8の倍数個挿入する方法がある。また、同じ情報を示しかつ符号語長のより長い符号に置き換えることによっても同様の効果が得られる。たとえばMPEGの場合には、一部のDCT係数には2ビットから17ビットまでの可変長の符号が割り当てられているが、同時に20ビットあるいは28ビットの固定長符号も割り当てられている。従って、通常、17ビット以下の可変長符号として符号化されるDCT係数を、20ビットあるいは28ビットの固定長符号に置き換えることによって符号量を増加させることができる。この符号の増加処理においては直接画像が劣化することはない。
これらの符号量の増減の調整処理を組み合わせることにより所定の符号量に微調整することができる。符号調整回路3001、3101は可変長符号化回路5の中で符号化と同時に行っても構わない。また、符号FIFO3203および符号長FIFO3204はシフトレジスタ、バッファ、リングバッファでも構わない。
符号調整回路3101の構成は符号調整回路3001とほとんど同じである。
異なる点は、図30では符号バッファ6が通知していた符号発生量10を通知する機能が追加された点である。符号量の調整を符号バッファの出力の後で行うため、1画面の符号化が終了し、符号がすべてバッファ6に格納され、発生符号量が既知になった後に、符号量の調整を行うことができる。したがって、1画面単位等の比較的大きい単位での高精度な調整が可能となる。
異なる点は、図30では符号バッファ6が通知していた符号発生量10を通知する機能が追加された点である。符号量の調整を符号バッファの出力の後で行うため、1画面の符号化が終了し、符号がすべてバッファ6に格納され、発生符号量が既知になった後に、符号量の調整を行うことができる。したがって、1画面単位等の比較的大きい単位での高精度な調整が可能となる。
このような符号量の高精度な調整を行うことにより、符号列中の一部分を別の符号に置き換える操作が可能になる。すなわち、テレビジョンのデジタル放送において、ある映像の放送中に、その一部にコマーシャルや臨時ニュース等を挿入する場合に相当する。このような置き換え操作では置き換えられる部分と置き換える部分の符号量が異なると復号化装置において符号を一時的に蓄えるバッファ1901がオーバーフローあるいはアンダーフローしてしまい、画像の大きな劣化が生じてしまう。本発明の高精度な符号量調整により、こうした劣化を防止あるいは、劣化の確率を最小限にとどめることが可能になる。
先に示したテーブル3202は以下の変形例により、そのデータ容量を削減することができる。すなわち、パラレル符号3201をその先頭に連続する0符号の個数と最初の1符号の後に続く符号に分離して入力を行う。先の符号の例では先頭に続く0の個数は最大3個、最初の1符号の後に続く符号長は最大1ビットであるため、テーブルのデータの種類は先の設定例1の場合(4ビット16通り)に比べて半分の3ビット8通りに削減できる。なお、この場合、シフト回路にて先頭に続く0の個数の計測回路が必要になる。以下に本変形例によるテーブル3202の設定例を示す。入力値の項のうち左半分2ビットは0符号の連続数の2進数表示、右の1ビットは最初に出現する1符号の後に続く符号を示す。
テーブル3202の設定例2
入力値 出力値(ビット数) 出力値(区切り符号)
A 00 0(10xx) 2 0
B 00 1(11xx) 2 0
C 01 0(010x) 3 0
D 01 1(011x) 3 0
E 10 0(0010) 4 0
F 10 1(0011) 4 0
z 11 X 0001) 3 1
(−− − 0000) 1 0 (未使用)
このテーブルの設定例では”0000”の符号を解読するには0の連続数を表すビットをもう1ビット追加する必要があるが、MPEG等ではすべて0からなる符号は、同期符号と混同する恐れがあるため通常禁止されているため問題ない。
本変形例は先頭に0の続く個数の長い符号セットほどテーブルのデータ数の削減の効果が大きくなる。例えば、MPEGのDCT係数の可変長符号は最後尾の符号ビットを除けば最長16ビットの符号があるため、2の16乗(65536)個のテーブルデータが必要であった。しかし、その符号の先頭に続く0符号の個数は最大11個(4ビット)、最初に出現する1符号の後に続く符号長は最大5ビットであるため、合計して9ビット、すなわち2の9乗(512)個のテーブルデータで済み、テーブルサイズを128分の1に削減できる。テーブルサイズを削減することにより、例えばLSI化したときのチップサイズが小さくなり、LSI製作コストを低減したり、テーブルアクセスの高速化が図れるため、同じ回路規模でより高速な処理、あるいは同じ処理速度でより小型低価格の回路構成をとることができる。
入力値 出力値(ビット数) 出力値(区切り符号)
A 00 0(10xx) 2 0
B 00 1(11xx) 2 0
C 01 0(010x) 3 0
D 01 1(011x) 3 0
E 10 0(0010) 4 0
F 10 1(0011) 4 0
z 11 X 0001) 3 1
(−− − 0000) 1 0 (未使用)
このテーブルの設定例では”0000”の符号を解読するには0の連続数を表すビットをもう1ビット追加する必要があるが、MPEG等ではすべて0からなる符号は、同期符号と混同する恐れがあるため通常禁止されているため問題ない。
本変形例は先頭に0の続く個数の長い符号セットほどテーブルのデータ数の削減の効果が大きくなる。例えば、MPEGのDCT係数の可変長符号は最後尾の符号ビットを除けば最長16ビットの符号があるため、2の16乗(65536)個のテーブルデータが必要であった。しかし、その符号の先頭に続く0符号の個数は最大11個(4ビット)、最初に出現する1符号の後に続く符号長は最大5ビットであるため、合計して9ビット、すなわち2の9乗(512)個のテーブルデータで済み、テーブルサイズを128分の1に削減できる。テーブルサイズを削減することにより、例えばLSI化したときのチップサイズが小さくなり、LSI製作コストを低減したり、テーブルアクセスの高速化が図れるため、同じ回路規模でより高速な処理、あるいは同じ処理速度でより小型低価格の回路構成をとることができる。
図32に示したシフト回路3201およびテーブル3203の回路構成は、復号化装置の可変長復号化回路にも適応が可能である。この場合、テーブル3203の構成は設定例1でも設定例2でもいずれでも適用でき、設定例2を適用すれば上記の符号量調整回路の説明部分で示したものと同じ効果が得られる。本発明を適用する可変長復号化回路は複数の小復号化回路1702からなる復号化装置に適用しても、単一の復号化回路からなる復号化装置に適用しても構わない。
図33は図23のフレームメモリ回路2201と図24の動き検出回路2203の変形例である。本変形例の特徴は図23のフレームメモリ回路2201と図24の動き検出回路12がフィールド単位の画像を格納するようになった点であり、これにより、フレーム単位の符号化処理にしか対応していなかったものが、フィールド単位の符号化処理にも対応できるようになる。具体的には1つのフレームをなす2つのフィールド間で予測処理を行えるようになるため、動きの大きい映像の符号化の時にも通常の映像の場合と同程度の符号化効率を実現できる。
動き検出回路2203においては、後述する図35の動き補償回路と組み合わせて適用することにより、図25の動きベクトル検出回路のようにフィールド/フレームの両方のベクトルを検出する検出回路を用いなくても、従来の図6のような動きベクトル検出回路を用いてフィールド/フレーム単位での動きベクトルを検出できる。また、フィールド毎に動き検出を行うため検出単位が16x8画素でよく、フレーム単位の検出の場合の半分で済む。このため、動きベクトル検出回路450内の検出回路数は半分のN/2個で検出することができ、動きベクトル検出回路の回路規模が約半分に削減される。
動き検出回路2203においては、後述する図35の動き補償回路と組み合わせて適用することにより、図25の動きベクトル検出回路のようにフィールド/フレームの両方のベクトルを検出する検出回路を用いなくても、従来の図6のような動きベクトル検出回路を用いてフィールド/フレーム単位での動きベクトルを検出できる。また、フィールド毎に動き検出を行うため検出単位が16x8画素でよく、フレーム単位の検出の場合の半分で済む。このため、動きベクトル検出回路450内の検出回路数は半分のN/2個で検出することができ、動きベクトル検出回路の回路規模が約半分に削減される。
図33の動作は図23の動作とほぼ同じである。図33では、図23の各メモリ401〜404および参照画像用のメモリ2301、2302を2つに分割し、それぞれにデータ量が半分であるフィールド画像画像を格納する。符号化処理をする画像は図23の場合と同様に選択回路405により選択するが1つのフレームのうちどちらのフィールドを処理するかはスイッチ3301あるいはスイッチ3302あるいはスイッチ3303を用いて選択する。画像をフレーム単位で符号化するときにはこれらのスイッチは例えばライン毎に切り替えられ、フィールド単位で符号化処理をするときにはそれぞれのスイッチを下側(401−2、403−2、404−2の出力側)に設定する。一方、参照用の画像はメモリ2301、2302に格納され、図34に例示したタイミングに従い、選択回路3304を制御する。信号線3350、3354はフレームを構成する2フィールドのうち時間的に前方にあるフィールド(フィールドA)の参照画像を出力し、信号線3351は後方にあるフィールド(フィールドB)の参照画像を出力する。これらの参照画像の切り替えのタイミングは図34に示すように、IピクチャもしくはPピクチャ(図中入力信号を太線で囲んだ画像)の入力が終了した時点で切り替わる。ただし、信号線3350は入力終了から1フィールド時間遅延して切り替えられる。これらの参照信号もとに動き検出回路2203にて動きベクトルを検出するが、動きベクトル検出回路3321は主にフィールドAの参照画像による後方予測ベクトル、動きベクトル検出回路3322はフィールドBの参照画像による後方予測ベクトル、動きベクトル検出回路3323はフィールドAの参照画像による前方予測ベクトル、動きベクトル検出回路3324はフィールドBの参照画像による前方予測ベクトルを検出する。なお、動きベクトル検出回路3321は一時的にフレームメモリ回路2201内の選択回路3306により信号が切り替えられ、Pピクチャ内のフィールド間予測、すなわちフィールド6Aを参照画像としフィールド6Bを入力画像とするような前方予測予測ベクトルにも用いられる(図34*印)。検出されたベクトルはそれぞれバッファ3325〜3328に格納され、仮の動きベクトル2211として次の動き補償回路より読みだされる。
図35は図22の動き補償回路2202の詳細図である。動き補償回路2202では動き検出回路2203の検出した仮の動きベクトル2211をもとに、フレーム予測/フィールド予測のうち最適な予測方法と最適なベクトル9を決定し、差分画像信号2212を出力する。同時に半画素精度の動きベクトル検出も行う。最適な予測方法決定の例を図36を用いて説明をする。
図36(1)はフィールド毎に符号化を行う場合の予測方法の選択法を説明する図である。図中の丸印は一つの走査線(水平方向の画素列)を表し、縦方向は画面の垂直方向に、横方向は時間軸に対応する。図はフィールド中、同じマクロブロックに含まれる4ラインのみ取り出して記述しており、インターレース構造を取っているため第1のフィールドと第2のフィールドは垂直方向に半ライン分だけずれた構造になっている。図中では4フィールド分の画像を示しており、左側の2フィールドは参照画像(参照A、参照B)のフィールド、右側は符号化する画像(符号A、符号B)のフィールドを示している。それぞれ右側2フィールド、左側2フィールドは時間的に連続したフィールドであるが、参照のフィールドと符号化フィールドは必ずしも連続していない。ただし、本図では参照のフィールドと符号化フィールドの間のフィールドは省略してある。図中の矢印は図33の動き検出回路にて検出した動きベクトルの垂直成分を記してある。本来は対応する全ての走査線間に矢印(図では各符号走査線1本当り2〜3本、合計16〜24本)を記入するべきであるが、本図では見やすくするために、そのうちの代表的なものを選択し、見やすい位置に配置した。従って、例えば図中fA0を記されている予測のベクトルは参照Aと記されたフィールドの1番目の走査線から符号Aと記されたフィールドの1番目の走査線へ書かれているが、実際には同じ方向大きさの矢印が、それぞれ2〜4番目の走査線間にも存在し、これら3本は省略されている。なお、図中の矢印に付された3文字の記号は、第1の文字が前方予測のベクトル(f)か後方予測のベクトル(b)か、2文字目が第1の参照フィールド(A)か第2の参照フィールド(B)かを、末尾の数字は予測の種類(参照->符号A:0,参照->符号B:1, 符号A->符号B:2)を示している。すなわち先頭2文字の4通りの組み合わせが図33の動きベクトルのバッファ3325〜3328に対応し、末尾の数字がバッファに格納される順番を表す。フィールド毎の符号化では、符号Aのフィールド符号時にはベクトルfA0を用いて参照Aフィールドから、あるいはベクトルfB0を用いて参照Bフィールドからの予測のうち予測誤差の少ないほうを選択する。同様に符号Bのフィールド符号時にはベクトルfA2を用いて符号Aフィールド(フィールド単位の符号化では、符号Aフィールドの符号化終了後は符号Aフィールド新たな参照フィールドになる)から、あるいはベクトルfB1を用いて参照Bフィールドからの予測のうち予測誤差の少ないほうを選択する。これらの処理はフィールド単位の符号化のBピクチャにおいても同じである。ただし、Bピクチャ前方予測では符号A->符号Bの予測はできないため、ベクトルfA2のかわりにベクトルfA1が用いられる。後方予測の場合には前方予測の場合のベクトルの記号のfをbに置き換えたベクトルを用いて同様に行うことができる。これらフィールド単位の符号化時の予測はすべて16x8画素単位の予測を基準としている。すなわち16x16のマクロブロックを上下に2分割した予測であり、1つのマクロブロックあたり2つの動きベクトルが必要になる。この2つのベクトルが同じ値であるときは、16x16画素単位の予測に置き換えることができる。
図中および以降、ベクトルfA0を用いて参照Aフィールドから生成した予測画像をR(A,fA0)と記述する。
図中および以降、ベクトルfA0を用いて参照Aフィールドから生成した予測画像をR(A,fA0)と記述する。
フレーム単位の符号化においてはフレーム単位の予測とフィールドに2分割しての予測が主に使われる。一般の映像では静止部分や水平方向の動きが多いため、図では水平のベクトル(参照A->符号A、参照B->符号B)が多く、これらはフレーム単位の予測に含まれる。一方それ以外の動きでは時間的に近いフィールドからの予測、すなわち参照Bからの予測が多くなり、これらはフィールド単位の予測に含まれる。従って、フレーム単位の予測と、参照Bからの予測とにより大部分の動きをカバーすることが可能になる。フレーム単位の前方(P、Bピクチャ)予測時のベクトルはfA0あるいはfB1を用いる。理想的な場合にはこの2つのベクトルは同じ値になるが、実際には若干異なる場合もある。従って、2つのベクトルfA0、fB1に対応するフレーム予測信号を生成し、予測誤差の小さいものを選択する。この選択後に参照Bからのフィールド予測信号による予測誤差を調べ、3者のうち最適なものを選択する。フレーム単位の後方予測時は前方予測の場合のベクトルの記号のfをbに置き換えたベクトルを用いて同様に行うことができる。ただしフィールド予測時は参照AフィールドからベクトルbA0,bA1を用いて予測信号を生成する。
図35に戻り、制御回路3510は入力されたベクトル2211(上記のfA0等)をもとに4つのメモリ3502〜3504に4種類の図36右中央の表に示した参照画像信号を格納する。信号格納時には動きベクトルによって示される部分16x8画素とその左右1画素、上下2画素を合わせて18x12画素を格納する。図36右側の表中、orで示したものはベクトル検出時の誤差が小さいほうを用いる。図36の(2)の場合はベクトル検出時の誤差信号をベクトル値とともにバッファ3327等に格納しておき、ベクトルfA0の誤差がベクトルfB1の誤差より小さい場合にはメモリ3503にR(B,fA0)を格納し、ベクトルfB1の誤差が小さいときにはR(A,fB1)を格納する。メモリ3502〜3504に格納した信号のうち必要なものを同時に読み出し、予測信号回路3505にて2種の予測信号3520、3521を生成する。予測信号3520はフレーム予測信号(図36予測信号枠内の第1あるいは第2の予測信号)、予測信号3521はフィールド予測信号(図36予測信号枠内の第3の予測信号)である。予測信号3520、3521は半画素回路3507−1〜9に入力されベクトル2211の±0.5画素の範囲の半画素予測信号3530−1〜9および3531−1〜9を生成する。これらは検出器3506−1〜9により、符号化画像信号203と画素毎の差分が取られ、16x8画素全体での誤差電力が3551および3552が計算される。最小値選択回路3554は誤差電力3551、3552の小さいほうを選択し、選択情報と誤差電力を信号線3523−1に出力する。最小値選択回路3508は各検出器3506−1〜9の出力3523−1〜9の誤差電力を比較し、最も小さいものを選択する。選択結果は予測のモードと半画素単位の動きベクトルとして信号線9に出力される。一方各半画素予測信号3530−1〜9および3531−1〜9と符号化画像信号203は選択差分回路3509に蓄えられ、誤差が最小になった予測信号が選択され、画素毎に差分画像信号2212として出力される。
予測信号生成回路3505は図36右端に示した予測信号の組(|記号の両側に示した組)をメモリ3502〜3504から順次読み出し、ライン(18画素)毎に出力する。なお、図36右端に示した予測信号の組のうち第1組と第2組がフレーム予測信号、第3組がフィールド予測信号を表すが、第1組と第2組は先に述べたように動きベクトル検出時の誤差の大きさにより、いずれか一方のみが使われる。
図37に半画素回路3507の詳細図を示す。入力されたフレーム予測信号3520は、遅延回路3710および3701〜3708により所定の時間遅延させられた後に、平均値回路3709にてそれらの一部の平均が計算され半画素フレーム予測信号3530が出力される。75画素入力し終わった時点での各信号線3720a〜i、A〜Iとブロックの位置関係を示す。
フレーム予測信号 フィールド予測信号
z z z z...z I H G x...x
i h g x...x x x x x...x
f e d x...x F E D x...x
c b a x...x x x x x...x
x x x C B A
a〜i、A〜Iはそれぞれ信号線3720a〜i、A〜Iがこの位置の画素を保持していることを示し、xは遅延回路内に保持され、zはすでに廃棄されていることを表す。75画素を入力し終わったこの時点で符号化画像信号202は入力される。すなわち、符号化画像信号の第1の画素と先の動きベクトルによりのeあるいはEで示した位置の画素が対応する。半画素信号の生成法は、例えば符号化画像信号の第1の画素に対応する予測信号値は、半画素のベクトルが(-0.5、-0.5)の場合、フレーム予測で(i+h+f+e+2)/4、フィールド予測で(I+H+F+E+2)/4、(0、+0.5)の場合、フレーム予測で(e+b+1)/2、フィールド予測で(E+B+1)/2、(0、0)の場合、フレーム予測でe、フィールド予測でEとなる。ここで記号/は割り算後結果を切り捨てて整数にする操作を表し、a〜i、A〜Iはそれぞれ信号線3720a〜i、A〜Iの値を表す。平均値回路3709、3719における平均値のとりかたは各回路3507−1〜9によりすべて異なる。例えば平均値回路3709の場合は次の計算を行う。
検出回路 対応ベクトル 計算
3507−1 (-0.5,-0.5) (i+h+f+e+2)/4
3507−2 (-0.5, 0) (h+e+1)/2
3507−3 (-0.5,+0.5) (g+h+d+e+2)/4
3507−4 ( 0,-0.5) (f+e+1)/2
3507−5 ( 0, 0) e
3507−6 ( 05,-0.5) (e+d+1)/2
3507−7 (+0.5,-0.5) (c+b+f+e+2)/4
3507−8 (+0.5, 0) (e+b+1)/2
3507−9 (+0.5,+0.5) (e+d+b+a+2)/4
フィールド予測信号も同様に遅延回路3711〜3718により所定の時間遅延させられた後に、平均値回路3719にてそれらの一部の平均が計算され半画素フレーム予測信号3531が出力される。平均値のとりかたは各回路3507−1〜9によりすべて異なる。ここで、遅延回路3713、3716は36画素分の遅延、遅延回路3703、3706、3710は18画素分の遅延、それ以外の遅延回路は1画素分の遅延である。以上はフレーム単位に符号化した場合であるが、フィールド単位に予測した場合には、2つのフィールド予測信号を3520、3521に入力しフレーム予測と同様の計算を行う。この時遅延回路3710、3713、3716はそれぞれ0画素、18画素、18画素の遅延になるよう、すなわちに半画素回路3507の上半分と下半分が同一の処理を行うように、外部より設定する。
z z z z...z I H G x...x
i h g x...x x x x x...x
f e d x...x F E D x...x
c b a x...x x x x x...x
x x x C B A
a〜i、A〜Iはそれぞれ信号線3720a〜i、A〜Iがこの位置の画素を保持していることを示し、xは遅延回路内に保持され、zはすでに廃棄されていることを表す。75画素を入力し終わったこの時点で符号化画像信号202は入力される。すなわち、符号化画像信号の第1の画素と先の動きベクトルによりのeあるいはEで示した位置の画素が対応する。半画素信号の生成法は、例えば符号化画像信号の第1の画素に対応する予測信号値は、半画素のベクトルが(-0.5、-0.5)の場合、フレーム予測で(i+h+f+e+2)/4、フィールド予測で(I+H+F+E+2)/4、(0、+0.5)の場合、フレーム予測で(e+b+1)/2、フィールド予測で(E+B+1)/2、(0、0)の場合、フレーム予測でe、フィールド予測でEとなる。ここで記号/は割り算後結果を切り捨てて整数にする操作を表し、a〜i、A〜Iはそれぞれ信号線3720a〜i、A〜Iの値を表す。平均値回路3709、3719における平均値のとりかたは各回路3507−1〜9によりすべて異なる。例えば平均値回路3709の場合は次の計算を行う。
検出回路 対応ベクトル 計算
3507−1 (-0.5,-0.5) (i+h+f+e+2)/4
3507−2 (-0.5, 0) (h+e+1)/2
3507−3 (-0.5,+0.5) (g+h+d+e+2)/4
3507−4 ( 0,-0.5) (f+e+1)/2
3507−5 ( 0, 0) e
3507−6 ( 05,-0.5) (e+d+1)/2
3507−7 (+0.5,-0.5) (c+b+f+e+2)/4
3507−8 (+0.5, 0) (e+b+1)/2
3507−9 (+0.5,+0.5) (e+d+b+a+2)/4
フィールド予測信号も同様に遅延回路3711〜3718により所定の時間遅延させられた後に、平均値回路3719にてそれらの一部の平均が計算され半画素フレーム予測信号3531が出力される。平均値のとりかたは各回路3507−1〜9によりすべて異なる。ここで、遅延回路3713、3716は36画素分の遅延、遅延回路3703、3706、3710は18画素分の遅延、それ以外の遅延回路は1画素分の遅延である。以上はフレーム単位に符号化した場合であるが、フィールド単位に予測した場合には、2つのフィールド予測信号を3520、3521に入力しフレーム予測と同様の計算を行う。この時遅延回路3710、3713、3716はそれぞれ0画素、18画素、18画素の遅延になるよう、すなわちに半画素回路3507の上半分と下半分が同一の処理を行うように、外部より設定する。
図38に符号量制御回路の実施例を示す。従来の符号量制御回路と異なる点は、動きベクトル検出時に使われた各誤差信号3810を符号量メモリ3801に蓄積し符号量制御に用いる点である。既に説明したように動きベクトルの検出は符号化に先だって行われる。そのため、そのとき生じた各部分での誤差の大きさをもとに画面内の発生情報量の偏りの予測を行えば、精度の高い符号量制御を行うことができる。また、情報量の多い箇所に多くの符号を割り当てることができるため、画面内の画質を一定にする効果もある。具体的には、所定の小領域毎の差分合計に比例して、この小領域に符号を割り当てる。すなわち、i番目の小領域の誤差値をEr(i)、i番目の小領域までの誤差値の累積をSEr(i)、領域数をn、1画面に割り当てられた符号量をBとすると、全画面の誤差値の合計SER(n)に対する、符号化をおこなう部分までの誤差値の合計の比率、すなわちSEr(i)/SEr(n)を信号線3811を介して符号量制御回路3803に通知する。符号量制御回路ではB*SEr(i)/SEr(n)と実際に発生した符号量を比較し、発生符号量の方が多ければ画質を粗くし、少なければ画質を細かくし、割り当てられた符号量になるよう制御を行う。上記の説明は画面内の小領域間の符号量の割当法をを例にとって行ったが、数画面(例えばPピクチャとその前に連続するBピクチャ)中の画面間の符号量の割当法にも適応できる。また、全画面の誤差値の合計が一定値以上になった場合にその画面をIピクチャとして符号化するよう制御する方法も本発明に含まれる。上記の説明は誤差値として動きベクトル検出時に使われる画素毎の差分の絶対値和を前提としていたが、動きベクトル検出時に別の類似度の類似度の評価値、例えば画素毎の差分の二乗和や、差分信号をアダマールやDCT変換等により直交変換した後の信号の絶対値和などを評価値として用いてもよい。これらの評価値は実際に発生する符号量により近いため、より精度の高い符号量制御が可能となる。また、先の画素毎の差分の絶対値和、あるいは上記の評価値を変換した値、例えば二乗、対数などの処理をした値、をもちいても制御精度向上の効果が得られる。なお、画像を分割処理する符号化装置にも単一の符号化回路からなる符号化装置にも適用可能である。
図39は図38の符号量制御回路の変形例である。図38の実施例と異なる点は符号量制御用のメモリが2面になり、その一方は外部から入力画像に応じた設定が可能な点である。図38の実施例では、画面内の画質は一定になるように制御がかかる。しかし、実際には一部をより高画質にした方が画面全体の画質が向上したように感じられたり、また符号者が意図的に画面の一部を高画質化する用途がある。こうした場合には符号配分の重み係数3910を符号配分補正用メモリ3901に入力し、符号量制御回路3902では、読み出した係数3911を加味して量子化ステップサイズを決定する。符号配分補正メモリ3901には、画面をいくつかの小領域に分割した時、それぞれの小領域に対応した符号配分の重み係数を格納する。例えば、1小領域あたり8ビットのメモリを持ち、メモリに格納した値をW(0〜255)としたとき、量子化の値を一時的にW/128倍する。
符号配分の重み係数3911の入力は符号化開始時に一度だけ設定しても、1画面毎に設定しても構わない。1画面毎に設定したほうがより細かな補正が可能であるが、逆に入力する符号配分の重み係数の情報量が増えてしまう。例えば1920画素x1024ラインx30Hzの画像に対し、16x16画素に対し8ビットの係数を入力すると、約1.8Mbpsの転送レートになる。符号配分の重み係数の転送レートを下げるための以下の変形例も本発明に包含される。
(1)符号配分の重み係数の対応する領域を広げる。あるいは係数のビット数を少なくする。例えば、64x16画素に4ビットの係数を割り当てると、転送レートは1/8になる。小領域の形状は任意で構わないが、マクロブロックの形状単位に設定したほうが正確な補正ができ、連続して処理されるL個のマクロブロックの形状(水平16xL画素、垂直16画素)にすると符号配分補正用メモリ3901をランダムアクセスしなくてすむためメモリのアドレス回路を削減できる。また水平分割した符号化装置に適用する場合も余分な符号配分補正用メモリを持たずに済む。
(2)予め定められたフレーム数(Nwフレーム)に1回、符号配分の重み係数を入力する。これにより、転送レートが1/Nwになる。
(3)重み係数を符号化して転送し、符号配分補正用メモリ3901の入力時に復号して入力する。例えば同じ重み係数が連続する場合には、その係数値と連続する個数を伝送する。連続数の最大を255個(8ビット)とすると、係数値の変化毎に16ビットの情報が発生する。1マクロブロックライン(上記例では1920x16画素)あたり平均10回の変化点があったとすると転送レートは約300kbpsと1/6になる。連続数をハフマン符号等の可変長を用いたり、係数値の変化差分値を可変長符号で符号化する処理等を行えば、さらに転送レートを低くすることができる。ただし、この変形例では1画面当りの重み係数を符号量が可変になるため転送の開始、終了等を通知する制御が必要になる。
(4)数フレームにわたる重み係数の分布を記述する符号を伝送し、符号配分補正用メモリ3901の出力時にこの符号を展開して所望の係数値を得る。以下に分布の記述の例を示す。例は3フレーム同じ係数値を続けた後、画面が右に移動したため係数値も右にずらした例である。()は()内に記した内容の処理に応じた符号を意味する。
(1)符号配分の重み係数の対応する領域を広げる。あるいは係数のビット数を少なくする。例えば、64x16画素に4ビットの係数を割り当てると、転送レートは1/8になる。小領域の形状は任意で構わないが、マクロブロックの形状単位に設定したほうが正確な補正ができ、連続して処理されるL個のマクロブロックの形状(水平16xL画素、垂直16画素)にすると符号配分補正用メモリ3901をランダムアクセスしなくてすむためメモリのアドレス回路を削減できる。また水平分割した符号化装置に適用する場合も余分な符号配分補正用メモリを持たずに済む。
(2)予め定められたフレーム数(Nwフレーム)に1回、符号配分の重み係数を入力する。これにより、転送レートが1/Nwになる。
(3)重み係数を符号化して転送し、符号配分補正用メモリ3901の入力時に復号して入力する。例えば同じ重み係数が連続する場合には、その係数値と連続する個数を伝送する。連続数の最大を255個(8ビット)とすると、係数値の変化毎に16ビットの情報が発生する。1マクロブロックライン(上記例では1920x16画素)あたり平均10回の変化点があったとすると転送レートは約300kbpsと1/6になる。連続数をハフマン符号等の可変長を用いたり、係数値の変化差分値を可変長符号で符号化する処理等を行えば、さらに転送レートを低くすることができる。ただし、この変形例では1画面当りの重み係数を符号量が可変になるため転送の開始、終了等を通知する制御が必要になる。
(4)数フレームにわたる重み係数の分布を記述する符号を伝送し、符号配分補正用メモリ3901の出力時にこの符号を展開して所望の係数値を得る。以下に分布の記述の例を示す。例は3フレーム同じ係数値を続けた後、画面が右に移動したため係数値も右にずらした例である。()は()内に記した内容の処理に応じた符号を意味する。
(1画面分係数値転送)(第1係数値)(第2係数値).....(最終係数値) (前画面と同一係数を使用)
(前画面と同一係数を使用)
(前画面の左隣の係数を使用)(画面左端第1係数値)(画面左端第2係数値)
..... (画面左端最終係数値)
.....
以上の様な符号化処理を、上記(3)の変形例と組み合わせることにより転送レートをさらに下げることができる。一方、符号の解析処理は複雑になるが、マイクロプロセッサあるいはディジタルシグナルプロセッサ等を配置し、ソフトウェアにより処理を行えば少ないハード追加で実現ができる。なお、画像を分割処理する符号化装置にも単一の符号化回路からなる符号化装置にも適用可能である。
(前画面と同一係数を使用)
(前画面の左隣の係数を使用)(画面左端第1係数値)(画面左端第2係数値)
..... (画面左端最終係数値)
.....
以上の様な符号化処理を、上記(3)の変形例と組み合わせることにより転送レートをさらに下げることができる。一方、符号の解析処理は複雑になるが、マイクロプロセッサあるいはディジタルシグナルプロセッサ等を配置し、ソフトウェアにより処理を行えば少ないハード追加で実現ができる。なお、画像を分割処理する符号化装置にも単一の符号化回路からなる符号化装置にも適用可能である。
図40は図13に示した共有メモリ回路1102の変形例である。図13では各小符号化あるいは復号化装置に対応するメモリを2面持ち、読み出し用と書き込み込み用に分けていたが、図40では読み出しと書き込みを1つのメモリ1303で行っている。こうした処理を行うことによりメモリ管理回路4001の回路規模はやや増大するが、メモリ1303の数は半分になる。メモリ素子はその高集積化がめざましいため、1画面を4分割した程度画像の大きさの画像(1920画素x256ラインx8ビット+該当色信号では6Mビット程度)2枚を1つの素子に格納することは十分可能であり、1つの素子に格納したほうが回路規模も小さくなる。
メモリ管理回路4001ではメモリの読み出し機能が追加される。メモリの読み出し処理は書き込み処理と同様に読みだすブロックの先頭画素のアドレス等を信号線1104を用いて設定し、設定した後に所望の画素が連続してあるいは間欠的に信号線1104のデータ線に出力される。読み出しアドレスの設定は先頭の画素のアドレスの代わりにマクロブロックの番号、マクロブロック内のブロックの番号、該当マクロブロックの動きベクトルを設定してもよい。
図40の共有メモリ回路はメモリのアクセス回数が2倍になる点、また読み出しを設定してから該当する画素データが出力されるまでの時間に若干の遅延がある点から、本変形例は比較的メモリアクセス数の少ない、復号化回路(図17)へ適用したときに特に効果が得られる。
図41は図40の変形例であり、図40のメモリ1301−1〜4が1つのメモリ4101に集約されている。このためメモリ管理回路4102は全ての小符号化回路あるいは小復号化回路のメモリアクセスを1つのバス4110で行う。
メモリ管理回路4102内部には、各アドレス入力線毎にFIFOあるいはバッファメモリが接続され、このFIFOあるいはバッファメモリにアドレスが設定された時点でメモリ4101の所定のアドレスにアクセスをする。いくつかのアドレス設定がほぼ同時刻に行われた場合はそれらの設定に順序づけをし順番に処理を行う。順序づけには、少しでも早い時刻に書き込まれたものから処理をする方法や、予め定められた順番にFIFOあるいはバッファメモリの設定の有無を確認しておき、設定されていたものを処理する方法等がある。後者はアクセスの優先順位を自由に設定できる利点はあるが優先順位の低いものは設定してからデータ処理される間での待ち時間が長くなる場合がある。
メモリ管理回路4102内部には、各アドレス入力線毎にFIFOあるいはバッファメモリが接続され、このFIFOあるいはバッファメモリにアドレスが設定された時点でメモリ4101の所定のアドレスにアクセスをする。いくつかのアドレス設定がほぼ同時刻に行われた場合はそれらの設定に順序づけをし順番に処理を行う。順序づけには、少しでも早い時刻に書き込まれたものから処理をする方法や、予め定められた順番にFIFOあるいはバッファメモリの設定の有無を確認しておき、設定されていたものを処理する方法等がある。後者はアクセスの優先順位を自由に設定できる利点はあるが優先順位の低いものは設定してからデータ処理される間での待ち時間が長くなる場合がある。
図40、図41の変形例を用いた復号化回路では、メモリアクセス回数が最も多い場合をもとにメモリのアクセス速度を決定する。例えば、先に説明したMPEGではBピクチャの補間予測の場合に最もメモリアクセス回数が増大し1画素あたり4回(予測画像読み込み2回、再生画像書き込み1回、表示読み出し1回)になる。また、説明を省略したがMPEG2で採用されたDual prime予測もBピクチャと同様に4回のアクセスが必要である。1920x256x30Hzx1.5(色信号分)の画像の場合は約22M画素/秒であることから、88M画素/秒のアクセスが必要になる。現在の大容量のメモリのアクセス速度は30〜40ns前後であることから、1回に2画素(16ビット)アクセスすすることにより、88M画素/秒のアクセスを達成することができる。しかし、この場合はアクセスのオーバーヘッドを最小限に抑さえなければならないため、回路構成が複雑になり回路規模が増大する。また、実際には1画面内の予測が全て補間予測あるいはDual prime予測であることはほとんどないため、平均のアクセス回数はさらに少ない。従って、メモリのアクセス回数を88M画素/秒よりも少ない値で回路を設計しておき、アクセス処理回数が所定の回数を越えたあるいは越える恐れのあるときには、補間予測あるいはDual prime予測を簡略処理により実行する回路を付加することによって、小復号化回路および復号化装置全体の回路規模を小さくすることができる。補間予測あるいはDual prime予測の簡略処理としては図42に示すように従来2画素の平均を取っていた予測値をそのいずれかの1画素で置き換えることによって実現する。
このときメモリへのアクセス回数は1画素あたり3回となる。図42(1)は従来の補間予測あるいはDual prime予測における補間処理を示し、以降(2)〜(4)に簡略処理を示す。図の白丸印あるいは黒丸印のついた画素だけを読みだす。これらの簡略処理により再生する画像の画質はやや劣化するが、両予測とも類似した画像の平均値を予測画像としている点、簡略処理をするブロック数が確率的に非常に少ない点から、再生画像の劣化は通常ほとんど気にならない程度のものになる。一方、簡略処理による効果は上記に説明した回路の小型化が図れる。あるいは逆に従来と同じ回路でより低速のメモリを使うこともできる。低速のメモリを使うと、回路コストを削減できる他に、最先端の大容量メモリ(一般には再高速のメモリに比べアクセス速度が遅い)を使用できることになり回路規模削減にも効果がある。(2)の簡略処理1では一方の予測画像しか用いないた復号化のモードを例えば補間予測から前方予測に強制的に切り替えることにより回路の変更増大を最小限に抑さえることができる。一方、(3)の簡略処理2ではライン毎に予測画像を切り替えているため、2つの予測画像の特徴を予測画像に反映させることができる。一般には2つの予測画像はほぼ同一のものであるが、標準化の規定では任意の画像の組み合わせが許されている。簡略処理2は2つの画像が異なるものであっても、簡略処理による劣化を最小限におさえることができる。簡略処理2は垂直方向に分割する方法も包含する。(4)の簡略処理3は簡略処理2に水平方向の変化を加えたもので、簡略処理による誤差の周波数成分が垂直水平とも高周波成分になるため、人間の視覚に感じにくくなり、劣化がより少なく感じられる効果がある。さらに、(5)の簡略処理4は簡略処理2において、予測画像2の画素を用いる箇所にて、予測画像1の周辺の画素から空間補間した画素を作り、この空間補間画素と予測画像2の画素との間で平均値処理を行い予測画像を作りだす。この場合、予測画像生成の回路構成はやや複雑になるが、最も処理速度に影響するメモリへのアクセス頻度は他の簡略処理と同じになる。簡略処理による劣化も他の簡略処理の場合よりもさらにおさえることができる。図では空間補間画素作成時に境界の画素は空間補間画素を使用していないが、ブロック外の画素を用いて空間補間画素を生成する方法、ブロック内の空間的に近い位置の画素を空間補間画素とする方法も本発明に包含される。また、簡略処理4は簡略処理2をベースとしているが、簡略処理3に空間画素補間による方法を適用しても同様の効果が得られる。
このときメモリへのアクセス回数は1画素あたり3回となる。図42(1)は従来の補間予測あるいはDual prime予測における補間処理を示し、以降(2)〜(4)に簡略処理を示す。図の白丸印あるいは黒丸印のついた画素だけを読みだす。これらの簡略処理により再生する画像の画質はやや劣化するが、両予測とも類似した画像の平均値を予測画像としている点、簡略処理をするブロック数が確率的に非常に少ない点から、再生画像の劣化は通常ほとんど気にならない程度のものになる。一方、簡略処理による効果は上記に説明した回路の小型化が図れる。あるいは逆に従来と同じ回路でより低速のメモリを使うこともできる。低速のメモリを使うと、回路コストを削減できる他に、最先端の大容量メモリ(一般には再高速のメモリに比べアクセス速度が遅い)を使用できることになり回路規模削減にも効果がある。(2)の簡略処理1では一方の予測画像しか用いないた復号化のモードを例えば補間予測から前方予測に強制的に切り替えることにより回路の変更増大を最小限に抑さえることができる。一方、(3)の簡略処理2ではライン毎に予測画像を切り替えているため、2つの予測画像の特徴を予測画像に反映させることができる。一般には2つの予測画像はほぼ同一のものであるが、標準化の規定では任意の画像の組み合わせが許されている。簡略処理2は2つの画像が異なるものであっても、簡略処理による劣化を最小限におさえることができる。簡略処理2は垂直方向に分割する方法も包含する。(4)の簡略処理3は簡略処理2に水平方向の変化を加えたもので、簡略処理による誤差の周波数成分が垂直水平とも高周波成分になるため、人間の視覚に感じにくくなり、劣化がより少なく感じられる効果がある。さらに、(5)の簡略処理4は簡略処理2において、予測画像2の画素を用いる箇所にて、予測画像1の周辺の画素から空間補間した画素を作り、この空間補間画素と予測画像2の画素との間で平均値処理を行い予測画像を作りだす。この場合、予測画像生成の回路構成はやや複雑になるが、最も処理速度に影響するメモリへのアクセス頻度は他の簡略処理と同じになる。簡略処理による劣化も他の簡略処理の場合よりもさらにおさえることができる。図では空間補間画素作成時に境界の画素は空間補間画素を使用していないが、ブロック外の画素を用いて空間補間画素を生成する方法、ブロック内の空間的に近い位置の画素を空間補間画素とする方法も本発明に包含される。また、簡略処理4は簡略処理2をベースとしているが、簡略処理3に空間画素補間による方法を適用しても同様の効果が得られる。
なお、本発明は上記で説明した以外のいかなる画素数の画像に対しても適用でき回路の小型化の効果が得られる。また、画像分割した復号化装置に限らず、単一の復号化回路をもつ画像復号化装置にも適用ができ同じ効果がある。
図40、図41に示した回路構成および制御方法は画像符号化装置に適用可能である。
図43は本発明を適用した画像符号化復号化装置の実施例である。画像信号および符号を画面上の該当する位置に応じて分割し、符号化および復号化処理を行う。入力画像信号2−1および入力符号7−1は符号/画像分割回路4301にて画像、符号それぞれ独立のタイミングで4つに分割され、信号線4310−1〜4を介し小符号化復号化回路4301−1〜4に入力される。信号線4310−1〜4では画像信号と符号信号が空間的に多重されている。小符号化復号化回路4301−1〜4は入力された画像信号に対し符号化処理を行い、符号に対しては復号化処理を行う。これらの処理は既に説明した小符号化回路1101や小復号化回路1702と同じ処理である。符号化あるいは復号化された結果は画像/符号合成回路4303にて符号、再生画像それぞれ独立のタイミングで合成され、出力符号7−2および再生画像信号2−2が得られる。
符号化復号化における参照画像は共有メモリ4304に格納されており、アクセス信号4312と読み出し信号4313を用いてアクセスを行う。これらアクセス信号4312と読み出し信号4313は小符号化装置のものと、小復号化装置のものを空間的に多重しても時間的に多重しても構わない。共有メモリ回路4303の内部のメモリ数はそれぞれの小符号化回路・小復号化回路に対応して1メモリずつ、合計8つの独立したメモリ構成でも、対応する小符号化回路・小復号化回路に1メモリずつ、合計4つの独立したメモリ構成でも、小符号化回路に1メモリ、小復号化回路に、合計2つの独立したメモリ構成でも、あるいは1つのメモリ構成でも構わない。独立のメモリ数が減れば回路規模は小さくなるが、逆に1小符号化回路あるいは小復号化回路に対するアクセス速度が遅くなる、もしくは非常に高速なメモリ素子を必要が必要になる。メモリ構成とアクセス用の信号の多重方法は、それぞれ独立であり、全ての組み合わせが可能である。
図44は図11に示した画像符号化装置の変形例である。図44の変形例は符号化装置だけではなく復号化装置、符号化復号化装置にも適用可能である。
図44の図11の共有メモリ回路1102を分散させて各小符号化回路4401内に設置してある。そのため共有する部分の画像情報は信号線4410〜4415を介して転送され、各小符号化回路内の共有メモリに格納される。なお、図44では共有情報は小符号化回路4401−1と2、2と3、3と4の間のみに設定された例である。
図45は小符号化回路4401−2の詳細図である。小共有メモリ回路4501が配置された点が図12の小符号化回路1101と異なる以外は、図12の小符号化回路1101と同じ動作をする。小共有メモリ回路4501は同じ小符号化回路4401の局所再生した参照画像1103を保持する他、画像を共有する小符号化回路からの共有画像信号4411、4413を受信し参照画像1103と同じメモリに保持する。一方、参照画像1103のうち、他の小符号化回路にて共有画像として用いる信号は共有画像信号4410あるいは4412へ出力し、該当の小符号化回路に転送する。なお、小符号化回路4401−3の構成は小符号化回路4401−2とほとんど同じであり、共有画像信号4410〜4413の部分が異なる信号線に接続される。また、小符号化回路4401−1、4は共有画像信号線の数が4本から2本になる。
図46は図45の小共有メモリ回路4501の詳細図である。参照画像信号1103および共有画像信号4410、4413はメモリ管理回路4601に入力され、メモリ管理回路4601内のバッファメモリあるいはFIFOに保持される。メモリ管理回路4601はバッファメモリあるいはFIFOにデータが入力されると、そのデータをメモリ1303あるいは1304の該当する箇所に書き込む。一方、メモリ1303あるいは1304の読み出しは信号線1104を介して図13に示した共有メモリ回路と同様に行う。
参照画像信号1103は転送スイッチ4604にも入力される。転送スイッチは入力された信号が共有される部分の信号であれば共有画像信号4410あるいは4412へ出力し、該当の小符号化回路に転送する。
上記図44から図46までの変形例によれば、第11図と同じ符号化処理速度で同じ符号化効率を達成できる。さらに、第11図では共有メモリ回路1102に集中していた信号線を分散することにより全体の信号線数を減らすことが可能になる。例えば、各小符号化回路あたりアクセス信号1103がデータ8本、制御2本、読み出し信号1104がデータ8本、アドレス10本、制御4本とすると共有メモリ回路1102の入力信号本数は128本になる。一方、図44の変形例では共有画像信号4410〜4413はそれぞれデータ8本、制御2本とすると合計で60本となり半分以下になる。また信号線の集中の度合いも、第11図では共有メモリ回路一箇所に128本に対し、変形例では40本になる。信号線の集中を回避することにより、画像符号化装置800を1つのLSIにした場合には信号線のレイアウトが容易になりチップサイズも小さくなる。小画像符号化回路および共有メモリ回路をそれぞれ1つのLSIにした場合には特に共有メモリ回路のLSIのピン数増加による高価格化を避けることができる。また、符号化回路および共有メモリ回路をそれぞれ1つの基版にし、それらをコネクタやケーブル等で接続する場合にはコネクタ数あるいはケーブル数を削減することができる。なお、本変形例はとくに画像を水平分割した時に信号本数を減らす効果が高い。また、分割数を多くするほど信号本数を減らす効果は高くなる。
図47は図25の動きベクトル検出回路2401の変形例である。動きベクトル検出回路2401をコアとしてその周辺回路を設置することによって動きベクトルの検出範囲を広げている。図47の詳細を説明する前に図48を用いて動作の概要を説明する。図48は動き検出に用いるマクロブロックの順番と位置を図示している。第1の例は上に符号化画像のマクロブロック列、下に参照画像のマクロブロック列を示している。1つの四角形が1つのマクロブロック(16x16画素)に対応し、256画素からなり、図の左のマクロブロックから順次入力し処理を行う。図25の動きベクトル検出回路の説明では各画素は上の画素から水平方向にスキャンして入力することを仮定していたが、本変形例では左側の画素から垂直にスキャンして入力する。これは図25の回路の動作の垂直アドレス(位置)と水平アドレス(位置)を入れ替えただけで各動作は全く同じである。
第1の例では参照マクロブロック1A、1B、1Cが符号マクロブロック1の入力に対応して入力され、1A、1B、1C、2A、2B、2C、を用いて符号マクロブロック1の動きベクトルが探索される。符号マクロブロック2に対しては参照マクロブロック1A、1B、1C、2A、2B、2C、3A、3B、3Cが用いられ、そのうち1A、1B、1C、2A、2B、2Cは先の符号マクロブロック1の処理時に入力した画素を保持しておき、新たに3A、3B、3Cの画素のみを入力する。
符号マクロブロック2と参照マクロブロック1Bが位置的には対応し、水平垂直±16画素(第1のマクロブロックのみは水平0〜+16)の範囲を探索している。通常は、参照マクロブロック2Bの位置の画素との類似性が最も高いとき通常は動きベクトル(0、0)とするが、参照画素を読み出すアドレスに固定のオフセット値を加え(0、0)以外の点を中心に探索をすることも可能である。
例えば水平・垂直アドレスに( 8、1)のオフセットを加えれば水平―8〜+24、垂直―15〜+17までの範囲を探索することになる。第1の例では参照画像の各マクロブロックの図示した順番と画面上のマクロブロックの位置が一致している。
例えば水平・垂直アドレスに( 8、1)のオフセットを加えれば水平―8〜+24、垂直―15〜+17までの範囲を探索することになる。第1の例では参照画像の各マクロブロックの図示した順番と画面上のマクロブロックの位置が一致している。
図48の第2の例は上記のオフセット値をマクロブロック毎に変化させた場合である。例えば符号化マクロブロック2に対しては参照マクロブロック1A'、1B'、1C'、2A'、2B'、2C'、3A、3B、3Cが用いられ、1A'等は1A、1B、1C、2A、2B、2Cとは異なる位置の画素であるため一般には再度読み出す必要がある。その結果、参照画像の読み出し速度を第1の例と同じにした場合には、処理速度は3分の1になってしまう。
図48の第3の例はオフセット値を4マクロブロック毎に変えた例である。この例が図47の回路に相当する。第3の例では処理量は第1の例に比べ3分の2になるが、オフセット値を変化させる単位を8マクロブロックにすれば10分の8、16マクロブロックにすれば18分の16と例1に近づく。
図47に戻って説明を行う。入力した参照画像11(例えば図48の例3の3A〜C)あるいは214はベクトル検出回路2401に入力されると同時にメモリ4701―1、2、3のいずれか(例えば4701―1)に格納される。一方、これと同時に、先の例ではメモリ4701―2、3から格納されている画素のデータが読み出されて(例えば図48の例3の1A〜C、2A〜C)入力参照画像11あるいは214(例えば図48の例3の3A〜C)と同時にベクトル検出回路2401に入力される。一方符号化画像202(例えば図48の例3のマクロブロック2)は遅延回路4708にて所定の時間(図48の例では1マクロブロック分の時間)遅延させた後、ベクトル検出回路2401に入力されベクトルが求められる。求められた3つ(フレーム、奇数フィールド、偶数フィールド)のベクトル2410、2411、2412は出力されると同時に、それぞれ加算器4702、4704、4706に入力される。これら加算器ではメモリ4703、4705、4707に格納されている、同一符号化画面の別のマクロブロックのベクトル値の加算結果4714、4715、4716と水平、垂直成分毎に加算され、再びメモリ4703、4705、4707にそれぞれ格納される。制御回路4750は画面内のマクロブロックをいくつかのグループに分割し、各グループ毎にメモリ4703、4705、4707に領域を設け、これら領域にベクトル値の加算結果を格納する。処理中のマクロブロックがあるグループに属しているとき、制御回路4750は該当するメモリのアドレス4713を出力し同一グループ内の全てのマクロブロックのベクトル値を水平、垂直成分毎に加算する。制御回路4750はこれらの加算結果4710、4711、4712を各グループの最終マクロブロックの処理終了時に読み出す。これらの加算結果をグループ内のマクロブロックの数で割ると各グループの平均ベクトルが得られる。
同一符号化画面に対して次の連続する画面からベクトル探索時にこれら平均ベクトルを各グループのオフセット値とする。制御回路4750は参照画像アドレス4761を生成するときに、そのマクロブロックが属するグループの平均ベクトルをオフセット値として加えることにより実現できる。なお、符号化画像アドレス4762は通常の処理時と同様に符号化画像のマクロブロックを順次読み出すようアドレスを生成する。
同一符号化画面に対して次の連続する画面からベクトル探索時にこれら平均ベクトルを各グループのオフセット値とする。制御回路4750は参照画像アドレス4761を生成するときに、そのマクロブロックが属するグループの平均ベクトルをオフセット値として加えることにより実現できる。なお、符号化画像アドレス4762は通常の処理時と同様に符号化画像のマクロブロックを順次読み出すようアドレスを生成する。
同一符号化画面に対して次の連続する画面からベクトル探索時にこれら平均ベクトルを各グループのオフセット値とすることにより、1画面に対するベクトル探索範囲を狭くしても、広範囲のベクトルを求めることができる。具体的にはI、B、B、Pの順番に符号化するとき、最初のIピクチャから第1のBピクチャのベクトルを求め、次に求めたベクトルのグループ毎の平均ベクトルをオフセットとして、Iピクチャから第2のBピクチャのベクトル、第2のBピクチャのベクトルをオフセットとして、IピクチャからPピクチャのベクトルを求める操作により、Pピクチャに対しては1回のベクトル探索範囲の水平垂直それぞれ3倍までの範囲の動きに追随すること可能となる。
各グループの画面内での形状は自由であり、分散していても構わないが、図48の第3の例の項で説明したように水平方向には数マクロブロック連続していることが望ましい。具体的には水平は8以上で画面水平マクロブロック数(44あるいは45)の整数分の1あるいは2のベキ乗、具体的には8あるいは9あるいは11あるいは16マクロブロックのうちいずれかと、垂直1〜4マクロブロックのいずれかの組み合わせが回路構成上およびメモリの読み出し速度の理由から特に好ましい。
グループ内のマクロブロック数が2のベキ乗であると平均ベクトルの計算がシフト操作にて可能になり回路的に有利である。2のベキ乗個でない場合にはその数より大きい2のベキ乗で割っても構わない。例えば1つのグループが水平8マクロブロック、垂直3マクロブロックの時には、1グループあたり24マクロブロックであるが、平均値計算時に32で割ってもかまわない。このとき、得られる平均ベクトルは正しい平均ベクトルの4分の3の値になり、探索範囲も4分の3(先の例のPピクチャでは3*3/4=2.25倍の範囲)になるが、グループ内の不規則な動き等によるベクトルの影響を小さくする効果があり、実際の符号化時には動きベクトルの符号量が少なくなり高い画質が得られる場合もある。
グループ内のマクロブロック数が2のベキ乗であると平均ベクトルの計算がシフト操作にて可能になり回路的に有利である。2のベキ乗個でない場合にはその数より大きい2のベキ乗で割っても構わない。例えば1つのグループが水平8マクロブロック、垂直3マクロブロックの時には、1グループあたり24マクロブロックであるが、平均値計算時に32で割ってもかまわない。このとき、得られる平均ベクトルは正しい平均ベクトルの4分の3の値になり、探索範囲も4分の3(先の例のPピクチャでは3*3/4=2.25倍の範囲)になるが、グループ内の不規則な動き等によるベクトルの影響を小さくする効果があり、実際の符号化時には動きベクトルの符号量が少なくなり高い画質が得られる場合もある。
上記の説明ではグループの重複はないと仮定していたが、グループを重複しても構わない。ただし、オフセットとして使用する平均ベクトルをどのグループの平均値を用いるかは定めておかなければならない。グループ重複の例としては、例えば同一オフセット値を用いるグループが水平8マクロブロック、垂直1マクロブロック、平均値計算に用いるグループが水平8マクロブロック、垂直3マクロブロック(上下1マクロブロック)などがある。このような重複行うことにより、オフセット値のベクトルの精度が高くなり、符号化の効率も高まる。なお、平均ベクトル計算時に加重平均を用いても構わない。上記の重複ブロック例で、上下のマクロブロックのベクトルは1/2の重みとして計算しても構わない。なお、例えば上記の例の重複ブロックの処理ではメモリ4703。4705、4707の読み出しおよび加算器4702、4704、4704の処理に3倍の処理速度が必要になる。
2…入力画像、4…MC/DCT回路、5…可変長符号化回路、7…符号、
800…画像符号化装置、801…画像分割回路、803…符号統合回路、
1101…小符号化回路、1102…共有メモリ回路、1700…画像復号化装置、1701…符号分割回路、1702…小画像復号化回路、1703…画像合成回路、2201…フレームメモリ回路、2202…動き補償回路、2401…動きベクトル検出回路、2801…符号制御回路、3001…符号調整回路、
3801…符号量制御メモリ、4300…符号化復号化装置、4301…画像/符号分割回路、4302…小符号化復号化回路、4303…画像/符号合成回路。
800…画像符号化装置、801…画像分割回路、803…符号統合回路、
1101…小符号化回路、1102…共有メモリ回路、1700…画像復号化装置、1701…符号分割回路、1702…小画像復号化回路、1703…画像合成回路、2201…フレームメモリ回路、2202…動き補償回路、2401…動きベクトル検出回路、2801…符号制御回路、3001…符号調整回路、
3801…符号量制御メモリ、4300…符号化復号化装置、4301…画像/符号分割回路、4302…小符号化復号化回路、4303…画像/符号合成回路。
Claims (8)
- 入力画像を複数のブロックに分割し、既に符号化された信号から再生した画像を用いて分割された該ブロックの予測画像を生成し、該入力画像と該予測画像の差分画像を生成し、該差分画像を符号化する画像符号化装置において、入力画像を互いに隣接する領域どおしが重なる領域を有する複数個(N個)の小画像に分割する手段、分割された各小画像に対し先の予測画像生成、符号化処理および画像の再生を実行するN個の符号化処理部、各符号化処理部にて再生した画像を関連する符号化処理部に配送する共有情報処理部、各符号化処理部にて生成された符号列をN個以下の符号化列に変換する符号合成部を具備することを特徴とする画像符号化装置。
- 請求項1に記載の画像符号化装置において、1つの符号化処理部において生成された符号量を他の符号化処理部に通知する手段、他の符号化処理部より通知された符号量に応じて自らの発生する符号量を制御する手段を具備することを特徴とする画像符号化装置。
- インターレース走査構造を持つ画像を入力画像とし、予測画像生成方法としてフィールド単位に動き補償した予測画像とフレーム単位に動き補償した予測画像とを切り替える方法を持つ請求項1に記載の画像符号化装置において、フィールド単位に検出した動き補償ベクトルからフレーム単位の動きベクトルを生成する手段を具備することを特徴とする画像符号化装置。
- 請求項1に記載の画像符号化装置において、2つの時刻とその時刻の間に発生する符号量を入力する手段、指定された時間の間に発生した符号量を計測する手段、該計測手段により計測された符号量が指定された符号量に一致しないときは符号量を増加あるいは削減手段を具備することを特徴とする画像符号化装置。
- 請求項1に記載の画像符号化装置において、画面内の重み係数を入力する手段、該重み係数度に応じて符号量の画面内での配分を設定する手段、設定された符号量になるように発生符号量を制御する手段を具備することを特徴とする画像符号化装置。
- 入力された符号を解読し、差分画像を生成し、該入力符号にて別途指定された情報により既に復号された画像から予測画像生成し、該差分画像と該予測画像を加算して新たな復号画像を生成する画像復号化装置において、入力符号を復号化したときの画像が互いに隣接する領域と重なる領域を有する複数個(M個)の符号に分割する手段、分割された符号に対し先の予測画像生成および復号化化処理を実行するM個の復号化処理部、各復号化処理部にて復号した画像を関連する復号化処理部に配送する共有復号情報処理部、各復号化処理部にて復号された画像を1つの画像に合成する画像合成部を具備することを特徴とする画像復号化装置。
- 請求項6に記載の画像復号化装置において、復号化処理の進捗量を算出する手段、得られた進捗量と基準となる進捗量を比較する手段、進捗量が基準に満たないときに処理を簡略化させる手段を具備することを特徴とする画像復号化装置。
- 請求項1および請求項6において画像の分割数と符号の分割数を同じにし、それぞれの符号化処理部、復号化処理部の機能を化ね備える処理手段を具備することを特徴とする画像符号化復号化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004177746A JP2004320804A (ja) | 2004-06-16 | 2004-06-16 | 可変長復号化回路及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004177746A JP2004320804A (ja) | 2004-06-16 | 2004-06-16 | 可変長復号化回路及び方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6170699A Division JPH0837662A (ja) | 1994-07-22 | 1994-07-22 | 画像符号化復号化装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004320804A true JP2004320804A (ja) | 2004-11-11 |
Family
ID=33475745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004177746A Pending JP2004320804A (ja) | 2004-06-16 | 2004-06-16 | 可変長復号化回路及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004320804A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009182605A (ja) * | 2008-01-30 | 2009-08-13 | Internatl Business Mach Corp <Ibm> | 圧縮システム、プログラムおよび方法 |
JP2013074403A (ja) * | 2011-09-27 | 2013-04-22 | Jvc Kenwood Corp | 動きベクトル検出装置及び方法 |
-
2004
- 2004-06-16 JP JP2004177746A patent/JP2004320804A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009182605A (ja) * | 2008-01-30 | 2009-08-13 | Internatl Business Mach Corp <Ibm> | 圧縮システム、プログラムおよび方法 |
US8331435B2 (en) | 2008-01-30 | 2012-12-11 | International Business Machines Corporation | Compression system, program and method |
JP2013074403A (ja) * | 2011-09-27 | 2013-04-22 | Jvc Kenwood Corp | 動きベクトル検出装置及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0837662A (ja) | 画像符号化復号化装置 | |
JP3395166B2 (ja) | 統合ビデオ復号化システム、フレーム・バッファ、符号化ストリーム処理方法、フレーム・バッファ割当て方法及び記憶媒体 | |
US5467136A (en) | Video decoder for determining a motion vector from a scaled vector and a difference vector | |
US5317397A (en) | Predictive coding using spatial-temporal filtering and plural motion vectors | |
JP4358990B2 (ja) | 動き推定システムおよび方法 | |
EP0793389B1 (en) | Memory reduction in the MPEG-2 main profile main level decoder | |
US7224732B2 (en) | Motion vector conversion method and conversion apparatus of interlaced MPEG-2 to progressive MPEG-4 | |
US20070030902A1 (en) | Method and apparatus for VC-1 to MPEG-2 video transcoding | |
US6442206B1 (en) | Anti-flicker logic for MPEG video decoder with integrated scaling and display functions | |
WO1999066733A2 (en) | Pixel data storage system for use in half-pel interpolation | |
JP2000270332A (ja) | 動画像符号化方法および装置 | |
EP1768420A1 (en) | Motion detection device | |
US6005627A (en) | Video coding apparatus | |
JPH0759096A (ja) | ビデオエンコーダ及びデコーダ | |
JP2755851B2 (ja) | 動画像符号化装置及び動画像符号化方法 | |
US5986713A (en) | Video coding apparatus using inter-field prediction | |
JP2004320804A (ja) | 可変長復号化回路及び方法 | |
JP2000078572A (ja) | オブジェクト符号化装置およびオブジェクト符号化装置のコマ落し制御方法およびプログラムを記録した記憶媒体 | |
JP2883592B2 (ja) | 動画像復号化装置及び動画像復号化方法 | |
JP2002314951A (ja) | 画像処理装置、画像処理システム、走査方式変換方法、記憶媒体、及びプログラム | |
JP2883585B2 (ja) | 動画像符号化装置及び動画像符号化方法 | |
US20070071098A1 (en) | Image storage device for motion estimation and method of storing image data | |
JP2758378B2 (ja) | 動画像復号化装置及び動画像復号化方法 | |
KR100269426B1 (ko) | 개선된프레임메모리를갖는움직임보상장치 | |
JP3572819B2 (ja) | ディジタル画像圧縮符号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060829 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061226 |