(57)【特許請求の範囲】
【請求項１】
入力画像を複数のブロックに分割し、該ブロックを複数のサブブロックに分割する分割手段と、
前記複数のサブブロックのそれぞれを、供給された順に圧縮する圧縮手段であって、該複数のサブブロックの圧縮順序で該複数のサブブロックの伸張が可能であり且つ伸張対象のサブブロックの伸張に他のブロックのサブブロックを要しない圧縮方式で前記圧縮を行う前記圧縮手段と、
前記複数のブロックのうち第１のブロックを構成する第１の複数のサブブロックを、前記入力画像における該第１の複数のサブブロックの並び順に従って前記圧縮手段に供給し、前記入力画像において前記第１のブロックと隣接する第２のブロックを構成する第２の複数のサブブロックを、前記入力画像における該第２の複数のサブブロックの並び順とは逆の順序で前記圧縮手段に供給する並替手段と、
前記圧縮手段により圧縮されたそれぞれのサブブロックをメモリに格納する格納手段と、
前記第２のブロックに対する画像処理のために、前記圧縮手段により圧縮された前記第２の複数のサブブロックを前記メモリから読み出すと共に、前記圧縮手段により圧縮された前記第１の複数のサブブロックのうち最初に圧縮されたサブブロックを前記メモリから読み出す読出手段と、
前記読出手段により前記メモリから読み出された前記第２の複数のサブブロックを伸張すると共に、前記読出手段により前記メモリから読み出された前記最初に圧縮されたサブブロックを伸張する伸張手段と、
前記伸張手段による伸張済みの前記第２の複数のサブブロックと、前記伸張手段による伸張済みの前記最初に圧縮されたサブブロックとを用いて、前記第２のブロックに対する画像処理を行う画像処理手段と
を備え、
前記読出手段は、前記複数のブロックのそれぞれについての前記メモリにおける開始アドレス、ブロックサイズ、及びサブブロックサイズの情報が登録されているテーブルを参照することで、前記最初に圧縮されたサブブロックを前記メモリから読み出す
ことを特徴とする画像処理装置。
【請求項２】
前記格納手段は、前記圧縮手段により圧縮されたサブブロックを、該サブブロックの圧縮順序に従って前記メモリに格納することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記圧縮手段は、ＪＰＥＧによる圧縮を行うことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の分割手段が、入力画像を複数のブロックに分割し、該ブロックを複数のサブブロックに分割する分割工程と、
前記画像処理装置の圧縮手段が、前記複数のサブブロックのそれぞれを、供給された順に圧縮する圧縮工程であって、該複数のサブブロックの圧縮順序で該複数のサブブロックの伸張が可能であり且つ伸張対象のサブブロックの伸張に他のブロックのサブブロックを要しない圧縮方式で前記圧縮を行う前記圧縮工程と、
前記画像処理装置の並替手段が、前記複数のブロックのうち第１のブロックを構成する第１の複数のサブブロックを、前記入力画像における該第１の複数のサブブロックの並び順に従って前記圧縮手段に供給し、前記入力画像において前記第１のブロックと隣接する第２のブロックを構成する第２の複数のサブブロックを、前記入力画像における該第２の複数のサブブロックの並び順とは逆の順序で前記圧縮手段に供給する並替工程と、
前記画像処理装置の格納手段が、前記圧縮工程で圧縮されたそれぞれのサブブロックをメモリに格納する格納工程と、
前記画像処理装置の読出手段が、前記第２のブロックに対する画像処理のために、前記圧縮手段により圧縮された前記第２の複数のサブブロックを前記メモリから読み出すと共に、前記圧縮手段により圧縮された前記第１の複数のサブブロックのうち最初に圧縮されたサブブロックを前記メモリから読み出す読出工程と、
前記画像処理装置の伸張手段が、前記読出工程で前記メモリから読み出された前記第２の複数のサブブロックを伸張すると共に、前記読出工程で前記メモリから読み出された前記最初に圧縮されたサブブロックを伸張する伸張工程と、
前記画像処理装置の画像処理手段が、前記伸張工程による伸張済みの前記第２の複数のサブブロックと、前記伸張工程による伸張済みの前記最初に圧縮されたサブブロックとを用いて、前記第２のブロックに対する画像処理を行う画像処理工程と
を備え、
前記読出工程では、前記複数のブロックのそれぞれについての前記メモリにおける開始アドレス、ブロックサイズ、及びサブブロックサイズの情報が登録されているテーブルを参照することで、前記最初に圧縮されたサブブロックを前記メモリから読み出す
ことを特徴とする画像処理方法。
【請求項５】
コンピュータを、請求項１乃至３の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像圧縮技術に関するものである。
【背景技術】
【０００２】
画像データを圧縮する事で、メモリ容量やメモリ帯域を削減する事が行われている。例えば、特許文献１や特許文献２には固定長圧縮を行う方法が開示されており、圧縮率を固定化し、開始メモリアドレスやデータサイズを確定する事で圧縮データのアクセス容易性を実現している。
【０００３】
また、ＪＰＥＧは標準方式として一般に利用されており、例えばデジタルカメラでは、撮影した画像をＪＰＥＧ方式で圧縮してメモリに蓄積している。更に、高解像度の画像を扱う際に複数画素を含むブロックに分割し、圧縮してメモリに格納し、画像処理する際には必要なブロック単位でメモリから読み出し伸長することは一般的に行われている。例えば、特許文献３ではコピー機においてブロック単位に分割して圧縮し、画像メモリに格納している。また、画像処理では、注目画素に対して周辺画素を参照して処理する事が一般的に行われており、ブロック単位で処理する際には対象の周辺ブロックの画素も必要になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２３５９２３号公報
【特許文献２】特開平１１−３５５５８３号公報
【特許文献３】特開２００３−１９６０４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、固定長圧縮では固定の圧縮率にするために、画像全体で画質が均一にならないという問題がある。また、ＪＰＥＧ等の不定長圧縮を行った場合、開始アドレスとサイズをテーブル化することで複数画素を含むブロックのランダムアクセスは可能である。しかしながら、ブロックサイズを大きくした場合、画像処理で必要となる周辺ブロックを読み出す際のオーバーヘッドが大きくなり、メモリ帯域が大きくなるという課題がある。また、ブロックサイズを小さくすれば、圧縮ブロックサイズを読み出す際の帯域のオーバーヘッドは削減可能であるが、ブロック数が増加する事により開始アドレス、サイズ等を含むアドレステーブルが大きくなる。更に、ブロック毎にバイトアラインに載せるオーバーヘッドが必要となる。また、ＪＰＥＧにおいてはブロックサイズを小さくするとＤＣ成分による圧縮が効きにくくなるという課題がある。
【０００６】
本発明は上記のような問題点を解決するためになされたもので、ＪＰＥＧ等の不定長圧縮においてブロックサイズを大きくしても、画像処理で必要となる周辺ブロック読み出し時のオーバーヘッドを最小にする為の技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。即ち、入力画像を複数のブロックに分割し、該ブロックを複数のサブブロックに分割する分割手段と、
前記複数のサブブロックのそれぞれを、供給された順に圧縮する圧縮手段であって、該複数のサブブロックの圧縮順序で該複数のサブブロックの伸張が可能であり且つ伸張対象のサブブロックの伸張に他のブロックのサブブロックを要しない圧縮方式で前記圧縮を行う前記圧縮手段と、
前記複数のブロックのうち第１のブロックを構成する第１の複数のサブブロックを、前記入力画像における該第１の複数のサブブロックの並び順に従って前記圧縮手段に供給し、前記入力画像において前記第１のブロックと隣接する第２のブロックを構成する第２の複数のサブブロックを、前記入力画像における該第２の複数のサブブロックの並び順とは逆の順序で前記圧縮手段に供給する並替手段と、
前記圧縮手段により圧縮されたそれぞれのサブブロックをメモリに格納する格納手段と、
前記第２のブロックに対する画像処理のために、前記圧縮手段により圧縮された前記第２の複数のサブブロックを前記メモリから読み出すと共に、前記圧縮手段により圧縮された前記第１の複数のサブブロックのうち最初に圧縮されたサブブロックを前記メモリから読み出す読出手段と、
前記読出手段により前記メモリから読み出された前記第２の複数のサブブロックを伸張すると共に、前記読出手段により前記メモリから読み出された前記最初に圧縮されたサブブロックを伸張する伸張手段と、
前記伸張手段による伸張済みの前記第２の複数のサブブロックと、前記伸張手段による伸張済みの前記最初に圧縮されたサブブロックとを用いて、前記第２のブロックに対する画像処理を行う画像処理手段と
を備え、
前記読出手段は、前記複数のブロックのそれぞれについての前記メモリにおける開始アドレス、ブロックサイズ、及びサブブロックサイズの情報が登録されているテーブルを参照することで、前記最初に圧縮されたサブブロックを前記メモリから読み出す
ことを特徴とする。
【発明の効果】
【０００８】
本発明の構成によれば、ＪＰＥＧ等の不定長圧縮においてブロックサイズを大きくしても、画像処理で必要となる周辺ブロック読み出し時のオーバーヘッドを最小にすることができる。
【図面の簡単な説明】
【０００９】
【図１】（ａ）はシステムのブロック図、（ｂ）は入力画像の分割例を示す図。
【図２】（ａ）は処理単位を示す図、（ｂ）はブロック１０００−００の構成例を示す図。
【図３】（ａ）は入力画像並べ替え部３００のブロック図、（ｂ）は入力画像並べ替え部３００が行う処理を示す図。
【図４】画像圧縮部７００−０の構成例を示すブロック図。
【図５】画像メモリ９００のマップ図。
【図６】（ａ）は内部バッファ７３０の使用方法を示す図、（ｂ）はアドレステーブルの構成例を示す図。
【図７】（ａ）は画像伸張部８００−０のブロック図、（ｂ）は圧縮データ読出順を示す図。
【図８】（ａ）は伸張画像並び替え部４００のブロック図、（ｂ）は伸張画像並び替え部４００が行う処理を示す図。
【図９】（ａ）は画像処理部１００のブロック図、（ｂ）は走査の方向を示す図。
【図１０】処理画像並び替え部５００のブロック図、（ｂ）は圧縮データの読出順を示す図。
【図１１】伸張画像並び替え部４００により出力される画素の順序を示す図。
【図１２】画像処理部１００が３×３のフィルタ処理を行うために行う走査の方向を示す図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１１】
［第１の実施形態］
本実施形態に係るシステムは、入力画像を複数画素から成るブロック毎に分割して圧縮し、画像処理時に必要な部分だけを伸張して用いるシステムである。図１（ａ）のブロックを用いて、本実施形態に係るシステムの機能構成例について説明する。
【００１２】
映像入力部５０は、外部から映像信号を入力するものであり、ＨＤＭＩ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｉｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）等の入力から、入力画像を構成する各画素のデータを抽出する。これにより、本システムには、入力画像を構成する各画素のデータを入力することができる。しかし、入力画像のデータを入力するための方法はこれに限るものではなく、様々な方法が考え得る。
【００１３】
入力画像並べ替え部３００は、映像入力部５０により本システムに入力された入力画像を複数画素から成るブロック毎に分割し、分割したそれぞれのブロックを、入力画像内における並び順で選択する。そして入力画像並べ替え部３００は、選択したブロックを、複数画素から成るサブブロック毎に分割し、分割したそれぞれのサブブロックを、この選択したブロックについて選択された順序で並び替える。そして入力画像並べ替え部３００は、この並び替えた順序でそれぞれのサブブロックを画像圧縮部７００−０に送出する。この「順序」について詳しくは後述する。
【００１４】
画像圧縮部７００−０は、入力画像並べ替え部３００からサブブロックが送出される毎に、このサブブロックに対して圧縮処理を行う。そして画像圧縮部７００−０は、１ブロック分の圧縮処理が完了する毎に、この１ブロック分の圧縮データを画像メモリ９００に格納する。
【００１５】
上記の構成により、ブロック毎の圧縮データ（更に１ブロック分の圧縮データは、この１ブロックを構成する各サブブロックの圧縮データから成る）を画像メモリ９００に格納することができる。
【００１６】
画像伸張部８００−０は、画像メモリ９００からサブブロック単位で圧縮データを読み出して伸張することで、サブブロック毎のデータ（画素データ）を生成する。伸張画像並び替え部４００は、画像伸張部８００−０により伸張されたデータを並び替える。画像処理部１００は、伸張画像並び替え部４００により並び替えられたデータのうち必要なデータを用いて、フィルタ処理等の画像処理を行う。
【００１７】
処理画像並べ替え部５００は、画像処理部１００により処理されたデータの並べ替えを行う。画像圧縮部７００−１は、画像圧縮部７００−０と同様の圧縮処理を行い、その結果を画像メモリ９００に格納する。画像伸張部８００−１は、画像メモリ９００に格納されているサブブロック毎の圧縮データを伸張する。出力画像並べ替え部６００は、画像伸張部８００−１が伸張したそれぞれのサブブロックのデータを並べ替え、並べ替えたデータを結合することで、１枚の画像のデータを生成する。映像出力部２００は、出力画像並べ替え部６００により生成された１枚の画像のデータを外部に出力する。
【００１８】
入力画像並べ替え部３００による入力画像の分割例を図１（ｂ）に示す。入力画像１０００が入力画像並べ替え部３００に入力されると、入力画像並べ替え部３００はこの入力画像１０００を（Ｘ＋１）×（Ｙ＋１）個のブロック１０００−００〜１０００−ＸＹに分割する。ここで、（Ｘ＋１）はＸ方向の分割数、（Ｙ＋１）はＹ方向の分割数を示す。なお、分割方法はこれに限定するものではなく、例えば、ブロックを正方形とし、正方形毎に入力画像を分割しても良い。
【００１９】
入力画像１０００に対する、画像処理部１００による処理単位を図２（ａ）に示す。画像処理部１００は入力画像１０００を処理する場合、１１００−０〜１１００−Ｎのそれぞれを処理単位とする。処理単位１１００−０を処理する場合、ブロック１０００−００及び１０００―１０の処理から始まり、入力画像１０００を走査していく。そして最終的には、処理単位１０００−０Ｙ及び１０００−１Ｙまでの計２×（Ｙ＋１）個のブロックを処理する。
【００２０】
ここで、１つのブロックは複数個のサブブロックから成る。ブロック１０００−００の構成例を図２（ｂ）に示す。図２（ｂ）では、ブロック１０００−００は８個のサブブロック（１０００−００−０〜１０００−００−７）から構成されており、１つのサブブロックは８ピクセル×８ピクセルのサイズを有している。これは他のブロックについても同様である。なお、各ブロックを構成するサブブロックの個数やサブブロックのサイズについてはこれに限るものではない。
【００２１】
入力画像並べ替え部３００の構成例を、図３（ａ）のブロック図を用いて説明する。入力画像並べ替え部３００が行うものとして上述した処理は入力画像並べ替え制御部３１０が行い、入力画像並べ替え制御部３１０が行った処理結果は内部バッファ３２０に格納される。
【００２２】
ここで、入力画像並べ替え部３００が行う処理について、図３（ｂ）を用いて説明する。図３（ｂ）には、入力画像１０００において一部のブロック１０００−００〜１０００−３０を示している。なお、それぞれのブロックは上述の通り８個のサブブロックから構成されており、それぞれのサブブロックは８ピクセル×８ピクセルのサイズを有する。例えば、ブロック１０００−３０は、サブブロック１０００−３０−０〜１０００−３０−７により構成されている。
【００２３】
入力画像並べ替え制御部３１０は、１つのブロックをサブブロック毎に分割し、分割したそれぞれのサブブロックを規定の順序で並び替え、並び替え後の並び順でそれぞれのサブブロックを画像圧縮部７００−０に対して出力する。より詳しくは、ブロック毎に、ブロック内におけるサブブロックの並び順（正順）、並び順とは逆の順（逆順）、を交互に選択する。そして、それぞれのサブブロックを、選択した順で並び替えて出力する。図３（ｂ）では、ブロック１０００−００についてはサブブロック１０００−００−０、１０００−００−１、…、１０００−００−７の順に画像圧縮部７００−０に出力する。一方、ブロック１０００−１０については、サブブロック１０００−１０−７、１０００−１０−６、…、１０００−１０−０の順に並び替えてから、この並び替えた順に画像圧縮部７００−０に出力する。また、ブロック１０００−２０についてはサブブロック１０００−２０−０、１０００−２０−１、…、１０００−２０−７の順に画像圧縮部７００−０に出力する。また、ブロック１０００−３０については、サブブロック１０００−３０−７、１０００−３０−６、…、１０００−３０−０の順に並び替えてから、この並び替えた順に画像圧縮部７００−０に出力する。このように、ブロック毎に、サブブロックの並び順、その逆順、を交互に選択し、ブロック内のそれぞれのサブブロックを、このブロックについて選択した順序で、画像圧縮部７００−０に出力する。
【００２４】
画像圧縮部７００−０の構成例を、図４のブロック図を用いて説明する。圧縮制御部７１０は、圧縮部７２０の動作制御を行う。圧縮部７２０は、入力画像並べ替え部３００から送出されたそれぞれのサブブロックに対してＪＰＥＧなどの圧縮符号化技術を用いた圧縮を行うことで、それぞれのサブブロックの圧縮データを生成する。圧縮制御部７１０は、圧縮部７２０が１ブロック分の圧縮処理を行う毎に圧縮部７２０を初期化し、次のブロックに対する圧縮処理を行わせる。このように、ブロック単位で初期化を行うことにより、ＪＰＥＧ等を考えた場合、ブロック間での依存性を無くし、ブロック単位での伸長を可能としている。
【００２５】
また、圧縮制御部７１０は、圧縮部７２０による圧縮後のデータサイズ等の圧縮情報をアドレステーブル生成部７５０に送出すると共に、圧縮部７２０による圧縮データを内部バッファ７３０に送出する。
【００２６】
アドレステーブル生成部７５０は、圧縮情報を用いて後述するアドレステーブルを生成すると共に、ＤＭＡコントローラ７４０に対して開始アドレス、ブロックサイズ、サブブロックサイズ等を指示する。ここで、アドレステーブル生成部７５０は、サブブロックが正順並びされているブロックについてはバイトアラインされた開始アドレスから増加方向に領域を確保する。また、サブブロックが逆順並びされているブロックについてはバイトアラインされた開始アドレスから減少方向に領域を確保する。
【００２７】
ＤＭＡコントローラ７４０は、アドレステーブル生成部７５０により指定された情報を元に、内部バッファ７３０からブロック単位で圧縮データを画像メモリ９００に転送する。また、アドレステーブル生成部７５０で生成されたアドレステーブルは、ＤＭＡコントローラ７６０により画像メモリ９００に転送される。
【００２８】
なお、画像圧縮部７００−０の構成は図４に示した構成に限るものではなく、例えば、ＤＭＡコントローラ７４０、７６０の共通化や、アドレステーブルを内部バッファ７３０に格納する等の構成も考え得る。
【００２９】
画像圧縮部７００−０によりそれぞれのサブブロックの圧縮データが格納された画像メモリ９００のマップを、図５に示す。図５では１ラインで１６バイトを示しており、１ライン毎にアドレスが１６バイト（１６進で０ｘ１０）増加している。
【００３０】
画像圧縮部７００−０は、入力画像並べ替え部３００からサブブロックを受け取る毎にこのサブブロックを圧縮する。そして画像圧縮部７００−０は１ブロックを構成する全てのサブブロックの圧縮が完了する毎に、これらサブブロックの圧縮データを画像メモリ９００に格納する。
【００３１】
例えば、ブロック１０００−００を圧縮する場合、圧縮部７２０は、ブロック１０００−００を構成するサブブロック１０００−００−０〜１０００−００−７を、この順で入力画像並べ替え部３００から受け取る。そして圧縮部７２０はこの受け取った順でこれらサブブロック１０００−００−０〜１０００−００−７を圧縮する。サブブロックを圧縮する毎に、その圧縮データは内部バッファ７３０の先頭から順に格納される。そしてサブブロック１０００−００−７の圧縮データが内部バッファ７３０に格納された時点で、これらサブブロック１０００−００−０〜１０００−００−７の圧縮データはＤＭＡコントローラ７４０を介して画像メモリ９００に格納される。図５の例では、サブブロック１０００−００−０〜１０００−００−７の圧縮データは、画像メモリ９００においてアドレス０ｘ０００〜０ｘ０６５に格納される。
【００３２】
また、ブロック１０００−１０を圧縮する場合、圧縮部７２０は、ブロック１０００−１０を構成するサブブロック１０００−１０−７〜１０００−１０−０を、この順で入力画像並べ替え部３００から受け取る。そして圧縮部７２０はこの受け取った順でこれらサブブロック１０００−１０−７〜１０００−１０−０を圧縮する。サブブロックを圧縮する毎に、その圧縮データは内部バッファ７３０の後端から順（即ち、ブロック１０００−００の場合とは逆順）に先頭に向けて格納される。そしてサブブロック１０００−１０−０の圧縮データが内部バッファ７３０に格納された時点で、これらサブブロック１０００−１０−０〜１０００−１０−７の圧縮データはＤＭＡコントローラ７４０を介して画像メモリ９００に格納される。
【００３３】
図５では、各ブロック１０００−００〜１０００−４０の境界（太線で示している）はバイトアラインに載っているが、各サブブロックは圧縮率を重視し、バイトアラインには載っていない。
【００３４】
ここで、圧縮部７２０による内部バッファ７３０の使用方法について、図６（ａ）を用いて説明する。図６（ａ）では内部バッファ７３０は４ｋバイト（アドレス０ｘ０００〜０ｘＦＦＦ）の容量を有している。
【００３５】
ブロック１０００−００の圧縮を行う場合、サブブロック１０００−００−０〜１０００−００−７の順にそれぞれのサブブロックを圧縮する。そしてサブブロック１０００−００−０〜１０００−００−７の順に、その圧縮データを、内部バッファ７３０に格納するが、その場合、内部バッファ７３０の先頭（アドレス０Ｘ０００）から順に使用する。
【００３６】
ブロック１０００−１０の圧縮を行う場合、サブブロック１０００−１０−７〜１０００−１０−０の順にそれぞれのサブブロックを圧縮する。そしてサブブロック１０００−１０−７〜１０００−１０−０の順に、その圧縮データを、内部バッファ７３０に格納するが、その場合、内部バッファ７３０の後端（アドレス０ＸＦＦＦ）から順に使用する。
【００３７】
そして何れの場合にも、１ブロック分の圧縮データが内部バッファ７３０に格納されると、ＤＭＡコントローラ７４０はこの１ブロック分の圧縮データをまとめて読み出し、画像メモリ９００に転送する。なお、内部バッファ７３０の使用方法はこれに限るものではなく、例えば、逆順の場合にもアドレス０ｘ０００からデータを書き込み、内部バッファ７３０からの読み出しの際にアドレスの最後尾から読み出す等も考えられる。
【００３８】
アドレステーブル生成部７５０が生成したアドレステーブルの構成例を、図６（ｂ）を用いて説明する。アドレステーブルは各ブロック００〜ＸＹのテーブル２０００−００〜２０００−ＸＹ）から構成される。各テーブルは開始アドレス２０１０−００〜２０１０−ＸＹ、ブロック座標２０２０−００〜２０２０−ＸＹ、ブロックサイズ２０３０−００〜２０３０−ＸＹ、サブブロックサイズ２０４０−００〜２０４０−ＸＹより構成される。なお、アドレステーブルの構成はこれに限るものではなく、例えば、ブロック座標２０２０−００〜２０２０−ＸＹを省略しても良いし、動画に適用する場合にはフレーム数を付加しても良い。また、逆順ブロック（例えばブロック１０００−１０）と正順ブロック（例えばブロック１０００−００）を隙間無く連続したメモリ領域に格納した場合、開始アドレスのずれは１バイトのみである。これを利用して正順ブロックの開始アドレスのみをアドレステーブルに格納し、逆順ブロックの開始アドレスを正順ブロックの開始アドレスから算出する事でアドレステーブルの容量の削減も可能である。
【００３９】
次に、図６（ｂ）中のサブブロックサイズについて説明する。サブブロックサイズとは、ブロック境界から特定個数のサブブロックを含む圧縮後のサイズを示す。例えば、サブブロックの個数を１とした場合、ブロック境界からサブブロック１つ目を含む最小サイズがサブブロックサイズとして指定される。ブロック１０００−００の場合、サブブロック１０００−００−０を含む最小サイズが指定され、ブロック１０００−１０の場合、１０００−１０−７を含む最小サイズが指定される。このように正順並び替え、逆順並び替えに依存して選択されるサブブロックが異なる。図５のように圧縮後のブロックが格納された場合、ブロック１０００−００に対しては１０００−００−０を含む最小のサイズ０ｘ１２がサブブロックサイズとして指定される。ブロック１０００−１０に対してはサブブロック１０００−１０−７を含む最小サイズが指定される。図５ではサブブロック１０００−１０−７は０×０Ｄ４から０ｘ０Ｂ９を使用しており、その差を含む最小サイズ０×１Ｃがサブブロックサイズとして指定される。
【００４０】
このように、ブロック内のそれぞれのサブブロックの圧縮順を、ブロック毎に切り替えることが上記構成の特徴であり、以下の機能を有していれば、その他の構成を採用しても構わない。
【００４１】
即ち、先ずは、入力画像を複数画素から成るブロック毎に分割し、分割したそれぞれのブロックを入力画像内における並び順で選択する。そして、選択したブロックを複数画素から成るサブブロック毎に分割し、分割したそれぞれのサブブロックを規定の順序で選択し、選択したサブブロックに対して圧縮処理を行う。より詳しくは、ブロック毎に、ブロック内におけるサブブロックの並び順、この並び順とは逆の順、を交互に選択する。そして、選択ブロックを分割したそれぞれのサブブロックを、選択ブロックについて選択した順で選択し、選択したサブブロックに対して圧縮処理を行うことで、それぞれのサブブロックの圧縮データを生成する。そして、生成したサブブロック毎の圧縮データをメモリに格納する。
【００４２】
次に、画像処理部１００が図２（ａ）の処理単位１１００−０を処理する場合を例に取り、以下の説明を行う。なお、以下の説明が、他の処理単位であっても構わないことは、以下の説明より明らかとなるであろう。
【００４３】
先ず、画像伸張部８００−０の構成例を、図７（ａ）のブロック図を用いて説明する。アドレステーブル抽出部８５０は、ＤＭＡコントローラ８６０を介して画像メモリ９００からアドレステーブルを読み出す。そしてアドレステーブル抽出部８５０は、読み出したアドレステーブルから必要な情報（開始アドレス、ブロックサイズ、サブブロックサイズ等）を抽出し、ＤＭＡコントローラ８４０に開始アドレス、ブロックサイズ、サブブロックサイズ等を指定する。これによりＤＭＡコントローラ８４０は、画像メモリ９００から必要な圧縮データの読み出しを行う。読み出した圧縮データは一旦、内部バッファ８３０に保持される。伸張制御部８１０は、アドレステーブル抽出部８５０からの圧縮情報に基づき、内部バッファ８３０から必要な圧縮データを読み出し、読み出した圧縮データを伸張部８２０に出力する。この圧縮情報には、圧縮後のサイズや、量子化テーブル等の圧縮パラメータが含まれている。
【００４４】
ここで、画像メモリ９００からの圧縮データの読み出しについて説明する。前述したように、画像処理部１００で３×３のフィルタ処理を実施する場合、周辺サブブロックが必要となる。例えば、図２（ａ）において処理単位１１００−０に対する３×３のフィルタ処理を行うためには、ブロック１０００−２０の一部も必要となる。この場合におけるＤＭＡコントローラ８４０による圧縮データの読み出し順を図７（ｂ）に示す。図７（ｂ）には、入力画像１０００において一部のブロック１０００−００〜１０００−４０の圧縮データを示している。
【００４５】
ＤＭＡコントローラ８４０は、ブロック１０００−００を構成する全てのサブブロック１０００−００−０〜１０００−００−７の圧縮データを、この順（読み出し順１）で、画像メモリ９００から読み出す。また、ＤＭＡコントローラ８４０は、ブロック１０００−１０を構成する全てのサブブロック１０００−１０−０〜１０００−１０−７の圧縮データを、この順とは逆の順（読み出し順２）で、画像メモリ９００から読み出す。
【００４６】
即ち、ＤＭＡコントローラ８４０は、着目ブロックを分割したそれぞれのサブブロックの圧縮データを読み出す場合、それぞれのサブブロックの圧縮データを、着目ブロックに対して圧縮時に選択した順で読み出す。
【００４７】
ここで、上記の通り、ブロック１０００−２０については全てのサブブロックは必要なく、一部（ここではサブブロック１０００−２０−０）のみ必要である。然るにＤＭＡコントローラ８４０は、ブロック１０００−２０については読み出し順３に従って最初のサブブロック１０００−２０−０のみを画像メモリ９００から読み出す。
【００４８】
ここで、読み出し順１及び読み出し順２に関しては、アドレステーブル中のブロックサイズ２０３０−００〜２０３０−ＸＹを使用して、ＤＭＡコントローラ８４０に読み出しサイズが設定される。読み出し順３に対しては、サブブロックサイズ２０４０−００〜２０４０−ＸＹを使用してＤＭＡコントローラ８４０に読み出しサイズが設定される。
【００４９】
また、詳細は述べないが、ブロック１０００−００、ブロック１０００−１０のブロックサイズと、ブロック１０００−２０のサブブロックサイズを使用して一度にＤＭＡコントローラ８４０を起動する等も可能である。
【００５０】
また、サブブロック１０００−２０−０の伸長終了後に処理を停止し、リセットする事で次ブロックの伸長が可能となる。ＤＭＡコントローラ８４０により画像メモリ９００から読み出されたそれぞれのサブブロックの圧縮データは逐次、内部バッファ８３０に格納され、順次、伸張制御部８１０によって伸張部８２０に転送される。これにより伸張部８２０は、転送されたサブブロックの圧縮データを伸張する。即ち伸張部８２０は、着目ブロックを分割したそれぞれのサブブロックの圧縮データを、着目ブロックに対して圧縮時に選択した順で選択し、選択した圧縮データを伸張することになる。
【００５１】
そして伸張制御部８１０は、伸張されたサブブロックのデータを順次、伸張画像並び替え部４００に転送する。そして、処理単位１１００−０に対して、ブロック１０００−０Ｙ，１０００−１Ｙ、１０００−２Ｙまで同様の処理が行われる。
【００５２】
伸張画像並び替え部４００の構成例について、図８（ａ）のブロック図を用いて説明する。伸張画像並び替え制御部４１０は、画像伸張部８００−０から転送されたそれぞれのサブブロックを内部バッファ４２０に格納し、格納したサブブロックを並び替える。
【００５３】
伸張画像並び替え部４００（伸張画像並び替え制御部４１０）が行う処理について、図８（ｂ）を用いて説明する。伸張画像並び替え制御部４１０は、ブロック１０００−００については、画像伸張部８００−０から、サブブロック１０００−００−０、１０００−００−１、…、１０００−００−７の順に受け取る。然るに伸張画像並び替え制御部４１０は、これらのサブブロックをこの順で内部バッファ４２０に格納する。伸張画像並び替え制御部４１０は、ブロック１０００−１０については、画像伸張部８００−０から、サブブロック１０００−１０−７、１０００−１０−６、…、１０００−１０−０の順に受け取る。然るに伸張画像並び替え制御部４１０は、これらのサブブロックを、この逆の順で内部バッファ４２０に格納する。
【００５４】
伸張画像並び替え制御部４１０は、ブロック１０００−２０については、画像伸張部８００−０から、サブブロック１０００−２０−０のみを受け取る。然るに伸張画像並び替え制御部４１０は、サブブロック１０００−２０−０において、処理単位１１００−０に対する３×３のフィルタ処理で必要となる左端の縦１列の画素列を内部バッファ４２０に格納する。図８（ｂ）では、ブロック１０００−００、１０００−１０の処理を示しているが、同様にブロック１０００−０Ｙ、１０００−１Ｙまでの処理を実施する。
【００５５】
そして伸張画像並び替え制御部４１０は、内部バッファ４２０内で並び替えられたそれぞれのサブブロックから画素のデータをラスタスキャン順に画像処理部１００に対して送出する。
【００５６】
画像処理部１００の構成例を、図９（ａ）のブロック図を用いて説明する。伸張画像並び替え制御部４１０により送出されたそれぞれの画素のデータは順次、内部バッファ１１０に格納される。フィルタ処理部１２０は、内部バッファ１１０に格納されている画素のデータを用いて、３×３のフィルタ処理を行う。
【００５７】
画像処理部１００が３×３のフィルタ処理を行うために行う走査の方向について、図９（ｂ）を用いて説明する。図９（ｂ）では３ライン目の走査を示している。図９（ｂ）に示す如く、サブブロック１０００−００−０内の左端画素３０００−０からサブブロック１０００−１０−７内の右端画素３０００−１までの１ラインを構成する各画素について、その周辺画素を参照しながらフィルタ処理を行う。これは他のラインについての同じである。そして同様な処理をブロック１０００−０Ｙ、１０００−１Ｙまで行う。本実施形態では、３×３のフィルタ処理を画像処理の一例として用いたが、周辺画素を用いた画像処理であれば、他の如何なる画像処理であっても良く、例えば、解像度変換等への適用も考えられる。
【００５８】
処理画像並び替え部５００の構成例について、図１０（ａ）のブロック図を用いて説明する。ブロック整形部５２０は、出力がブロック単位となるように整形する。図１０（ｂ）の例では、ブロック１０００−２０内の画素を削除し、サブブロック１０００−００−０〜１０００−１０−７に含まれる画素群が出力され、内部バッファ５３０に格納される。
【００５９】
処理画像並び替え制御部５１０は、内部バッファ５３０からサブブロックのデータを読み出し、入力画像並べ替え部３００と同様にして、それぞれのサブブロックの並び替えを行う。
【００６０】
画像圧縮部７００−１は、画像圧縮部７００−０と同様の動作を行うもので、処理画像並び替え部５００からのそれぞれのサブブロックに対して圧縮処理を行うことで、それぞれのサブブロックの圧縮データを生成し、画像メモリ９００に格納する。また、画像圧縮部７００−１は、画像圧縮部７００−０と同様にしてアドレステーブルを作成し、これもまた画像メモリ９００に格納する。
【００６１】
次に、図２（ａ）に示した処理単位１１００−１を処理する場合と、処理単位１１００−０を処理する場合と、の相違点について説明する。画像伸張部８００−０による画像メモリ９００からのサブブロックの圧縮データの読み出し順について、図１０（ｂ）を用いて説明する。
【００６２】
画像処理部１００が処理単位１１００−１を処理する場合、ブロック１０００−２０、１０００−３０だけでなく、ブロック１０００−１０、１０００−４０の一部も必要となる。そこで、最初に図１０（ｂ）中の読み出し順１に従い、ブロック１０００−１０内のサブブロック１０００−１０−７のみを読み出す。また、ブロック１０００−２０、１０００−３０についてはそれぞれ読み出し順２，３に従って、それぞれのブロック内の全てのサブブロックを読み出す。また、読み出し順４に従い、ブロック１０００−４０内のサブブロック１０００−４０−０のみを読み出す。
【００６３】
読み出したそれぞれのサブブロックの圧縮データは逐次、内部バッファ８３０を介して伸張制御部８１０に転送され、伸張制御部８１０による制御の元、伸張部８２０によりそれぞれのサブブロックが伸張される。このような処理を、ブロック１０００−１Ｙ，１０００−２Ｙ，１０００−３Ｙ，１０００−４Ｙまで行う。
【００６４】
この場合の伸張画像並び替え部４００（伸張画像並び替え制御部４１０）により出力される画素の順序を図１１に示す。伸張画像並び替え制御部４１０は、ブロック１０００−１０については、処理単位１１００−１に対する３×３のフィルタ処理で必要となる右端の縦１列の画素列を内部バッファ４２０に格納する。
【００６５】
ブロック１０００−２０については、サブブロック１０００−２０−０、１０００−２０−１、…、１０００−２０−７の順に内部バッファ４２０に格納する。ブロック１０００−３０については、サブブロック１０００−３０−０、１０００−３０−１、…、１０００−３０−７の順に内部バッファ４２０に格納する。ブロック１０００−４０については、処理単位１１００−１に対する３×３のフィルタ処理で必要となる左端の縦１列の画素列を内部バッファ４２０に格納する。
【００６６】
そして伸張画像並び替え制御部４１０は、内部バッファ４２０内で並び替えられたそれぞれのサブブロックから画素のデータをラスタスキャン順に画像処理部１００に対して送出する。
【００６７】
画像処理部１００が３×３のフィルタ処理を行うために行う走査の方向について、図１２を用いて説明する。図１２では３ライン目の走査を示しており、サブブロック１０００−２０−０内の左端画素３０００−２からサブブロック１０００−３０−７内の右端画素３０００−３までの１ラインを構成する各画素について、その周辺画素を参照しながらフィルタ処理を行う。これは他のラインについての同じである。そして同様な処理をブロック１０００−２Ｙ、１０００−３Ｙまで行う。
【００６８】
画像伸張部８００−１は、画像伸張部８００−０と同様に動作し、画像圧縮部７００−１が生成したアドレステーブルを元に、それぞれのサブブロックの圧縮データを画像メモリ９００から読み出し、出力画像並び替え部６００に出力する。
【００６９】
なお、図１（ａ）に示した構成は１台の画像処理装置で実現させても良いし、複数台の画像処理装置で実現させても良い。例えば、映像入力部５０、入力画像並べ替え部３００、画像圧縮部７００−０、画像メモリ９００、を有する画像処理装置と、その他の各部を有する１台以上の装置とで、上記システムを実現させても良い。
【００７０】
以上の説明により、本実施形態によれば、入力画像を特定の単位（ブロック）に分割し、メモリ格納時に不定長圧縮を行う画像処理システムにおいて、画像処理で必要となる隣接ブロックの読み出しサイズを最小に出来る。これにより、必要なメモリ帯域が削減でき、メモリのクロックが削減可能となり、消費電力を低減することができる。
【００７１】
［第２の実施形態］
図１（ａ）に示した各部のうち、メモリとして機能する部分以外の各部は、コンピュータプログラムとして実装しても良い。この場合、このコンピュータプログラムは、システムが有する不図示のＣＰＵ等によって実行されることで、対応する機能を実現することになる。
【００７２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005654809.tif 000002
【図２】
0005654809.tif 000003
【図３】
0005654809.tif 000004
【図４】
0005654809.tif 000005
【図５】
0005654809.tif 000006
【図６】
0005654809.tif 000007
【図７】
0005654809.tif 000008
【図８】
0005654809.tif 000009
【図９】
0005654809.tif 000010
【図１０】
0005654809.tif 000011
【図１１】
0005654809.tif 000012
【図１２】
0005654809.tif 000013