(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
図1は、本発明の実施例1の動画像圧縮伸張装置を用いて、画像処理のためのシステムLSI1を構築した例を示すブロック図である。図中、5のブロックが、本実施例の動画像圧縮伸張装置に該当する。以下、図面に沿って説明する。
画像処理システムLSI1では、画像入力端子2から入力される動画像データをリアルタイムで圧縮符号化処理し、ストリームデータとしてストリーム入出力端子8より、外部に接続されたSDカード、コンパクトフラッシュ(登録商標)などの蓄積媒体にデータを蓄える装置を想定する。また、いったん外部の蓄積媒体に格納されたデータは、同LSI1に読み込まれ、動画像の復号処理の後、画像出力端子11から、図示しない外部のディスプレイに動画として出力される動作を想定する。
【0009】
まず動画像の圧縮時の動作について説明する。画像入力端子2からはここでは、Full HD相当の映像が入力されるものとする。この場合、有効画像サイズは水平1920×垂直1080画素を想定する。またフレームレートはプログレッシブ走査方式で60Hzとする。
この場合ビデオIF部3は入力されたデータを順次水平走査線方向のデータとしてたとえば、BT.709などのデジタルフォーマットで受信する。データは輝度(Y)、色差(Cb,Cr)の4:2:2成分として入力され、H.264の標準的なフォーマットとされる4:2:0成分にコンバートされた後、動画像圧縮伸張処理部5に入力される。この場合走査線方向でデータが入力されるものとする。
【0010】
一般に、H.264の動画圧縮では、入力される各画像フレームを、面内予測処理のみを行うイントラピクチャ(Iピクチャ)、時間軸上で片方向の動き予測を行う(Pピクチャ)、時間軸上で両方向の動き予測を行う(Bピクチャ)と符号化のタイプに応じていずれかのピクチャタイプでエンコードされる。
Bピクチャの場合、圧縮処理中の現在のフレームに対して、時間方向で前と後ろに存在するフレーム画像データを参照する必要がある。そのため、いったん複数枚の入力画像(以下、原画像と呼ぶ)をフレームメモリに格納し、前後のフレーム参照が可能になった段階でエンコード処理する。
【0011】
また、I、P、Bピクチャとして圧縮されたデータは、その付近の他のP、Bピクチャの動き予測のための参照フレームとして利用される。このため、当該圧縮後のデータは、圧縮装置中でいったん復号され、他の参照のためにフレームメモリに格納される。これを参照画像と呼ぶ。
本実施例では、上記処理のために、入力された原画像を動画像圧縮伸張処理部5の外部のメモリに格納する。本実施例中では、外部に大容量のDDR2−SDRAM10を接続し、その所定のメモリ空間に原画像領域を確保し、順次格納する。
【0012】
この際、データ変換部51において、外部DDR2−SDRAM10に格納する際に、動画像データ圧縮伸張処理部52と比較して、より簡易なデータ圧縮技術を用いて画像データ量を削減することにより、SDRAM10へのデータアクセス量(以下バンド幅と呼ぶ)を削減する回路を内部に設ける。
本内部回路の構成については、たとえば特許文献1における
図1の13、および17に記載のデータ圧縮回路およびデータ伸張回路を用いて実現可能である。本回路部の詳細については、前記した特許文献1の回路を活用するものとして、詳細説明は省略する。
【0013】
本実施例においては、上記DDR2−SDRAM10に画像データを格納するためのデータ圧縮回路およびデータ伸張回路を、データ変換部51として示す。本データ変換部51では、データを可逆圧縮もしくは非可逆圧縮を施すことで、そのデータ量を削減することが出来る。
また非可逆圧縮については、その圧縮率が最も悪化する場合の最悪圧縮率をあらかじめ設定することにより、データ変換後のデータ量のワーストケースが規定できるものとする。本回路には、データの所定の画素数分入力され、たとえば元のデータ量の40〜60%程度のデータ量に圧縮されたデータが出力されるようなデータ圧縮を想定する。
【0014】
この場合、圧縮されたデータは、ビット単位で連続して詰めたデータとして、出力される。一般にSDRAMへのアクセスは、バーストアクセスを行うことが効率よく、たとえばバースト長8、SDRAMのビット幅64bitの場合、1単位64bit×8=512bitを一つのバーストとして連続的にSDRAMにアクセスする。従って、4単位分2048bitの原画が入った段階で、60%にデータ量が連続して圧縮される場合には、この512bitは4単位分で約1229bit程度になるため、約3単位のデータに収めて出力することが出来る。
ここで、原画の書き込み時と読み出し時で、効率よく読むためのデータアクセス順序が異なる場合がある。たとえば本実施例では、入力はライン走査で入力されるが、出力は、H.264で一般的であるMB(マクロブロック)単位のアクセスとなる。このため、本実施例では、次に説明するような方法でアクセスする。
原画像の場合、走査線方向に入力されたデータは、逐次ロスレスもしくはロッシー圧縮変換がデータ変換回路部51において施され、DDR2−SDRAM10に格納される。
【0015】
図2は、一実施例におけるラインアクセスとブロックアクセスの変換の説明図であり、300は、ライン単位で原画が入力される様子を示す。また、301に示す範囲(前記の例では1単位、512bitに相当)ごとに、バーストアクセスでデータ変換部51にデータが出力される。このとき、各バーストは、データ変換51においてデータの圧縮変換がかかる。
たとえば、301の分のデータは、302のように通常、元のバーストデータ数以下の範囲に収まる。また圧縮されたデータは、ビット単位で詰められ、バースト長分データ変換部51に保持できた段階で、そのつどSDRAMアクセスコントローラ9に転送される。転送されたデータは、最終的にDDR2−SDRAM10に格納される。例として、300におけるハッチング部分のLine2は、データ変換されDDR2−SDRAM10中の303のハッチング部分に格納されることになる。
【0016】
次に、動画圧縮のために原画像としてデータを読み出す場合は、動画像圧縮伸張処理部52は、MB単位で原画像のデータをデータ変換部51に要求する。
データ変換部51は、DDR2−SDRAM10からデータを読む際に、304に示すように、先ずMB0のLine0から15までのデータを読む。次いでMB1、MB2、・・・と順番にMB単位でLine0から15までのデータを読む。なお、各MBのサイズは非圧縮時のデータ量に応じて決まっている。このため、304に示すように例えばデータ圧縮後のMB0を読む際には、非圧縮時のMB1、さらにはMB2に属するデータの一部も読むこととなる。
データ変換部51は、それぞれのラインのデータに逆変換(伸張)をかける。
もし、そのバースト長に、所望のMB(非圧縮時)のラインデータがある場合には、既に読んだ次のMB部分(304におけるハッチングのない部分)のデータを保持する。MB0のデータを読むために読むバースト部分は太枠で囲った304の部分のLine0〜15の位置であり、実際にMB0(非圧縮時)のデータが格納されている箇所はハッチングをかけた箇所となる。
【0017】
各ハッチング部分は、順次305に示すように、データ変換部51内で逆変換され、元のMB0の分のデータとして、動画像圧縮伸張処理部52に渡される。
MB0におけるMB1(非圧縮時)以降のデータは、次のデータ逆変換のためにデータ変換部51内で保持される。
また、MB1,2と引き続き処理が行われるが、各Lineのデータは保持されたデータに逆変換をかけ、もし続きのデータが必要になる場合には、続きのバーストが読まれる。
もし、必要にならない場合には、次のデータをリードしない。
【0018】
各Lineのデータがどれぐらいのデータ量に圧縮されるかは、入力された画像依存となり、各ラインを読み進めるうちに、更新すべきバースト位置は異なる。たとえば、MB2(非圧縮時)のデータを読む際のバーストリード位置と実際のデータ位置は306の太枠で囲った位置とハッチングのかかった位置になり、データ逆変換された後、動画像圧縮伸張処理部52に渡される部分は、307のようになる。
もし、ライト時とリード時で同じアドレス順序でアクセスする場合、一度読んだデータを破棄しないように、MBの縦幅×ライン幅の分のデータバッファを持ち、ラインごとにリードし、16ライン分たまった段階で、MB0、MB1、MB2と順次データを逆変換かける必要があり、相当数リードデータを格納するバッファが必要なる。一方、本実施例の方法でアドレス順序の変更をかける場合には、MB1個分のバーストバッファと、途中のアクセスしているビット位置を保持してバーストの境界を記憶するためのバッファ程度で回路が組め、コスト増加を抑制できるという利点を持つ。
【0019】
同じく、本実施例のデータ変換回路51を介して、動画像圧縮伸張処理部52は、参照画像のライトおよびリードを行う。この場合、基本的にライト、リードともにMB単位のデータアクセスになる。このため、各々MBのデータごとに連続でデータ変換をかけ、MBごとに本来格納するエリアに、ライト・リードしても効率的にとくに支障にならない。
次に、
図2とは異なる実施例を説明する。
図3は、一実施例におけるブロックアクセスのリードライトアクセスの説明図である。ライト時には
図3の401のMB0を402に示したように、ハッチングの部分に圧縮をかけて、保持していき、太枠で囲ったバースト単位ごとにアクセスしても良い。
最後に動画像圧縮されて生成されたストリームデータは、ロッシー圧縮技術を用いると、データが復号不可能になり、ロスレス圧縮をかけてもほとんどバンド幅圧縮の効果が無いため、データ圧縮は行わずスルーしてDDR2−SDRAM10にデータを書き込む。
【0020】
次に、伸張時の動作について説明する。ストリーム入出力端子8経由で外部メモリから読まれたストリームは、データ変換部51においては、データは変換処理されることなく、動画像圧縮伸張処理部52に出力される。入力されたストリームは可変長符号化が解かれ、各フレームの復号画像が生成される。各復号画像は、その他の画像の参照画像として使用され、また最終的にビデオIF3を経由して、ライン単位で出力される。このため、先ほどの例では参照画像はブロックアクセス処理して得られたが、本例の動画伸張時には、
図2の原画領域と同様にライン単位でデータライトされ、参照画像を参照する際にはブロックとしてリードされる。また、ビデオIF3がリードを必要とする場合には、ライン方向にそのまま読み出すという処理に変更される。
【0021】
以上のように、同じ参照画像領域でも、用途に応じて、データ変換された画像のアドレッシング順序を変更できる構成を持つことにより、各々の処理に必要なバッファのコストを削減しつつ回路を実現し、バンド幅を削減することが可能となる。
一般に動画像の画像処理LSIにおいては、
図1に示すように、動画像圧縮伸張回路5のほかに、システム管理を行うホストCPU6や、その他入力画像の画像処理を行う画像処理部4を含む複数の処理ブロックが、同一のSDRAM10へデータアクセスを行う。
図4は、一実施例におけるSDRAM10のデータ割当の例を示す。前記した事情により、メモリコントローラへのアクセス量が非常に多くなる。従い、たとえば内部バスの線数を増やす必要が生じ、また、システムクロックを引き上げる要因となる。これは結果としてシステムのチップ面積の増加を招き、消費電力を増加させることになる。従って、安価にLSIを実現する上での課題となる。本実施例は、当該の課題に対する解決方法を提供することができる。
【0022】
また、本実施例におけるデータ変換回路51はロスレス、ロッシーの切り替え機能を有する。ロスレス圧縮時には、画像の劣化は起きないが、バンド幅の削減率は扱う絵柄に応じて大きく変動するため、システム設計が難しくなる。逆にロッシーの場合には、圧縮率を確定し、その中でシステム設計できる一方で、画像の劣化が生じるため、使用用途に制限がかかる。本実施例では、例えば処理する画像に応じてロスレス、ロッシーの切り替えをすることにより、当該の課題に対する解決方法を提供することができる。
図5は、一実施例におけるロスレス圧縮とロッシー圧縮の切り替えの組み合わせを示す図である。
図5に示すように、本実施例では動作モードを指定し、その動作モードとフレームごとに、データアクセス時にロスレスかロッシーかを指定する。これにより、ユーザの要求に対して、最適な画質とバンド幅削減効果のバランスを取ることが可能となる。
データ変換回路部51で処理するデータ変換処理により、SDRAMアクセスコントローラ9とのデータアクセス量を削減することができ、結果としてシステムのコストを下げ、消費電力を下げるという効果が得られる。
【0023】
本発明の実施例では、まずH.264/AVC(ISO/IEC14496−10)に従って、Full HDの解像度の画像を圧縮伸張することを想定する。特に上記実施例では、H.264の規格に準拠した圧縮伸張処理を想定したが、他のMPEG1,2,4などフレーム間予測を行うような処理においても本発明が有効であることは明らかである。
上記、実施例でのデータアクセス方法に限らず、リード時とライト時で、他のブロックのIFの兼ね合いで、ブロック方向のアクセスと、ライン方向のアクセスの組み合わせを変更し、また、連続して格納するメモリの領域、サイズを変更しても同様の効果を得られることは明らかである。