(57)【特許請求の範囲】
【請求項１】
第１記憶手段が保持している入力画像を第１方向について複数に分割した部分画像を処理するデータ処理装置であって、
前記部分画像単位で画像処理を実施する画像処理手段と、
前記画像処理手段に入力する入力部分画像を第１領域に記憶し、前記入力部分画像について前記画像処理手段により画像処理を実施された出力部分画像を第２領域に記憶する第２記憶手段と、
前記入力部分画像の前記第１方向についての第１画素数と、前記出力部分画像の前記第１方向についての第２画素数と、に基づいて、前記第２記憶手段の第１領域と第２領域の大きさを設定する設定手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記画像処理手段による画像処理の実施前に、前記設定手段が、前記画像処理手段の出力として必要とされる第２画素数を取得し
当該第２画素数から前記画像処理の内容に基づいて前記第１画素数を取得する、
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記設定手段は、画像処理に関わる複数のタスク毎に前記第１領域と前記第２領域とを設定する、
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記第１記憶手段はＤＲＡＭであって、前記第２記憶手段はＳＲＡＭであり、
前記ＤＲＡＭから前記ＳＲＡＭへのデータ転送を実行する第１ＤＭＡＣと、
前記ＳＲＡＭから前記ＤＲＡＭへのデータ転送を実行する第２ＤＭＡＣと、
をさらに有することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記ＳＲＡＭは複数のバンクを有し、前記設定手段は複数のバンクのそれぞれについて、前記第１領域と前記第２領域とを同様に割り当てる、
ことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記設定手段は、前記画像処理手段で実行する処理が変更された場合に、前記第１画素数と前記第２画素数との変化に基づいて、前記第１領域の大きさと前記第２領域の大きさとを変更する、
ことを特徴とする請求項１から５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記データ処理装置は、色ごとの面順次形式のデータを、前記入力部分画像としてそれぞれ前記画像処理手段へ入力する、
ことを特徴とする請求項１から６のいずれか１項に記載のデータ処理装置。
【請求項８】
色ごとの面順次形式のデータが、前記出力部分画像として前記画像処理手段から出力される、
ことを特徴とする請求項１から７のいずれか１項に記載のデータ処理装置。
【請求項９】
前記設定手段は、前記第１画素数と、前記第２画素数との比に基づいて前記第１領域の大きさと前記第２領域の大きさとを設定する、
ことを特徴とする請求項１から８のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記設定手段は、前記第２記憶手段の前記第１領域と前記第２領域の大きさに基づいて、その第１領域と第２領域との前記第２記憶手段における先頭アドレスを設定することにより、前記第１領域と前記第２領域とを設定する、
ことを特徴とする請求項１から９のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記第２記憶手段は複数のバンクを有し、
前記設定手段は、その複数のバンクに対して共通の前記先頭アドレスを、前記第２記憶手段の前記第１領域と前記第２領域とについてそれぞれ設定する、
ことを特徴とする請求項１０に記載のデータ処理装置。
【請求項１２】
第１記憶手段が保持している入力画像を第１方向について複数の短冊状に分割した部分画像を処理するデータ処理装置の制御方法であって、
前記データ処理装置は前記部分画像単位で画像処理を実施する画像処理手段と、前記画像処理手段に入力する入力部分画像を第１領域に記憶し、前記入力部分画像について前記画像処理手段により画像処理を実施された出力部分画像を第２領域に記憶する第２記憶手段と、を有し、
前記制御方法は、
設定手段が、前記入力部分画像の前記第１方向についての第１画素数と、前記出力部分画像の前記第１方向についての第２画素数と、に基づいて、前記第２記憶手段の第１領域と第２領域の大きさを設定する設定工程を有する、
ことを特徴とする制御方法。
【請求項１３】
コンピュータを請求項１から１１のいずれか１項に記載のデータ処理装置が備える各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理の前後における画像データを一時的に記憶するためのデータ処理装置、データ処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来から、画像形成を行って出力する際に、空間フィルタ処理などによる局所（近傍）画像処理が行なわれている。局所画像処理では、処理対象となる画素（以下、処理画素と略称する）を含む空間フィルタ領域に対して、その領域のすべてまたは大半の画素を用いて所定の演算を行なう。
【０００３】
この局所（近傍）画像処理の一つとして解像度変換がある。解像度変換とは、入力した画像を拡大、もしくは縮小して所望の大きさの画像に変換する処理である。解像度変換では、当然ながら入力画素数と処理後の出力画素数が大きく異なることとなるため、一般的な局所（近傍）画像処理に比べて装置化が難しくなる。例えば特許文献１では、遅延メモリと空間フィルタ処理との組み合わせを複数用いる場合で、それぞれの組み合わせの間で解像度変換を実行する場合、この処理の前後にある２つの遅延メモリが有効活用できないことを指摘している。
【０００４】
この問題に対して、特許文献１は、拡大もしくは縮小によって入力された画像の主走査方向の画素数が変化する主走査変倍と呼ばれる解像度変換の処理を開示している。特許文献１の技術では、解像度変換の前後にある２つの空間フィルタが二次元領域の処理画素について演算を行っており、この２つの空間フィルタに各々遅延メモリが必要となる。そして、特許文献１は、この２つの遅延メモリと画素数の変化とに着目してメモリを有効活用する技術が記載されている。また特許文献１では、画像を主走査、副走査方向共に二次元に領域分割して、分割後の画素領域について逐次的に画像処理を行う、ブロック（タイル）処理を採用している。
【０００５】
一方、特許文献２には、上記のブロック（タイル）処理と類似の技術のバンド処理技術が記載されている。バンド処理では、画像を主走査方向にのみ一次元的に領域分割して、分割後の画素領域について逐次的に画像処理を行うものである。このような技術では、各バンド領域間で隙間なく局所（近傍）画像処理を行なうために、各バンド領域が、それぞれ隣接する領域との境界で一部分が互いに重なり合うように工夫している。また特許文献２では、各バンド領域の高さと同一の方向に１画素ずつ画素を走査することで、局所（近傍）画像処理に必要な処理画素を保持する遅延メモリの容量を各バンド領域の高さの大きさで規定する。これにより、特許文献２では、この遅延メモリの省メモリ化を実現している。
【０００６】
特許文献１のブロック(タイル)処理と同様、特許文献２のバンド処理も領域分割して逐次的、もしくは分散並列的に画像処理を行う手法である。以後、このような手法を領域分割手法と総称する。これらの領域分割手法にとって相性の良くない画像処理は、特許文献１で言及する解像度変換だけではない。
【０００７】
例えば、プリンタ画像処理などで使用される、トリミング処理や端部拡張処理などもあげられる。トリミング処理とは画像を部分的に削除する処理で、入力画像より出力画像の方が画素数は少なくなる。また端部拡張とは画像の端部の画素のみ、所定画素数だけコピー拡張したり、特定色の画素で拡張したりする処理で、入力画像より出力画像の方が画素数は多くなる。
【０００８】
また、映像処理などで使用される、ＩＰ変換などもあげられる。ＩＰ変換とは、副走査方向に画素が間引かれたインターレース画像を、時間軸方向に複数フレーム用いて１フレームの画素が間引かれていないプログレッシブ画像を合成する処理である。例えば、２フレームのインターレース画像から１フレームのプログレッシブ画像を合成する場合、入力画像の総画素数と出力画像の画素数は同じとなる。しかしながら高品位なＩＰ変換では、３〜５フレームのインターレース画像から１フレームのプログレッシブ画像を合成することになるので、入力画像より出力画像の方が画素数は少なくなる。ＩＰ変換の例では、ユーザが選択した動作モード（画質モード）により、入力画像と出力画像の画素数の関係が変わることになる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−０８７８０４号公報
【特許文献２】特開２００６−１３９６０６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
近年の画像処理装置は、上述のような空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、ＩＰ変換を含め、様々な画像処理を多く内包する。そして画像処理装置は、装置全体で所望の高画質化を実現するために、それらの処理をアプリケーションに応じて取捨選択して組み合せて用いることが多い。
【００１１】
しかしながら、このような複数の処理の組合せを領域分割手法で実現する場合、さらなる注意が必要となる。空間フィルタ処理のように二次元領域の処理画素を用いて演算する場合、フィルタが取り扱う画素のサイズに対応して周辺画素を累積し、画像を処理する必要がある。そして空間フィルタ処理が複数回あれば、その都度、周辺画素を累積し、すべての周辺画素を累積した、より広い範囲の画像について処理を行う必要がある。
【００１２】
さらに、映像処理のクロマ・アップサンプリングのような空間フィルタ処理では、前述のように周辺画素を累積するだけでは不十分となる。このような空間フィルタ処理では、入力する処理画素の画像上での位相も考慮する必要がある。そのため、その空間フィルタ処理に入力する画像の縦や横の画素数が４の倍数でなければならないという特殊な制約を合わせ持つ。
【００１３】
アプリケーションに応じて取捨選択して組み合された複数の処理に対し、各々の制約を満たしつつ、所望の画像処理を行うには、入力画像の画素数と出力画像の画素数との関係性を簡単に規定することができない。アプリケーションは、複数の空間フィルタ処理の周辺画素を累積した画像より、わざと余分な画素数の画像を処理する。アプリケーションは、場合によっては、処理後の画像の一部を最後にトリミング処理で削除し、所望の大きさの画像に調整することも必要となる。
【００１４】
ここで、領域分割手法を用いる場合に、これらの多くの画像処理を取捨選択して組み合せた画像処理方法を、ハードウェアでいかに実現するかを考えることは重要である。
【００１５】
ハードウェアを用いる画像処理装置では、一般的に、入力ローカルバッファと出力ローカルバッファを介して外部記憶装置と画像を互いに転送することで、各種部品の同時動作と部品間の連係動作を実現する。しかしながら、上述の通り、複数の処理を取捨選択して組み合せて画像処理をする場合、入力画像の画素数と出力画像の画素数は簡単には規定できない。そのため、入力ローカルバッファや出力ローカルバッファの容量を適切に規定することが難しく、過大なバッファを用意することによる利用効率の低下や、過小な記憶容量を用意することによる処理の停滞などの課題が生じる。
【００１６】
特許文献１では、主走査変倍の前後にある２つのフィルタ処理（プレフィルタとポストフィルタ）の遅延メモリに着目している。しかしながら、特許文献１では様々な複数の画像処理を取捨選択して組み合せるための画像処理方法を実現するためのハードウェア構成としての画像処理装置については検討されていない。このため、特許文献１では、前述のような入力する画像と出力する画像の画素数の様々なバリエーションに対応する方法については、有用な解決策を開示していない。また特許文献１では、画像を外部記憶装置から読み込むときに必要となる入力ローカルバッファと、処理後の画像を外部記憶装置へ書き出すときに必要となる出力ローカルバッファに着目した有用な解決策を開示していない。
【００１７】
本発明は、上記課題に鑑みてなされたもので、様々な処理を組み合わせた画像処理により入力と出力の画素数が変動する条件において、入力画像と出力画像とを一時的に記憶する記憶装置の効率的な利用を可能とする技術を実現することを目的としている。
【課題を解決するための手段】
【００１８】
上記目的を達成するため、本発明によるデータ処理装置は、第１記憶手段が保持している入力画像を第１方向について複数に分割した部分画像を処理するデータ処理装置であって、前記部分画像単位で画像処理を実施する画像処理手段と、前記画像処理手段に入力する入力部分画像を第１領域に記憶し、前記入力部分画像について前記画像処理手段により画像処理を実施された出力部分画像を第２領域に記憶する第２記憶手段と、前記入力部分画像の前記第１方向についての第１画素数と、前記出力部分画像の前記第１方向についての第２画素数と、に基づいて、前記第２記憶手段の第１領域と第２領域の大きさを設定する設定手段と、を有する。
【発明の効果】
【００１９】
本発明によれば、入力と出力の画素数が変動する条件において、入力画像と出力画像とを一時的に記憶する記憶装置の効率的な利用を可能とするデータ処理装置、データ処理方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００２０】
【図１Ａ】画像処理装置の全体構成と画像処理部の構成例を示すブロック図。
【図１Ｂ】画像処理装置の全体構成と画像処理部の構成例を示すブロック図。
【図２】画像データの入出力に係る動作例を示す図。
【図３】バンド処理の動作の例を説明する図。
【図４Ａ】画像データの格納方法とデータ構造の例を説明する図。
【図４Ｂ】画像データの格納方法とデータ構造の例を説明する図。
【図５】従来の画像処理装置の動作例を説明する図。
【図６】本発明の画像処理装置の動作例を説明する図。
【図７】別の例に係る画像処理部の一例を説明するブロック図。
【発明を実施するための形態】
【００２１】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【００２２】
＜＜実施形態１＞＞
（画像処理装置）
図１Ａは、本実施形態に係る画像処理装置の全体構成の一例を示すブロック図である。画像処理装置は、例えば、ＣＰＵ回路部１００、画像読み取り部１２０、画像処理部１５０を備える。
【００２３】
画像読み取り部１２０は、レンズ１２４、ＣＣＤセンサ１２６、及びアナログ信号処理部１２７等を有する。画像読み取り部１２０では、レンズ１２４を介してＣＣＤセンサ１２６に原稿１１０の画像情報が結像され、ＣＣＤセンサ１２６によりその画像情報がＲ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）のアナログ電気信号に変換される。アナログ電気信号に変換された画像情報は、アナログ信号処理部１２７に入力され、Ｒ、Ｇ、Ｂの色毎に補正等が行われた後にアナログ／デジタル変換（Ａ／Ｄ変換）される。こうして、デジタル化されたフルカラーのデジタル画像信号（画素値）が生成される。生成されたデジタル画像信号は、映像入力部１３０へ入力され、その後、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１９２へ入力される。
【００２４】
ＤＭＡＣ１９２は、ＣＰＵ１０２により予め動作が設定されており、共有バス１９０を介して、入力されたデジタル画像信号をＣＰＵ回路部１００のＲＡＭ１０６に記憶させる。なお、複数の画素についてのデジタル画像信号を、１枚の画像を形成するように集合させたデータを、以下では画像データと呼ぶ。本実施形態では、デジタル画像信号は画像データの形式でＲＡＭ１０６に記憶されるものとする。画像処理を行う場合、ＣＰＵ１０２はＤＭＡＣ１９４を起動してＲＡＭ１０６に記憶された画像データを読み出させ、処理の対象となる画素に対応するデジタル画像信号を画像処理部１５０に入力させる。
【００２５】
画像処理部１５０は、例えば、入力されたデジタル画像信号に対して、例えば、スキャナなどのセンサ・デバイスの読み取り素子の個体差の補正と入力ガンマ補正などの色補正とを行い、画像データを作成するデータ処理装置である。そして、ＤＭＡＣ１９６は、これらの処理が施された画像データをＲＡＭ１０６に格納する。なお、ＤＭＡＣ１９６の制御については、例えばＣＰＵ１０２が予めＤＭＡＣ１９６の動作を設定し、また、ＣＰＵ１０２がＤＭＡＣ１９６を起動するようにする。なお、ＤＭＡＣ１９６の動作は、例えば処理後の画像データをＲＡＭ１０６へ書き込むように設定しておく。
【００２６】
これにより、例えば、画像処理部１５０は入力されたデジタル画像信号に対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理などの、画像の印刷のための画像処理を施す。そして、画像処理部１５０は、印刷可能な画像データを作成し、その画像データはＤＭＡＣ１９６によりＲＡＭ１０６に格納させる。
【００２７】
ＤＭＡＣ１９８は、ＲＡＭ１０６に格納された画像処理済みの画像データを読み出して画像印刷部１７０へ出力する。画像印刷部１７０は例えばプリンタである。ＤＭＡＣ１９８の設定は例えばＣＰＵ１０２が行う。画像印刷部１７０は、たとえば、インクジェットヘッドやサーマルヘッド等を使用したラスタプロッタ等の印刷出力部（不図示）を備える。そして、入力された画像データのデジタル画像信号に基づいて紙上に画像を記録する。上述の説明では、画像印刷部１７０を用いる例を説明したがこれに限られない。例えば、映像入力部１３０や映像表示部１６０等を用いることにより、入力された映像に対し所望の画像（映像）処理を施し、処理後の映像をディスプレイなどの表示装置（不図示）に表示してもよい。
【００２８】
ＣＰＵ回路部１００は、演算制御用のＣＰＵ１０２、固定データやプログラムを格納するＲＯＭ１０４、データの一時保存やプログラムのロードに使用されるＲＡＭ１０６、及び外部記憶装置１０８等を備える。ＣＰＵ回路部１００は、画像読み取り部１２０、画像処理部１５０、及び画像印刷部１７０等を制御し、本実施形態の画像処理装置のシーケンスを統括的に制御する。外部記憶装置１０８は、本実施形態の画像処理装置が使用するパラメータやプログラムや補正データを記憶するディスク等の記憶媒体であり、ＲＡＭ１０６のデータやプログラム等は、外部記憶装置１０８からロードされる構成としてもよい。
【００２９】
（画像処理部）
続いて、画像データに画像処理を施す画像処理部１５０について図１Ｂを用いて詳細に説明する。ＣＰＵ１０２がＤＭＡＣ１９４を起動し、ＤＭＡＣ１９４はＲＡＭ１０６から画像データを読み出す。画像データのデータ構造については後述する。読み出された画像データは、入力ポート１５１を介して、画像処理部１５０の画像入出力部１５２へ入力される。画像入出力部１５２において、画像入力部１５２１は、画像データを取得すると、中間バッファ制御部１５２２に含まれる後述の記憶部（中間バッファ）に取得した画像データを記憶させる。そして、画像入力部１５２１は、中間バッファに一時的に記憶された画像データを読み出しながら画素値を生成し、入力画素値１５５として画像処理実行部１５３へ入力する。
【００３０】
画像処理実行部１５３は、入力画素値１５５に対して所定の画像処理を実行し、出力画素値１５６を画像入出力部１５２へ出力する。画像処理実行部１５３の詳細については後述する。なお、ここでは、入力画素値１５５および出力画素値１５６は、１つ以上の画素値であり、例えば複数の画素値が入力画素値１５５として入力され、それに対して１つの画素値が出力画素値１５６として出力される。
【００３１】
画像入出力部１５２では、画像出力部１５２３は、処理後の出力画素値１５６から出力画像データを生成して中間バッファ制御部１５２２内の記憶部（中間バッファ）に記憶する。画像出力部１５２３は、記憶部（中間バッファ）に一時的に記憶された処理後の画像データを読み出し、出力画像データとして出力ポート１５４を介してＤＭＡＣ１９６へ送出する。ＤＭＡＣ１９６は前述の通り、ＣＰＵ１０２により既に起動されており、受け取った出力画像データをＲＡＭ１０６へ書き出す。
【００３２】
すなわち、画像処理部１５０では、画像入出力部１５２を介してＤＭＡＣ１９４から画像データを取得し、画像処理実行部１５３で画像に対するデータ処理を実行し、データ処理後の画像データを画像入出力部１５２を介してＤＭＡＣ１９６へ出力する。このようにして、画像処理部１５０は、画像処理装置内に含まれる画像データにデータ処理を施し、データ処理後の画像データを画像処理装置へ戻す役割を担う。また、画像入出力部１５２は、データの入出力の調節を行うデータ入出力制御装置としての役割を有する。
【００３３】
（画像処理実行部）
次に、画像処理部１５０内の画像処理実行部１５３について詳細に説明する。画像処理実行部１５３は、画像処理回路（１）１５３１から画像処理回路（Ｐ）１５３７の、Ｐ個の画像処理回路と、インターコネクト１５３１とで構成される。Ｐ個の画像処理回路と、インターコネクト１５３１とは、入力ポート１５３２、１５３５、並びに１５３８、および出力ポート１５３３、１５３６、並びに１５３９等のポートを介して互いに接続される。
【００３４】
画像処理回路は、例えば、入力色補正処理、色空間変換、濃度補正処理、中間調処理、空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、ＩＰ変換、クロマ・アップサンプリングのうち、１つの処理を行う。これらの画像処理回路は、パイプライン回路等のハードウェアで実現されてもよいし、プロセッサとプログラム（ソフトウェア）等で実現されてもよい。そして、例えば、入力ポート１５３２、１５３５、１５３８等から入力画素値１５５を受け取り、処理を施した後に、出力ポート１５３３、１５３６、１５３９から処理後の出力画素値１５６を出力する。
【００３５】
また、インターコネクト１５３１はクロスバーやリングバス等の接続手段で実現されており、入力ポートと出力ポートの接続先を任意に切り替えることができる。したがって、ＣＰＵ１０２がこれらポートの接続先の指定を設定することで、インターコネクト１５３１は、例えばＰ個の画像処理回路の実行順序を変更し、または一部の処理をバイパスすることができる。このように、画像処理実行部１５３は、アプリケーションに応じて、各種の処理を取捨選択して組み合せ、所望の画像処理を実現する。
【００３６】
（領域分割）
次に、本実施形態における画像データの領域分割について説明する。本実施形態では、領域分割手法の１つであるバンド処理を用いるものとする。以下、バンド処理について、図３を用いて説明する。バンド処理では、図３（ａ）〜（ｄ）に示されるように、１枚の画像データ３００を帯状のバンド領域３０１〜３０４に分割し、この領域毎に逐次的に各種の画像処理を行う。なお、バンド領域は、画像データを主走査方向または副走査方向のいずれかにおいて分割したものであり、バンド領域と画像データとは、主走査方向または副走査方向のいずれかにおいて長さが一致する。例えば、図３（ａ）〜（ｄ）では、画像データは副走査方向において分割され、画像データとバンド領域とでは、主走査方向について同一の長さを有し、副走査方向において異なる長さを有する。以下では、この分割された細長い領域をバンド領域と呼び、バンド領域が展開される記憶領域をバンドメモリと呼び、画像データを分割する行為をバンド分割と呼ぶ。バンドメモリは、ＲＡＭ１０６内に記憶領域として確保されてもよく、また、システム上の適切な記憶領域に確保されてもよい。なお、ここでは説明を簡潔にするためにバンドメモリをＲＡＭ１０６に確保する場合を例に挙げて説明する。
【００３７】
また、以下では、図３（ｅ）に示すように、画像データの座標系（主走査方向−副走査方向）を、長さ方向、高さ方向という新たな座標系（バンド領域座標系）によって定義し、バンド領域を長さ×高さで表現する。バンド領域の長さ、すなわちバンド領域の長さ方向の一辺の大きさは、画像データの主走査方向の長さ、または副走査方向の長さの何れかの値とする。また、バンド領域の高さ、すなわちバンド領域の高さ方向の一辺の大きさは任意の値となる。例えば、図３（ａ）〜（ｄ）では、長さ方向は主走査方向であり、高さ方向は副走査方向である。これに対し、図３（ｐ）〜（ｒ）のように、例えば画像データを主走査方向において分割した場合、図３（ｓ）に示すように、長さ方向が副走査方向となり高さ方向が主走査方向となる。図３（ｐ）〜（ｒ）のようなバンド分割は、例えば画像データの主走査方向の大きさが副走査方向の大きさより大きい場合に行うようにしてもよい。
【００３８】
バンド処理では、まず、図３（ａ）に示す第１のバンド領域３０１を、ＲＡＭ１０６上のバンドメモリに展開して画像処理を行う。次に、図３（ｂ）に示す第２のバンド領域３０２を、第１のバンド領域３０１が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して、画像処理を行なう。さらにその後、図３（ｃ）に示す第３のバンド領域３０３を、第２のバンド領域３０２が展開されたＲＡＭ１０６上のバンドメモリに上書き展開し、画像処理を行なう。最後に、図３（ｄ）に示す第４のバンド領域３０４を、第３のバンド領域３０３が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して画像処理を行なう。図３（ａ）〜（ｄ）で明らかなように、バンド領域３０１〜３０４の長さは同じであるが、高さは同じでなくてもよい。したがって、メインメモリに確保される記憶領域であるバンドメモリの高さは、高さ方向の一辺の大きさが最も大きいバンド領域（図３の場合、第１〜第３のバンド領域３０１〜３０３）によって決定される。
【００３９】
なお、バンド処理では、各バンド領域間で隙間なく空間フィルタ処理などの局所（近傍）画像処理を行なうため、図３（ｆ）〜（ｈ）のように、各バンド領域が、それぞれ隣接する領域との境界で一部分が互いに重なり合うようにする。
【００４０】
（画像データのデータ構造）
次に、画像データのデータ構造の一例について詳細に説明する。本実施形態では、前述のように、画像データはＲＡＭ１０６に一時的に格納される。一般的にＲＡＭ１０６は安価なＤＲＡＭで構成されることが多い。したがって、前述のようにＤＭＡＣを介して画像データを読み書きする場合、ＤＲＡＭが性能を落とさずに読み書きできる単位で画像データを取り扱うことが望ましい。そこで、ＲＡＭ１０６の画像データの格納方法の一例と、画像データのデータ構造の一例について、図４Ａを用いて詳しく説明する。図４Ａは、ＲＡＭ１０６（ＤＲＡＭ）上にデータが格納された状態を示している。図４Ａの例では、あるデータ領域（ＩＭＧ＿ＡＲＥＡ＿ＳＴＲ＿ＡＤＤＲからＩＭＧ＿ＡＲＥＡ＿ＥＮＤ＿ＡＤＤＲまでの領域）が確保され、ここに画像処理に必要な種々の画像データが格納される。
【００４１】
図４Ａは、点順次形式の画像データの構造のＲＡＭ１０６への格納例であり、ＲＡＭ１０６（ＤＲＡＭ）のデータ領域に、Ｓ５＿ＩＭＧ４２５とＳ６＿ＩＭＧ４２６の２種の画像データが格納された例を示している。例では、ＤＲＡＭの性能を落とさずに画像データを読み書きできるように、格納される画像データの容量の最小単位は、４０８に示すように、３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとしている。すなわち、Ｓ５＿ＩＭＧ４２５とＳ６＿ＩＭＧ４２６の画像データの格納容量は、３２Ｂｙｔｅの整数倍となる。
【００４２】
次に、画像データのデータ構造を詳しく説明する。画像データ４４０は点順次形式で、Ｒ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）の画素値を有する。画像データ４４０に含まれる１つの領域４４２は３２Ｂｙｔｅ単位のデータであり、１つの領域４４２の中には、４４４で示すように、複数個（８つ）の画素値がパッキングされている。そして、４４４に含まれる８つの画素値のそれぞれには、４４６で示すようにそれぞれ１０ｂｉｔのＲ、Ｇ、Ｂの値がパッキングされている。なお、図の例では、残りの２ｂｉｔは、ＤＲＡＭへのアクセスを簡単にするための無効データであり、データを格納しないものとする。図中太線で表される画像データ４４０は、８Ｍ×Ｎ画素のサイズを有する。なお、上述の例では、縦１画素、横８画素を単位として３２Ｂｙｔｅ単位のデータの領域４４２を定めた例を示したが、画像データ４９４の例のように、縦２画素、横４画素を単位とするデータの領域４９２を定めてもよい。
【００４３】
（画像データの入出力方法）
図２は、本実施形態の画像処理方法を用いた場合の、ＲＡＭ１０６から画像入出力部１５２への、または画像入出力部１５２からＲＡＭ１０６への、画像データの入出力方法についての説明図である。画像処理装置は、図２（ａ）及び図２（ｂ）のように、１つの画像データ３００からバンド領域３０１を抜き出し、入力画像データとしてＲＡＭ１０６に格納する。そして、このバンド領域の入力画像データは、図４Ａで説明したように、ＲＡＭ１０６で取り扱いやすくなるように、３２Ｂｙｔｅを単位としたデータ構造とする。データ構造を図２（ｃ）の２１０に示す。
【００４４】
図２（ｄ）において、ＣＰＵ１０２は、ＤＭＡＣ１９４に指示信号（図２（ｄ）の２２１）を送信する。ＤＭＡＣ１９４は、図１の共有バス１９０を介して、このバンド領域の入力画像データ２１０をＲＡＭ１０６から読み出し、画像処理部１５０へ入力する。入力画像データ２１０は、先のデータ構造にしたがって、３２Ｂｙｔｅ×Ｂｄｈ＿ｉｎの処理単位で、領域（１）２１１から領域（Ｍ）２１９までのＭ個の小さい画素領域（小領域）に分けられる。そして、ＤＭＡＣ１９４は、このＭ個の小領域（処理単位）の入力画像データを、小領域（１）２１１から小領域（Ｍ）２１９まで順番に１つずつ読み出し、画像処理部１５０に入力する。画像処理部１５０は、この小領域（処理単位）の入力画像データを受け取り、この単位で画像処理を実行する。なお、処理単位の大きさに応じて、図２（ｄ）のようにバンドの一部の領域である小領域ごとに読出し処理を行ってもよいし、バンドの全部の画素領域に対して一度に読出し処理を行ってもよい。
【００４５】
上記のＣＰＵ１０２のＤＭＡＣ１９４への指示信号には、例えば、「読み出し先の先頭アドレス」、「連続読み出し量（３２Ｂｙｔｅ単位のデータを連続何回読み出すか）」、「インクリメント・アドレス」および「繰り返し回数」が含まれる。例えば、図４Ａの点順次形式の画像データでは以下の通りとする。
【００４６】
・「先頭アドレス」：Ｓ５＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・「連続読み出し量」：１回（３２Ｂｙｔｅ）
・「インクリメント・アドレス」：１ラインのデータ量＝３２Ｂｙｔｅ×Ｍ
・「繰り返し数」：バンド領域の高さ＝Ｂｄｈ＿ｉｎ回
このようにすることにより、先頭アドレスＳ５＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲから、まず３２Ｂｙｔｅのデータが読みだされる。そして、次のデータを取得するため、アドレスを３２Ｂｙｔｅ×Ｍだけ増加させることで、小領域（２）〜（Ｍ）の１行目のデータの読み出しが飛ばされて、小領域（１）２１１の第２行目の３２Ｂｙｔｅのデータを読み出すこととなる。そして、繰返し数Ｂｄｈ＿ｉｎ回、すなわち、小領域（１）２１１のＢｄｈ＿ｉｎ行分のデータを読み出すことにより、小領域（１）２１１の全てのデータを読み出すことができる。小領域（２）〜小領域（Ｍ）の入力画像データの読み出しでは、順次「先頭アドレス」を順次３２ＢｙｔｅずつずらしてＤＭＡＣ１９４を動作させる。このように画像処理装置は、所望する小領域の入力画像データをＲＡＭ１０６からＤＭＡ転送で読み出す。
【００４７】
画像入出力部１５２の画像入力部１５２１は、ＤＭＡＣ１９４から、入力画像データを受け取りながら、そのデータを中間バッファ制御部１５２２へ転送する。中間バッファ制御部１５２２は、図２（ｅ）のように中間バッファ調停回路２３０と中間バッファ２３２とで構成される。中間バッファ２３２は入力画像データを格納する領域である入力領域２３４と後述する出力画像データを格納する領域である出力領域２３６とで構成される。ＣＰＵ１０２は、中間バッファ２３２の入力領域の先頭アドレスを入力領域先頭アドレスとして、出力領域の先頭アドレスを出力領域先頭アドレスとして予め設定しておく。なお、画像入力部１５２１から入力された入力画像データは、まず中間バッファ調停回路２３０へ入力される。
【００４８】
中間バッファ調停回路２３０は受け取った入力画像データを、中間バッファ２３２の入力領域２３４へ一時的に格納する。通常、中間バッファ２３２はＳＲＡＭ等の記憶装置で実現される。例えば、この記憶装置の１ワードあたりのビット長が２５６ビット（３２Ｂｙｔｅ）長の場合、入力領域２３４で記憶するべきワード数はバンド領域の高さに相当し、ＤＭＡ転送の繰り返し数であるＢｄｈ＿ｉｎワードとなる。また、この記憶装置の１ワードあたりのビット長が６４ビット（８Ｂｙｔｅ）長の場合、３２Ｂｙｔｅ長のデータを受けるのに４ワード必要となる。そのため、入力領域２３４で記憶すべきワード数は、バンド領域の高さ（ＤＭＡ転送の繰り返し数）Ｂｄｈ＿ｉｎを４倍したワード数となる。つまり、入力領域の容量は、１回のＤＭＡ転送の単位である小領域（処理単位）の入力画像データが格納できる容量となる。なお、ＤＭＡＣ１９４は、ＤＭＡ転送や１つのバンド領域の入力画像データの転送が完了すると、そのことを割り込み信号２２２を用いてＣＰＵ１０２へ通知してもよい。
【００４９】
その後、画像入力部１５２１は、中間バッファ調停回路２３０を介して、一時的に記憶された小領域の入力画像データを読み出し、１画素ずつの画素値を順次生成して、画像処理実行部１５３へ入力する。なお、画像入力部１５２１と画像出力部１５２３とは非同期で動作してもよく、例えば入力画素領域（１）２１１と入力画素領域（２）の一部とを用いて、出力画素領域（１）２５１が生成され、出力されてもよい。
【００５０】
画像処理実行部１５３は、入力された１つ以上の画素からなる画素領域に画像処理を施す。具体的には、例えば、複数の画素からなる画素領域に対して、所定の重み係数を乗算し、それらの値を全て加算することにより、１つの出力画素を得る。そして、例えば、画素領域をバンド領域の高さ方向にスライドさせながらこのような処理を進め、高さ方向に１列分の画素値を出力すると、次の列の画素を出力するための処理を実行する。処理後の画素値は１画素ずつ画像入出力部１５２の画像出力部１５２３へ出力される。
【００５１】
画像出力部１５２３では、処理後の出力画素値から出力画像データを生成し、３２Ｂｙｔｅ単位で中間バッファ調停回路２３０を介して中間バッファ２３２の出力領域２３６へ生成した出力画像データを格納する。生成済みの出力画像データのデータ構造は前述の図４Ａの点順次形式のままであるが、出力画像データの形状は、図２（ｆ）の２５０のように、入力時から形状が変わっていてもよい。画像処理実行部１５３では、入力画素領域のサイズと出力画素領域のサイズが異なる様々な画像処理が実行される。そのため、入力画像データ２１０と出力画像データ２５０の画素数は異なり、出力画像データ２５０の出力バンド領域の高さは、Ｂｄｈ＿ｏｕｔとなる。また出力画像データ２５０のバンド領域の長さは、８×Ｎとなる。すなわち、入力画像データ２１０と出力画像データ２５０では、バンド領域の高さが異なるため小領域（処理単位）の容量が異なる。そして、バンド領域の長さも異なるため小領域（処理単位）の数もＭ個からＮ個に変化する。
【００５２】
しかしながら、入力と出力ではデータ構造が同一であるため、中間バッファ２３２の出力領域２３６の容量は入力領域２３４の容量と同じ考え方で設定できる。例えば、記憶装置が１ワードあたりのビット長が２５６ビット（３２Ｂｙｔｅ）長の場合、出力領域２３６で記憶すべきワード数は、出力バンドの高さと同じ、Ｂｄｈ＿ｏｕｔワードとなる。また、中間バッファ２３２の１ワードあたりのビット長が６４ビット（８Ｂｙｔｅ）長の場合、出力領域２３６で記憶すべきワード数は、先の出力バンドの高さであるＢｄｈ＿ｏｕｔを４倍したワード数となる。
【００５３】
画像出力部１５２３は、例えば、Ｂｄｈ＿ｏｕｔ個の画素が４列分入力され、小領域（１）２５１の出力画像データが中間バッファ２３２の出力領域２３６に揃った時点で、画像処理実行部１５３からの処理後の出力画素値１５６の受け取りを停止する。そして、出力領域２３６の出力画像データを順次読み出し、ＤＭＡＣ１９６へ送出する。そしてＤＭＡＣ１９６は、ＣＰＵ１０２からの指示信号（図２（ｄ）の２２５）に従って、処理後の画像データをＲＡＭ１０６へ書き込む。
【００５４】
同様の動作を小領域（２）から小領域（Ｎ）まで順次繰り返し実行し、図２（ｇ）記載の出力バンド領域の出力画像データをすべてＲＡＭ１０６へ書き戻す。
【００５５】
以上のように中間バッファの容量は、入力バンドの高さＢｄｈ＿ｉｎと出力バンドの高さＢｄｈ＿ｏｕｔで規定できる。例えば、一定の中間バッファの容量を、入力領域先頭アドレスと出力領域先頭アドレスを変更することにより、入力バンドの高さＢｄｈ＿ｉｎと出力バンドの高さＢｄｈ＿ｏｕｔに応じて割り振ることが可能となる。なお、本実施形態では、入力バンドの高さと出力バンドの高さとから入力領域と出力領域とを定めているが、画像処理における入出力の画素数の比に基づいて入力領域と出力領域との容量を定めてもよい。例えば、本実施形態では、画像処理実行部１５３の画像処理により、Ｂｄｈ＿ｉｎ＝３０行のデータがＢｄｈ＿ｏｕｔ＝７０行のデータとして出力される場合、中間バッファのうち、３０％を入力領域に割り当て、残りの７０％を出力領域に割り当ててもよい。このようにすることにより、中間バッファを最大限に活用することができる。また、入力領域の大きさに合わせて、入力バンドの高さを設定することで、処理すべきバンドの数を最小とすることが可能となる。例えば、上述の例で、中間バッファのうち、６０行分のデータを記憶することができる場合には、Ｂｄｈ＿ｉｎを３０行でなく、６０行とすることにより、処理すべきバンドの数を減少させることができるようになる。
【００５６】
領域分割処理の場合、前述の小領域（処理単位）毎に順次画像処理を行うため、小領域（処理単位）の個数が、入力Ｍ個から出力Ｎ個に変わったとしても、中間バッファの容量に影響を及ぼす訳ではない。このため、入力画像データと出力画像データのデータ構造が同じ場合、入力バンドの高さＢｄｈ＿ｉｎと出力のバンドの高さＢｄｈ＿ｏｕｔという、画素領域の一辺の変化に応じて入力領域と出力領域の容量を割り当てればよい。これにより、入力画素領域のサイズと出力画素領域のサイズが異なる様々な画像処理に対して入出力のバンドの高さの変化のみを管理するだけでよい。また、２次元の画像の変化に対して「一辺」が指し示す１次元の情報を管理するだけでよいため、中間バッファを管理し、画像入出力部１５２を制御するソフトウェアは、ＤＭＡＣや画像処理部１５０の設定値を容易に算出することができる。
【００５７】
（本実施形態の効果）
図５と図６を用いて本実施形態の効果について説明する。
【００５８】
図５には、従来技術の一般的な画像処理装置を示している。従来の画像処理装置では、画像データを入力するデータ入力装置と処理後の画像データを出力するデータ出力装置とは別々に構成されており、当然ながら各々にローカルバッファを備える。例えば、バンド処理を行うときに、空間フィルタや縮小処理によりバンドの高さが減るケース（図５（ａ）記載）が最も頻繁に使用するアプリケーションであるとする。そのケースでは、入力ローカルバッファと出力ローカルバッファとを最適化すると、入力ローカルバッファを出力ローカルバッファより大きい容量として画像処理装置を構成にすることになる。
【００５９】
一方、一部のアプリケーションで拡大処理や高品位のＩＰ変換を行う必要が生じた場合、処理後にバンドの高さが増えることとなる（図５（ｂ）記載）。この場合、出力画像データを出力ローカルバッファへ格納できるように、出力ローカルバッファを基準に出力バンドの高さを定める。そのとき、バンドの高さの増分を出力バンドの高さから減じた値を入力バンドの高さに設定することとなる。それ以上の高さの入力バンドを処理すると、出力バンドの高さが出力ローカルバッファの記憶容量を超えてしまうからである。この場合、先の最適化により、入力ローカルバッファの方が出力ローカルバッファより大きい容量としていたため、入力ローカルバッファの多くが未使用のままとなる。このように図５（ａ）と図５（ｂ）のケースでは、いずれかのケースを中心にローカルバッファの容量を最適化することで、他のケースにおいてはローカルバッファを効率的に利用できない。
【００６０】
また、上記の例では図５（ｂ）のケースでは、入力画像データの１回のバンド領域が非常に小さくなってしまうことから、１つの画像データを処理するためのバンド処理の回数が増える。バンド処理毎に逐次的に画像処理を行う場合、バンド処理間でＣＰＵ１０２は同期を取る必要がある。そして同期のために、ＣＰＵ１０２は割り込み通知待ちを行うため、同期の度に少なからず待ち時間がオーバヘッドとなって発生してしまう。そのため、ローカルバッファの利用効率が劣化するにしたがって、１つの画像処理の処理速度も遅くなることが懸念される。
【００６１】
これに対して、図６に、本実施形態の画像処理装置を用いた場合の動作例を図５と同様のケースについて示す。なお、図５（ａ）と同様のケースを図６（ａ）に、図５（ｂ）のケースを図６（ｂ）に示している。本実施形態の画像処理装置は、図６に示すように、従来技術に係るデータ入力装置とデータ出力装置に相当する機能部が一体化した入出力装置を備える。また、本実施形態の画像処理装置は、先の入力ローカルバッファと出力ローカルバッファを１つの中間バッファで構成している。本実施形態では、実行する画像処理の種類が変更された場合、その画像処理へ入力される画素領域の画素数とその画像処理から出力される画素領域の画素数との関係の変化を察知し、中間バッファの入力領域と出力領域の割り当てを変更することができる。その結果、図６（ａ）のケースでも図６（ｂ）のケースでも未使用の領域の発生を抑え、中間バッファを効率的に使用することができる。また、図６（ｂ）では、図５（ｂ）と比べて入力画像データのバンド領域の高さを増やすことができるため、バンド処理の回数を削減できる。したがって、本実施形態に係る画像処理装置により、１つの画像処理の処理速度を従来技術と比べて高速化することができる。
【００６２】
＜＜実施形態２＞＞
本実施形態では、実施形態１と異なるデータ構造を持つ画像データを取り扱う場合について説明する。例えば、図４Ｂは、面順次形式の画像データの構造の一例である。図示の例では、ＲＡＭ１０６（ＤＲＡＭ）のデータ領域に、Ｓ０＿ＩＭＧ４２０からＳ３＿ＩＭＧ４２３までの４種の画像データが格納されている。この４種のデータは、例えば、画像読み取り部１２０で読み取られた画像を色空間変換や濃度補正処理を施し、第１色Ｋ（Ｂｌａｃｋ）、第２色Ｍ（Ｍａｇｅｎｔａ）、第３色Ｃ（Ｃｙａｎ）、第４色Ｙ（Ｙｅｌｌｏｗ）に変換したものである。そしてＤＲＡＭの性能を落とさずに画像データを読み書きできるように、各々格納される画像データの容量の最小単位は、第１実施形態と同様に、４０８に示すような３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとなっている。当然ながら、Ｓ０＿ＩＭＧ４２０からＳ３＿ＩＭＧ４２３までのデータの格納容量は、３２Ｂｙｔｅの整数倍となる。
【００６３】
次に画像データのデータ構造を詳しく説明する。画像データ４３０は前述のＳ０＿ＩＭＧ４２０の領域の第１色Ｋ（Ｂｌａｃｋ）の画像データを示している。画像データ４３０の領域４３２は上述の３２Ｂｙｔｅ単位のデータであり、その中に４３４で示す８個の３２ｂｉｔ長のデータがパッキングされている。そして、１つの３２ｂｉｔ長のデータは、４３６が示すように８ｂｉｔ長のＫ（Ｂｌａｃｋ）の色要素が複数個（４つ）パッキングされている。すなわち、図の太枠４３０の範囲は、８×４×Ｍ×Ｎ個の画素数の画像データを表す。残りの第２色から第４色までの画像データについても同様である。
【００６４】
上記の面順次形式の画像データを入力画像データとして画像処理する場合、上記の第１色Ｋ（Ｂｌａｃｋ）から第４色Ｙ（Ｙｅｌｌｏｗ）の４種の画像データについて、第１実施形態で説明した小領域（処理単位）ごとにＲＡＭ１０６から読み出す。例えば、小領域（１）に対応する画像データとしては、ＤＭＡＣ１９４の先頭アドレスの設定としては、以下の４種を順に切り替えて設定し、ＤＭＡ転送を４回実行する。
【００６５】
・先頭アドレス［１回目］：図４ＢのＳ０＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・先頭アドレス［２回目］：図４ＢのＳ１＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・先頭アドレス［３回目］：図４ＢのＳ２＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・先頭アドレス［４回目］：図４ＢのＳ３＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
そして、読み出した４種の画像データをすべて、一旦、中間バッファ２３２へ格納する。画像入力部１５２１は、４種の画像データの所定の位置（座標）の４つの色要素を読み出し、１つにまとめて点順次形式の画素値（Ｃ、Ｍ、Ｙ、Ｋ）として画像処理実行部１５３へ入力する。また処理後の点順次形式の画素値（Ｃ、Ｍ、Ｙ、Ｋ）から４つの色要素を取り出し、出力領域内の４種の出力画像データの領域に各々格納する。なお、この場合、当然ながら、出力画像データのＲＡＭ１０６への書き出しについても、ＤＭＡ転送を４回実行する必要がある。
【００６６】
＜＜実施形態３＞＞
図７を用いて実施形態３について詳細説明する。本実施形態では、ＤＭＡＣ１９４とＤＭＡＣ１９６は３チャネルのチャネルＤＭＡＣであり、異なる３種の画像データを同時に取り扱う。そして、画像処理部１５０の入力ポート１５１と出力ポート１５４は３チャネルに対応して３つのポートで構成されている。そして、画像処理部１５０も異なる３種の画像データを取り扱うことができる。本実施形態では、３つの入力ポート７１１、７１２、７１３と３つの出力ポート７９１、７９２、７９３を備える。
【００６７】
３つのポートのうち、入力ポート［Ｃ］７１３は、外部入力回路７１５と、出力ポート［Ｃ］７９３は、外部出力回路７９５と接続されており、前述までの画像入力部と画像出力部をバイパスする機能がある。外部入力回路７１５は、入力ポート［Ｃ］７１３を介して受け取った入力画像データから入力画素値を生成し、画像処理実行部１５３へ送出する。また外部出力回路７９５は画像処理実行部１５３から受け取った出力画素値をもとに出力画像データを生成し、出力ポート［Ｃ］７９３を介してＤＭＡＣ１９６へ送出する。
【００６８】
残りの２つの入力ポート（入力ポート［Ａ］７１１、入力ポート［Ｂ］７１２）から入力される画像データは、上述の画像入力部１５２１の機能に基づいて処理される。また、残りの２つの出力ポート（出力ポート［Ａ］７９１、出力ポート［Ｂ］７９２）へ出力される画像データが、上述の画像出力部１５２３の機能に基づいて生成される。
【００６９】
本実施形態では、中間バッファとして２バンクの記憶部を有する。２バンクの構成のため、前述までの説明の小領域（処理単位）を２つまで同時に格納できる。上述の中間バッファは１バンク構成であったため、画像入力部１５２１は、入力画像データの受け取りと入力画像データからの画素値の生成とを時分割で行っていた。また、画像出力部１５２３も、出力画素値からの出力画像データの生成と出力画像データの出力とを時分割で行っていた。本実施形態では、２バンクの記憶部を有するため、入力画像データから画素値を生成している間も、次の小領域（処理単位）の入力画像データを受け取ることができる。また、出力画素値から出力画像データを生成している間も、生成済みの出力画像データを出力することができる。すなわち、ＤＭＡＣ１９４と画像入力部１５２１の処理、およびＤＭＡＣ１９６と画像出力部１５２３の処理を並列化することができる。
【００７０】
本実施形態では、２種の画像データを同時に入出力するため、中間バッファの入力領域と出力領域は、さらに２つの領域（［Ａ］と［Ｂ］）に分けられる。そして各々の領域を分けるため、ＣＰＵ１０２は、領域ごとに先頭アドレスを予め設定する。すなわち、ＣＰＵ１０２は、領域［Ａ］の入力領域と出力領域、そして領域［Ｂ］の入力領域と出力領域との４つについて、それぞれ先頭アドレスを設定する。処理を簡単に行うためには、２バンク構成の記憶部で１セットの共通する先頭アドレスがあればよい。入力される画素領域の単位と出力される画素領域の単位とは不変であり、バンクごとに変更する必要がないからである。そして各々の領域の容量は、２種の画像データの２つの入力バンドの高さと２つの出力バンドの高さをもとに算出すればよい。
【００７１】
本実施形態によれば、画像処理部１５０で同時に扱う複数種の画像データに対し、中間バッファを各々割り当て、さらに柔軟性に富んだ画像処理を行うことができる。上記の一例では、２つの入力画像データと２つの出力画像データに対応する方法を述べた。しかしながら、例えばＩＰ変換や画像合成のように２つの入力画像を１枚の出力画像にする場合についても、本実施形態の画像処理装置では、入力領域を２つ割り当て、出力領域を１つ割り当てることにより容易に対応することができる。このようなケースにおいても、本実施形態の画像処理装置では、中間バッファの使用率を向上させることができる。
【００７２】
なお、本実施形態では、２バンクの記憶部を有する例を説明したが、上述のように入出力を時分割で行うことを許容すれば、１バンクの記憶部において複数データを用いることも可能である。例えば、大容量の記憶部を用いて、複数データのそれぞれに対応する入力先頭アドレスと出力先頭アドレスを設定することによって本実施形態と同様に処理することができる。
【００７３】
＜＜その他の実施形態＞＞
また、上述の説明では、画像データの読み書きの単位を３２Ｂｙｔｅとして説明した。しかしながら、画像処理装置上でのＲＡＭ１０６の構成や、ＲＡＭ１０６を実現する記憶装置（ＤＲＡＭ等）の種類、そして実行する画像処理の種類等により、画像データの読み書き単位は必ずしも３２Ｂｙｔｅでなくてもよい。読み書きの単位が変わったとしても、画像データを記憶する中間バッファの容量の算出式を変えるだけで、画像処理装置と画像処理方法を適用することができる。
【００７４】
また、画像データの３２Ｂｙｔｅ単位のデータ構造が図４Ａの４９４のように４×２画素を示すような場合においても、同様に画像データを記憶する中間バッファの容量の算出のしかたが変わるだけである。上述の説明では、入力バンドの高さＢｄｈ＿ｉｎや出力バンドの高さＢｄｈ＿ｏｕｔで中間バッファの容量を割り当てた。４×２画素のデータ構造においては、入力バンドの高さＢｄｈ＿ｉｎや出力バンドの高さＢｄｈ＿ｏｕｔを２で除算した値を基準に、中間バッファの容量を割り当てることにより、対処可能である。
【００７５】
また、前述までの説明では、主にバンド処理について説明した。しかしながら、別の領域分割手法であるブロック（タイル）処理についても上述の画像処理方法を適用できる。ブロック（タイル）処理では、主走査方向と副走査方向に沿って画像データを２次元で領域分割する。例えば、前述までに説明した小領域（処理単位）が、この２次元で領域分割された画素領域と考えればよい。小領域（１）から小領域（Ｍ）まで順次読み出す手法はブロック（タイル）処理そのものである。特許文献１のブロック（タイル）処理と特許文献２のバンド処理の主な違いは、画像データから画素値を生成するときの画素の走査方向の違いにすぎない。特許文献１のブロック（タイル）処理では、画像処理実行部に入力する画素の走査を主走査方向に沿って行う。一方、特許文献２のバンド処理では、画像処理実行部に入力する画素の走査をバンドの高さ（副走査方向）に沿って行う。しかしながら、いずれの場合も、画像データを記憶する中間バッファの容量の算出のし方は変わらない。
【００７６】
また、もしＲＡＭ１０６の記憶容量に余裕があり、局所（近傍）画像処理における遅延メモリを省容量化する必要がなければ、バンド処理を行わず、１つ分の画像データ３００をＲＡＭ１０６に格納し、１画像の単位で画像処理を行ってもよい。そのときバンドの高さではなく副走査方向の画像データの大きさで中間バッファの入力領域と出力領域の容量を割り当てればよい。
【００７７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１Ａ】
0005886583.tif 000002
【図１Ｂ】
0005886583.tif 000003
【図２】
0005886583.tif 000004
【図３】
0005886583.tif 000005
【図４Ａ】
0005886583.tif 000006
【図４Ｂ】
0005886583.tif 000007
【図５】
0005886583.tif 000008
【図６】
0005886583.tif 000009
【図７】
0005886583.tif 000010