(57)【要約】【課題】処理時間を短縮すること。【解決手段】画像処理装置１は画素割り当て部２と書き込み部３を有している。画素割り当て部２は、変換対象画像４の一方向の４画素により形成される１×４画素領域の各画素を、変換対象画像４の任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、記憶部ａ１、ｂ１、ｃ１、ｄ１にそれぞれ割り当てる。書き込み部３は、記憶部ａ１、ｂ１、ｃ１、ｄ１のうち、画素割り当て部２によって割り当てられた記憶部に画素の画素値を書き込む。【選択図】図１
2011010049.tif 000002
【特許請求の範囲】
【請求項１】
変換対象画像の一方向の４画素により形成される１×４画素領域の各画素を、前記変換対象画像の任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、前記記憶部にそれぞれ割り当てる画素割り当て部と、
前記画素割り当て部によって割り当てられた前記記憶部に前記画素の画素値を同時に書き込む書き込み部と、
を有することを特徴とする画像処理装置。
【請求項２】
前記変換対象画像は、画素が座標で管理されており、
前記画素割り当て部は、垂直方向の座標の最下位１ビットの値および水平方向の座標の最下位２ビットの値に応じて割り当てる前記記憶部を決定することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記画素割り当て部は、前記最下位１ビットの値が０であって前記最下位２ビットの値が０の場合または前記最下位１ビットの値が１であって前記最下位２ビットの値が２の場合は第１の記憶部に割り当て、前記最下位１ビットの値が０であって前記最下位２ビットの値が１の場合または前記最下位１ビットの値が１であって前記最下位２ビットの値が３の場合は第２の記憶部に割り当て、前記最下位１ビットの値が０であって前記最下位２ビットの値が２の場合または前記最下位１ビットの値が１であって前記最下位２ビットの値が０の場合は第３の記憶部に割り当て、前記最下位１ビットの値が０であって前記最下位２ビットの値が３の場合または前記最下位１ビットの値が１であって前記最下位２ビットの値が１の場合は第４の記憶部に割り当てることを特徴とする請求項２記載の画像処理装置。
【請求項４】
画素値の補間演算を行う演算部をさらに有し、
前記画素割り当て部は、前記異なる記憶部から４つの画素値を同時に読み出して前記演算部に出力することを特徴とする請求項１記載の画像処理装置。
【請求項５】
コンピュータが、
変換対象画像の一方向の４画素により形成される１×４画素領域の各画素を、前記変換対象画像の任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、前記記憶部にそれぞれ割り当て、
割り当てられた前記記憶部に前記画素の画素値を同時に書き込む、
ことを特徴とする画像処理方法。
【請求項６】
コンピュータを、
変換対象画像の一方向の４画素により形成される１×４画素領域の各画素を、前記変換対象画像の任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、前記記憶部にそれぞれ割り当てる画素割り当て手段、
前記画素割り当て手段によって割り当てられた前記記憶部に前記画素の画素値を同時に書き込む書き込み手段、
として機能させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法および画像処理プログラムに関する。
【背景技術】
【０００２】
画像を拡大、縮小、回転等させる変換処理が知られている。
図９は、変換処理を示す図である。
図９では、変換前の画像９０に対し、時計廻りに３０度の回転処理を行い変換後の画像９０ａを得る変換処理の例を示している。
【０００３】
変換処理は、変換後の画像９０ａの各座標から変換前の画像９０の座標の演算を行い、その位置での変換前の画像９０の画素値を用いる。すなわち、新しい座標系にある１点の画素が、現在の座標系のどの位置の画素に相当するかを計算し、その画素を新しい座標系の画素に移す処理を行う。
【０００４】
画像９０の変換前の座標を、座標（ｘ，ｙ）、係数をＴ、変換後の座標を、座標（Ｘ，Ｙ）とすると、座標変換は、下式（１）で表現できる。
（ｘ，ｙ）＝Ｔ（Ｘ，Ｙ）・・・（１）
変換後の画像は、座標（Ｘ，Ｙ）に対応する座標（ｘ，ｙ）を演算し、変換前の画像の座標（ｘ，ｙ）での画素値を求めることで生成することができる。
【０００５】
ただし、この変換において変換前の画像の座標（ｘ，ｙ）が整数にならない場合は、座標（ｘ，ｙ）の周辺画素を用いて画素値を求める必要がある。その方法の一つとしてバイリニア線形補間法が知られている。以下、バイリニア線形補間法を説明する。
【０００６】
ｘ1を、ｘを超えない最大の整数、ｙ1を、ｙを超えない最大の整数とすると、座標（ｘ，ｙ）は、下式（２）で表される。
（ｘ，ｙ）＝（ｘ1，ｙ1）＋（ｐ，ｑ）［０≦ｐ＜１，０≦ｑ＜１］・・・（２）
バイリニア線形補間法は、この（ｐ，ｑ）の値を用いて、周辺４画素の座標の各画素値に重み付けを行って座標変換後の画素値ｆ（ｘ，ｙ）を求める方式である。これを図面に表すと図１０のようになる。
【０００７】
図１０は、バイリニア線形補間法を説明する図である。
周辺４画素の座標（ｘ1，ｙ1）、（ｘ1，ｙ1＋１）、（ｘ1＋１，ｙ1）、（ｘ1＋１，ｙ1＋１）の各画素値を、それぞれｆ（ｘ1，ｙ1）、ｆ（ｘ1，ｙ1＋１）、ｆ（ｘ1＋１，ｙ1）、ｆ（ｘ1＋１，ｙ1＋１）とすると、座標変換後の画素値ｆ（ｘ，ｙ）は、下式（３）で表される。
【０００８】
【数１】
2011010049.tif 000003
【０００９】
このように、バイリニア線形補間法では４点の座標を使用するため、座標変換を装置で実行する際には、画素値を格納するメモリを用意し、このメモリに４回アクセスする必要がある。このアクセスを１サイクルで行うために４つのメモリに画素値を割り当てて格納しておき、同時に読み出すことで、処理時間を短縮する方法が知られている。
【００１０】
図１１は、メモリへの画素値の割り当て方法を示す図である。
図１１（ａ）、（ｂ）の枠内に示す数字は、割り当てられたメモリを識別する番号を示している。
【００１１】
例えば、図１１（ａ）に示すように、任意の水平方向２画素×垂直方向２画素（２×２画素）の４画素の領域で画素値が重なることなく４つのメモリに配置されており、同時にアクセスし、読み出すことで、処理の時間を短縮することができる。
【００１２】
また、他の例として、図１１（ｂ）に示すように、任意の１×４画素の画素値の領域で画素値が重なることなく４つのメモリに配置されており、画素値が水平ライン毎にデータが転送されてくる場合でも、４つのメモリに同時アクセスして書き込むことが可能である。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平８−１３８０３９号公報
【特許文献２】特開２００４−０４０５０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、図１１（ａ）に示す方法では、画像メモリへ書き込み時において画素値が水平ライン毎にデータが転送されてくる場合、最大２画素毎にしか書き込むことができない。このため、処理に時間がかかるという問題があった。
【００１５】
また、図１１（ｂ）に示す方法では、座標（０，０）（１，０）（０，１）（１，１）の４画素の領域では各画素が異なるメモリに割り当てられている。しかし、例えば座標（１，１）（２，１）（１，２）（２，２）の４画素の領域（図１１（ｂ）にて太線で示した領域）では画素値が４つのメモリのうち２つのみにしか割り当てられていない。従って、任意の２×２の４画素の領域で画素値を同時に読み出すことができない。このため、やはり、処理に時間がかかるという問題があった。
【００１６】
本発明はこのような点に鑑みてなされたものであり、処理時間を短縮する画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成するために、開示の画像処理装置が提供される。この画像処理装置は、画素割り当て部と、書き込み部とを有している。
画素割り当て部は、変換対象画像の一方向の４画素により形成される１×４画素領域の各画素を、変換対象画像の任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、記憶部にそれぞれ割り当てる。
【００１８】
書き込み部は、画素割り当て部によって割り当てられた記憶部に画素の画素値を同時に書き込む。
この画像処理装置によれば、画素割り当て部により、変換対象画像の一方向の４画素により形成される１×４画素領域の各画素が、変換対象画像の任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、記憶部にそれぞれ割り当てられる。そして、書き込み部により、画素割り当て部によって割り当てられた記憶部に画素の画素値が同時に書き込まれる。
【発明の効果】
【００１９】
開示の画像処理装置によれば、画素値の書き込み時および読み出し時において、処理時間を短縮することができる。
【図面の簡単な説明】
【００２０】
【図１】実施の形態の画像処理装置の概要を示す図である。
【図２】画像処理装置のハードウェア構成例を示す図である。
【図３】画像処理装置の構成を示すブロック図である。
【図４】画像処理装置の処理を示すフローチャートである。
【図５】画素割り当て処理を説明する図である。
【図６】画素割り当て処理を示すフローチャートである。
【図７】画像メモリ書き込み処理を示すフローチャートである。
【図８】補間演算処理を示すフローチャートである。
【図９】変換処理を示す図である。
【図１０】バイリニア線形補間法を説明する図である。
【図１１】メモリへの画素値の割り当て方法を示す図である。
【発明を実施するための形態】
【００２１】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態の画像処理装置について説明し、その後、実施の形態をより具体的に説明する。
【００２２】
図１は、実施の形態の画像処理装置の概要を示す図である。
実施の形態の画像処理装置１は、画素割り当て部２と、書き込み部３とを有している。
画素割り当て部２は、変換対象画像４の一方向の４画素により形成される１×４画素領域の各画素を、変換対象画像４の任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、記憶部ａ１、ｂ１、ｃ１、ｄ１にそれぞれ割り当てる。
【００２３】
図１では、変換対象画像４の画素を座標で管理している。
画素割り当て部２は、まず、座標（０，０）（１，０）（２，０）（３，０）で表される１×４画素領域５の各画素を、それぞれ記憶部ａ１、ｂ１、ｃ１、ｄ１にこの順番で割り当てる。なお、図１では説明を分かりやすくするために、画素に割り当てる記憶部に対応する記号（例えば、記憶部ａ１であれば画素に記号ａ）を付している。詳しくは、座標（０，０）で表される画素を、記憶部ａ１に割り当てる。座標（１，０）で表される画素を、記憶部ｂ１に割り当てる。座標（２，０）で表される画素を、記憶部ｃ１に割り当てる。座標（３，０）で表される画素を、記憶部ｄ１に割り当てる。
【００２４】
さらに、座標（０，１）（１，１）（２，１）（３，１）で表される１×４画素領域６の各画素を、それぞれ記憶部ｃ１、ｄ１、ａ１、ｂ１にこの順番で割り当てる。詳しくは、座標（０，１）で表される画素を、記憶部ｃ１に割り当てる。座標（１，１）で表される画素を、記憶部ｄ１に割り当てる。座標（２，１）で表される画素を、記憶部ａ１に割り当てる。座標（３，１）で表される画素を、記憶部ｂ１に割り当てる。
【００２５】
これは以下のルールに従ったものである。
画素割り当て部２は、垂直方向の座標（垂直座標）の最下位１ビットの値および水平方向の座標（水平座標）の最下位２ビットの値に応じて割り当てる記憶部ａ１〜ｄ１を決定する。
【００２６】
具体的には、垂直座標の最下位１ビットの値が０であって水平座標の最下位２ビットの値が０の場合の場合は記憶部ａ１に割り当てる。垂直座標の最下位１ビットの値が０であって水平座標の最下位２ビットの値が１の場合は記憶部ｂ１に割り当てる。垂直座標の最下位１ビットの値が０であって水平座標の最下位２ビットの値が２の場合は記憶部ｃ１に割り当てる。垂直座標の最下位１ビットの値が０であって水平座標の最下位２ビットの値が３の場合は記憶部ｄ１に割り当てる。垂直座標の最下位１ビットの値が１であって水平座標の最下位２ビットの値が２の場合は記憶部ａ１に割り当てる。垂直座標の最下位１ビットの値が１であって水平座標の最下位２ビットの値が３の場合は記憶部ｂ１に割り当てる。垂直座標の最下位１ビットの値が１であって水平座標の最下位２ビットの値が０の場合は記憶部ｃ１に割り当てる。垂直座標の最下位１ビットの値が１であって水平座標の最下位２ビットの値が１の場合は記憶部ｄ１に割り当てる。
【００２７】
これにより、全ての２×２画素領域、例えば、座標（１，１）（２，１）（１，２）（２，２）で表される１×４画素領域７において、画素が、いずれも異なる記憶部に割り当てられる。
【００２８】
書き込み部３は、記憶部ａ１、ｂ１、ｃ１、ｄ１のうち、画素割り当て部２によって割り当てられた記憶部に画素の画素値を書き込む。
この画像処理装置１によれば、画素割り当て部２により、異なる記憶部に画素を割り当てることにより、書き込み部３は、画素値を各記憶部に同時に書き込むことができる。従って、処理時間の短縮を図ることができる。
【００２９】
また、画素割り当て部２により、任意の２×２画素領域の各画素がいずれも異なる記憶部に記憶されるように、記憶部ａ１、ｂ１、ｃ１、ｄ１にそれぞれ割り当てられている。これにより、記憶部ａ１、ｂ１、ｃ１、ｄ１からの画素値の読み出し時においても、４つの画素値を同時に読み出すことができる。従って、処理時間の短縮を図ることができる。
【００３０】
以下、実施の形態をより具体的に説明する。
図２は、画像処理装置のハードウェア構成例を示す図である。
画像処理装置１０は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、外部補助記憶装置１０６および通信インタフェース１０７が接続されている。
【００３１】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。また、ＨＤＤ１０３内には、プログラムファイルが格納される。
【００３２】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００３３】
外部補助記憶装置１０６は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置１０６で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００３４】
通信インタフェース１０７は、ネットワーク３０に接続されている。通信インタフェース１０７は、ネットワーク３０を介して、他のコンピュータとの間でデータの送受信を行う。
【００３５】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成の画像処理装置１０内には、以下のような機能が設けられる。
【００３６】
図３は、画像処理装置の構成を示すブロック図である。
画像処理装置１０は、画像書き込み制御部１１と、画像アドレス生成部１２と、画像メモリ部１３と、補間演算処理部１４と、演算結果格納部１５とを有している。
【００３７】
まず、画像処理装置１０が行う処理を簡単に説明する。
図４は、画像処理装置の処理を示すフローチャートである。
画像処理装置１０は、後述する画素割り当て処理より割り当てられた４画素の画素値を、画像メモリ部１３が備えるメモリ（記憶部）１３ａ〜１３ｄに書き込む画像メモリ書き込み処理を行う（ステップＳ１）。
【００３８】
次に、メモリ１３ａ〜１３ｄに書き込まれた画素値を読み出して、前述した式（２）を用いて画素値を補間演算する補間演算処理を行う（ステップＳ２）。なお、これらの処理の内容については、後に詳述する。
【００３９】
再び図３に戻って説明する。
画像メモリ部１３は、補間演算処理用に画素値を一時的に記憶する記憶領域である。
画像書き込み制御部１１は、変換対象画像の画素を座標で管理している。
【００４０】
画像書き込み制御部１１は、画像メモリ書き込み処理時に変換対象画像の水平方向４画素の画素値およびその座標情報を含む画像データを画像メモリ部１３に転送する。これにより、水平方向４画素の画素値が同時に転送される。
【００４１】
１つの画像データの転送が完了すると、次の水平方向４画素の画像データを画像メモリ部１３に転送する。そして、変換対象画像の水平１ライン分の転送が完了すると、次の水平ラインの画像データを転送する。
【００４２】
画像アドレス生成部１２は、画像メモリ書き込み処理時には、画素割り当て処理を行って画像書き込み制御部１１が画像メモリ部１３に転送する水平方向４画素をメモリ１３ａ〜１３ｄに割り当てる。具体的には４画素の画素値を書き込むメモリ１３ａ〜１３ｄを識別する情報（メモリ番号）を決定する。
【００４３】
また、画像アドレス生成部１２は、メモリ１３ａ〜１３ｄに画素値を書き込むときの書き込みアドレス（メモリ内アドレス）を生成する。そして、決定したメモリ番号および生成した書き込みアドレスを画像メモリ部１３に送る。なお、メモリ番号および書き込みアドレスは、座標に関連づけて（例えばテーブル化して）保持しておく。以下、この情報を単に「テーブル」と言う。
【００４４】
また、画像アドレス生成部１２は、補間演算処理時には、補間演算処理部１４から受け取った変換前の座標（ｘ，ｙ）に基づいて、周辺４画素の画素値が格納されているメモリ１３ａ〜１３ｄのメモリ番号を決定し、読み出しアドレスを生成する。具体的には、予め保持しておいたテーブルを参照する。そして、受け取った座標に応じたテーブルの座標のメモリ番号および書き込みアドレスを、補間演算処理時のメモリ番号および読み出しアドレスとする。そして、そのメモリ番号および読み出しアドレスを画像メモリ部１３に送る。なお、補間演算処理時のメモリ番号の決定方法については、後に詳述する。
【００４５】
画像メモリ部１３は、画像メモリ書き込み処理には、４画素分の画素値の書き込み処理を行う。具体的には、画素割り当て処理によって決定されたメモリ番号およびメモリ内アドレスに従って、画像書き込み制御部１１から受け取った４画素の画素値を、メモリ１３ａ〜１３ｄに書き込む。
【００４６】
また、画像メモリ部１３は、補間演算処理時には、４画素分の画素値の読み出し処理を行う。具体的には、画像アドレス生成部１２で生成された読み出しアドレスに基づいて、メモリ１３ａ〜１３ｄからそれぞれ画素値を同時に読み出し、読み出した４つの画素値を補間演算処理部１４に送る。この４画素の画素値が、それぞれ式（３）に示す画素値ｆ（ｘ1，ｙ1）、ｆ（ｘ1，ｙ1＋１）、ｆ（ｘ1＋１，ｙ1）、ｆ（ｘ1＋１，ｙ1＋１）になる。
【００４７】
補間演算処理部１４は、前述したステップＳ２の補間演算処理を行う。具体的には、補間演算処理部１４は、補間演算処理に必要となる、前述した式（１）の座標変換の演算を行う。そして、演算結果の座標、すなわち、変換前の座標（ｘ，ｙ）を画像アドレス生成部１２に送る。
【００４８】
また、補間演算処理部１４は、画像アドレス生成部１２へ送信した座標（ｘ，ｙ）の周辺４画素の画素値ｆ（ｘ1，ｙ1）、ｆ（ｘ1，ｙ1＋１）、ｆ（ｘ1＋１，ｙ1）、ｆ（ｘ1＋１，ｙ1＋１）を画像メモリ部１３から受け取ると、前述した式（２）に示すバイリニア線形補間法を用いて画素値ｆ（ｘ，ｙ）の補間演算を行い、演算結果を演算結果格納部１５に送る。
【００４９】
演算結果格納部１５は、座標変換後の画素値ｆ（ｘ，ｙ）を格納する。具体的には、補間演算処理時に補間演算処理部１４から送信された演算結果データの書き込みを行う。
＜画素割り当て処理＞
次に、画像アドレス生成部１２の画素割り当て処理を詳しく説明する。
【００５０】
図５は、画素割り当て処理を説明する図である。
図５中、変換対象画像５０の各画素上のアルファベットは、メモリ番号を示している。「ａ」は、メモリ１３ａを示し、「ｂ」は、メモリ１３ｂを示し、「ｃ」は、メモリ１３ｃを示し、「ｄ」は、メモリ１３ｄを示している。
【００５１】
また、図５（ａ）は、画素割り当て処理を行っている途中のメモリ番号を示す図であり、図５（ｂ）は、画素割り当て処理が終了したときのメモリ番号を示す図である。
画像アドレス生成部１２は、図５（ａ）に示すように、垂直アドレスの最下位１ビット（２画素）と水平アドレスの最下位２ビット（４画素）を用いて、変換対象画像５０の任意の垂直方向１画素×水平方向４画素の領域内の各画素（１×４画素領域の各画素）が異なるメモリに割り当てられ、かつ任意の水平方向２画素×垂直方向２画素の領域内の各画素（２×２画素領域の各画素）が異なるメモリに割り当てられるようにメモリ番号を決定する。
【００５２】
換言すれば、変換対象画像５０の１×４画素領域の各画素が、変換対象画像５０の任意の２×２画素領域の各画素がいずれも異なるメモリ１３ａ〜１３ｄに格納されるように、メモリ１３ａ〜１３ｄのメモリ番号を決定する。
【００５３】
例えば、座標（０，０）（１，０）（０，１）（１，１）の４画素が、いずれも異なるメモリに割り当てられ、座標（１，０）（２，０）（１，１）（２，１）の４画素が、いずれも異なるメモリに割り当てられ、座標（２，０）（３，０）（２，１）（３，１）の４画素が、いずれも異なるメモリに割り当てられるようにメモリ番号を決定する。
【００５４】
さらに、図５（ｂ）に示すように、例えば、座標（０，１）（１，１）（０，２）（１，２）の４画素が、いずれも異なるメモリに割り当てられ、座標（１，１）（２，１）（１，２）（２，２）の４画素が、いずれも異なるメモリに割り当てられ、座標（２，１）（３，１）（２，２）（３，２）の４画素が、いずれも異なるメモリに割り当てられるようにメモリ番号を決定する。
【００５５】
図６は、画素割り当て処理を示すフローチャートである。
まず、垂直座標の最下位ビットの値が「０」か否かを判断する（ステップＳ１１）。
垂直座標の最下位ビットが「０」である場合（ステップＳ１１の「０」）、水平座標の最下位２ビットの値がいずれかを判断する（ステップＳ１２）。
【００５６】
水平座標の最下位ビットが「０」である場合（ステップＳ１２の「０」）、画素を、メモリ番号「ａ」に割り当てる（ステップＳ１３）。
水平座標の最下位ビットが「１」である場合（ステップＳ１２の「１」）、画素を、メモリ番号「ｂ」に割り当てる（ステップＳ１４）。
【００５７】
水平座標の最下位ビットが「２」である場合（ステップＳ１２の「２」）、画素を、メモリ番号「ｃ」に割り当てる（ステップＳ１５）。
水平座標の最下位ビットが「３」である場合（ステップＳ１２の「３」）、画素を、メモリ番号「ｄ」に割り当てる（ステップＳ１６）。
【００５８】
一方、垂直座標の最下位ビットが「１」である場合（ステップＳ１６の「１」）、水平座標の最下位２ビットの値がいずれかを判断する（ステップＳ１７）。
水平座標の最下位ビットが「０」である場合（ステップＳ１７の「０」）、画素を、メモリ番号「ｃ」に割り当てる（ステップＳ１８）。
【００５９】
水平座標の最下位ビットが「１」である場合（ステップＳ１７の「１」）、画素を、メモリ番号「ｄ」に割り当てる（ステップＳ１９）。
水平座標の最下位ビットが「２」である場合（ステップＳ１７の「２」）、画素を、メモリ番号「ａ」に割り当てる（ステップＳ２０）。
【００６０】
水平座標の最下位ビットが「３」である場合（ステップＳ１７の「３」）、画素を、メモリ番号「ｂ」に割り当てる（ステップＳ２１）。
以上で処理の説明を終了する。
【００６１】
この処理を繰り返し行うことで図５（ｂ）に示すように、画素が、メモリ１３ａ〜１３ｄに割り当てられる。これにより、画素値が水平ライン毎にデータが転送されてくる場合において、画像メモリ部１３は、メモリ１３ａ〜１３ｄに同時に書き込み、なおかつ任意の２×２の４画素の領域で画素値を同時に読み出すことが可能となる。
【００６２】
次に、画像アドレス生成部１２の補間演算処理時のメモリ番号の決定方法について説明する。
＜補間演算処理時のメモリ番号の決定方法＞
例えば、画像アドレス生成部１２が、補間演算処理部１４から変換前の座標（ｘ，ｙ）を受け取った結果、領域５１に示す座標（１，１）（２，１）（１，２）（２，２）の４画素が必要になった場合を例にとって説明する。
【００６３】
まず、画像アドレス生成部１２は、予め保持しておいたテーブルを参照する。受け取った座標に応じたテーブルの座標のメモリ番号には、座標（１，１）の画素をメモリ１３ｄに割り当て、座標（２，１）の画素をメモリ１３ａに割り当て、座標（１，２）の画素をメモリ１３ｂに割り当て、座標（２，２）の画素をメモリ１３ｃに割り当てたことを識別する情報が設定されている。
【００６４】
画像アドレス生成部１２は、このメモリ番号および書き込みアドレスを、補間演算処理時のメモリ番号および読み出しアドレスとし、このメモリ番号および読み出しアドレスを画像メモリ部１３に送る。
【００６５】
これにより、画像メモリ部１３は、変換前の座標（ｘ，ｙ）に対応する画素値ｆ（ｘ1，ｙ1）をメモリ１３ｄの読み出しアドレスから読み出す。画素値ｆ（ｘ1，ｙ1＋１）をメモリ１３ｂの読み出しアドレスから読み出す。画素値ｆ（ｘ1＋１，ｙ1）をメモリ１３ａの読み出しアドレスから読み出す。画素値ｆ（ｘ1＋１，ｙ1＋１）をメモリ１３ｃの読み出しアドレスから読み出す。
【００６６】
＜画像メモリ書き込み処理＞
次に、画像メモリ書き込み処理を説明する。
図７は、画像メモリ書き込み処理を示すフローチャートである。
【００６７】
以下、書き込み処理開始水平座標ＷＸ０は、書き込み処理を開始する水平座標の設定値であり、書き込み処理開始垂直座標ＷＹ０は、書き込み処理を開始する垂直座標の設定値であり、書き込み処理終了水平座標ＷＸ１は、書き込み処理を終了する水平座標の設定値であり、書き込み処理終了垂直座標ＷＹ１は、書き込み処理を終了する垂直座標の設定値である。これらは、書き込み処理を行う範囲を規定する設定値である。なお、各設定値は、変換対象画像の４つの頂点の座標によって特定することができる。
【００６８】
まず、垂直座標の初期化を行う。具体的には、画像書き込み制御部１１が、垂直座標ＷＹを書き込み処理開始垂直座標ＷＹ０に設定する（ステップＳ３１）。
次に、水平座標の初期化を行う。具体的には、画像書き込み制御部１１が、水平座標ＷＸを書き込み処理開始水平座標ＷＸ０に設定する（ステップＳ３２）。
【００６９】
次に、画像書き込み制御部１１が、座標（ＷＸ，ＷＹ）から座標（ＷＸ＋３，ＷＹ）までの水平方向４画素分の書き込み処理を行うための画素データを画像メモリ部１３に送る（ステップＳ３３）。
【００７０】
次に、画像アドレス生成部１２が、図６に示す画素割り当て処理を行う（ステップＳ３４）。すなわち、画像書き込み制御部１１が送った座標（ＷＸ，ＷＹ）から座標（ＷＸ＋３，ＷＹ）までの水平方向４画素分の画素値の書き込み先のメモリ番号を決定する。そして、決定したメモリ番号毎に、書き込みアドレスを生成し、画像メモリ部１３に送る。
【００７１】
次に、画像メモリ部１３は、受け取った４画素のメモリ番号を用いて、書き込むべきメモリを特定する。そして、受け取った書き込みアドレスを用いて、メモリ１３ａ〜１３ｄの画像メモリ内アドレスに画素値を書き込む（ステップＳ３５）。
【００７２】
次に、水平座標ＷＸを更新する（ステップＳ３６）。具体的には、水平座標ＷＸを水平方向４画素分インクリメントする。
次に、更新した水平座標ＷＸが、書き込み処理終了水平座標ＷＸ１より大きいか否かを判定する（ステップＳ３７）。
【００７３】
小さい場合（ステップＳ３７のＮｏ）、すなわち、同じラインの水平方向の未処理の画素が存在する場合、ステップＳ３３に移行し、次の水平方向４画素の処理を行う。
大きい場合（ステップＳ３７のＹｅｓ）、垂直座標ＷＹの全ての画素に対する書き込み処理が終了したと判断し、垂直座標ＷＹを更新する。すなわち、１つ下のラインに処理対象を移す（ステップＳ３８）。
【００７４】
次に、垂直座標ＷＹが書き込み処理終了垂直座標ＷＹ１より大きいか否かを判定する（ステップＳ３９）。
小さい場合（ステップＳ３９のＮｏ）、すなわち、垂直方向の未処理の画素が存在する場合、ステップＳ３２に移行し、更新された垂直座標ＷＹに対する処理を開始する。
【００７５】
大きい場合（ステップＳ３９のＹｅｓ）、全ての画素に対する書き込み処理が終了したと判断し、処理を終了する。
＜補間演算処理＞
次に、補間演算処理を詳しく説明する。
【００７６】
図８は、補間演算処理を示すフローチャートである。
以下、補間処理開始水平座標ＲＸ０は、補間処理を開始する水平座標の設定値であり、補間処理開始垂直座標ＲＹ０は、補間処理を開始する垂直座標の設定値であり、補間処理終了水平座標ＲＸ１は、補間処理を終了する水平座標の設定値であり、補間処理終了垂直座標ＲＹ１は、補間処理を終了する垂直座標の設定値である。これらは、補間処理を行う範囲を規定する設定値である。なお、各設定値は、例えばユーザが補間処理を実行したい領域を選択することにより得ることができる。
【００７７】
まず、垂直座標の初期化を行う。具体的には、補間演算処理部１４が、垂直座標ＲＹを補間処理開始垂直座標ＲＹ０に設定する（ステップＳ４１）。
次に、水平座標の初期化を行う。具体的には、補間演算処理部１４が、水平座標ＲＸを補間処理開始水平座標ＲＸ０に設定する（ステップＳ４２）。
【００７８】
次に、補間演算処理部１４が、式（１）を用いて座標（ＲＸ，ＲＹ）の座標変換の演算を行い、変換前の座標（ｘ，ｙ）を算出する（ステップＳ４３）。
次に、画像アドレス生成部１２は、変換前の座標（ｘ，ｙ）の周辺４画素のメモリ番号を決定、および読み出しアドレスを生成し、画像メモリ部１３に送る（ステップＳ４４）。
【００７９】
次に、画像メモリ部１３は、画像アドレス生成部１２で決定されたメモリ番号、および生成された読み出しアドレスを用いて、メモリ１３ａ〜１３ｄから周辺４画素の画素値を読み出す（ステップＳ４５）。この４画素の画素値が、それぞれ画素値ｆ（ｘ1，ｙ1）、ｆ（ｘ1，ｙ1＋１）、ｆ（ｘ1＋１，ｙ1）、ｆ（ｘ1＋１，ｙ1＋１）になる。
【００８０】
次に、補間演算処理部１４が、式（３）により、画像メモリ部１３が読み出した４画素の画素値ｆ（ｘ1，ｙ1）、ｆ（ｘ1，ｙ1＋１）、ｆ（ｘ1＋１，ｙ1）、ｆ（ｘ1＋１，ｙ1＋１）から画素値ｆ（ｘ，ｙ）を演算し、演算結果を演算結果格納部１５へ送信する（ステップＳ４６）。
【００８１】
次に、水平座標ＲＸを更新する（ステップＳ４７）。具体的には、水平座標ＲＸを水平方向１画素分インクリメントする。
次に、水平座標ＲＸが補間処理終了水平座標ＲＸ１より大きいか否かを判定する（ステップＳ４８）。
【００８２】
小さい場合（ステップＳ４８のＮｏ）、ステップＳ４３に移行し、次の画素の処理を行う。
大きい場合（ステップＳ４８のＹｅｓ）、垂直座標ＲＹに対する補間処理が終了したので垂直座標ＲＹを更新する（ステップＳ４９）。具体的には、垂直座標ＲＹを垂直方向１画素分インクリメントする。
【００８３】
次に、垂直座標ＲＹが補間処理終了垂直座標ＲＹ１より大きいかを判定する（ステップＳ５０）。
小さい場合（ステップＳ５０のＮｏ）、ステップＳ４２に移行し、更新された垂直座標ＲＹに対する処理を行う。
【００８４】
大きい場合（ステップＳ５０のＹｅｓ）、処理を終了する。
以上述べたように、画像処理装置１０によれば、垂直アドレスの最下位１ビットと水平アドレスの最下位２ビットを用いて、任意の水平方向１画素×垂直方向４画素の領域内の画素を異なるメモリに割り当て、かつ任意の水平方向２画素×垂直方向２画素の領域内の画素を異なるメモリに割り当てるようにした。これにより、１回の書き込みにおいて、１つのメモリに１つ以上の画素値が書き込まれることはなく、また、１回の読み出しにおいて、１つのメモリから１つ以上の画素値が読み出されることはない。従って、処理時間を短縮することができる。
【００８５】
なお、本実施の形態では、メモリの割り当て方法をバイリニア線形補間法に適用したが、これに限らず、水平方向２画素×垂直方向２画素の画素値を用いて変換後の画素値を決定するいかなる処理にも適用することができる。
【００８６】
また、本実施の形態では、画素を水平方向に読み込んで処理を行ったがこれに限らず、画素を垂直方向に読み込んで処理を行う場合にも適用することができる。
なお、画像処理装置１０が行った処理が、複数の装置によって分散処理されるようにしてもよい。例えば、１つの装置が、画像メモリ書き込み処理までを行ってメモリ１３ａ〜１３ｄに画素値を生成しておき、他の装置が、その画素値を用いて補間演算処理を行うようにしてもよい。
【００８７】
以上、本発明の画像処理装置、画像処理方法および画像処理プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００８８】
また、本発明は、前述した実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、画像処理装置１０が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００８９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９０】
画像処理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【００９１】
１、１０  画像処理装置
２  画素割り当て部
３  書き込み部
４、５０  変換対象画像
５、６、７、５１  領域
１１  画像書き込み制御部
１２  画像アドレス生成部
１３  画像メモリ部
１３ａ〜１３ｄ  メモリ
１４  補間演算処理部
１５  演算結果格納部
ａ１〜ｄ１  記憶部
【図１】
2011010049.tif 000004
【図２】
2011010049.tif 000005
【図３】
2011010049.tif 000006
【図４】
2011010049.tif 000007
【図５】
2011010049.tif 000008
【図６】
2011010049.tif 000009
【図７】
2011010049.tif 000010
【図８】
2011010049.tif 000011
【図９】
2011010049.tif 000012
【図１０】
2011010049.tif 000013
【図１１】
2011010049.tif 000014