(57)【要約】【課題】画面内の任意の位置へのアクセスが発生する画像処理装置において、メモリバス帯域を削減することのできる画像処理装置を提供する。【解決手段】画像のライトリクエストが発行されると、画像を間引き等により縮小し、縮小画像をメモリに格納する。また、縮小画像を線形補完等により拡大して、元画像との差分データを得る。この差分データをライン単位と矩形単位で、圧縮し、メモリに格納する。画像のリードリクエストは、ライン単位あるいは矩形単位で行われ、リードリクエストのあるラインあるいは矩形を含むライン単位あるいは矩形単位の差分データと、リクエストのあるラインあるいは矩形を含む圧縮が画像を読出し、拡大、展開して、加算し、要求された画像データを得る。【選択図】図４
2010141771.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
画像データを縮小して縮小画像データを生成し、前記メモリに格納するともに、前記縮小画像データを拡大して拡大画像データを生成し、前記画像データと前記拡大画像データとの差分データを異なる複数の単位で圧縮し、複数の圧縮差分データを生成して前記メモリに格納する画像データ圧縮部と、
リクエスト要求が指示する単位で前記圧縮差分データを読み出すとともに、前記縮小画像データを読み出し、前記圧縮差分データと前記縮小画像データとに基づいて伸長された画像データを生成する画像データ伸長部と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記複数の単位は、矩形単位とライン単位とを含むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
以前に読み出された前記縮小画像データと前記圧縮差分データとを格納するバッファを更に有し、
前記画像データ伸長部は、読み出すべき前記縮小画像データあるいは前記圧縮差分データが既に前記バッファに格納されている場合には、前記メモリにアクセスせず、読み出すべき前記縮小画像データあるいは前記圧縮差分データを前記バッファより読み出すことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記圧縮差分データの前記メモリへの格納は、前記圧縮の単位で指定の領域へ格納することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
画像データを縮小して縮小画像データを生成し、
前記縮小画像データを拡大して拡大画像データを生成し、
前記画像データと前記拡大画像データとの差分データを第１の単位で圧縮して第１圧縮差分データを生成し、
前記画像データと前記拡大画像データとの差分データを第２の単位で圧縮して第２圧縮差分データを生成し、
リクエスト要求に基づいて、前記第１圧縮差分データ又は前記第２圧縮差分データの何れかを選択し、
前記選択された圧縮差分データと前記縮小画像データとに基づいて伸長された画像データを生成すること
を特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びその方法に関する。
【背景技術】
【０００２】
ハイビジョン放送、大容量光ディスクなどの普及により、画像処理LSI の扱う画像は大画面化が進み、機能も益々高度になってきている。大画面化、高機能化が進むにつれて、画像処理LSI が使用するメモリ容量およびメモリバス帯域は増加の一途を辿っている。
【０００３】
小容量のメモリで大画面の画像データを処理するための従来技術として、縮小画像と圧縮差分データでメモリへの格納を行う手法(特許文献１)がある。縮小画像は、元画像を間引いて作成し、差分データは、縮小画像を再び拡大した画像と元画像の差分をとったものとする。元画像から縮小画像を生成し、これを再び拡大すると、元画像に比べ情報量が落ちるので、画質が落ちてしまう。そこで、縮小画像で落ちた情報を差分データとしてとっておき、画像を復元する場合に、縮小画像を拡大したものと、差分データとを合成するようにすることにより、画像の情報量が落ちるのを防ぐようにしている。なお、差分データは、格納する場合には、圧縮して圧縮差分データとしておくことにより、格納領域の節約を行う。本従来技術は、プリンタ等の用途のため、1 画面分の画像データを決まった順序で処理することを想定しており、画面内の任意の位置に対してアクセスするような用途には向いていない。
【０００４】
例えば、MPEG デコーダにおいては、参照画アクセスのために、画面内の任意の位置の矩形領域を読み出す可能性があるが、本従来技術においてはこのようなアクセスは想定しておらず、効率的なアクセスはできない。特に圧縮差分データについては、画面分のデータをまとめて可変長符号化してしまうと、画面内の指定位置のデータを特定することは困難なため、圧縮差分データの最初から順に展開処理を行っていく必要がある。よって、参照画アクセスのような任意位置の読み出しの場合では、実際には使用しない不要な圧縮差分データを読み出すことになり、かえってメモリアクセス量が増える結果となる。以上のような理由から、メモリバス帯域の観点では、従来技術はMPEG デコータのような画面内の任意位置のアクセスを行うような装置には適用できなかった。
【特許文献１】特開平５−２２７４４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の課題は、画面内の任意の位置へのアクセスが発生する画像処理装置において、メモリバス帯域を削減することのできる画像処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明の画像処理装置は、メモリと、画像データを縮小して縮小画像データを生成し、前記メモリに格納するともに、前記縮小画像データを拡大して拡大画像データを生成し、前記画像データと前記拡大画像データとの差分データを異なる複数の単位で圧縮し、複数の圧縮差分データを生成して前記メモリに格納する画像データ圧縮部と、リクエスト要求が指示する単位で前記圧縮差分データを読み出すとともに、前記縮小画像データを読み出し、前記圧縮差分データと前記縮小画像データとに基づいて伸長された画像データを生成する画像データ伸長部とを備える。
【発明の効果】
【０００７】
本発明によれば、画面内の任意の位置へのアクセスが発生する画像処理装置において、
メモリバス帯域を削減することのできる画像処理装置を提供することができる。
【発明を実施するための最良の形態】
【０００８】
本発明の実施形態では、MPEG やH.264 などのデコーダおよびエンコーダ装置など、高いメモリバス帯域を要求する装置において、メモリバスの使用帯域を削減する手法及び構成を提供する。
【０００９】
特に、本実施形態では、画像処理装置において、メモリへの書き込み時には、画像データを一旦縮小して、縮小した画像データを再度拡大し、元画像との差分データを作成する。その後、作成された差分データを複数の異なる画面内領域単位で圧縮して、縮小画像と複数の圧縮差分データをメモリに格納する。読み出し時には、縮小画像といずれかの圧縮差分データを読み出し、それぞれ拡大、展開したのち、加算して元画像を復元する。
【００１０】
また、画像処理装置において、メモリへの書き込み時には、画像データを一旦縮小して、縮小した画像データを再度拡大し、元画像との差分データを作成する。その後、作成された差分データを複数の異なる画面内領域単位で圧縮して、縮小画像と複数の圧縮差分データをメモリに格納する。読み出し時には、縮小画像のみを読み出して拡大画像を作成する方法と、縮小画像といずれかの圧縮差分データを読み出し、それぞれ拡大、展開したのち、加算して元画像を復元する。
【００１１】
差分データを圧縮する画面内領域単位は、一つは、ライン単位であり、一つは画面を指定の矩形サイズで分割した矩形の単位である。その単位ごとに指定のメモリ領域に圧縮差分データを格納する。
【００１２】
図１に縮小画像と圧縮差分データのメモリ格納イメージを示す。
図１は、縦1/2、横1/2 の間引きで縮小画生成した場合の例であり、差分データは、ラインの単位での圧縮と、16x16 矩形の単位で圧縮した形式である。
【００１３】
図１（ａ）は、元画像を示しており、丸は画素を示している。図１（ａ）の元画像から縦横方向に２行に１行を間引くことにより、縦横1/2圧縮された縮小画像が得られる。その縮小画像が図１（ｂ）である。縮小画像においては、図１（ａ）の太い丸で表された画素のみが残ることになる。縮小画像は、全体の画像が、図１（ｃ）の左に示されるように、縮小画像として格納領域に格納される。一方圧縮差分データは、図１（ｃ）の真ん中あるいは右に示されているように、差分データをライン単位、あるいは、所定サイズの矩形単位に分割し、ラインごと、あるいは、矩形ごとに圧縮する。圧縮されたラインデータ、あるいは、圧縮された矩形データは、それぞれ、格納領域内における先頭位置のアドレスが与えられ、ライン単位、あるいは、矩形単位で格納される。したがって、特定のラインデータ、あるいは、特定の矩形データを読み出したいときには、その先頭位置のアドレスを指定することにより、容易に読み出すことが出来るように、格納領域に格納される。
【００１４】
図２は、差分データ圧縮処理順の例を示す。
図２（ａ）は、ライン単位で圧縮差分データを生成する場合の処理順序であり、差分データの行０から横方向に１９２０画素分のデータを読み込み圧縮する。行０が終わったら、行１というように、順次行０から縦方向に向かって処理を行っていく。ライン単位の圧縮では、ライン番号を識別子とする。識別子と格納領域の先頭アドレスとを対応付けておくことにより、読み出したいラインを先頭アドレスを指定することで読み出せるようになる。なお、必ずしも1ライン全てのデータを1単位とする必要はなく、1ラインを複数の領域に分割したライン領域を1単位としても良い。図２（ｂ）は、矩形単位で圧縮差分データを生成する場合の処理順序である。図２（ｂ）に示されるように、横１９２０画素、縦１０８８画素からなる差分データを１６画素×１６画素の矩形に分割し、それぞれの矩形に識別子を付けておく。左上端の矩形ならば、（０，０）を識別子とし、行方向に行くに従い、（１，０）、・・・（１１９，０）と、行方向の座標値を大きくし、列方向に行くに従い、（０，１）、・・・（０，６７）と、列方向の座標値を大きくする。そして、１６画素×１６画素のブロック単位で、圧縮を行い、格納領域に格納する。識別子と格納領域の先頭アドレスとを対応付けておくことにより、読み出したい矩形領域を先頭アドレスを指定することで読み出せるようになる。なお、矩形の大きさは、必ずしも１６画素×１６画素である必要は無い。
【００１５】
また、差分データを圧縮する画面内領域単位毎（ライン毎、矩形毎）の圧縮差分データサイズを算出および記録するようにする。記録手段としては、圧縮差分データの先頭に圧縮差分データのサイズを書き込んでおいても良いし、別途テーブルとして記録しておいても良い。サイズは必ずしも厳密な値である必要はなく、リード時のメモリアクセスサイズの単位で記録されていれば良い。
【００１６】
読出し要求が矩形読み出しの場合は、元画像の矩形領域に対応する縮小画像内の矩形領域と、元画像の矩形領域に対応する領域を含む矩形単位で圧縮された差分データを読み出す。そして、それぞれ拡大、展開した後、要求の矩形領域以外のデータは破棄し、要求の矩形領域内の縮小画像からの拡大画像データと圧縮差分データからの展開データを加算して元画像を復元する。
【００１７】
読出し要求がライン読み出しの場合は、元画像のラインに対応する縮小画像内のラインと、元画像のラインに対応するライン単位で圧縮された差分データを読み出す。そして、それぞれ拡大、展開した後、要求の領域以外のデータは破棄し、要求の縮小画像からの拡大画像データと圧縮差分データからの展開データを加算して元画像を復元する。
【００１８】
また、本実施形態では、画像処理装置おいて、過去に読み出した差分データを格納する内蔵メモリを設ける。２回目以降の読み出し要求で指示された領域に、内蔵メモリに格納されている差分データの領域が含まれている場合には、該当する圧縮差分データは読み出さずに、内蔵メモリの差分データを使用して元画像を復元する。内蔵メモリは、矩形単位の差分データを格納する内蔵メモリと、ライン単位での差分データを格納する内蔵メモリを個別に設ける。矩形読み出しに対しては、矩形用の内蔵メモリを使用し、ライン読み出しに対しては、ライン用の内蔵メモリを使用する。
【００１９】
画像データを矩形アクセスするモジュールとラインアクセスするモジュールが接続されたメモリコントローラを考える。矩形アクセスするモジュールからのリクエストに対しては、縮小画像と矩形アクセス用の圧縮差分データを読み出し、ラインアクセスするモジュールからのリクエストに関しては、縮小画像とラインアクセス用の圧縮差分データを読み出す。これにより、メモリへの１回のアクセスあたりのデータアクセス量を削減することが可能である。
【００２０】
図３は、メモリへのデータアクセス量の削減の様子を説明する図である。
例えば、元画像サイズで画面内の256 画素(ライン読み出し時256x1、矩形読み出し時16x16)を読み出す場合を考える。図３（ａ）、（ｂ）に示すように、縮小画像の作成方法は縦1/1(間引きなし)、横1/4 間引き、縮小画像から拡大画像の作成方法は、線形補間とする。また、差分データは、元画像サイズの画面領域の256 画素単位(ライン用256x1 領域、矩形用16x16 領域)で圧縮するものとし、差分データの圧縮率は元画像の1/8 とする。なお、ここでは縮小方式が間引きであるため、縮小画像に書き込まれた画素の値と元画像の対応する画素の値間の差分値は常にゼロとなるため、該当画素に関しては差分データとしては書き込まない。したがって、差分データは、元画像の3/4の画素を保持することになる。以下の３つの方式でメモリへのデータアクセス量を比較する。以下の表および計算では、一回のアクセスで必要となるデータアクセス量を画素数で示している。
方式1：元画像をそのままメモリに格納
方式2：縮小画像とライン用の圧縮差分データのみをメモリに格納
方式3：縮小画像とライン用/矩形用両方の圧縮差分データをメモリに格納
【表１】
2010141771.tif 000003
【００２１】
アクセス量計算
Write
方式1  16x16(元画像)=256
方式2  4x16(縮小画像)  +  256x3/4x1/8(圧縮差分データ)  =  88
方式3  4x16(縮小画像)  +  256x3/4x1/8x2(圧縮差分データ2種)  =  112
【００２２】
方式１では、元画像をそのままメモリに格納するので、１回のアクセスで２５６画素の容量を必要とする。一方、方式２では、縮小画像は、横方向に1/4間引きされた縮小画像と圧縮差分データを書き込むことになる。圧縮差分データは、２５６画素×１ライン画素ずつのアクセスとなる。圧縮差分データは、元画像の3/4の画素を持っており、圧縮率が1/8であるので、上記のようになる。方式３は、縮小画像については、方式２と同じである。圧縮差分データは、１６画素×１６画素ブロック単位と、２５６画素×１ライン単位で書き込むことになる。このとき、圧縮差分データは、元画像の3/4画素を有しており、1/8の圧縮率である。そして、方式３では、ライン単位の圧縮と矩形単位の圧縮を行うので、２が掛かっている。
【００２３】
ラインRead
方式1  256x1(元画像)=256
方式2  65x1(縮小画像)  +  256x3/4x1/8x1(圧縮差分データ1領域)  =  89(Min)
66x1(縮小画像)  +  256x3/4x1/8x2(圧縮差分データ2領域)  =  114(Max)
方式3  65x1(縮小画像)  +  256x3/4x1/8 (圧縮差分データ1領域)  =  89(Min)
66x1(縮小画像)  +  256x3/4x1/8x2(圧縮差分データ2領域)  =  114(Max)
【００２４】
方式１では、２５６画素の１ラインをそのまま読む。方式２では、行方向に２５６画素分読むので、縮小画像は、横に1/4になった縮小画像中の対応するラインを、４個横方向に読む必要がある。このとき、縮小画像の画素を●とし、線形補完された画素を○と表すと、●○○○●○○○となる場合がある。この場合には、左のほうの○を線形補完によって求めるためには、右端にもう一つ縮小画像の画素●が必要となる。また、○○○●○○○●○○○となる場合もあり、この場合には、両端に縮小画像の画素●が必要となる。したがって、どの部分のラインを読み出すかによって、１６画素×４＋１（または、＋２）＝６５（または、６６）の縮小画像の画素を読み込む必要が生じる。圧縮差分データについては、読出しラインが1つのアクセス単位だけが必要な場合と、２つのアクセス単位のラインをまたいでいる場合がある。そのため、最大では２つのアクセス単位のラインを読み込む必要がある。方式３は、矩形単位で圧縮差分データを保持しているが、ライン単位でも保持しているので、ライン単位での読出しのときは、ライン単位で保持しているデータを読み込むようにする。したがって、方式２の場合と同様となる。
【００２５】
矩形Read
方式1  16x16(元画像)=256
方式2  5x16(縮小画像) + 256x3/4x1/8x16(圧縮差分データ16領域) = 464(Min)
6x16(縮小画像) + 256x3/4x1/8x32(圧縮差分データ32領域) = 864(Max)
【００２６】
方式２において、１６×１６ブロックを読み出す場合、縮小画像は、ライン読み込みの場合の方式２の場合と同じように、線形補完の関係で、読出しブロックの位置により、（４＋１）×１６行だけ読み出すか、（４＋２）×１６行だけ読み出すかが変わる。また、圧縮差分データの読み出しラインが水平方向に1つのアクセス単位だけが必要な場合と、２つのアクセス単位のラインをまたいでいる場合がある。１６行読み出す場合、矩形が２つのアクセス単位をまたぐ場合には、２単位×１６行、すなわち３２アクセス単位を読み込むことが必要となってくる。すなわち、圧縮単位はライン単位であるが、処理単位はマクロブロックの１６画素×１６画素なので、１６行ずつのアクセスになっているとしている。
【００２７】
方式3  5x16(縮小画像) + 256x3/4x1/8(圧縮差分データ1領域) = 104(Min)
6x16(縮小画像) + 256x3/4x1/8x4(圧縮差分データ4領域) = 192(Max)
【００２８】
方式３においては、縮小画像については、方式２と同じであるが、矩形単位でも圧縮差分データを保持しているので、矩形Readの場合は矩形単位の圧縮差分データを読み出すようにする。圧縮差分データについては、読出し矩形領域が、１つの保持単位ブロックに含まれるか、２つの単位ブロックにまたがるか、４つの単位ブロックにまたがるかによって、読出しデータ量が異なってくる。
【００２９】
上記アクセス量の比較結果から、本実施形態の方式３を用いることにより、矩形アクセス、ラインアクセスの両方においてメモリアクセス量を削減することが可能である。
【００３０】
表示サイズが元画サイズよりも十分小さい場合など、画像データの用途によっては、元画像を完全に復元しなくても、画質的に問題がないケースもある。このような用途の場合は、縮小画像のみを読み出すことにより、圧縮差分データのアクセスを省略して更にメモリアクセス量を削減することが可能である。リクエスト発行元の要求に応じて、縮小画像データは、拡大してから送出する方法もあるし、縮小画像のまま送出する方法もある。
【００３１】
圧縮差分データは、圧縮単位で圧縮後のサイズが可変となるため、サイズが分からないと無駄なメモリアクセスをしなければならない可能性がある。そこで、圧縮処理後、格納前にサイズを計算し記憶しておくと、必要なサイズが分かるようになり、無駄なメモリアクセスを避けることができる。
【００３２】
差分データを可変長符号で圧縮してメモリに格納した場合、リクエスト発行元が要求する画面内の指定領域に対応する差分データの格納位置を完全に特定することはできない。また、通常の可変長符号の場合、符号化単位の最初から展開処理を行う必要があるため、実際には使用しない領域のデータも読み出して、展開処理を行う必要がある。リクエスト発行元の読み出し方式に応じて、必要な領域を含む圧縮差分データの読み出しを行い、展開後、不要な部分を廃棄することにより、必要な領域のみの元画像を復元することができる。
【００３３】
通常、画像データ処理は画面内で決まった順序で行われることが多く、あるモジュールからの連続する読み出しリクエストにおいては、画面内の近傍の領域をアクセスする場合が多い。一つのリクエストで読み出される圧縮差分データは、圧縮する単位でまとまったデータであり、そのリクエストでは使用しない不要な部分を含む場合があるが、次のリクエストで必要なデータであることも多い。そこで、内蔵メモリにこの差分データを格納しておき、次のリクエストで内蔵メモリ内の差分データの領域への要求があった場合には、外のメモリへのアクセスは行わずに、その分のメモリアクセス量を削減することができる。
【００３４】
差分データを格納する内蔵メモリは、読み出し要求元毎に複数持っても良い。例えば、MPEGデコーダなどでは、参照画読み出し用の差分データ格納用内蔵メモリと、表示読み出し用の差分データ格納用内蔵メモリがあると効率的である。
【００３５】
なお、内蔵メモリへの差分データの格納方法としては、展開後の差分データでもよいし、展開前の圧縮差分データでも良い。展開後の差分データ形式で格納していれば、次のアクセスで展開処理を行わずに処理することができるし、展開前の圧縮差分データの形式で格納していれば、その分、内蔵メモリの容量を削減することができる。
【００３６】
図４は、本発明の第１の実施形態を適用したMPEG デコーダLSI のブロック構成図である。
本LSI９は、MPEG デコーダ部１０、表示制御部１１、メモリコントローラ部１２の３つのブロックで構成され、デコード結果の画像等を格納するための外部メモリ（SDRAM）１３が接続される。MPEG デコーダ部１０は、入力されたMPEG ストリームの復号処理を行い、デコード画像を生成するブロックである。結果のデコード画像は、メモリコントローラ部１２を介してSDRAM１３ へ書き込まれる。デコード処理中、必要に応じて、過去のデコード画像を参照画像として読み出して使用する。表示制御部１１はMPEG デコーダ部が生成したデコード結果画像をメモリコントローラ部１２経由で読み出して表示装置へ出力するブロックである。メモリコントローラ部１２は、MPEG デコーダ部１０および表示制御部１１からの要求に応じて、SDRAM１３へのアクセスを管理するブロックである。
【００３７】
メモリコントローラ部１２には、MPEGデコーダ部１０や表示制御部１１からのリクエストを受け付けるリクエスト制御部１５が設けられている。リクエスト制御部１５は、リクエストを受け付けると、リクエスト変換部１９にリクエストを送り、画像データ圧縮部１６や矩形画像データ展開部１７、ライン画像データ展開部１８への制御信号を生成させる。
【００３８】
MPEGデコーダ部１０からライトリクエストが発行されると、画像データ圧縮部１６は、画像格納メモリ２０において、ライトデータを受け取り、画像縮小回路２１にデータを入力する。画像縮小回路２１は、画像を縮小し、SDRAMアクセス制御部３７を介して、SDRAM１３に縮小画像を書き込む。また、縮小画像は、画像拡大回路２２において、拡大され、減算器２３において、元画像との差分が取られる。差分データは、差分データ格納メモリ２４に格納され、矩形用差分データ圧縮回路２５とライン用差分データ圧縮回路２６に入力される。矩形用差分データ圧縮回路２５とライン用差分データ圧縮回路２６では、差分データが、矩形単位の圧縮差分データと、ライン単位の圧縮差分データに変換され、SDRAMアクセス制御部３７を介して、SDRAM１３に書き込まれる。
【００３９】
MPEGデコーダ部１０から、矩形リードリクエストが発行されると、矩形画像データ展開部１７は、SDRAMアクセス制御部３７を介して、SDRAM１３から縮小画像データと矩形用圧縮差分データを読み取る。縮小画像データは、縮小画像格納メモリ２７に格納された後、矩形用画像拡大回路２９において拡大される。矩形用圧縮差分データは、差分データ格納
メモリ２８に格納された後、矩形用差分データ展開回路３０において、展開される。拡大された縮小画像と展開された矩形用差分データは、加算器３５において、加算され、矩形リードデータとして、MPEGデコーダ部１０に送られる。
【００４０】
表示制御部１１からラインリードリクエストが発行されると、ライン画像データ展開部１８は、SDRAMアクセス制御部３７を介して、SDRAM１３から縮小画像とライン用圧縮差分データを読み込む。縮小画像データは、縮小画像格納メモリ３１に格納された後、ライン用画像拡大回路３３において拡大される。ライン用圧縮差分データは、差分データ格納メモリ３２に格納された後、ライン用差分データ展開回路３４によって展開される。拡大された縮小画像と展開されたライン用圧縮差分データは、加算器３６において加算され、ラインリードデータとして、表示制御部１１に渡される。
【００４１】
また、矩形リードリクエストは、MPEGデコーダ部１０から、ラインリードリクエストは、表示制御部１１から発行されているが、これは、MPEGによる処理をする場合は、参照画像を矩形単位で参照し、表示画像を生成する場合には、ライン単位で画像を参照するからである。しかし、一般に、デコーダがラインリードアクセスしても良いし、表示制御部が矩形リードアクセスしても良い。
また、図４は、デコーダの構成であるが、メモリコントローラ部１２の構成は、エンコーダでも同様である。
【００４２】
図５に、本発明の第１の実施形態のメモリコントローラの処理フローを示す。
まず、ステップＳ１０において、各ブロックからのリクエストを受信する。ステップＳ１１において、複数のリクエストがあるか否かを判断する。複数のリクエストを受信した場合には、ステップＳ１２において、リクエストの調停を行い、処理を行う一つのリクエストを選択する。ステップＳ１３において、選択したリクエストの内容を解析し、ライトリクエスト、矩形リードリクエスト、ラインリードリクエストのいずれかを判断し、それぞれに対する処理を行う。
【００４３】
ステップＳ１４において、ライトリクエストか否かを判断し、ライトリクエストでない場合には、ステップＳ２６に進む。ライトリクエストの場合には、ステップＳ１５において、まずリクエスト要求元からライトデータ(元画像データ)を取得する。次に、ステップＳ１６において、元画像の縮小画像を生成し、ステップＳ１７において、その縮小画像の拡大画を生成する。その後、ステップＳ１８において、元画像と生成した縮小後拡大画の間で差分を取り、差分データを作成する。ステップＳ１９とステップＳ２０において、差分データは、矩形用の圧縮とライン用の圧縮の2 種類の圧縮が行われる。ステップＳ２１において、生成された、縮小画、矩形用圧縮差分データ、ライン用圧縮差分データは、それぞれ、SDRAM に書き込まれる。ただし、圧縮差分データに関しては、圧縮する単位によって、一つのライトリクエストのデータだけで圧縮が完結するとは限らないため、圧縮する単位のデータがまとまった時点で書き込みが行われる。すなわち、ステップＳ２２において、矩形用差分データ書込み単位分のデータがたまったか否かを判断し、たまった場合には、ステップＳ２３で矩形用圧縮差分データをSDRAMへ書き込む。また、ステップＳ２４において、ライン用差分データ書込み単位分だけデータがたまったか否かを判断し、たまった場合には、ステップＳ２５において、ライン用圧縮差分データをSDRAMに書込み、処理を終了する。
【００４４】
ステップＳ２６では、矩形リードリクエストか否かを判断する。矩形リードリクエストで無い場合には、ステップＳ３３に進む。矩形リードリクエストの場合には、ステップＳ２７およびステップＳ２８において、リクエスト内容からSDRAM からリードすべき、縮小画領域と矩形用圧縮差分データ領域を判断して、SDRAM から必要データをリードする。縮
小画像は1 矩形領域となるが、矩形用圧縮差分データは複数領域にまたがる可能性があるために、複数のリクエストに分かれる場合がある。次に、ステップＳ２９、Ｓ３０において、リードした縮小画像を拡大、矩形用圧縮差分データは展開し、ステップＳ３１において、両者を加算して元画像を復元する。このとき、リードした矩形用圧縮差分データには、リクエスト元からの要求の矩形領域外のデータが含まれている場合があるので、展開後、必要領域のみ切り出して使用する必要がある。ステップＳ３２最後に復元された元画像をリクエスト要求元に送信する。
【００４５】
ラインリードリクエストの場合には、ステップＳ３３で、縮小画像をSDRAMから読み、ステップＳ３４において、ライン用圧縮差分データをSDRAMから読む。ステップＳ３５において、縮小画像を拡大し、ステップＳ３６において、ライン用圧縮差分データを展開する。ステップＳ３７において、拡大画像と展開された差分データとを加算し、元画像を復元する。復元された元画像は、リクエスト元へ送信される。
【００４６】
なお、圧縮差分データのリードに関しては、圧縮後のデータサイズが分からないと読み出しサイズを確定できないが、無駄なメモリアクセスを避ける方法としては、ライト時にデータサイズ計算し、読み出したデータの先頭にサイズを書き込んでおく方法や、別途、圧縮後のデータサイズを記したテーブルを持っておく方法などがある。
【００４７】
ラインリードリクエストの場合にも、リクエスト内容からSDRAM からリードすべき、縮小画領域とライン用圧縮差分データ領域を判断して、SDRAM から必要データをリードする。縮小画像は1 ライン領域となるが、ライン用圧縮差分データは複数領域にまたがる可能性があるために、複数のリクエストに分かれる場合がある。次に、リードした縮小画像を拡大、ライン用圧縮差分データは展開し、両者を加算して元画像を復元する。このとき、リードしたライン用圧縮差分データには、リクエスト元からの要求のライン領域外のデータが含まれている場合があるので、展開後、必要領域のみ切り出して使用する必要がある。最後に復元された元画像をリクエスト要求元に送信する。
【００４８】
縮小画の生成方法としては、サブサンプリング、平均処理、縮小フィルタ処理などが考えられる。また、拡大画の生成方法としては、画素コピー、平均処理、拡大フィルタ処理などが考えられるがいずれを使用してよい。また、矩形境界の処理方法についても、ライト時の1 リクエストの矩形サイズ内のデータで拡大処理を行う方法と、矩形サイズ外の周辺画素を使用する方法が考えられる。MPEG デコーダでは通常、マクロブロック(16 画素x16 画素)の単位でライト処理が行われるので、その矩形内のデータだけで縮小画生成処理と拡大画生成処理を行う方法が一つである。
【００４９】
図６に、拡大画生成時の矩形境界領域の取り扱い方法の一例を示す。
縮小画像生成方法は、水平1/4 のサブサンプリング(垂直方向の縮小なし)、拡大画像生成方法は線形補間とする。線形補間で拡大画像を生成する際、水平位置13,14,15 の画素を生成するためには、水平位置16 の画素が必要であるが、これは、該当マクロブロックに含まれない画素であるために、ここでは水平位置12 のコピーとして扱う。すなわち、線形補間では、水平位置13,14,15 の画素値は、水平位置12 の画素値と等しくなる。別の方法は、次マクロブロックの画素値を使用する方法である。
【００５０】
この手法では、拡大画を作成する際に、次のマクロブロックのデータ入力を待つ必要があるために、該当マクロブロックの処理では、水平位置13,14,15 の差分データが生成できないことに注意が必要である。
【００５１】
図７は、矩形リードアクセス時の画像復元イメージを示す図である。
図７（ａ）に示されるように、矩形リードのリクエスト領域が、マクロブロック（０，
０）と（１，０）にまたがっていたとする。まず、リクエスト領域を含む縮小画像と差分圧縮データを読み込み、それぞれ拡大化及び展開を行う。そして、リクエスト領域の部分のみを切り出して加算し、復元画像を得る。ここで、リクエスト領域部分を切り出すのは、復元画像を得てからか、その前か両方あるが、いずれでもよい。ただし、切り出すのは、加算処理によって復元画像を得る前のほうが、加算処理の処理量が減って好ましい。
【００５２】
図８に、アクセス要求元からの一つのリクエストに対して、メモリコントローラが生成するリクエストの処理フローを示す。
なお、本フローでは、縮小画生成方法は、縦1/1(縮小なし)、横1/4 の間引き処理、拡大画生成方法は線形補間、矩形用圧縮差分データ領域単位は16 画素x16 画素領域、ライン用圧縮差分データ領域単位は、ライン方向256 画素単位とする。なお、本フローの処理は、図４のブロック図中のリクエスト変換部１９で実行されるが、画像の縮小/拡大処理および差分データの圧縮処理等のデータ処理は、それぞれ、画像データ圧縮部１６、矩形画像データ展開部１７、ライン画像データ展開部１８にて処理される。
【００５３】
ステップＳ４０において、ライトリクエストか否かが判断される。MPEG デコーダのライト処理を想定し、ライトリクエストは常にマクロブロック(16x16 画素)単位で行われ、リクエスト発行順序もマクロブロック処理順になっているものとする。ステップＳ４１において、ライトリクエストのパラメータとして、左上座標(16n,16m)、矩形サイズ(16,16)を受け取った場合、縮小画空間での座標、サイズは、水平方向に1/4 としたものとなるので、ステップＳ４２において、左上座標(4n,16m)、矩形サイズ(4,16)を取得する。メモリコントローラは、縮小画像空間の座標、サイズを新たなパラメータとして縮小画のライト処理を行う。次に、矩形用圧縮差分データの書き込みに関しては、16x16 画素単位なので、基本的に1 マクロブロックに1領域分書き込みが行われるが、差分データ作成時に、拡大画像生成のために右隣接マクロブロックの画素値が必要となるため、画面左端マクロブロックではライト処理は行われず、1 マクロブロックずれた形でライト処理が行われる。したがって、ステップＳ４３において、現マクロブロックが、画面左端マクロブロックであるか否かが判断される。そして、左端マクロブロックで無い場合には、ステップＳ４４において、矩形用圧縮差分データ（n-1,m）がSDRAMに書き込まれる。なお、画面右端のマクロブロックでは、2 領域分のライト処理が行われる。したがって、ステップＳ４５においては、現マクロブロックが画面右端のマクロブロックか否かが判断される。右端マクロブロックの場合には、ステップＳ４６において、矩形用圧縮差分データ（n,m）をSDRAMに書き込む。
【００５４】
次に、ライン用圧縮差分データについては、ライン方向の256 画素単位で圧縮する形なので、16 マクロブロック毎に16ライン分の圧縮差分データがライトされる。ここでは、差分データ作成時に拡大画生成で右隣接マクロブロックの画素が必要なので、1 マクロブロックずれた形で書き込み処理が行われる(例えば、0〜15 マクロブロックの差分データのライト処理は、マクロブロック16 の処理時に行われる)。したがって、ステップＳ４７において、現在のマクロブロックが、右端のマクロブロックあるいは、nが１６の倍数か否かが判断される。ステップＳ４７の判断がＹｅｓの場合には、ステップＳ４８のループに入り、iが０から１５まで１刻みで変わる間に、ステップＳ４９で、ライン用圧縮差分データ（n/16、16m+i）をSDRAMに書き込む。
【００５５】
ステップＳ５０において、リクエストが矩形リードリクエストか否かが判断される。矩形リードリクエストの場合は、任意の座標、サイズのリクエストがあると仮定する。ステップＳ５１において、矩形リードリクエストのパラメータとして、左上座標(X0,Y0)、矩形サイズ(SX,SY)を受け取った場合、縮小画像空間での座標、サイズを計算する。矩形領域の左上座標と右下座標から、縮小画空間での必要画像領域を計算する。ステップＳ５２において、右下座標（X1,Y1）を、X1=X0+SX-1、Y1=Y0+SY-1として計算する。ステップＳ
５３において、縮小画像における矩形の左上座標（X0',Y0'）と、右下座標（X1',Y1'）を計算する。計算式は以下の通りである。
X0'=X0/4
Y0'=Y0
X1'=(X1+3)/4
Y1'=Y1
【００５６】
次に、ステップＳ５４において、左上画素を含む圧縮単位の差分データの矩形領域座標（RX0,RY0）を計算する。計算式は、以下の通りである。
RX0=X0/16
RY0=Y0/16
【００５７】
次に、ステップＳ５５において、右下画素を含む圧縮単位の差分データの矩形領域座標（RX1,RY1）を計算する。計算式は、以下の通りである。
RX1=X1/16
RY1=Y1/16
【００５８】
ステップＳ５６において、左上座標（X0',Y0'）、サイズ（X1'-X0'+1,Y1'-Y0'+1）の縮小画像を読み込む。ステップＳ５７は、iをRX0からRX1まで１刻みで変化させるループである。ステップＳ５８は、jをRY0からRY1まで１刻みで変化させるループである。ステップＳ５７とＳ５８のループの中で、ステップＳ５９において、矩形用圧縮差分データ（i,j）を読み込む。
【００５９】
元画像において、矩形の左端座標が４の倍数でなかった場合、線形補間のために縮小画像における左端座標の左側の画素から必要であり、同様に右端座標が4 の倍数でなかった場合、縮小画像で、右端座標の右側の画素から必要になる。よって、縮小画空間でのリクエストパラメータは、左上座標(X0/4,Y0)、サイズ( (X0+SX+2)/4 - X0/4 + 1,SY)となる。矩形用圧縮差分データについてどの矩形領域のデータをリードするかについては、左上画素が含まれる矩形領域と右下画素が含まれる矩形領域から算出され、必要な数の矩形用圧縮差分データのリード処理を行う。
【００６０】
ラインリードリクエストの場合も、任意の座標、サイズのリクエストがあると仮定する。ステップＳ６０において、ラインリードリクエストのパラメータとして、左端座標(X0,Y0)、サイズSXを受け取った場合の縮小画像空間での座標、サイズを計算する。矩形リードと同じ考え方で、左端座標と右端座標から、縮小画空間での必要画像領域を計算すると、縮小画像上でのリクエストパラメータは、左端座標(X0/4,Y0)、サイズ (X0+SX+2)/4 - X0/4+ 1 となる。ライン用圧縮差分データについてどのライン領域のデータをリードするかについては、左端画素が含まれるライン領域と右端画素が含まれるライン領域から算出され、必要な数のライン用圧縮差分データのリード処理を行う。
【００６１】
ステップＳ６１において、元画像上での右端座標（X1,Y1）を以下の式に基づいて算出する。
X1=X0+SX-1
Y1=Y0
【００６２】
ステップＳ６２において、縮小画像上でのライン左端座標（X0',Y0'）とライン右端座標（X1',Y1'）を以下の式にしたがって計算する。
X0'=X0/4
Y0'=Y0
X1'=(X1+3)/4
Y1'=Y1
【００６３】
ステップＳ６３において、左端画素を含む圧縮単位のライン領域の座標（LX0,LY0）を以下の式に基づいて算出する。
LX0=X0/256
LY0=Y0
【００６４】
ステップＳ６４において、右端画素を含む圧縮単位のライン領域の座標（LX1,LY1）を以下の式にしたがって算出する。
LX1=X1/256
LY1=Y1
【００６５】
ステップＳ６５において、左端座標（X0',Y0'）、サイズX1'-X0'+1の縮小画像を読み込む。ステップＳ６６は、kをLX0からLX1まで、１刻みで変化させるループである。ステップＳ６６のループの中で、ステップＳ６７において、ライン用圧縮差分データ（k,LY0）を読み込む。
【００６６】
以上のような機能を搭載したメモリコントローラを適用することにより、SDRAM へのメモリアクセス量を削減することが可能である。
【００６７】
以下に、リードアクセス時に、縮小画像のみを用いて拡大画を作成するモードを追加した第２の実施形態を示す。ブロック構成は基本的に上述の実施形態と同様であるが、第２の実施形態では、矩形リードリクエストとラインリードリクエストの際に、リクエスト発行元が、リクエスト発行時に縮小画像と差分データ両方を使用するか、縮小画像のみを使用するかをパラメータとして渡す方式とする。例えば、表示制御部は表示画像が大きい場合には、縮小画像と差分データ両方を使用するモードのリクエストを発行するが、表示画像が小さい場合には、縮小画像のみのモードのリクエストを発行する。MPEG デコーダ部は、将来参照画として使用されるP ピクチャ処理時には、縮小画像と差分データ両方を使用するモードのリクエストを発行するが、将来参照画として使用されないB ピクチャ処理時には、誤差の累積が起こらないので、縮小画像のみのモードのリクエストを発行する。
【００６８】
図９に、第２の実施形態のメモリコントローラの処理フローを示す。
図９において、図５と同じステップには、同じ参照符号を付して、説明を省略する。
矩形ライトリクエスト、差分データありの矩形リードリクエストとラインリードリクエストは、第１の実施形態と同様のフローである。差分データなし(縮小画のみ)の矩形リードリクエストとラインリードリクエストに関しては、差分データをSDRAM から読み出す必要がないため、縮小画をSDRAM からリードした後、拡大画像を生成し、リクエスト発行元にデータを送信する。
【００６９】
図９においては、ステップＳ２６で、リクエストが矩形リードリクエストであると判断された場合には、ステップＳ７０において、差分データを含めて読み込むか否かを判断が行われる。ステップＳ７０において、差分データを含めるとなった場合には、ステップＳ２７以降、図５と同じ処理となる。差分データを含めないとなった場合には、ステップＳ７１において、縮小画像をSDRAMから読み込み、ステップＳ７２において、縮小画像を拡大し、ステップＳ７３において、リクエスト元にリードデータを送信する。
【００７０】
また、ステップＳ２６において、矩形リードリクエストでないと判断された場合にも、ステップＳ７４において、差分データを含めた読み込みか否かが判断される。ステップＳ７４で、差分データを含めた読み込みであると判断された場合には、ステップＳ３３以降、図５と同じ処理となる。差分データを含めない読み込みであると判断された場合には、ステップＳ７５において、縮小画像をSDRAMから読み込み、ステップＳ７６において、縮小画像を拡大し、ステップＳ７７において、リクエスト元にリードデータを送信する。
【００７１】
以上のような機能を搭載したメモリコントローラを使用することにより、表示画像サイズ等に合わせて誤差が目立たない範囲で、更にDRAM へのメモリアクセス量を削減することが可能となる。
【００７２】
図１０は、本発明の第３の実施形態を適用したMPEG エンコーダLSI のブロック構成図
である。
本LSI は、画像取り込み部４０、MPEG エンコーダ部４１、表示制御部４２、メモリコントローラ部４３の4 つのブロックで構成され、エンコード処理に必要な画像等を格納するための外部メモリ（SDRAM）４４が接続される。画像取り込み部４０は入力画像を取り込み、メモリコントローラ部４３を介して、画像をSDRAM４４ へ書き込む。画像入力はラスタスキャン順で行われ、SDRAM４４への書き込み処理は、ライン単位とする。
【００７３】
MPEGエンコーダ部４１は、取り込まれた入力画像をメモリコントローラ部４３を介して読み出し、MPEG に従った符号化処理を行い、MPEG ストリームを生成するブロックである。符号化処理中、必要に応じて、過去のローカルデコード画像を参照画像として読み出して使用する。
【００７４】
表示制御部４２は、MPEG エンコーダ部４１が生成したローカルデコード画像あるいは、画像取り込み部が取り込んだ入力画像をメモリコントローラ部４３経由で読み出して表示装置へ出力するブロックである。
【００７５】
メモリコントローラ部４３は、画像取り込み部４０、MPEG エンコーダ部４１および表示制御部４２からの要求に応じて、SDRAM４４へのアクセスを管理するブロックである。
第３の実施形態では、回路の共有化を行っている点と、過去の差分データをバッファに格納し、再利用している点が第１の実施形態と異なる。なお、画像の縮小、拡大方法は、第１の実施形態と同様とする。
【００７６】
メモリコントローラ部４３には、画像取り込み部４０やMPEGエンコーダ部４１、表示制御部４２からのリクエストを受け付けるリクエスト制御部４５が設けられている。リクエスト制御部４５は、リクエストを受け付けると、リクエスト変換部４６にリクエストを送り、画像データ圧縮部４７や画像データ展開部４８への制御信号を生成させる。
【００７７】
画像取り込み部４０あるいはMPEGエンコーダ部４１からラインライトリクエストあるいは矩形ライトリクエストが発行されると、画像データ圧縮部４７のセレクタ５０によって、ラインライトデータか矩形ライトデータのいずれかが選択される。画像格納メモリ５１において、ラインライトデータあるいは矩形ライトデータを受け取り、画像縮小回路５２にデータを入力する。画像縮小回路５２は、画像を縮小し、SDRAMアクセス制御部６５を介して、SDRAM４４に縮小画像を書き込む。また、縮小画像は、画像拡大回路５３において、拡大され、減算器５４において、元画像との差分が取られる。差分データは、差分データ格納メモリ５５に格納され、差分データ圧縮回路５６に入力される。差分データ圧縮回路５６では、リクエストがラインライトリクエストでも矩形ライトリクエストでも、差分データが、ライン単位の圧縮差分データおよび矩形単位の圧縮差分データの両方に変換され、SDRAMアクセス制御部６５を介して、SDRAM４４に書き込まれる。
【００７８】
MPEGエンコーダ部４１から、矩形リードリクエストが発行されると、画像データ展開部４８は、SDRAMアクセス制御部６５を介して、SDRAM４４から縮小画像データと矩形用圧縮差分データを読み取る。縮小画像データは、縮小画像格納メモリ５７に格納された後、画像拡大回路５９において拡大される。画像拡大回路５９は、ライン用と矩形用のいずれにも対応したハードウェアであり、リクエスト変換部４６からの制御により、いずれかの処理を行う。矩形用圧縮差分データは、差分データ格納メモリ５８に格納された後、差分データ展開回路６０において、展開される。差分データ展開回路６０は、ライン用と矩形用のいずれにも対応したハードウェアであり、リクエスト変換部４６からの制御により、いずれかの処理を行う。展開された矩形用差分データは、矩形用とライン用を兼用する過去差分データバッファ６１に格納されると共に、セレクタ６２に入力される。展開された矩形用差分データあるいは過去差分データバッファ６１に格納された過去の差分データのいずれかがセレクタ６２により選択され、拡大された縮小画像と加算器３５において、加算され、矩形リードデータとして、スイッチ６４を介して、MPEGエンコーダ部４１に送られる。
【００７９】
表示制御部４２からラインリードリクエストが発行された場合は、MPEGエンコーダ部４１から矩形リードリクエストが発行された場合と同様である。
第３の実施形態においては、差分データ圧縮回路５６、縮小画像格納メモリ５７、差分データ格納メモリ５８、画像拡大回路５９、差分データ展開回路６０が、矩形用とライン用の両方を処理可能なハードウェアとして構成されている。
【００８０】
なお、図１０はエンコーダの構成図であるが、メモリコントローラ部４３の構成は、デコーダの場合でも同様である。
【００８１】
図１１に、本発明の第３の実施形態のメモリコントローラの処理フローを示す。
図１１において、図５と同じステップには、同じ参照符号を付し、簡単な説明をするのみにとどめる。
まず、ステップＳ１０において、各機能ブロックからのリクエストを受信する。複数のリクエストを受信した場合には（ステップＳ１１）、リクエストの調停を行い（ステップＳ１２）、処理を行う一つのリクエストを選択する。選択したリクエストの内容を解析し（ステップＳ１３）、矩形ライトリクエスト、ラインライトリクエスト、矩形リードリクエスト、ラインリードリクエストのいずれかを判断し、それぞれに対して処理を行う。
【００８２】
ラインライトリクエスト、矩形ライトリクエストに対する処理の流れは同じであるので、図１１では、ライトリクエストの場合として、１つのフローとしている。まず、リクエスト要求元からライトデータ(元画像データ)を取得する(ステップＳ１５)。次に、元画像の縮小画像を生成し(ステップＳ１６)、その縮小画像の拡大画を生成する(ステップＳ１７)。その後、元画像と生成した縮小後拡大画の間で差分を取り、差分データを作成する(ステップＳ１８)。差分データは、矩形用の圧縮とライン用の圧縮の2 種類の圧縮が行われる（ステップＳ１９、Ｓ２０）。生成された、縮小画、矩形用圧縮差分データ、ライン用圧縮差分データは、それぞれ、SDRAM にライトされる（ステップＳ２１）。ただし、圧縮差分データに関しては、圧縮する単位によって、一つのライトリクエストのデータだけで圧縮が完結するとは限らないため、圧縮する単位のデータがまとまった時点で書き込みが行われる（ステップＳ２２〜ステップＳ２５）。第３の実施形態では、各格納メモリ、画像縮小/拡大回路、差分データ圧縮回路などの回路はライン用と矩形用で共用されている。ライン用と矩形用の差分データ圧縮回路は一つのライトリクエストに対して時分割で使用される。
【００８３】
ラインリードリクエストと、矩形リードリクエストに対する基本的な処理の流れは同じである。まず、リクエスト内容からSDRAMからリードすべき、縮小画領域と矩形用またはライン用圧縮差分データ領域を判断して、SDRAMから必要データをリードする（ステップＳ２７、Ｓ３３）。縮小画像は矩形またはラインの1 領域をリードする必要があるが、矩形用またはライン用の圧縮差分データに関しては、第３の実施形態では、過去の差分データをバッファに格納する機能を持つため、必ずしもリードアクセスが発生するとは限らない。過去差分データバッファに必要な差分データが格納されている場合には（ステップＳ８０、Ｓ８４）、SDRAM への差分データリードアクセスは行わずに、縮小画像のみ読み出して、拡大処理し、過去差分データバッファ内の対応する差分データとの加算を行って元画を復元する。そして、その復元画像をリクエスト要求元に復元画像を送信する。必要な差分データが格納されていない場合には（ステップＳ８０、Ｓ８４）、縮小画像および、圧縮差分データを読み出して（ステップＳ８１、Ｓ８５）、それぞれ拡大、展開処理し（ステップＳ８２、Ｓ８６）、両者を加算して元画像を復元した後（ステップＳ３１、Ｓ３７）、リクエスト要求元に復元画像を送信する（ステップＳ３２、Ｓ３８）。なお、展開した差分データは将来のリードリクエストのために、過去差分データバッファに格納しておく（ステップＳ８３、Ｓ８７）。第３の実施形態では、各格納メモリ、画像縮小/拡大回路、差分データ展開回路などの回路はライン用と矩形用で共用されている。また、過去差分データバッファには、ライン用と矩形用の差分データを別々の領域に格納し、それぞれのライン、矩形、それぞれのリクエストに対して、過去の差分データを使用することが可能なようになっている。
【００８４】
以上のような機能を搭載したメモリコントローラを使用することにより、過去にリードした差分データを再利用して、差分データのリード量を削減することができるので、SDRAM へのメモリアクセス量をより削減することが可能である。
【００８５】
本発明の第４の実施形態として、第３の実施形態 の構成に対して別の縮小、拡大方法を用いた例を示す。ブロック構成は基本的に第３の実施形態と同様であるが、第４の実施形態では、縮小画生成方法は、縦1/2、横1/2 の間引き処理、拡大画生成方法は線形補間、矩形用圧縮差分データ領域単位は16 画素x16 画素領域、ライン用圧縮差分データ領域単位は、ライン方向256 画素単位とする。
【００８６】
図１２に、第４の実施形態における元画像から縮小画像への間引き方法を示す。
図１２（ａ）は、元画像における間引かれる画素と残される画素を示した図であり、図１２（ｂ）は、縮小後の縮小画像の画素の様子を示す。第４の実施形態では、横方向の間引きのほかに、縦方向の間引きを行い、線形補間で拡大処理を行う。そのため、元画像の奇数ラインのラインリードにおいて、上下に隣接する２ラインのデータが必要となる。通常、表示装置への画像データは、画面の上側のラインから、下側のラインへ順番に出力する形式となるため、過去ラインをバッファに保存しておくことにより、縮小画のラインリードアクセス量を削減することが可能である。第４の実施形態では、画面の上端(ライン0)から順番にリードアクセスが行われるものとする。
【００８７】
図１３に、第４の実施形態のラインリードリクエスト処理の手順を示す。
まず、ラインnのラインリードリクエストを受け取り（ステップＳ９０）、ラインnが画面の先頭ライン(元画像でのライン0)の場合は（ステップＳ９１）、縮小画像の先頭ライン(ライン0)を読み出す（ステップＳ９２）。元画像のライン0 は、縮小画のライン0 に対応するラインであるので、拡大処理で元画空間のライン0 を生成し（ステップＳ９３）、縮小画ライン0 は、バッファに格納する（ステップＳ９４）。なお、第４の実施形態では、このバッファは、縮小画像格納メモリ内に、1 リクエスト分のバッファ領域とは別に過去ラインを保持しておくだけの領域を確保し、ラインデータを保持しておくものとする。ステップＳ１０２において、ラインｎ（現在処理しているライン）を水平方向に拡大処理し、以降の圧縮差分データのリード、展開、加算の処理（ステップＳ１０３〜ステップＳ１０８）は第３の実施形態 と同様である（図１１のステップＳ８０〜Ｓ３２及びステップＳ８４〜Ｓ３８までの処理と同様）。次にライン1 のリードリクエストを受け取った際には、奇数ラインのフローへ移行する（ステップＳ９５）。奇数ラインの場合は、縮小画として対応するラインが格納されていないので、上下に隣接するラインから線形補間でデータを作成する必要がある。上隣接ライン(この場合、縮小画像のライン0)は、既に過去ラインバッファ領域に格納されているので、SDRAM へのリード処理は行わず、下隣接ライン(この場合、縮小画像のライン1)をリードして、元画像の奇数ライン(この場合、元画像のライン１)を生成する。新たにリードされた下隣接のラインは、過去ラインバッファ領域に格納され、次ラインの処理の際に使用される。ライン2 のラインリードリクエストを受け取った際には、偶数ラインのフローに移行する。先頭ライン以外の偶数ラインの場合、対応する縮小空間のラインは、既に前の奇数ライン処理時に過去ラインバッファ領域に格納されているため、SDRAM へのリードアクセスは行わずに、バッファ内データのみで対応するラインを復元することが可能である。
【００８８】
すなわち、ステップＳ９５で、現在のラインが奇数ラインであると判断された場合には、ステップＳ９６において、縮小画像の(n+1)/2のラインをリードし、ステップＳ９７において、過去ラインバッファからライン(n-1)/2を取得する。そして、ステップＳ９８において、縮小画像ライン(n-1)/2と(n+1)/2から元画像ラインnを生成する。ステップＳ９９において、過去ラインバッファにライン(n+1)/2を格納して、ステップＳ１０２に進む。ステップＳ９５で、現在のラインが奇数ラインでないと判断された場合には、ステップＳ１００において、過去ラインバッファからラインn/2を取得し、ステップＳ１０２において、縮小画像ラインn/2から元画像ラインnを生成し、ステップＳ１０２に進む。
【００８９】
上記のようなフローで過去ラインバッファ領域に過去ラインデータを保持しておくことにより、縦間引きがある場合の奇数ラインリードリクエスト時の縮小画読み出し量を削減することが可能である。
【００９０】
本発明の実施形態を使用することにより、大画面のMPEG デコード・エンコードなど、高いメモリバス帯域が要求される装置において、実際に使用するメモリバス帯域を低減することが可能である。本発明の実施形態は、MPEG デコード、エンコード処理に使用される矩形リードアクセス、表示制御に使用されるラインリードアクセスの双方でメモリバス帯域を削減しているため、メモリバス帯域削減効果は高く、様々な装置への適用が可能である。本発明の実施形態の適用により使用するメモリバス帯域が半減すると、メモリ周波数は半分、あるいは、メモリ個数を半減することが可能である。また、同じメモリバス帯域を使用するなら、より大画面の処理を行うことが可能である。メモリバス帯域を半減すると、２倍の画面サイズ、あるいは、２倍のフレームレートの処理を実現することが可能となる。
【００９１】
上記実施形態に加え、以下の付記を開示する。
（付記１）
メモリと、
画像データを縮小して縮小画像データを生成し、前記メモリに格納するともに、前記縮小画像データを拡大して拡大画像データを生成し、前記画像データと前記拡大画像データとの差分データを異なる複数の単位で圧縮し、複数の圧縮差分データを生成して前記メモリに格納する画像データ圧縮部と、
リクエスト要求が指示する内容に応じて前記圧縮差分データを読み出すとともに、前記縮小画像データを読み出し、前記圧縮差分データと前記縮小画像データとに基づいて伸長された画像データを生成する画像データ伸長部と、
を備えることを特徴とする画像処理装置。
（付記２）
前記複数の単位は、矩形単位とライン単位とを含むことを特徴とする付記１に記載の画像処理装置。
（付記３）
前記画像データから前記縮小画像データを生成する方法は、間引きによることを特徴とする付記１に記載の画像処理装置。
（付記４）
前記縮小画像の拡大方法は、線形補完によることを特徴とする付記１に記載の画像処理装置。
（付記５）
以前に読み出された前記縮小画像データと前記圧縮差分データとを格納するバッファを更に有し、
前記画像データ伸長部は、読み出すべき前記縮小画像データあるいは前記圧縮差分デー
タが既に前記バッファに格納されている場合には、前記メモリにアクセスせず、読み出すべき前記縮小画像データあるいは前記圧縮差分データを前記バッファより読み出すことを特徴とする付記１に記載の画像処理装置。
（付記６）
前記圧縮差分データの圧縮方法は、可変長符号化によることを特徴とする付記１に記載の画像処理装置。
（付記７）
前記圧縮差分データの前記メモリへの格納は、前記圧縮の単位で指定の領域へ格納することを特徴とする付記１に記載の画像処理装置。
（付記８）
前記圧縮差分データの前記メモリへの格納において、前記圧縮の単位でのデータサイズを算出および記録する手段を備えることを特徴とする付記１に記載の画像処理装置
（付記９）
前記圧縮差分データの前記メモリへの格納は、前記圧縮の単位とは異なる単位で行われることを特徴とする付記１に記載の画像処理装置。
（付記１０）
前記圧縮の単位と異なる単位は、マクロブロック単位であることを特徴とする付記９に記載の画像処理装置。
（付記１１）
前記圧縮差分データを読み出すとともに、前記縮小画像データを読み出し、前記圧縮差分データと前記縮小画像データとに基づいて伸長された画像データを生成するか、前記縮小画像データのみを読み出し、前記縮小画像データ基づいて伸長された画像データを生成するか、を選択可能な画像データ伸長部を備えることを特徴とする付記１に記載の画像処理装置。
（付記１２）
画像データを縮小して縮小画像データを生成し、
前記縮小画像データを拡大して拡大画像データを生成し、
前記画像データと前記拡大画像データとの差分データを第１の単位で圧縮して第１圧縮差分データを生成し、
前記画像データと前記拡大画像データとの差分データを第２の単位で圧縮して第２圧縮差分データを生成し、
リクエスト要求に基づいて、前記第１圧縮差分データ又は前記第２圧縮差分データの何れかを選択し、
前記選択された圧縮差分データと前記縮小画像データとに基づいて伸長された画像データを生成すること
を特徴とする画像処理方法。
【図面の簡単な説明】
【００９２】
【図１】縮小画像と圧縮差分データのメモリ格納イメージを示す図である。
【図２】差分データ圧縮処理順の例を示す図である。
【図３】メモリへのデータアクセス量の削減の様子を説明する図である。
【図４】本発明の第１の実施形態を適用したMPEG デコーダLSI のブロック構成図である。
【図５】本発明の第１の実施形態のメモリコントローラの処理フローを示す図である。
【図６】拡大画生成時の矩形境界領域の取り扱い方法の一例を示す図である。
【図７】矩形リードアクセス時の画像復元イメージを示す図である。
【図８】アクセス要求元からの一つのリクエストに対して、メモリコントローラが生成するリクエストの処理フローを示す図である。
【図９】第２の実施形態のメモリコントローラの処理フローを示す図である。
【図１０】本発明の第３の実施形態を適用したMPEG エンコーダLSI のブロック構成図である。
【図１１】本発明の第３の実施形態のメモリコントローラの処理フローを示す図である。
【図１２】第４の実施形態における元画像から縮小画像への間引き方法を示す図である。
【図１３】第４の実施形態のラインリードリクエスト処理の手順を示す図である。
【符号の説明】
【００９３】
１０、４１      MPEGデコーダ部
１１、４２      表示制御部
１２、４３      メモリコントローラ部
１３、４４      SDRAM
１５、４５      リクエスト制御部
１６、４７      画像データ圧縮部
１７      矩形画像データ展開部
１８      ライン画像データ展開部
１９、４６      リクエスト変換部
２０、５１      画像メモリ
２１、５２      画像縮小回路
２２、５３      画像拡大回路
２３、５４      減算器
２４、５５      差分データ格納メモリ
２５      差分データ圧縮回路（矩形用）
２６      差分データ圧縮回路（ライン用）
２７、３１、５７      縮小画像格納メモリ
２８、３２、５８      差分データ格納メモリ
２９      画像拡大回路（矩形用）
３０      差分データ展開回路（矩形用）
３３      画像拡大回路（ライン用）
３４      差分データ展開回路（ライン用）
３５、３６、６３      加算器
３７      SDRAMアクセス制御部
４０      画像取り込み部
４８      画像データ展開部
５０      セレクタ
５６      差分データ圧縮回路（矩形用／ライン用）
５９      画像拡大回路（矩形用／ライン用）
６０      差分データ展開回路（矩形用／ライン用）
６１      過去差分データバッファ（矩形用／ライン用）
６２      セレクタ
６４      スイッチ
【図４】
2010141771.tif 000004
【図５】
2010141771.tif 000005
【図８】
2010141771.tif 000006
【図９】
2010141771.tif 000007
【図１０】
2010141771.tif 000008
【図１１】
2010141771.tif 000009
【図１３】
2010141771.tif 000010
【図１】
2010141771.tif 000011
【図２】
2010141771.tif 000012
【図３】
2010141771.tif 000013
【図６】
2010141771.tif 000014
【図７】
2010141771.tif 000015
【図１２】
2010141771.tif 000016