(57)【特許請求の範囲】
【請求項１】
入力画像を複数の小領域に分割して該小領域ごとに画像データを可変長符号化法により符号化して圧縮する可変長符号化部と、
前記可変長符号化部により符号化された圧縮データを、所定のデータサイズ以下の第１のデータおよび前記所定のデータサイズを超える分の第２のデータに分割し、該第２のデータを複数の前記小領域分まとめて第３のデータとし、前記第１のデータに基づいてメモリの前記所定のデータサイズ以上の固定のメモリサイズを有する複数の第１のブロックのうち前記小領域に対応する第１のブロックに書き込まれる第１のブロックデータ、前記第３のデータに基づいて前記メモリの複数の第２のブロックのうち前記まとめられた小領域のグループに対応する第２のブロックに書き込まれる第２のブロックデータ、および前記第３のデータのサイズ情報を生成するデータ構築部と、
前記第２のブロックデータのうちの一部または全部および前記第３のデータのサイズ情報の一部または全部を記憶する記憶部と、
前記記憶部に記憶されている前記第２のブロックデータおよび前記第３のデータのサイズ情報に基づいて前記メモリから前記第２のブロックデータを読み出すか否かを判定する判定部と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記データ構築部は、前記メモリの前記第２のブロックにおける個々の前記第２のデータの格納位置情報を生成し、該格納位置情報を前記第２のブロックデータに含めることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
複数の前記第１のブロックおよび複数の前記第２のブロックを有し、かつ前記第２のデータが格納される前記第２のブロックが前記小領域ごとに一意に対応づけられており、前記第２のブロックのメモリサイズが固定であるメモリに接続されることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
入力画像を複数の小領域に分割して該小領域ごとに画像データを可変長符号化法により符号化して圧縮するステップと、
符号化された圧縮データを、所定のデータサイズ以下の第１のデータおよび前記所定のデータサイズを超える分の第２のデータに分割し、該第２のデータを複数の前記小領域分まとめて第３のデータとし、前記第１のデータに基づいてメモリの前記所定のデータサイズ以上の固定のメモリサイズを有する複数の第１のブロックのうち前記小領域に対応する第１のブロックに書き込まれる第１のブロックデータ、前記第３のデータに基づいて前記メモリの複数の第２のブロックのうち前記まとめられた小領域のグループに対応する第２のブロックに書き込まれる第２のブロックデータ、および前記第３のデータのサイズ情報を生成するステップと、
前記第２のブロックデータのうちの一部または全部および前記第３のデータのサイズ情報の一部または全部を記憶する記憶部に記憶されている前記第２のブロックデータおよび前記第３のデータのサイズ情報に基づいて前記メモリから前記第２のブロックデータを読み出すか否かを判定するステップと、
を含むことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
動画像データを符号化して圧縮する処理において、動き補償という処理が行われることがある。動き補償は、時間的に近い位置にあるフレームから、圧縮対象ブロックの動き情報を予測してデータを圧縮する技術である。符号化されたデータを復号する際には、予測元の参照画像のデータが読み出されて使用される。このとき、参照画像のデータを読み出す際の順序および画像のサイズが固定されていないことがある。その場合には、動画像符号化復号装置に用いられるメモリコントローラには、参照画像へのランダムアクセス性が要求される。一方、近年、ハイビジョン放送などの普及により、動画像処理回路が使用するメモリ帯域が増加してきている。
【０００３】
従来、画像データを可変長の圧縮符号の形態でメモリに記憶して画像処理を行なう画像処理装置がある。例えば、入力画像を小領域に分割し、小領域ごとの画像データを圧縮符号化する構成の画像処理装置がある。この画像処理装置において、メモリは、データの格納位置および容量を固定した固定領域と、固定しない自由領域とに分割されている。圧縮画像データのうち、固定領域の容量分のデータは固定領域に格納される。固定領域の容量を超える分のデータは自由領域に格納される。固定領域には、自由領域に格納された各データの自由領域における格納位置を示すアドレス情報が格納される（例えば、特許文献１参照。）。
【０００４】
また、画像入力装置から画像を入力し、データ圧縮処理を行い記憶媒体に画像を保存し、必要に応じて圧縮保存された画像にデータ伸長処理を行い、画像出力装置から画像を出力する構成の画像信号符号化装置がある。この画像信号符号化装置において、先に固定長圧縮伸長回路で固定長圧縮処理を行ってバッファメモリに書き込み、次に可変長圧縮伸長回路で可変長圧縮処理を行ってバッファメモリを介してハードディスク等の記憶媒体に記憶する装置がある（例えば、特許文献２参照。）。また、非可逆符号化データを生成する第１の符号化部、可逆符号化データを生成する第２の符号化部、符号化対象となる画素ブロック中の色数を検出する属性判定部が並列して同じ画素ブロックについて処理を行う画像符号化装置がある。このような画像符号化装置において、符号化シーケンス制御部は、注目画素ブロックの色数が所定数以下の場合には可逆符号化データを第１のメモリに格納させる。また、色数が所定数を越える場合には、非可逆符号化データと可逆符号化データのうち、短い方を第１のメモリに格納させる（例えば、特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２３２５８７号公報
【特許文献２】特開平７−２２６８４８号公報
【特許文献３】特開２００６−１６６４２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の画像処理装置では、メモリから複数個の固定領域のデータを一括して読み出す場合、次のような問題点がある。読み出し対象の複数個の固定領域に格納されているアドレス情報に基づいて、自由領域に対して複数回の読み出しリクエストが発行される。小領域の分割単位を小さくしてランダムアクセス性を高くすると、その分、自由領域からのデータの読み出し回数が増えるため、データの読み出しが完了するまでの時間が長くなってしまう。また、固定領域から読み出されたアドレス情報に基づいて自由領域に対して読み出しリクエストが発行される。つまり、固定領域からのデータの読み出しが終了した後に自由領域からデータが読み出される。そのため、データの読み出しが完了するまでの時間が長くなってしまう。従って、メモリ帯域が増加するという問題点がある。
【０００７】
メモリ帯域を削減することができる画像処理装置および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
画像処理装置は、可変長符号化部およびデータ構築部を備える。画像処理装置においては、入力画像が複数の小領域に分割されて処理される。可変長符号化部は、小領域ごとに画像データを可変長符号化法により符号化して圧縮する。データ構築部は、可変長符号化部により符号化された圧縮データを第１のデータと第２のデータとに分割する。第１のデータは、可変長符号化部により符号化された圧縮データのうちの、所定のデータサイズ以下のデータ部分である。第２のデータは、可変長符号化部により符号化された圧縮データのうちの、前記所定のデータサイズを超える分のデータ部分である。データ構築部は、第２のデータを複数の前記小領域分まとめて第３のデータとする。データ構築部は、第１のデータに基づいて第１のブロックデータを生成する。第１のブロックデータは、メモリの前記所定のデータサイズ以上の固定のメモリサイズを有する複数の第１のブロックのうち前記小領域に対応する第１のブロックに書き込まれる。データ構築部は、第３のデータに基づいて第２のブロックデータを生成する。第２のブロックデータは、メモリの複数の第２のブロックのうち、第２のデータがまとめられた小領域のグループに対応する第２のブロックに書き込まれる。データ構築部は、第３のデータのサイズ情報を生成する。
【発明の効果】
【０００９】
この画像処理装置および画像処理方法によれば、ランダムアクセス性を保ちながらも、メモリ帯域を削減することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施例１にかかる画像処理装置を示すブロック図である。
【図２】実施例２にかかる画像処理装置を示すブロック図である。
【図３】実施例２にかかる画像処理装置の展開部を示すブロック図である。
【図４】実施例２にかかる可変長符号化処理の一例を示す説明図である。
【図５】実施例２にかかる可変長符号化手順の一例を示すフローチャートである。
【図６】実施例２にかかる可変長符号化処理により得られるデータの構造を模式的に示す説明図である。
【図７】実施例２にかかる可変長符号化部の出力データの構造を示す説明図である。
【図８】実施例２にかかる画像処理装置によるＤ１ブロックのメモリ格納構造の一例を示す説明図である。
【図９】実施例２にかかる画像処理装置によるＤ２ブロックのメモリ格納構造の一例を示す説明図である。
【図１０】実施例２にかかる画像処理装置によるＤ２ブロックの一例を示す説明図である。
【図１１】実施例２にかかる画像処理装置による各列の残余データフィールドの一例を示す説明図である。
【図１２】実施例２にかかる画像処理装置によるＤ２テーブルのメモリ格納構造の一例を示す説明図である。
【図１３】実施例２にかかる画像処理装置によるＤ２テーブルエントリフィールドの一例を示す説明図である。
【図１４】実施例２にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図１５】実施例２にかかる画像処理装置によるデータの読出し手順の一例を示すフローチャートである。
【図１６】実施例２にかかる画像処理装置によるメモリ帯域の削減効果を示す説明図である。
【図１７】実施例２にかかる画像処理装置によるメモリ帯域の削減効果を示す説明図である。
【図１８】実施例３にかかる画像処理装置におけるデータ格納方法を説明する説明図である。
【図１９】図１８に対応するＩｓＶａｌｉｄフラグを示す図表である。
【図２０】図１８に対応するＩｓＮｅｉｇｈｂｏｒフラグを示す図表である。
【図２１】実施例３にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図２２】実施例３にかかる画像処理装置によるデータの読出し手順の一例を示すフローチャートである。
【図２３】実施例４にかかる画像処理装置におけるデータ格納方法を説明する説明図である。
【図２４】図２３に対応するＩｓＮｅｉｇｈｂｏｒフラグを示す図表である。
【図２５】実施例４にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図２６】実施例４にかかる画像処理装置によるデータの読出し手順の一例を示すフローチャートである。
【図２７】実施例４にかかる画像処理装置によるメモリ帯域の削減効果を示す説明図である。
【図２８】実施例５におけるＩｓＮｅｉｇｈｂｏｒフラグの一例を示す図表である。
【図２９】実施例５にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図３０】実施例５にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図３１】実施例５にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図３２】実施例６におけるＩｓＮｅｉｇｈｂｏｒフラグの一例を示す図表である。
【図３３】実施例６にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図３４】実施例６にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【図３５】実施例６にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この画像処理装置および画像処理方法の好適な実施の形態を詳細に説明する。以下の各実施例の説明においては、同様の構成要素には同一の符号を付して、重複する説明を省略する。
【００１２】
（実施例１）
実施例１にかかる画像処理装置および画像処理方法は、入力画像を複数の小領域に分割し、小領域ごとに圧縮されたデータから所定サイズ以下の第１のデータとその残りの第２のデータを生成し、第２のデータを複数の小領域分まとめて第３のデータとし、第３のデータのサイズ情報を生成する。
【００１３】
・画像処理装置の構成
図１は、実施例１にかかる画像処理装置を示すブロック図である。図１に示すように、画像処理装置は、入力画像のデータに対して圧縮処理を行う圧縮処理部１を備えている。圧縮処理部１は、画像格納部１１、可変長符号化部１２、データ構築部１３および圧縮データ格納部１４を備えている。画像格納部１１は、入力画像のデータを格納し、複数の小領域の画像データに分割する。入力画像のデータは、例えば図示しないリクエスト制御部から渡される。可変長符号化部１２は、画像格納部１１から小領域の画像データを読み出し、小領域ごとに画像データを可変長符号化法により符号化して圧縮する。
【００１４】
データ構築部１３は、可変長符号化部１２により圧縮されたデータを第１のデータと第２のデータとに分割する。第１のデータは、可変長符号化部１２により圧縮されたデータのうちの、所定のデータサイズ以下のデータ部分である。第２のデータは、可変長符号化部１２により圧縮されたデータのうちの、所定のデータサイズを超える分のデータ部分である。可変長符号化部１２により圧縮されたデータのデータサイズが所定のデータサイズ以下である場合には、第１のデータのみが生成される。データ構築部１３は、第２のデータを複数の小領域分まとめて第３のデータとする。
【００１５】
データ構築部１３は、第１のデータに基づいて第１のブロックデータを生成する。第１のブロックデータは、例えば図示しない外部メモリアクセス制御部に接続されたメモリの複数の第１のブロックのうち前記小領域に対応する第１のブロックに書き込まれる。第１のブロックは、前記所定のデータサイズ以上の固定のメモリサイズを有する。データ構築部１３は、第３のデータに基づいて第２のブロックデータを生成する。第２のブロックデータは、メモリの複数の第２のブロックのうち、第２のデータがまとめられた小領域のグループに対応する第２のブロックに書き込まれる。データ構築部１３は、第３のデータのサイズ情報を生成する。
【００１６】
これ以降、第１のデータをＤ１データと呼び、第２のデータを残余データと呼び、第３のデータを集約残余データと呼ぶ。第１のブロックデータをＤ１ブロックデータと呼び、第２のブロックデータをＤ２ブロックデータと呼び、第３のデータのサイズ情報をＤ２サイズ情報と呼ぶ。圧縮データ格納部１４は、Ｄ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報を格納する。圧縮データ格納部１４に格納されたＤ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報は、例えば図示しない外部メモリアクセス制御部へ渡される。図示しないメモリにおいて、第１のブロックをＤ１ブロックと呼び、第２のブロックをＤ２ブロックと呼ぶ。
【００１７】
・画像処理手順
圧縮処理部１は、例えば図示しないリクエスト制御部から渡された入力画像のデータを画像格納部１１に格納し、小領域の画像データに分割する。次いで、圧縮処理部１は、可変長符号化部１２により、画像格納部１１から小領域の画像データを読み出し、該画像データを可変長符号化法により符号化して圧縮する。次いで、圧縮処理部１は、データ構築部１３により、可変長符号化部１２により圧縮されたデータから、Ｄ１データ、残余データ、集約残余データ、Ｄ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報を生成する。次いで、圧縮処理部１は、圧縮データ格納部１４にＤ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報を格納する。圧縮処理部１は、圧縮データ格納部１４から例えば図示しない外部メモリアクセス制御部へＤ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報を出力する。
【００１８】
実施例１によれば、可変長符号化部１２およびデータ構築部１３によりＤ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報が生成される。Ｄ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報が格納されているメモリからデータを読み出す際に、Ｄ２サイズ情報を確認することにより、Ｄ２ブロックのデータを読み出す必要があるか否かを判定することができる。その結果、Ｄ２ブロックのデータを読み出す必要がないと判定された場合には、メモリからＤ１ブロックのデータを読み出し、Ｄ２ブロックのデータを読み出さなくてもよいので、メモリ帯域を削減することができる。Ｄ２ブロックのデータを読み出す必要があると判定された場合には、Ｄ２ブロックに複数の小領域の残余データがまとめられているので、まとめられていない残余データを一つずつ読み出す場合に比べて読み出しリクエストの発行回数が減る。従って、データの読み出し回数が減り、メモリ帯域を削減することができる。また、Ｄ１ブロックのデータを読み出す処理とＤ２ブロックのデータを読み出す処理とを並列に行うことができるので、データの読み出しが完了するまでの時間を短縮することができる。従って、メモリ帯域を削減することができる。
【００１９】
（実施例２）
実施例２にかかる画像処理装置および画像処理方法は、実施例１の圧縮処理部１を備えた画像処理装置、および実施例１の画像処理手順に従って画像データを圧縮する画像処理方法である。
【００２０】
・画像処理装置の構成
図２は、実施例２にかかる画像処理装置を示すブロック図である。図２に示すように、画像処理装置は、エンコーダ２およびメモリコントローラ３を備えている。エンコーダ２は、圧縮されていない矩形状の画像のデータ（矩形ライトデータ）をデコード画像出力部４からメモリコントローラ３へ出力する。エンコーダ２は、参照画読出し部５により、メモリコントローラ３から圧縮されていない矩形状の画像のデータ（矩形リードデータ）を受け取る。ここでは、矩形のライトデータおよび矩形のリードデータとしているが、矩形以外の形状でもよい。
【００２１】
メモリコントローラ３は、リクエスト制御部６、実施例１の圧縮処理部１、展開部７および外部メモリアクセス制御部８を備えている。リクエスト制御部６は、書込みリクエストを発行し、デコード画像出力部４から受け取った矩形ライトデータを圧縮処理部１に渡す。リクエスト制御部６は、読出しリクエストを発行し、展開部７から受け取った矩形リードデータを参照画読出し部５に渡す。圧縮処理部１は、実施例１において説明したとおりである。圧縮処理部１の画像格納部１１（図１参照）に矩形ライトデータが格納される。圧縮処理部１の圧縮データ格納部１４（図１参照）に格納された圧縮データは、外部メモリアクセス制御部８に渡される。
【００２２】
外部メモリアクセス制御部８は、メモリコントローラ３に接続された外部メモリ９に対するアクセスを制御し、メモリコントローラ３と外部メモリ９との間で圧縮データの受け渡しを行う。展開部７は、外部メモリ９から読み出された圧縮データのＤ１ブロックのデータ、Ｄ２ブロックのデータおよびＤ２テーブルのデータに基づいて、圧縮データを圧縮されていない画像データ（矩形リードデータ）に展開する。Ｄ２テーブルは、外部メモリ９においてＤ２サイズ情報を格納したテーブルである。外部メモリ９には、圧縮処理部１によって圧縮されたデータが書き込まれる。外部メモリ９には、Ｄ１ブロックのデータを格納する第１の領域、Ｄ２ブロックのデータを格納する第２の領域、およびＤ２テーブルが設けられている。外部メモリ９は、特に限定しないが、例えばＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、シンクロナスＤＲＡＭ）を備えている。
【００２３】
・展開部の構成
図３は、実施例２にかかる画像処理装置の展開部を示すブロック図である。図３に示すように、展開部７は、Ｄ１読出し部２１、Ｄ２テーブルキャッシュ制御部２２、Ｄ２読出し判定部２３、Ｄ２ブロックキャッシュ制御部２４、残余データ取得部２５、可変長復号部２６、画像格納部２７、テーブルキャッシュ２８およびＤ２キャッシュ２９を備えている。Ｄ１読出し部２１は、読出しの対象に指定された例えば矩形状の画像領域に対応するＤ１ブロックのデータを外部メモリ９から読み出す。テーブルキャッシュ２８は、Ｄ２テーブルの一部のデータを格納する記憶部である。Ｄ２キャッシュ２９は、一部のＤ２ブロックのデータを格納する記憶部である。
【００２４】
Ｄ２テーブルキャッシュ制御部２２は、読出しの対象に指定された例えば矩形状の画像領域に対応するＤ２テーブルのデータ（Ｄ２サイズ情報）がテーブルキャッシュ２８に格納されているか否かを判定する。Ｄ２テーブルキャッシュ制御部２２は、所望のＤ２サイズ情報がテーブルキャッシュ２８に格納されている場合（キャッシュヒット）、テーブルキャッシュ２８から所望のＤ２サイズ情報を読み出す。Ｄ２テーブルキャッシュ制御部２２は、所望のＤ２サイズ情報がテーブルキャッシュ２８に格納されていない場合（キャッシュミス）、外部メモリ９から所望のＤ２サイズ情報を読み出し、テーブルキャッシュ２８に格納する。
【００２５】
Ｄ２読出し判定部２３は、Ｄ２テーブルキャッシュ制御部２２から渡されたＤ２サイズ情報に基づいて、読出しの対象に指定された例えば矩形状の画像領域に対応するＤ２ブロックのデータを読み出す必要があるか否かを判定する。当該Ｄ２サイズ情報が、対応するＤ２ブロックに残余データが格納されていることを示している場合、当該Ｄ２ブロックのデータを読み出す必要がある。当該Ｄ２サイズ情報が、対応するＤ２ブロックに残余データが格納されていないことを示している場合、当該Ｄ２ブロックのデータを読み出す必要がない。
【００２６】
Ｄ２読出し判定部２３による判定の結果、Ｄ２ブロックのデータを読み出す必要がある場合、Ｄ２ブロックキャッシュ制御部２４は、読み出す必要のあるＤ２ブロックのデータがＤ２キャッシュ２９に格納されているか否かを判定する。Ｄ２ブロックキャッシュ制御部２４は、所望のＤ２ブロックのデータがＤ２キャッシュ２９に格納されている場合（キャッシュヒット）、Ｄ２キャッシュ２９から所望のＤ２ブロックのデータを読み出す。Ｄ２ブロックキャッシュ制御部２４は、所望のＤ２ブロックのデータがＤ２キャッシュ２９に格納されていない場合（キャッシュミス）、外部メモリ９から所望のＤ２ブロックのデータを読み出し、Ｄ２キャッシュ２９に格納する。
【００２７】
残余データ取得部２５は、Ｄ２ブロックキャッシュ制御部２４から渡されたＤ２ブロックのデータから所望の残余データを取得する。可変長復号部２６は、Ｄ１読出し部２１により読み出されたＤ１ブロックのデータと、残余データ取得部２５から渡された残余データと、を結合して可変長復号処理を行う。Ｄ２読出し判定部２３によりＤ２ブロックのデータを読み出す必要がないと判定された場合には、可変長復号部２６は、Ｄ１読出し部２１により読み出されたＤ１ブロックのデータに対して可変長復号処理を行う。画像格納部２７は、可変長復号部２６により復号された画素データを格納する。画像格納部２７に格納された画素データは、リクエスト制御部６（図２参照）へ送られる。なお、テーブルキャッシュ２８にＤ２テーブルの全部のデータが格納されていてもよい。Ｄ２キャッシュ２９に全部のＤ２ブロックのデータが格納されていてもよい。
【００２８】
実施例２にかかる画像処理装置の一例として、例えばＨ．２６４規格に準拠したエンコーダ装置が挙げられる。Ｈ．２６４は、ＩＴＵ−Ｔ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ  Ｓｅｃｔｏｒ、国際電気通信連合電気通信標準化部門）により策定された動画像符号化規格の一つである。Ｈ．２６４エンコーダ装置は、例えば半導体集積回路装置で構成されていてもよい。図２に示す構成のうち、メモリコントローラ３が半導体集積回路装置で構成されていてもよいし、メモリコントローラ３およびエンコーダ２で一つの半導体集積回路装置が構成されていてもよい。なお、別の規格のエンコーダ装置や、エンコーダ装置以外の装置にも、実施例２にかかる画像処理装置を適用することができる。別の規格の一例として、例えばＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）−２規格が挙げられる。
【００２９】
・可変長符号化処理の一例
図４は、実施例２にかかる可変長符号化処理の一例を示す説明図である。図４において、丸印は画素３１を表し、画素３１の中の数値（１２８や１２９）は画素値を表す。１６個の画素３１の周囲にある数値（０や−１）は、隣接する画素の画素値の差分値である。一般に、隣接する画素の値には相関性があるので、隣接する画素間の差分値は０付近に集中する。この特性を利用すると、例えば隣接する画素間で差分値を求め、０などの小さい値の差分値には短い符号（例えば００や１００や１１０など）を割り当て、大きい差分値には長い符号（例えば１１１１０００００など）を割り当てることで、ビット長を削減することができる。
【００３０】
図４に示す例では、隣接する画素間において、左側の画素の画素値から右側の画素の画素値が減算されている。左端の縦の列については、下側の画素の画素値から上側の画素の画素値が減算されている。左端の縦の列において最も上の画素は、非圧縮とする。一例として、小領域を８画素×２画素（横に８画素で縦に２画素の計１６画素）とし、１画素を８ビットの固定長で表現した場合、図示例において全画素を非圧縮とすると、小領域の画素値の合計は１２８ビット（＝８ビット×１６画素）となる。それに対して、例えば差分値０に対して符号００を割り当て、差分値−１に対して符号１１０を割り当てると、小領域の画素値の合計は４０ビット（＝固定長の８ビット＋“００”の２ビット×１３個＋“１１０”の３ビット×２個）となる。つまり、図示例では、小領域の画素値の合計を１２８ビットから４０ビットに圧縮することができる。
【００３１】
なお、可変長符号化処理の方式については、ここで説明した例に限らず、種々の方式の可変長符号化処理を適用することができる。可変長符号化処理は可逆性であってもよいし、非可逆性であってもよい。また、図５および図６に示すように、可変長符号化部１２において複数の方式の可変長符号化処理を行い、得られた複数の可変長符号の中からデータサイズが最も小さいものを選択する構成としてもよい。
【００３２】
図５は、実施例２にかかる可変長符号化手順の一例を示すフローチャートである。図５に示す例では、圧縮方式が３種類あるが、２種類でもよいし、４種類以上でもよい。図５に示すように、可変長符号化部１２において可変長符号化処理が開始されると、可変長符号化部１２は、与えられた小領域の画像データに対して、例えば第１の圧縮方式、第２の圧縮方式および第３の圧縮方式でそれぞれ可変長符号化処理を行う（ステップＳ１、ステップＳ２、ステップＳ３）。これらの圧縮モードの他に、与えられた小領域の画像データに対して非圧縮、すなわち可変長符号化処理を行わない、という非圧縮モードが設けられていてもよい（ステップＳ４）。各モードでのデータが得られたら、可変長符号化部１２は、データサイズが最も小さくなるモードを選択する（ステップＳ５）。そして、可変長符号化部１２は、選択したモードのデータを出力し（ステップＳ６）、可変長符号化処理を終了する。
【００３３】
図６は、実施例２にかかる可変長符号化処理により得られるデータの構造を模式的に示す説明図である。図６に示すように、データは、例えば各モードのデータ４１，４２，４３，４４の先頭にモードを表すビット４５，４６，４７，４８が付加された構成となる。図６に示す例は、図５に示す例のように可変長符号化部１２において複数のモードで画像データを処理する場合に適用される。図５および図６に示す例のように非圧縮モードが設けられている場合、可変長符号化部１２の出力データのデータサイズは、非圧縮データ（元の画素データ）に圧縮モードを表すフラグビットを加えたデータサイズ以下となる。
【００３４】
・可変長符号データの構造
図７は、実施例２にかかる可変長符号化部から出力される可変長符号データの構造を示す説明図である。図７に示すように、可変長符号化部１２から出力される可変長符号データ５１のデータサイズが、予め設定されているデータサイズを超える場合、該データ５１は、予め設定されているデータサイズのＤ１データ５２と、予め設定されているデータサイズを超える分の残余データ５３とに分割される。予め設定されているデータサイズは、特に限定しないが、例えば８バイトであってもよい。可変長符号データ５１のデータサイズが、予め設定されているデータサイズ以下である場合、該データ５１はＤ１データ５２のみとなる。
【００３５】
・Ｄ１ブロックのメモリ格納構造
図８は、実施例２にかかる画像処理装置によるＤ１ブロックのメモリ格納構造の一例を示す説明図である。図８に示すように、外部メモリ９の第１の領域６１には、入力画像の小領域ごとにＤ１ブロック６２が設けられる。Ｄ１ブロック６２には、Ｄ１ブロックデータが格納される。図８に示す例では、説明の便宜上、個々のＤ１ブロックにＡ１１、Ａ１２、Ａ２１などの記号を付している。また、第１の領域６１を４個×４個のＤ１ブロックのグループに分けて異なるアルファベット（Ａ、Ｂ、Ｃ・・・）を付しているが、後述するＤ２ブロックとの対応関係を明確にするためにグループ化しただけであり、特別な意味があるわけではない。各グループのＤ１ブロック数は４個×４個に限らない。図が繁雑になるのを避けるため、Ａを付したグループ以外のグループでは個々のＤ１ブロックを省略した。
【００３６】
第１の領域６１において、各Ｄ１ブロック６２の位置は小領域ごとに予め決められている。第１の領域６１において、各Ｄ１ブロックに割り当てられているメモリサイズは予め一定値に決められている。Ｄ１ブロックに割り当てられているメモリサイズは、特に限定しないが、例えば８バイトであってもよい。
【００３７】
・Ｄ２ブロックのメモリ格納構造
図９は、実施例２にかかる画像処理装置によるＤ２ブロックのメモリ格納構造の一例を示す説明図である。図９に示すように、外部メモリ９の第２の領域６３には、複数のＤ１ブロックをまとめたグループ（図８においてアルファベットを付したグループ）ごとにＤ２ブロック６４が設けられる。Ｄ２ブロック６４には、Ｄ２ブロックデータが格納される。例えば、図９において「Ａ１１〜Ａ４４用Ｄ２ブロック」には、図８に示す第１の領域６１においてＡを付した例えば１６個のＤ１ブロックに格納されるＤ１データに付随する残余データがまとめて格納される。「Ｂ１１〜Ｂ４４用Ｄ２ブロック」などの他のＤ２ブロックも同様である。第２の領域６３において、各Ｄ２ブロックの位置は、複数のＤ１ブロックをまとめたグループごとに予め決められている。Ｄ２ブロックに割り当てられているメモリサイズは予め一定値に決められている。従って、第２の領域６３において、Ｄ１ブロックに付随する残余データが格納されているＤ２ブロックは、一意に決定される。
【００３８】
図１０は、実施例２にかかる画像処理装置によるＤ２ブロックの一例を示す説明図である。図１０に示すように、Ｄ２ブロック６４には、例えば各列の残余データフィールド６５および各列の残余データ合計値フィールド６６が設けられる。各列の残余データフィールド６５には、各列の残余データが格納される。各列の残余データ合計値フィールド６６には、各列の残余データの合計値ＲｏｗＳｉｚｅが格納される。例えばＤ２ブロック６４が、図８においてＡを付したＤ１ブロックに付随する残余データをまとめたものである場合を例にして説明する。図１０に示すＤ２ブロック６４において、各列の残余データフィールド６５の一つである「第１列目の残余データフィールド」には、Ａ１１、Ａ２１、Ａ３１およびＡ４１の各Ｄ１ブロックに付随する残余データが格納される。「第２列目の残余データフィールド」などの他の列の残余データフィールドも同様である。各列の残余データ合計値フィールド６６の一つである「ＲｏｗＳｉｚｅ１フィールド」には、「第１列目の残余データ」に含まれるＡ１１、Ａ２１、Ａ３１およびＡ４１の各Ｄ１ブロックに付随する残余データのデータサイズの合計値ＲｏｗＳｉｚｅ１が格納される。「ＲｏｗＳｉｚｅ２」などの他の列の残余データ合計値フィールドも同様である。
【００３９】
例えば図８において第２列目のＡ１２、Ａ２２、Ａ３２およびＡ４２の各Ｄ１ブロックに残余データが付随していない場合には、Ｄ２ブロック６４には該当する「第２列目の残余データフィールド」がない。「ＲｏｗＳｉｚｅ２フィールド」の値ＲｏｗＳｉｚｅ２は０となる。従って、個々のＤ２ブロック６４において、例えば当該Ｄ２ブロック６４の先頭アドレスから各列の残余データが詰められて格納されている場合、当該Ｄ２ブロック６４の先頭アドレスから「ＲｏｗＳｉｚｅ１フィールド」の分だけオフセットすることにより、第２列目の残余データのアドレスを得ることができる。当該Ｄ２ブロック６４の先頭アドレスから「ＲｏｗＳｉｚｅ１フィールド」＋「ＲｏｗＳｉｚｅ２フィールド」の分だけオフセットすることにより、第３列目の残余データのアドレスを得ることができる。第４列目の残余データについても同様である。
【００４０】
図１１は、実施例２にかかる画像処理装置による各列の残余データフィールドの一例を示す説明図である。図１１に示すように、各列の残余データフィールド６５には、例えば各行の残余データフィールド６７、ＩｓＶａｌｉｄフラグフィールド６８および各行の残余データのデータサイズフィールド６９が格納される。例えば各列の残余データフィールド６５が、図８においてＡ１１、Ａ２１、Ａ３１およびＡ４１の各Ｄ１ブロック、すなわちＡを付したグループの第１列目を対象にしている場合を例にして説明する。図１１に示す各列の残余データフィールド６５において、各行の残余データフィールド６７の一つである「第１行目の残余データフィールド」には、第１行目のＡ１１のＤ１ブロックに付随する残余データが格納される。「第２行目の残余データフィールド」などの他の行の残余データフィールドも同様である。
【００４１】
ＩｓＶａｌｉｄフラグフィールド６８には、ＩｓＶａｌｉｄフラグが格納される。ＩｓＶａｌｉｄフラグは、各列内の各行のＤ１ブロックに残余データが付随しているか否かを示す。ＩｓＶａｌｉｄフラグフィールド６８のビット数は予め決められている。例えばＡ１１、Ａ２１およびＡ４１の各Ｄ１ブロックには残余データが付随しているが、Ａ３１のＤ１ブロックには残余データが付随していない場合、ＩｓＶａｌｉｄフラグフィールド６８の値は１１０１となる。この場合、各列の残余データフィールド６５において、第３行目の残余データはなく、第２行目の残余データの後に第４行目の残余データが詰めて配置される。
【００４２】
各行の残余データのデータサイズフィールド６９には、各行の残余データのデータサイズＤｉｆｆＳｉｚｅが、第１行目の残余データのデータサイズ、第２行目の残余データのデータサイズ、第３行目の残余データのデータサイズおよび第４行目の残余データのデータサイズの順に例えばバイト単位で格納される。残余データがない行については、各行の残余データのデータサイズフィールド６９にデータサイズが格納されない。残余データが存在する行のサイズを示すためのビット数は予め決められている。
【００４３】
従って、個々の各列の残余データフィールド６５において、例えば当該フィールドの先頭アドレスから「ＩｓＶａｌｉｄフラグフィールド」＋「各行の残余データのデータサイズフィールド」の分だけオフセットすることにより、第１行目の残余データのアドレスを得ることができる。当該各列の残余データフィールド６５の先頭アドレスから「ＩｓＶａｌｉｄフラグフィールド」＋「各行の残余データのデータサイズフィールド」＋「第１行目の残余データのデータサイズ」の分だけオフセットすることにより、第２行目の残余データのアドレスを得ることができる。第３行目の残余データや第４行目の残余データについても同様である。
【００４４】
上述した構成で外部メモリ９にＤ１ブロックおよびＤ２ブロックが設けられることによって、あるＤ１ブロックに対して、該Ｄ１ブロックに付随する残余データが格納されているＤ２ブロックが一意に決まり、該Ｄ２ブロックにおいて所望の残余データを含む列が一意に決まり、該列において所望の残余データが一意に決まる。つまり、外部メモリ９において、あるＤ１ブロックに対応する残余データの格納位置が一意に決まる。なお、Ｄ２ブロックにおいて各列で残余データをまとめる代わりに、各行で残余データをまとめる構成としてもよい。
【００４５】
・Ｄ２テーブルのメモリ格納構造
図１２は、実施例２にかかる画像処理装置によるＤ２テーブルのメモリ格納構造の一例を示す説明図である。図１２に示すように、Ｄ２テーブル７１には、Ｄ２ブロックごとにＤ２テーブルエントリフィールド７２が設けられる。Ｄ２テーブルエントリフィールド７２には、Ｄ２テーブルエントリデータが格納される。Ｄ２テーブルエントリデータは、例えばＤ２サイズ情報を含む。外部メモリ９において、各Ｄ２テーブルエントリフィールド７２の位置は予め決められている。外部メモリ９において、各Ｄ２テーブルエントリフィールド７２に割り当てられているメモリサイズは予め一定値に決められている。従って、外部メモリ９において、Ｄ２ブロックに対応するＤ２テーブルエントリデータが一意に決定される。
【００４６】
図１３は、実施例２にかかる画像処理装置によるＤ２テーブルエントリフィールドの一例を示す説明図である。図１３に示すように、各Ｄ２テーブルエントリフィールド７２には、例えばＤ２ブロックのデータサイズフィールド７３およびＩｓＶａｌｉｄＲｏｗフラグフィールド７４が設けられる。Ｄ２ブロックのデータサイズフィールド７３には、Ｄ２ブロックのデータサイズＤ２Ｓｉｚｅが格納される。Ｄ２ブロックのデータサイズＤ２Ｓｉｚｅは、図１０に示すＤ２ブロック６４において、各列の残余データフィールド６５と各列の残余データ合計値フィールド６６の合計値である。従って、Ｄ２ブロックのデータサイズＤ２Ｓｉｚｅの値が、Ｄ２ブロック６４に残余データが格納されていない場合の値に等しければ、圧縮データを復号する（非圧縮データの場合には復号しない）際にＤ２ブロックのデータを読み出す必要がない。なお、Ｄ２ブロックのデータサイズＤ２Ｓｉｚｅは、図１０に示すＤ２ブロック６４において、各列の残余データフィールド６５の合計値であってもよい。
【００４７】
ＩｓＶａｌｉｄＲｏｗフラグフィールド７４には、ＩｓＶａｌｉｄＲｏｗフラグが格納される。ＩｓＶａｌｉｄＲｏｗフラグは、Ｄ２ブロック６４の各列においてＤ１ブロックに残余データが付随しているか否かを示す。例えば図８においてＡを付したグループの第１列目と第２列目を例にして説明する。第１列目のＤ１ブロック（Ａ１１、Ａ２１、Ａ３１、Ａ４１）のいずれかに残余データが付随している場合、Ａを付したグループに対応するＤ２テーブルエントリフィールド７２のＩｓＶａｌｉｄＲｏｗフラグフィールド７４において、第１列目に対応する値が１となる。第２列目のＤ１ブロック（Ａ１２、Ａ２２、Ａ３２、Ａ４２）のいずれにも残余データが付随していない場合、Ａを付したグループに対応するＤ２テーブルエントリフィールド７２のＩｓＶａｌｉｄＲｏｗフラグフィールド７４において、第２列目に対応する値が０となる。第３列目および第４列目についても同様である。従って、ＩｓＶａｌｉｄＲｏｗフラグフィールド７４の各ビットが０であれば、圧縮データを復号する（非圧縮データの場合には復号しない）際にＤ２ブロックのデータを読み出す必要がない。
【００４８】
なお、Ｄ２テーブルエントリフィールド７２にはＤ２ブロックのデータサイズＤ２Ｓｉｚｅが格納されていればよいが、ＩｓＶａｌｉｄＲｏｗフラグやその他の情報が付加されていてもよい。その他の情報の一例として、例えばＤ２ブロック６４の各行においてＤ１ブロックに残余データが付随しているか否かを示すフラグや、各Ｄ１ブロック６２に残余データが付随しているか否かを示すフラグなどが挙げられる。図１３に示すように、Ｄ２テーブルエントリフィールド７２にＤ２ブロックのデータサイズＤ２ＳｉｚｅとＩｓＶａｌｉｄＲｏｗフラグとが格納されている場合には、Ｄ２ブロックのデータを読み出す必要があるか否かを判定する際に、どちらを確認してもよい。テーブルキャッシュ２８（図３参照）には、一部のＤ２テーブルエントリフィールド７２のデータをキャッシュするようにしてもよいし、全てのＤ２テーブルエントリフィールド７２のデータをキャッシュするようにしてもよい。また、テーブルキャッシュ２８に、Ｄ２テーブルエントリフィールド７２のうちの一部のデータ、例えばＤ２ブロックのデータサイズＤ２Ｓｉｚｅのみをキャッシュするようにしてもよい。
【００４９】
・データの書込み処理
図１４は、実施例２にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。図１４に示すように、外部メモリ９へのデータの書込み処理が開始されると、まず、圧縮処理部１は、１回の書込みリクエストが終了するまで画像格納部１１に矩形状の入力画像のデータを順に格納する（ステップＳ１１、ステップＳ１２：Ｎｏ）。１回の書込みリクエストが終了したら（ステップＳ１２：Ｙｅｓ）、圧縮処理部１は、画像格納部１１に格納した入力画像のデータを例えば８画素×２画素の小領域に分割し、小領域の画像データを読み出す（ステップＳ１３）。
【００５０】
次いで、圧縮処理部１は、可変長符号化部１２により圧縮モード（非圧縮モードを含む）を選択する（ステップＳ１４）。圧縮処理部１は、可変長符号化部１２により、選択したモードで小領域の画像データを圧縮する（非圧縮の場合を含む）。圧縮処理部１は、データ構築部１３により、Ｄ１データおよび残余データを生成する（ステップＳ１５）。圧縮処理部１は、生成したＤ１データおよび残余データを圧縮データ格納部１４に格納する。このとき、圧縮処理部１は、データ構築部１３により残余データのデータサイズ（ＤｉｆｆＳｉｚｅ）を求める。この残余データのデータサイズは、外部メモリ９にＤ２ブロックデータを書き込む際に、各行の残余データのデータサイズフィールド６９に格納される（図１１参照）。
【００５１】
図８に示す例において同一のアルファベットを付したグループの１列分の小領域についてＤ１データおよび残余データの生成が終了するまで（ステップＳ１６：Ｎｏ）、圧縮処理部１はステップＳ１４からステップＳ１６までを繰り返す。図８に示す例において同一のアルファベットを付したグループの１列分の小領域について処理が終了したら（ステップＳ１６：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、その列について残余データの合計値（ＲｏｗＳｉｚｅ）と、ＩｓＶａｌｉｄＲｏｗフラグの対応するビットを生成する（ステップＳ１７、図１３参照）。残余データの合計値は、１列分の小領域についての処理が終了するまでにステップＳ１５において求めた残余データのデータサイズ（ＤｉｆｆＳｉｚｅ）を合計したものである。残余データの合計値は、外部メモリ９にＤ２ブロックデータを書き込む際に、各列の残余データ合計値フィールド６６に格納される（図１０参照）。ＩｓＶａｌｉｄＲｏｗフラグのビットは、外部メモリ９にＤ２サイズ情報を書き込む際に、対応するＤ２テーブルエントリフィールド７２に格納される（図１３参照）。
【００５２】
図８に示す例において同一のアルファベットを付したグループの全列分の小領域について処理が終了するまで（ステップＳ１８：Ｎｏ）、圧縮処理部１はステップＳ１３からステップＳ１８までを繰り返す。図８に示す例において同一のアルファベットを付したグループの全列分の小領域について処理が終了したら（ステップＳ１８：Ｙｅｓ）、圧縮処理部１は、外部メモリ９にＤ１ブロックデータを書込む（ステップＳ１９）。
【００５３】
また、圧縮データ格納部１４に、１個のＤ２ブロックデータを構築するのに必要な全ての残余データが揃ったら（ステップＳ２０：Ｙｅｓ）、圧縮処理部１は、データ構築部１３によりそのＤ２ブロックデータのデータサイズ（Ｄ２Ｓｉｚｅ）を求める。Ｄ２ブロックのデータサイズは、外部メモリ９にＤ２サイズ情報を書き込む際に、Ｄ２ブロックのデータサイズフィールド７３に格納される（図１３参照）。また、圧縮処理部１は、データ構築部１３により、対応するＤ２テーブルエントリのデータと、ステップＳ１７で求めた残余データの合計値（ＲｏｗＳｉｚｅ）に基づいてＤ２ヘッダを生成する（ステップＳ２１）。Ｄ２ヘッダは、例えば図１０に示すＤ２ブロック６４において、各列の残余データ合計値フィールド６６を含む。Ｄ２ヘッダと１個のＤ２ブロックを構築するのに必要な全ての残余データとによって、Ｄ２ブロックが構築される。圧縮処理部１は、外部メモリ９にＤ２ブロックデータおよび対応するＤ２テーブルエントリのデータを書込み（ステップＳ２２）、処理を終了する。なお、外部メモリ９にＤ２テーブルエントリのデータを書き込む際に、複数のＤ２ブロック分のデータをまとめて書き込むようにしてもよい。この場合、外部メモリ９への書込みリクエストの回数が減るので、好ましい。
【００５４】
・データの読出し処理
図１５は、実施例２にかかる画像処理装置によるデータの読出し手順の一例を示すフローチャートである。図１５に示すように、外部メモリ９からのデータの読出し処理が開始されると、まず、展開部７は、読出しリクエストで指定された画像の領域に対応する全てのＤ１ブロックを求め、Ｄ１読出し部２１により外部メモリ９から必要なＤ１ブロックのデータを全て読み出す（ステップＳ３１）。また、展開部７は、Ｄ２テーブルキャッシュ制御部２２により、読出しリクエストで指定された画像の領域に対応するＤ２テーブルエントリのデータがテーブルキャッシュ２８に格納されているか否かを確認し（ステップＳ３２）、格納されていない場合（ステップＳ３２：Ｎｏ）、外部メモリ９から所望のＤ２テーブルエントリのデータを読み出す（ステップＳ３３）。
【００５５】
次いで、展開部７は、Ｄ２読出し判定部２３により、テーブルキャッシュ２８または外部メモリ９から与えられたＤ２テーブルエントリのデータに含まれているＤ２ブロックのデータサイズＤ２ＳｉｚｅまたはＩｓＶａｌｉｄＲｏｗフラグを参照し、Ｄ２ブロックのデータを読み出す必要があるか否かを判定する。ここでは、Ｄ２ブロックのデータを読み出す必要があるとして説明する。展開部７は、Ｄ２ブロックキャッシュ制御部２４により、読み出す必要のあるＤ２ブロックのデータがＤ２キャッシュ２９に格納さているか否かを確認し（ステップＳ３４）、格納されていない場合（ステップＳ３４：Ｎｏ）、外部メモリ９から所望のＤ２ブロックのデータを読み出す（ステップＳ３５）。
【００５６】
次いで、展開部７は、残余データ取得部２５により、Ｄ２ブロックの残余データ合計値ＲｏｗＳｉｚｅに基づいて所望の残余データを含む列の残余データフィールド６５（図１０参照）のアドレスを計算する。これによって、所望の残余データを含む列が得られる（ステップＳ３６）。次いで、展開部７は、残余データ取得部２５により、各列のデータのＩｓＶａｌｉｄフラグと残余データのデータサイズＤｉｆｆＳｉｚｅとから、所望の残余データのアドレスを取得する（図１１参照）。これによって、所望の残余データが得られる（ステップＳ３７）。１列分の残余データを取得し終わるまで（ステップＳ３８：Ｎｏ）、展開部７はステップＳ３７からステップＳ３８までを繰り返す。１列分の残余データを取得し終えたら（ステップＳ３８：Ｙｅｓ）、復号に必要な全ての列の残余データを取得し終わるまで（ステップＳ３９：Ｎｏ）、展開部７はステップＳ３６からステップＳ３９までを繰り返す。
【００５７】
復号に必要な全ての列の残余データを取得し終えたら（ステップＳ３９：Ｙｅｓ）、展開部７は、可変長復号部２６によりＤ１ブロックのデータと復号に必要な残余データとを結合し、例えば８画素×２画素単位の圧縮データ（非圧縮データの場合を含む）を生成する（ステップＳ４０）。そして、展開部７は、可変長復号部２６により圧縮データを復号する（非圧縮データの場合には復号しない、ステップＳ４１）。展開部７は、復号した画素データを画像格納部２７に格納する。読出しリクエストで指定された画像の領域について、全ての圧縮データが展開されるまで（ステップＳ４２：Ｎｏ）、展開部７はステップＳ４１からステップＳ４２までを繰り返す。全ての圧縮データが展開されたら（ステップＳ４２：Ｙｅｓ）、展開部７は画素データをエンコーダ２へ転送し（ステップＳ４３）、処理を終了する。なお、ステップＳ４１において、複数の圧縮データを復号する処理を並列に行ってもよい。また、ステップＳ４１の圧縮データを復号する処理と、ステップＳ３５の外部メモリ９からＤ２ブロックのデータを読み出す処理や、ステップＳ３６の所望の残余データを含む列を取得する処理や、ステップＳ３７の所望の残余データを取得する処理と、を並列に行ってもよい。
【００５８】
実施例２によれば、実施例１と同様の効果が得られる。例えば、１画素の画素値を８ビットで表し、８画素×２画素の領域を小領域とし、Ｄ１ブロックのメモリサイズを８バイトした場合の読出し処理におけるメモリ帯域の削減効果は、次の通りである。図１６に示すように、読出しリクエストで指定された画像の領域８１（太線で囲む領域）が小領域８２の境界と一致する場合、読出しリクエストで指定された画像の領域８１の１２８画素分のデータは非圧縮の場合で１２８バイトとなる。それに対して、実施例２においてＤ２ブロックのデータを読み出す必要がない場合、読出しリクエストで指定された画像の領域８１の１２８画素分のデータ（Ｄ１ブロック８個分のデータ）は６４バイト（＝８バイト×８個）である。従って、実施例２によれば、メモリ帯域を５０％削減することができる。また、図１７に示すように、読出しリクエストで指定された画像の領域８１（太線で囲む領域）が小領域８２の境界と一致しない場合、読出しリクエストで指定された画像の領域８１の１２８画素分のデータを読み出すには、１２個分のＤ１ブロックのデータを読み出す必要がある。１２個分のＤ１ブロックのデータは９６バイト（＝８バイト×１２個）であるので、実施例２においてＤ２ブロックのデータの読出しが不要であれば、メモリ帯域を２５％削減することができる。
【００５９】
（実施例３）
実施例３は、実施例２において、ある小領域の圧縮データ（非圧縮データの場合を含む）の残余データを、メモリのＤ２ブロックに格納するとともに、該小領域に隣接する小領域に対応するＤ１ブロックの未使用領域にも格納するものである。実施例３は、データの書込み処理においてＤ１ブロックデータを生成する際の処理の一部や、データの読出し処理においてＤ２ブロックのデータを読み出す際の処理の一部が実施例２とは異なるが、実施例３のその他の構成や処理は実施例２と同様である。以下に、実施例２と異なる点についてのみ説明する。
【００６０】
図１８は、実施例３にかかる画像処理装置におけるデータ格納方法を説明する説明図である。図１８において、上側の図９１は、各小領域の圧縮データ（非圧縮データの場合を含む）の状態を示す模式図である。図１８に示すように、実施例３では、ある小領域の圧縮データ（非圧縮データの場合を含む）の残余データ９２，９３，９４，９５，９６，９７は、外部メモリ９の第１の領域６１において隣接する小領域に対応するＤ１ブロックの未使用領域にも格納される。図１８に示す例では、ある小領域の残余データ９２，９３，９４，９５，９６，９７は、下側に隣接する小領域に対応するＤ１ブロックに格納されているが、下側に限らず、上側でもよいし、左側でもよいし、右側でもよい。
【００６１】
図１９は、図１８の上側に示す各小領域の圧縮データ（非圧縮データの場合を含む）の状態に対応するＩｓＶａｌｉｄフラグを示す図表である。図１９に示す図表１０１において、図１８に示す各小領域の圧縮データ（非圧縮データの場合を含む）の模式図９１との対応関係は、上から下に向かって１行目、２行目、・・・であり、左から右に向かって１列目、２列目、・・・である。図示例では、残余データがあるとＩｓＶａｌｉｄフラグは１であり、残余データがないとＩｓＶａｌｉｄフラグは０である。
【００６２】
図２０は、図１８の下側に示す外部メモリの第１の領域の状態に対応するＩｓＮｅｉｇｈｂｏｒフラグを示す図表である。ＩｓＮｅｉｇｈｂｏｒフラグは、Ｄ１ブロックに、該Ｄ１ブロックに対応する小領域に隣接する小領域の残余データを格納しているか否かを示す。図示例では、隣接する小領域の残余データを格納しているとＩｓＮｅｉｇｈｂｏｒフラグは１であり、隣接する小領域の残余データを格納していないとＩｓＮｅｉｇｈｂｏｒフラグは０である。図２０に示す図表１０２において、図１８に示す第１の領域６１の状態との対応関係は、上から下に向かって１行目、２行目、・・・であり、左から右に向かって１列目、２列目、・・・である。ＩｓＮｅｉｇｈｂｏｒフラグは、例えばＤ２テーブル７１のＤ２テーブルエントリフィールド７２に格納される（図１２参照）。ＩｓＶａｌｉｄフラグは、例えばＤ２テーブル７１のＤ２テーブルエントリフィールド７２にも格納されてもよい。
【００６３】
・データの書込み処理
図２１は、実施例３にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。図２１に示すように、処理が開始されると、まず、圧縮処理部１は、実施例２でのデータ書込み処理のステップＳ１５までと同様にして、小領域の画像データを圧縮する（非圧縮の場合を含む、ステップＳ５１）。このときに処理されている小領域を自小領域とする。次いで、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）のデータサイズが自小領域に対応する外部メモリ９のＤ１ブロックのメモリサイズ以下であるか否かを判定する（ステップＳ５２）。
【００６４】
データサイズがＤ１ブロックのメモリサイズ以下である場合（ステップＳ５２：Ｙｅｓ）、自小領域に対応するＤ１ブロックには未使用領域が存在する。従って、圧縮処理部１は、データ構築部１３により自小領域に対応するＩｓＶａｌｉｄフラグを０とし（ステップＳ５３）、自小領域の例えば上側（図１８の例）に隣接する小領域の圧縮データ（非圧縮データの場合を含む）に残余データがあるか否かを判定する（ステップＳ５４）。該当する残余データがある場合（ステップＳ５４：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域に、隣接する小領域の残余データを格納可能であるか否かを判定する（ステップＳ５５）。
【００６５】
格納可能である場合（ステップＳ５５：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と隣接する小領域の残余データとを合わせてＤ１ブロックデータを生成し（ステップＳ５６）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを１とする（ステップＳ５７）。該当する残余データがないか（ステップＳ５４：Ｎｏ）、あってもデータサイズが大きくて未使用領域に格納できない場合（ステップＳ５５：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）でＤ１ブロックデータを生成し（ステップＳ５８）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを０とする（ステップＳ５９）。
【００６６】
一方、圧縮データ（非圧縮データの場合を含む）のデータサイズが外部メモリ９のＤ１ブロックのメモリサイズよりも大きい場合（ステップＳ５２：Ｎｏ）、圧縮処理部１は、データ構築部１３により自小領域に対応するＩｓＶａｌｉｄフラグを１とし、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを０とする（ステップＳ６０）。圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）をＤ１データと残余データに分割し、Ｄ１データでＤ１ブロックデータを生成する（ステップＳ６１）。圧縮処理部１は、データ構築部１３により残余データをＤ２ブロックデータに追加する（ステップＳ６２）。この残余データは、自小領域の例えば下側（図１８の例）に隣接する小領域についてステップＳ５１からステップＳ６２までの処理を行う際に、その隣接する小領域に対応するＤ１ブロックの未使用領域に格納されることがある。圧縮処理部１は、図１４に示すデータ書込み処理の手順において、書込みリクエストで指定された画像の領域に含まれる全ての小領域について上述した処理を行い、各小領域に対応するＤ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報を生成する。
【００６７】
・データの読出し処理
図２２は、実施例３にかかる画像処理装置によるデータの読出し手順の一例を示すフローチャートである。図２２に示すように、処理が開始されると、まず、展開部７は、読出しリクエストで指定された例えば矩形状の画像領域の座標およびサイズを取得する（ステップＳ７１）。次いで、展開部７は、Ｄ２＿Ｒｅａｄフラグを０にする（ステップＳ７２）。Ｄ２＿Ｒｅａｄフラグは、Ｄ２ブロックのデータを読み出す必要があるか否かを示す。Ｄ２＿Ｒｅａｄフラグは、例えば展開部７によって保持される。次いで、展開部７は、読出しの対象に指定された例えば矩形状の画像領域に含まれる複数の小領域の中にＩｓＶａｌｉｄフラグが１である小領域が存在するか否かを判定する（ステップＳ７３）。ＩｓＶａｌｉｄフラグが１である小領域には、残余データが生じている。
【００６８】
ＩｓＶａｌｉｄフラグが１である小領域が存在しない場合（ステップＳ７３：Ｎｏ）、展開部７は、Ｄ２＿Ｒｅａｄフラグが１であるか否かを判定する（ステップＳ７７）。Ｄ２＿Ｒｅａｄフラグは０であるので（ステップＳ７７：Ｎｏ）、読出しの対象に指定された例えば矩形状の画像領域に含まれる複数の小領域のデータは、全てＤ１ブロックに格納されていることになる。従って、展開部７は、Ｄ２ブロックのデータを読み出す必要がないと判断する。
【００６９】
一方、ＩｓＶａｌｉｄフラグが１である小領域が存在する場合（ステップＳ７３：Ｙｅｓ）、展開部７は、読出しの対象に指定された例えば矩形状の画像領域に含まれるＩｓＶａｌｉｄフラグが１である全ての小領域について、次のステップＳ７４からステップＳ７６までの処理を行う。展開部７は、読出しの対象に指定された例えば矩形状の画像領域内に残余データの格納先の小領域が含まれているか否かを判定する（ステップＳ７４）。残余データの格納先の小領域が含まれている場合（ステップＳ７４：Ｙｅｓ）、展開部７は、残余データの格納先の小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグが１であるか否かを判定する（ステップＳ７５）。残余データの格納先の小領域が含まれていない場合（ステップＳ７４：Ｎｏ）、残余データの格納先の小領域が含まれていても対応するＩｓＮｅｉｇｈｂｏｒフラグが０である場合（ステップＳ７５：Ｎｏ）、展開部７は、Ｄ２＿Ｒｅａｄフラグを１にする（ステップＳ７６）。
【００７０】
読出しの対象に指定された例えば矩形状の画像領域に含まれるＩｓＶａｌｉｄフラグが１である全ての小領域についてステップＳ７４からステップＳ７６までの処理が終了したら、展開部７は、Ｄ２＿Ｒｅａｄフラグが１であるか否かを判定する（ステップＳ７７）。Ｄ２＿Ｒｅａｄフラグが０である場合（ステップＳ７７：Ｎｏ）、読出しの対象に指定された例えば矩形状の画像領域に含まれる複数の小領域の残余データは、全てＤ１ブロックに格納されていることになる。従って、展開部７は、Ｄ２ブロックのデータを読み出す必要がないと判断する。Ｄ２＿Ｒｅａｄフラグが１である場合（ステップＳ７７：Ｙｅｓ）、展開部７は、Ｄ２ブロックのデータを読み出すリクエストを発行し（ステップＳ７８）、Ｄ２ブロックのデータを読み出す。
【００７１】
以上の処理によって展開部７がＤ２ブロックのデータを読み出した後の処理は、実施例２でのデータ読出し処理と同様である。ただし、Ｄ２ブロックのデータを読み出さない場合には、実施例２でのデータ読出し処理のステップＳ４０において、自小領域に対応するＤ１ブロックのデータと、自小領域の例えば下側（図１８の例）に隣接する小領域に対応するＤ１ブロックから読み出した自小領域の残余データとが結合される。
【００７２】
実施例３によれば、自小領域の残余データが、自小領域に隣接する小領域に対応するＤ１ブロックに格納されていることによって、自小領域に隣接する小領域に対応するＤ１ブロックのデータを読み出す際に、自小領域の残余データも読み出される。従って、自小領域に対応するＤ２ブロックのデータを読み出す必要がなくなるので、メモリ帯域を削減することができる。
【００７３】
（実施例４）
実施例４は、実施例２において、ある小領域の圧縮データ（非圧縮データの場合を含む）のＤ１データの一部を、該小領域に隣接する小領域に対応するＤ１ブロックの未使用領域にも格納するものである。隣接する小領域に対応するＤ１ブロックの未使用領域に書き込まれるＤ１データの一部を、規定データと呼ぶ。規定データのデータサイズは、例えば予め決まっていてもよい。例えば、規定データのデータサイズは、Ｄ１データの先頭の１ライン分を展開することができる分のデータサイズであってもよい。実施例４は、データの書込み処理においてＤ１ブロックデータを生成する際の処理の一部や、データの読出し処理においてＤ１ブロックのデータを読み出す際の処理の一部が実施例２とは異なるが、実施例４のその他の構成や処理は実施例２と同様である。以下に、実施例２と異なる点についてのみ説明する。
【００７４】
図２３は、実施例４にかかる画像処理装置におけるデータ格納方法を説明する説明図である。図２３において、上側の図１１１は、各小領域の圧縮データ（非圧縮データの場合を含む）の状態を示す模式図である。図２３に示すように、実施例４では、ある小領域の圧縮データ（非圧縮データの場合を含む）のＤ１データの一部１１２，１１３，１１４，１１５，１１６，１１７，１１８，１１９，１２０，１２１，１２２は、外部メモリ９の第１の領域６１において隣接する小領域に対応するＤ１ブロックの未使用領域にも格納される。図２３に示す例では、ある小領域のＤ１データの一部１１２，１１３，１１４，１１５，１１６，１１７，１１８，１１９，１２０，１２１，１２２は、上側に隣接する小領域に対応するＤ１ブロックに格納されているが、上側に限らず、下側でもよいし、左側でもよいし、右側でもよい。
【００７５】
図２４は、図２３の下側に示す外部メモリの第１の領域の状態に対応するＩｓＮｅｉｇｈｂｏｒフラグを示す図表である。ＩｓＮｅｉｇｈｂｏｒフラグは、Ｄ１ブロックに、該Ｄ１ブロックに対応する小領域に隣接する小領域のＤ１データの一部を格納しているか否かを示す。図示例では、隣接する小領域のＤ１データを格納しているとＩｓＮｅｉｇｈｂｏｒフラグは１であり、隣接する小領域のＤ１データを格納していないとＩｓＮｅｉｇｈｂｏｒフラグは０である。図２４に示す図表１０３において、図２３に示す第１の領域６１の状態との対応関係は、上から下に向かって１行目、２行目、・・・であり、左から右に向かって１列目、２列目、・・・である。ＩｓＮｅｉｇｈｂｏｒフラグは、例えばＤ２テーブル７１のＤ２テーブルエントリフィールド７２に格納される（図１２参照）。図２３の上側に示す各小領域の圧縮データ（非圧縮データの場合を含む）の状態に対応するＩｓＶａｌｉｄフラグの状態は、図１９に示すとおりである。ＩｓＶａｌｉｄフラグは、例えばＤ２テーブル７１のＤ２テーブルエントリフィールド７２にも格納されてもよい。
【００７６】
・データの書込み処理
図２５は、実施例４にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。図２５に示すように、処理が開始されると、まず、圧縮処理部１は、実施例２でのデータ書込み処理のステップＳ１５までと同様にして、小領域の画像データを圧縮する（非圧縮の場合を含む、ステップＳ８１）。このときに処理されている小領域を自小領域とする。次いで、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）のデータサイズが自小領域に対応する外部メモリ９のＤ１ブロックのメモリサイズ以下であるか否かを判定する（ステップＳ８２）。
【００７７】
データサイズがＤ１ブロックのメモリサイズ以下である場合（ステップＳ８２：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により自小領域に対応するＩｓＶａｌｉｄフラグを０とする（ステップＳ８３）。圧縮処理部１は、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域に、自小領域の例えば下側（図２３の例）に隣接する小領域の規定データを格納可能であるか否かを判定する（ステップＳ８４）。
【００７８】
格納可能である場合（ステップＳ８４：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と隣接する小領域の規定データとを合わせてＤ１ブロックデータを生成し（ステップＳ８５）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを１とする（ステップＳ８６）。該当する規定データのデータサイズが大きくて未使用領域に該規定データを格納できない場合（ステップＳ８４：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）でＤ１ブロックデータを生成し（ステップＳ８７）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを０とする（ステップＳ８８）。
【００７９】
一方、圧縮データ（非圧縮データの場合を含む）のデータサイズが外部メモリ９のＤ１ブロックのメモリサイズよりも大きい場合（ステップＳ８２：Ｎｏ）、圧縮処理部１は、データ構築部１３により自小領域に対応するＩｓＶａｌｉｄフラグを１とし、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを０とする（ステップＳ８９）。圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）をＤ１データと残余データに分割し、Ｄ１データでＤ１ブロックデータを生成する（ステップＳ９０）。圧縮処理部１は、データ構築部１３により残余データをＤ２ブロックデータに追加する（ステップＳ９１）。自小領域のＤ１データのうちの規定データの部分は、自小領域の例えば上側（図２３の例）に隣接する小領域についてステップＳ８１からステップＳ９１までの処理を行う際に、その隣接する小領域に対応するＤ１ブロックの未使用領域に格納されることがある。
【００８０】
圧縮処理部１は、図１４に示すデータ書込み処理の手順において、書込みリクエストで指定された画像の領域に含まれる全ての小領域について上述した処理を行い、各小領域に対応するＤ１ブロックデータ、Ｄ２ブロックデータおよびＤ２サイズ情報を生成する。図２３に示す例では、ある小領域の規定データが、その上側に隣接する小領域に対応するＤ１ブロックに格納されるので、書込みリクエストで指定された画像領域において下から上へ向かって小領域を処理していくのがよい。
【００８１】
・データの読出し処理
図２６は、実施例４にかかる画像処理装置によるデータの読出し手順の一例を示すフローチャートである。図２６に示すように、処理が開始されると、まず、展開部７は、読出しリクエストで指定された例えば矩形状の画像領域の座標およびサイズを取得する（ステップＳ１０１）。次いで、展開部７は、Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグを０にする（ステップＳ１０２）。Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグは、自小領域に隣接する小領域に対応するＤ１ブロックに自小領域の規定データが格納されているか否かを示す。Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグは、例えば展開部７によって保持される。次いで、展開部７は、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する小領域のうち、読出し対象の画像領域に含まれる部分の縦のデータサイズが規定データのデータサイズ以下であるか否かを判定する（ステップＳ１０３）。
【００８２】
規定データのデータサイズよりも大きい場合（ステップＳ１０３：Ｎｏ）、展開部７は、Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグが１であるか否かを判定する（ステップＳ１０７）。Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグは０であるので（ステップＳ１０７：Ｎｏ）、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する全ての小領域について、読出し対象の画像領域に含まれる部分のデータは、その上側（図２３の例）に隣接する小領域に対応するＤ１ブロックに格納されていないことになる。従って、展開部７は、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する全ての小領域を含むようにＤ１ブロックのデータを読み出すリクエストを発行し（ステップＳ１０９）、該当するＤ１ブロックのデータを読み出す。
【００８３】
一方、規定データのデータサイズ以下である場合（ステップＳ１０３：Ｙｅｓ）、展開部７は、Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグを１とする（ステップＳ１０４）。展開部７は、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する全ての小領域の上側（図２３の例）に隣接する小領域について、次のステップＳ１０５からステップＳ１０６までの処理を行う。展開部７は、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する小領域の上側（図２３の例）に隣接する小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグが１であるか否かを判定する（ステップＳ１０５）。ＩｓＮｅｉｇｈｂｏｒフラグが０である場合（ステップＳ１０５：Ｎｏ）、展開部７は、Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグを０にする（ステップＳ１０６）。読出しの対象に指定された例えば矩形状の画像領域の下端に位置する全ての小領域の上側（図２３の例）に隣接する小領域についてステップＳ１０５からステップＳ１０６までの処理が終了したら、展開部７は、Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグが１であるか否かを判定する（ステップＳ１０７）。
【００８４】
Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグが１である場合（ステップＳ１０７：Ｙｅｓ）、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する全ての小領域において、読出し対象の画像領域に含まれる部分のデータが、それぞれの上側（図２３の例）に隣接する小領域に対応するＤ１ブロックに格納されていることになる。従って、展開部７は、元の読出しリクエストで指定された画像領域から該画像領域の下端に位置する全ての小領域を除いた分に対してＤ１ブロックのデータを読み出すリクエストを発行し（ステップＳ１０８）、該当するＤ１ブロックのデータを読み出す。読出しの対象に指定された例えば矩形状の画像領域の下端に位置する小領域に対応するＤ１ブロックのデータは読み出されない。
【００８５】
Ｄ１＿ＩｓＮｅｉｇｈｂｏｒ＿Ｉｎフラグが０である場合（ステップＳ１０７：Ｎｏ）、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する小領域のうちの少なくとも１個の小領域について、読出し対象の画像領域に含まれる部分のデータが、その上側（図２３の例）に隣接する小領域に対応するＤ１ブロックに格納されていないことになる。従って、展開部７は、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する全ての小領域を含むようにＤ１ブロックのデータを読み出すリクエストを発行し（ステップＳ１０９）、該当するＤ１ブロックのデータを読み出す。読出しの対象に指定された例えば矩形状の画像領域の下端に位置する小領域に対応するＤ１ブロックのデータは読み出される。
【００８６】
以上の処理によって展開部７がＤ１ブロックのデータを読み出した後の処理は、実施例２でのデータ読出し処理と同様である。ただし、読出しの対象に指定された例えば矩形状の画像領域の下端に位置する小領域に対応するＤ１ブロックのデータを読み出さない場合には、該下端に位置する小領域に対応するＤ１ブロックのデータは、その上側（図２３の例）に隣接する小領域に対応するＤ１ブロックのデータから切り出される。
【００８７】
実施例４によれば、小領域のＤ１データの一部が、該小領域に隣接する小領域に対応するＤ１ブロックに格納されていることによって、Ｄ１ブロックのデータを読み出す際に、読み出す対象となるＤ１ブロックの数が減る。従って、Ｄ１ブロックのデータの読出し量が減るので、メモリ帯域を削減することができる。例えば、図２７に示すように、読出しリクエストで指定された画像の領域８１（太線で囲む領域）が第Ｍ行第Ｎ列目から第Ｍ＋２行第Ｎ＋２列目までの９個の小領域８２に跨っており、かつ読出しリクエストで指定された画像の領域８１の下端が小領域８２の境界と一致しない場合には、次のようになる。実施例４を適用しない場合には、第Ｍ行第Ｎ列目から第Ｍ＋２行第Ｎ＋２列目までの９個の小領域８２に対応するＤ１ブロックのデータを読み出す必要がある。それに対して、実施例４において読出しリクエストで指定された画像の領域８１の下端に位置する第Ｍ＋２行第Ｎ列目から第Ｍ＋２行第Ｎ＋２列目までの小領域８２に対応するＤ１ブロックのデータを読み出す必要がない場合、第Ｍ行第Ｎ列目から第Ｍ＋１行第Ｎ＋２列目までの６個の小領域８２に対応するＤ１ブロックのデータを読み出せばよい。従って、実施例４によれば、メモリ帯域を削減することができる。
【００８８】
（実施例５）
実施例５は、実施例３と実施例４を組み合わせたものである。実施例５は、データの書込み処理においてＤ１ブロックデータを生成する際の処理の一部や、データの読出し処理においてＤ１ブロックのデータおよびＤ２ブロックのデータを読み出す際の処理の一部が実施例２とは異なるが、実施例５のその他の構成や処理は実施例２と同様である。以下に、実施例２、実施例３および実施例４と異なる点についてのみ説明する。
【００８９】
図２８は、実施例５におけるＩｓＮｅｉｇｈｂｏｒフラグの一例を示す図表である。図２８に示す図表１０４のように、小領域ごとにＩｓＮｅｉｇｈｂｏｒフラグは例えば２ビットで表される。例えばＩｓＮｅｉｇｈｂｏｒフラグの２ビットのうちの上位ビットは、Ｄ１ブロックに、該Ｄ１ブロックに対応する小領域に隣接する小領域の残余データを格納しているか否かを示す。例えば、隣接する小領域の残余データを格納しているとＩｓＮｅｉｇｈｂｏｒフラグの上位ビットは１であり、隣接する小領域の残余データを格納していないとＩｓＮｅｉｇｈｂｏｒフラグの上位ビットは０である。例えばＩｓＮｅｉｇｈｂｏｒフラグの２ビットのうちの下位ビットは、Ｄ１ブロックに、該Ｄ１ブロックに対応する小領域に隣接する小領域のＤ１データの規定データを格納しているか否かを示す。例えば、隣接する小領域の規定データを格納しているとＩｓＮｅｉｇｈｂｏｒフラグの下位ビットは１であり、隣接する小領域の規定データを格納していないとＩｓＮｅｉｇｈｂｏｒフラグの下位ビットは０である。
【００９０】
・データの書込み処理
図２９〜図３１は、実施例５にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。図３０および図３１は、図２９の続きである。一例として、あるＤ１ブロックに、該Ｄ１ブロックに対応する小領域の上側に隣接する小領域の残余データを格納し、該Ｄ１ブロックに対応する小領域の下側に隣接する小領域のＤ１データの規定データを格納するとする。なお、あるＤ１ブロックに、上側以外の側に隣接する小領域の残余データや、下側以外の側に隣接する小領域のＤ１データの規定データを格納する構成としてもよい。
【００９１】
図２９に示すように、処理が開始されると、まず、圧縮処理部１は、実施例３でのデータ書込み処理のステップＳ５１からステップＳ５５までと同様の処理を行い、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域に、上側に隣接する小領域の残余データを格納可能であるか否かを判定する（ステップＳ１１１〜ステップＳ１１５）。格納可能である場合（図２９のステップＳ１１５：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域の残りに、下側に隣接する小領域の規定データを格納可能であるか否かを判定する（図３０のステップＳ１１６）。Ｄ１ブロックの未使用領域の残りとは、自小領域に対応するＤ１ブロックの未使用領域のデータサイズから、上側に隣接する小領域の残余データを格納するのに必要なデータサイズを引いた残りの領域のことである。
【００９２】
格納可能である場合（図３０のステップＳ１１６：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と上側に隣接する小領域の残余データと下側に隣接する小領域の規定データとを合わせてＤ１ブロックデータを生成する（図３０のステップＳ１１７）。圧縮処理部１は、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを１１とする（図３０のステップＳ１１８）。該当する規定データのデータサイズが大きくて未使用領域の残りに該規定データを格納できない場合（図３０のステップＳ１１６：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と上側に隣接する小領域の残余データとでＤ１ブロックデータを生成する（図３０のステップＳ１１９）。圧縮処理部１は、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを１０とする（図３０のステップＳ１２０）。
【００９３】
図２９のステップＳ１１４で、自小領域の上側に隣接する小領域の圧縮データ（非圧縮データの場合を含む）に残余データがないか（ステップＳ１１４：Ｎｏ）、あってもデータサイズが大きくて未使用領域に格納できない場合（図２９のステップＳ１１５：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域に、下側に隣接する小領域の規定データを格納可能であるか否かを判定する（図３１のステップＳ１２１）。格納可能である場合（図３１のステップＳ１２１：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と下側に隣接する小領域の規定データとを合わせてＤ１ブロックデータを生成する（図３１のステップＳ１２２）。圧縮処理部１は、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを０１とする（図３１のステップＳ１２３）。該当する規定データのデータサイズが大きくて未使用領域に該規定データを格納できない場合（図３１のステップＳ１２１：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）でＤ１ブロックデータを生成する（図３１のステップＳ１２４）。圧縮処理部１は、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを００とする（図３１のステップＳ１２５）。
【００９４】
図２９のステップＳ１１２で、自小領域の圧縮データ（非圧縮データの場合を含む）のデータサイズが自小領域に対応するＤ１ブロックのメモリサイズよりも大きい場合（ステップＳ１１２：Ｎｏ）、圧縮処理部１は、データ構築部１３により自小領域に対応するＩｓＶａｌｉｄフラグを１とし、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを００とする（図２９のステップＳ１２６）。圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）をＤ１データと残余データに分割し、Ｄ１データでＤ１ブロックデータを生成する（図２９のステップＳ１２７）。圧縮処理部１は、データ構築部１３により残余データをＤ２ブロックデータに追加する（図２９のステップＳ１２８）。この残余データは、自小領域に隣接する小領域について同様の処理を行う際に、その隣接する小領域に対応するＤ１ブロックの未使用領域に格納されることがある。
【００９５】
・データの読出し処理
データの読出し処理において、Ｄ２ブロックのデータを読み出すか否かを判定する処理は、実施例３と同様である。Ｄ２ブロックのデータを読み出すか否かを判定する際には、ＩｓＮｅｉｇｈｂｏｒフラグの上位ビットを確認すればよい。データの読出し処理において、読出しの対象に指定された画像領域の下端に位置する小領域に対応するＤ１ブロックのデータを読み出すか否かを判定する処理は、実施例４と同様である。当該Ｄ１ブロックのデータを読み出すか否かを判定する際には、ＩｓＮｅｉｇｈｂｏｒフラグの下位ビットを確認すればよい。
【００９６】
（実施例６）
実施例６は、実施例３において、ある小領域の圧縮データ（非圧縮データの場合を含む）の残余データを、該小領域の上下左右のいずれかの側に隣接する小領域に対応するＤ１ブロックの未使用領域にも格納するものである。実施例６は、データの書込み処理においてＤ１ブロックデータを生成する際の処理の一部や、データの読出し処理においてＤ２ブロックのデータを読み出す際の処理の一部が実施例２とは異なるが、実施例６のその他の構成や処理は実施例２と同様である。以下に、実施例２および実施例３と異なる点についてのみ説明する。
【００９７】
図３２は、実施例６におけるＩｓＮｅｉｇｈｂｏｒフラグの一例を示す図表である。図３２に示す図表１０５のように、小領域ごとにＩｓＮｅｉｇｈｂｏｒフラグは例えば２ビットで表される。例えばＩｓＮｅｉｇｈｂｏｒフラグは、自小領域のＤ１ブロックに、上側に隣接する小領域の残余データを格納している場合に１０となり、下側に隣接する小領域の残余データを格納している場合に０１となり、左側に隣接する小領域の残余データを格納している場合に１１となる。例えば自小領域のＤ１ブロックに、隣接する小領域の残余データを格納していない場合には、ＩｓＮｅｉｇｈｂｏｒフラグは００となる。
【００９８】
・データの書込み処理
図３３〜図３５は、実施例６にかかる画像処理装置によるデータの書込み手順の一例を示すフローチャートである。図３４および図３５は、図３３の続きである。図３３に示すように、処理が開始されると、まず、圧縮処理部１は、実施例３でのデータ書込み処理のステップＳ５１からステップＳ５３までと同様の処理を行い、圧縮処理部１は、データ構築部１３により自小領域に対応するＩｓＶａｌｉｄフラグを０とする（ステップＳ１３１〜ステップＳ１３３）。圧縮処理部１は、データ構築部１３により、自小領域の上側に隣接する小領域の圧縮データ（非圧縮データの場合を含む）に残余データがあるか否かを判定する（図３３のステップＳ１３４）。
【００９９】
該当する残余データがある場合（図３３のステップＳ１３４：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域に、上側に隣接する小領域の残余データを格納可能であるか否かを判定する（図３３のステップＳ１３５）。格納可能である場合（図３３のステップＳ１３５：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と上側に隣接する小領域の残余データとを合わせてＤ１ブロックデータを生成し（図３３のステップＳ１３６）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを１０とする（図３３のステップＳ１３７）。
【０１００】
上側に隣接する小領域の残余データがないか（図３３のステップＳ１３４：Ｎｏ）、あってもデータサイズが大きくて未使用領域に格納できない場合（図３３のステップＳ１３５：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域の下側に隣接する小領域の圧縮データ（非圧縮データの場合を含む）に残余データがあるか否かを判定する（図３４のステップＳ１３８）。該当する残余データがある場合（図３４のステップＳ１３８：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域に、下側に隣接する小領域の残余データを格納可能であるか否かを判定する（図３４のステップＳ１３９）。格納可能である場合（図３４のステップＳ１３９：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と下側に隣接する小領域の残余データとを合わせてＤ１ブロックデータを生成し（図３４のステップＳ１４０）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを０１とする（図３４のステップＳ１４１）。
【０１０１】
下側に隣接する小領域の残余データがないか（図３４のステップＳ１３８：Ｎｏ）、あってもデータサイズが大きくて未使用領域に格納できない場合（図３４のステップＳ１３８：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域の左側に隣接する小領域の圧縮データ（非圧縮データの場合を含む）に残余データがあるか否かを判定する（図３４のステップＳ１４２）。該当する残余データがある場合（図３４のステップＳ１４２：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域に対応するＤ１ブロックの未使用領域に、左側に隣接する小領域の残余データを格納可能であるか否かを判定する（図３４のステップＳ１４３）。格納可能である場合（図３４のステップＳ１４３：Ｙｅｓ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）と左側に隣接する小領域の残余データとを合わせてＤ１ブロックデータを生成し（図３４のステップＳ１４４）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを１１とする（図３４のステップＳ１４５）。
【０１０２】
左側に隣接する小領域の残余データがないか（図３４のステップＳ１４２：Ｎｏ）、あってもデータサイズが大きくて未使用領域に格納できない場合（図３４のステップＳ１４３：Ｎｏ）、圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）でＤ１ブロックデータを生成し（図３５のステップＳ１４６）、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを００とする（図３５のステップＳ１４７）。一方、圧縮データ（非圧縮データの場合を含む）のデータサイズが外部メモリ９のＤ１ブロックのメモリサイズよりも大きい場合（図３３のステップＳ１３２：Ｎｏ）、圧縮処理部１は、データ構築部１３により自小領域に対応するＩｓＶａｌｉｄフラグを１とし、自小領域に対応するＩｓＮｅｉｇｈｂｏｒフラグを００とする（図３３のステップＳ１４８）。圧縮処理部１は、データ構築部１３により、自小領域の圧縮データ（非圧縮データの場合を含む）をＤ１データと残余データに分割し、Ｄ１データでＤ１ブロックデータを生成する（図３３のステップＳ１４９）。圧縮処理部１は、データ構築部１３により残余データをＤ２ブロックデータに追加する（ステップＳ１５０）。この残余データは、自小領域に隣接する小領域について同様の処理を行う際に、その隣接する小領域に対応するＤ１ブロックの未使用領域に格納されることがある。
【０１０３】
・データの読出し処理
データの読出し処理は、実施例３と同様である。残余データの格納先を判定する際には、ＩｓＮｅｉｇｈｂｏｒフラグを確認すればよい。
【符号の説明】
【０１０４】
９  メモリ
１２  可変長符号化部
１３  データ構築部
２３  判定部
２８，２９  記憶部
【図１】
0005504885.tif 000002
【図２】
0005504885.tif 000003
【図３】
0005504885.tif 000004
【図４】
0005504885.tif 000005
【図５】
0005504885.tif 000006
【図６】
0005504885.tif 000007
【図７】
0005504885.tif 000008
【図８】
0005504885.tif 000009
【図９】
0005504885.tif 000010
【図１０】
0005504885.tif 000011
【図１１】
0005504885.tif 000012
【図１２】
0005504885.tif 000013
【図１３】
0005504885.tif 000014
【図１４】
0005504885.tif 000015
【図１５】
0005504885.tif 000016
【図１６】
0005504885.tif 000017
【図１７】
0005504885.tif 000018
【図１８】
0005504885.tif 000019
【図１９】
0005504885.tif 000020
【図２０】
0005504885.tif 000021
【図２１】
0005504885.tif 000022
【図２２】
0005504885.tif 000023
【図２３】
0005504885.tif 000024
【図２４】
0005504885.tif 000025
【図２５】
0005504885.tif 000026
【図２６】
0005504885.tif 000027
【図２７】
0005504885.tif 000028
【図２８】
0005504885.tif 000029
【図２９】
0005504885.tif 000030
【図３０】
0005504885.tif 000031
【図３１】
0005504885.tif 000032
【図３２】
0005504885.tif 000033
【図３３】
0005504885.tif 000034
【図３４】
0005504885.tif 000035
【図３５】
0005504885.tif 000036