(57)【要約】【課題】画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にする。【解決手段】ＣＰＵ２０は、キャッシュメモリ２２のデータ書き込み可能な領域の記憶容量に応じて得られる入力用メモリ空間１１ａ上で特定される矩形形状の領域の大きさを、入力用メモリ空間１１ａ上に記憶された画像を該領域を単位として分割したときにその分割された各領域の画像を構成するデータの幅が同等になるように調整し、入力用メモリ空間１１ａに記憶された画像を調整した矩形形状の領域を単位として分割しながら、分割した領域単位でデータを順次キャッシュメモリ２２に書き込み、キャッシュメモリ２２に書き込んだデータを、分割した領域単位で該キャッシュメモリ２２から読み出し、出力用メモリ空間１１ｂの予め設定した領域に書き込むことで回転した画像を生成する。【選択図】図２
2012103889.tif 000002
【特許請求の範囲】
【請求項１】
画像が展開されて記憶される第１記憶手段と、
前記第１記憶手段に記憶された画像が回転されて記憶される第２記憶手段と、
前記第１記憶手段に記憶された画像が書き込まれ、書き込まれた画像が前記第２記憶手段に読み出されるキャッシュメモリと、
前記キャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第１記憶手段上で特定される矩形形状の領域の大きさを、前記第１記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、
前記第１記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、
前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第２記憶手段の予め設定した領域に書き込むことで前記回転した画像を生成する生成手段と、
を備える画像処理装置。
【請求項２】
第１記憶手段に展開され記憶された画像が書き込まれ、第２記憶手段に前記書き込まれた画像が読み出されるキャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第１記憶手段上で特定される矩形形状の領域の大きさを、前記第１記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、
前記第１記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、
前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第２記憶手段の予め設定した領域に書き込むことで回転した画像を生成する生成手段と、
をコンピュータに実行させるコンピュータに読み取り可能な制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び制御プログラムである。
【背景技術】
【０００２】
特許文献１には、画像データを回転させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２２６３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることである。
【課題を解決するための手段】
【０００５】
請求項１に係る発明は、画像が展開されて記憶される第１記憶手段と、前記第１記憶手段に記憶された画像が回転されて記憶される第２記憶手段と、前記第１記憶手段に記憶された画像が書き込まれ、書き込まれた画像が前記第２記憶手段に読み出されるキャッシュメモリと、前記キャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第１記憶手段上で特定される矩形形状の領域の大きさを、前記第１記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される記画像を構成するデータの幅が同等になるように調整する調整手段と、前記第１記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第２記憶手段の予め設定した領域に書き込むことで前記回転した画像を生成する生成手段と、を備える画像処理装置である。
【０００６】
請求項２に係る発明は、第１記憶手段に展開され記憶された画像が書き込まれ、第２記憶手段に前記書き込まれた画像が読み出されるキャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第１記憶手段上で特定される矩形形状の領域の大きさを、前記第１記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、前記第１記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第２記憶手段の予め設定した領域に書き込むことで回転した画像を生成する生成手段と、をコンピュータに実行させるコンピュータに読み取り可能な制御プログラムである。
【発明の効果】
【０００７】
請求項１及び２に係る発明によれば、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることができる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態の画像処理装置の構成を示すブロック図である。
【図２】ＣＰＵ及びメインメモリの構成を示すブロック図である。
【図３】回転対象の画像の例を示す図である。
【図４】メインメモリに確保される入力用メモリ空間及び出力用メモリ空間を示す図である。
【図５】入力用メモリ空間への画像データの読み込みを説明する図である。
【図６】回転処理時の入力用メモリ空間と出力用メモリ空間との間のデータのやり取りを説明する図である。
【図７】回転した画像データを説明する図である。
【図８】入力画像に対して９０°回転した出力画像を得るまでの流れを説明する図である。
【図９】０°（又は１８０°）の回転処理を説明する図である。
【図１０】キャッシュメモリの構成を説明する図である。
【図１１】９０°（又は２７０°）の回転処理を説明する図である。
【図１２】キャッシュメモリからデータ列が溢れたときを説明する図である。
【図１３】本実施形態の回転処理の処理手順を示すフローチャートである。
【図１４】矩形領域を決定する工程を説明する図である。
【図１５】矩形領域を単位として画像全体を分割していくことを説明する図である。
【図１６】ＣＰＵの機能を示すブロック図である。
【図１７】画像処理装置の動作、作用等を説明する図である。
【図１８】比較例（従来の処理）と本実施形態とを比較するために用いた回転対象の画像を示す図である。
【図１９】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２０】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２２】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２１】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２３】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２４】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２５】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２６】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２７】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２８】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図２９】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図３０】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図３１】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図３２】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図３３】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図３４】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図３５】矩形領域の大きさに応じた処理時間（画像の回転処理時間）の変化の一例を示す特性図である。
【発明を実施するための形態】
【０００９】
本実施形態は、画像処理装置である。
図１は、画像処理装置１の概略構成を示す。
図１に示すように、画像処理装置１は、演算処理装置１０、操作部２、表示部３、及びＨＤＤ（Hard Disk Drive）４を有する。画像処理装置１は、例えばコンピュータである。
【００１０】
操作部２は、使用者が情報を入力するためのものである。例えば、操作部２は、キーボード、マウス等である。
表示部３は、演算処理装置１による処理結果等を表示するディスプレイ等である。
ＨＤＤ４には、各種のデータやプログラム等が記憶されている。
演算処理装置１０は、ＣＰＵ２０、メインメモリ１１、及びインターフェース（Ｉ／Ｆ）１２を有する。
【００１１】
ＣＰＵ２０は、各種のプログラムに従い各種処理を行う。
メインメモリ１１には、各種データが記憶される。本実施形態では、ＨＤＤ４等に記憶されている画像データが回転処理のためにメインメモリ１１に一時的に記憶される。
インターフェース１２は、ＣＰＵ２０と操作部２等の外部機器との間でデータの送受信を行うための通信インターフェースである。
【００１２】
図２は、ＣＰＵ２０及びメインメモリ１１の構成を示す。
図２に示すように、ＣＰＵ２０は、演算部２１、キャッシュメモリ２２、及び制御プログラム２３を有する。
ここで、制御プログラム２３は、記憶部に記憶されており、画像処理装置１の製造当初からセットアップされているが、後にインターネットなどの通信手段を介してダウンロードしてセットアップし、或いは、後に制御プログラム２３を記憶した記憶媒体から読み取ってセットアップするようにしても良い。
また、メインメモリ１１は、入力用メモリ空間１１ａ及び出力用メモリ空間１１ｂを有する。
【００１３】
この画像処理装置１は、以上のような構成により画像を回転処理させることができる。その画像の回転処理の処理工程は概略として次のようになる。
（１）画像データのヘッダ情報から画像の情報を取得する。
（２）取得した画像の情報を基に、メインメモリ１１に入力用メモリ空間（読み込み用メモリ領域、入力用メモリ領域）１１ａ及び出力用メモリ空間（書き込み用メモリ領域、出力用メモリ領域）１１ｂを確保する。
（３）ＨＤＤ４等から取得した画像データを、メインメモリ１１の入力用メモリ空間１１ａに読み出す（画像を展開する）。
（４）回転させる角度に応じて入力用メモリ空間１１ａからデータ（具体的には画素データ）を読み出して、出力用メモリ空間１１ｂに書き込む。
（５）入力用メモリ空間１１ａに読み出された画像を構成するデータ全てについて、入力用メモリ空間１１ａから出力用メモリ空間１１ｂへの書き込みが終了すると、出力用メモリ空間１１ｂに書き込まれた回転された画像データを基に、プリンタエンジン等を制御して画像を出力する。
【００１４】
次に以上の処理工程に基づいて行う画像の回転処理を具体的に説明する。
図３は、回転対象の画像１００の例を示す。ここでは、この画像１００を９０°回転させる例を説明する。
先ず、ＣＰＵ２０（演算部２１）は、前記（１）の処理工程として、図３の画像データのヘッダ情報から画像の情報を取得する。
【００１５】
続いて、ＣＰＵ２０は、前記（２）の処理工程として、取得した画像の情報を基に、図４に示すように、メインメモリ１１に入力用メモリ空間１１ａ及び出力用メモリ空間１１ｂを確保する。
続いて、ＣＰＵ２０は、前記（３）の処理工程として、図５（ａ）から（ｂ）に示すように、ＨＤＤ４等から取得した画像データをメインメモリ１１の入力用メモリ空間１１ａに読み込む（画像を展開する）。
【００１６】
続いて、ＣＰＵ２０は、前記（４）の処理工程として、図６（ａ）に示すように、回転角度に応じて入力用メモリ空間１１ａからデータ（画素データ）を読み出す。すなわち、画像を９０°回転させる場合、画像データの縦方向を走査してそのデータ（画素データ）を読み出す。例えば、画像データがラスタースキャンにより得られたラスター画像のものであれば、副走査方向に画像データを走査してそのデータを読み出していることになる。そして、ＣＰＵ２０は、図６（ｂ）に示すように、そのようにして読み出したデータを出力用メモリ空間１１ｂに書き込む。このように、画像を構成する全データ（全画素データ）について入力用メモリ空間１１ａから出力用メモリ空間１１ｂに書き込むことで、図７（ａ）から図７（ｂ）に示すように回転した画像データが得られるようになる。
【００１７】
そして、ＣＰＵ２０は、前記（５）の処理工程として、出力用メモリ空間１１ｂに回転されて書き込まれた画像データを基に、プリンタエンジン等を制御して画像を出力する。
以上の処理工程により、画像処理装置１では、図８（ａ）乃至（ｄ）に示すように、入力画像１００に対して９０°回転した出力画像１０１を得ることができる。
ここで、従来の回転処理を説明する。
【００１８】
先ず、図９は、０°（又は１８０°）の回転処理を説明する図である。
図９に示すように、キャッシュメモリ２２は、キャッシュラインサイズ（キャッシュライン幅）に応じた大きさ（幅）のデータ列（１列の画素データ群）を入力用メモリ空間１１ａから読み出す（図９に示す（１）及び（２）の処理）。
ここで、図１０を用いて、一般的なキャッシュメモリの構成を説明する。
【００１９】
図１０（ａ）に示すように、キャッシュメモリは、キャッシュサイズによりキャッシュラインサイズ及びエントリ数が制約を受ける。これは、キャッシュサイズ及びキャッシュラインサイズが固定値であれば、エントリ数が制約を受けるとも言える。ここで、例を挙げると、図１０（ｂ）に示すように、キャッシュメモリ２２には、キャッシュラインサイズが１２８ｂｙｔｅで、エントリ数が５２１エントリとなるものがある。
【００２０】
このようなキャッシュメモリ２２では、図９に示すように、入力用メモリ空間１１ａに書き込んだデータ列の一部のデータ（回転対象のデータ（画素データ））を読み出し、読み出したデータを出力用メモリ空間１１ｂに書き込んでいる（図９に示す（３）の処理）。このような処理を、キャッシュメモリ２２は、入力用メモリ空間１１ａに書き込んだデータ列（１ラインのデータ）の先頭データから最後尾のデータに対して行う。そして、キャッシュメモリ２２は、このような書き込みをしつつ、次のエントリとなる、キャッシュラインサイズに応じたデータ列を入力用メモリ空間１１ａから読み出している（図９に示す（１）の処理）。
【００２１】
なお、一般的に、キャッシュメモリ２２のキャッシュラインサイズは非常に大きいため、キャッシュメモリ２２は、キャッシュラインサイズに応じたデータとして、入力用メモリ空間１１ａの１列分を構成するデータの全てを読み出すことができる。
このようなことから、キャッシュメモリ２２を介してデータの入出力を行う場合、その入出力は、主として、キャッシュメモリ２２のエントリ数の制約を受けることになる。
【００２２】
ここで、図１１及び図１２は、９０°（又は２７０°）の回転処理を説明する図である。
図１１に示すように、キャッシュメモリ２２は、９０°の回転角度に対応しつつ、キャッシュラインサイズに応じた大きさのデータ列を入力用メモリ空間１１ａから読み出す（図１１に示す（１）及び（２）の処理）。
そして、キャッシュメモリ２２は、入力用メモリ空間１１ａから読み込んだデータ列における先頭データを回転対象のデータとして読み出して、出力用メモリ空間１１ｂに書き込む（図１１に示す（３）の処理手順）。そして、９０°の回転処理の場合には、キャッシュメモリ２２は、次のエントリとなる、キャッシュラインサイズに応じた大きさの次のデータ列を入力用メモリ空間１１ａから読み出す。これにより、キャッシュメモリ２２は、次のエントリのデータ列の先頭データを回転対象のデータとして読み出して、出力用メモリ空間１１ｂに書き込んでいる（図１１に示す（１）乃至（３）の処理手順）。
【００２３】
しかし、出力用メモリ空間１１ｂにデータを書き込んでいくために入力用メモリ空間１１ａからデータ列を順次読み出していく最中に、キャッシュメモリ２２のエントリ数による制約から、図１２に示すように、先に読み出しているデータ列がキャッシュメモリ２２から溢れてしまうことがある。すなわち、回転する単位となる１ライン（入力用メモリ空間１１ａにおける縦方向のデータ列）の最終データを出力用メモリ空間１１ｂに書き込むために入力用メモリ空間１１ａから該最終データを含むデータ列を読み出すときに、先に書き込んでいるデータ列をキャッシュメモリ２２から削除しなければならなかった。
【００２４】
これにより、キャッシュメモリ２２は、回転対象のデータを得るために、入力用メモリ空間１１ａから再度同一のデータ列を読み出さなければならなくなる。これでは、回転処理に時間がかかってしまうことになる。
これに対して、本実施形態では、キャッシュメモリ２２を用いても、入力用メモリ空間１１ａから回転対象のデータを得るために再度同一のデータ列を読み出さずに、回転処理を完了させることを実現している。
【００２５】
図１３は、本実施形態における、その回転処理の処理手順を示すフローチャートである。
図１３に示すように、先ずステップＳ１において、ＣＰＵ２０（演算部２１）は、回転処理の指示が有るか否かを判定する。ＣＰＵ２０は、回転処理の指示が有ると判定したとき、ステップＳ２に進む。
【００２６】
ステップＳ２では、ＣＰＵ２０は、指示された回転処理が９０°又は２７０°の回転処理か否かを判定する。ＣＰＵ２０は、９０°又は２７０°の回転処理であると判定すると、ステップＳ３に進む。また、ＣＰＵ２０は、９０°又は２７０°の回転処理でないと判定すると、すなわち、１８０°の回転処理の場合、ステップＳ４に進む。
ステップＳ４では、ＣＰＵ２０は、通常の処理による回転処理を行う。すなわち、ＣＰＵ２０は、前記図９を用いて説明したような手順による回転処理を行う。
【００２７】
一方、ステップＳ３では、ＣＰＵ２０は、キャッシュメモリ２２のデータ書き込み可能な領域の記憶容量の情報を取得する。
続くステップＳ５において、ＣＰＵ２０は、回転対象の画像（入力用メモリ空間１１ａに記憶される画像データ）のサイズの情報を取得する。
続くステップＳ６において、ＣＰＵ２０は、前記ステップＳ２で取得したキャッシュメモリサイズ及び前記ステップＳ５で取得した画像サイズを基に、入力用メモリ空間１１ａ（入力用メモリ空間１１ａに展開された画像）を分割するための矩形領域を決定する。
【００２８】
図１４は、矩形領域を決定する工程を説明する図である。
図１４（ａ）に示すように、ＣＰＵ２０は、キャッシュメモリサイズ相当の矩形領域を先ず決定して、すなわち、キャッシュメモリのスペックに応じた矩形領域を先ず決定して、その決定した矩形領域を入力用メモリ空間１１ａ上でその縦方向（入力用メモリ空間１１ａから読み出すデータ列に対する垂直方向に相当）に割り振る。
【００２９】
そして、図１４（ｂ）に示すように、ＣＰＵ２０は、そのような各矩形領域により分割される縦方向のデータの幅（具体的には矩形領域により区画された縦方向の画素データの数）がそれら各矩形領域で同等になるように、該矩形領域の縦方向の大きさ（幅）を調整し、最終的な矩形領域の大きさを決定する。図１４（ａ）では、画像データの下端に位置する矩形領域が該画像データからはみ出ている。すなわち、その矩形領域により分割されるデータの幅が、その矩形領域の上方に位置する他の矩形領域により分割されるデータの幅よりも小さくなっている。このように、矩形領域により分割されるデータの幅が、他の矩形領域により分割されるデータの幅よりも小さい場合、ＣＰＵ２０は、図１４（ｂ）に示すように、全ての矩形領域により分割されるデータの幅が等しくなるように、該矩形領域の大きさを調整し、最終的な矩形領域の大きさを決定する。すなわち、ＣＰＵ２０は、キャッシュメモリサイズを超えずに（当初の矩形領域の大きさの範囲内で）、画像データを等分割できる矩形領域の大きさを決定する。
【００３０】
また、同様にして、ＣＰＵ２０は、矩形領域により分割される横方向のデータの幅（横方向の画素データの数）が各矩形領域で同等になるように、該矩形領域の横方向の大きさを調整し、最終的な矩形領域の大きさを決定する。
続いて、ＣＰＵ２０は、画像データ全体について分割するのに必要な矩形領域の数を取得する。例えば、ＣＰＵ２０は、画像データの縦方向を分割するのに必要な矩形領域の数と、画像データの横方向を分割するのに必要な矩形領域の数を基に、画像データ全体を分割するのに必要な矩形領域の数、すなわち矩形領域による画像データの分割数を取得する。
【００３１】
なお、前述のように、一般的に、キャッシュメモリ２２のキャッシュラインサイズは非常に大きいため、キャッシュメモリ２２は、キャッシュラインサイズに応じたデータとして、画像データの１列分のデータ全て（図１４に示す横方向の１列分のデータ全て）を読み出すことができる。よって、矩形領域の横方向の幅は、図１４に示すように画像データの横方向の１列分のデータよりも小さくなっているが、実際には非常に大きいキャッシュメモリ相当の大きさに応じた幅（具体的には該１列分のデータの幅よりも十分大きな幅）にすることもできる。このような場合には、キャッシュメモリ相当の大きさとして最初に決定した矩形領域の横方向の幅の調整が不要になったり、分割数も少なくなったりすることになる。
【００３２】
続くステップＳ７において、ＣＰＵ２０は、キャッシュメモリ２２に回転対象のデータ（画素データ）が有るか否かを判定する。ＣＰＵ２０は、回転対象のデータが有ると判定すると、ステップＳ８に進む。また、ＣＰＵ２０は、回転対象のデータが無いと判定すると、ステップＳ１１に進む。
ステップＳ１１では、キャッシュメモリ２２が、入力用メモリ空間１１ａに読み込んでいるデータから、前記ステップＳ６で決定した矩形領域分のデータ（１ブロック分のデータ）を読み出す。
【００３３】
続くステップＳ１２において、前記ステップＳ１２で読み出した矩形領域分のデータがキャッシュメモリ２２に書き込まれる。そして、ＣＰＵ２０は、前記ステップＳ７から再び処理を開始する。以上のステップＳ１１及びステップＳ１２の処理が実行されることにより、ＣＰＵ２０は、ステップＳ７において、キャッシュメモリ２２に回転対象のデータが有ると判定して、ステップＳ８に進むようになる。
【００３４】
ステップＳ８では、ＣＰＵ２０は、キャッシュメモリ２２から回転対象のデータを読み出して回転させて出力用メモリ空間１１ｂに書き込む。すなわち、ＣＰＵ２０は、キャッシュメモリ２２から読み出したデータを、回転した画像を構成することになるように、出力用メモリ空間１１ｂの予め設定した領域に書き込む。
続くステップＳ９において、ＣＰＵ２０は、キャッシュメモリ２２に読み出した回転対象のデータ全て（矩形領域分のデータ）について回転処理（前記ステップＳ８の処理）を終了したか否かを判定する。ＣＰＵ２０は、その回転処理を終了したと判定すると、ステップＳ１０に進む。また、ＣＰＵ２０は、その回転処理を終了していないと判定すると、前記ステップＳ７から再び処理を開始する。
【００３５】
ステップＳ１０では、ＣＰＵ２０は、画像データ全体について回転処理を終了したか否かを判定する。すなわち、ＣＰＵ２０は、前記ステップＳ６で取得した分割数の回数だけ画像データから矩形領域単位でデータを読み出して回転処理をしたか否かを判定する。ＣＰＵ２０は、その回転処理を終了したと判定すると、該図１３に示す処理を終了する。また、ＣＰＵ２０は、その回転処理を終了していないと判定すると、前記ステップＳ７から再び処理を開始する。
【００３６】
以上の処理により、入力用メモリ空間１１ａに書き込まれた画像データは、図１５に示すように矩形領域を単位として分割され、その後、回転されるようになる。
図１６は、以上の処理を行うＣＰＵ２０の主な機能を示すブロック図である。
図１６に示すように、ＣＰＵ２０は、矩形領域を決定（調整）する調整部２５と、入力用メモリ空間１１ａのデータを矩形領域単位でキャッシュメモリ２２に書き込む書き込み部２６と、キャッシュメモリ２２に書き込まれたデータを出力用メモリ空間１１ｂに書き込み回転した画像を生成する回転画像生成部２７とを有する。
【００３７】
以上のような構成を有する画像処理装置１の動作、作用等は次のようになる。図１７を用いて説明する。
画像処理装置１は、９０°又は２７０°の回転処理の指示（例えば操作部２に対する使用者の指示）があると、キャッシュメモリサイズ２２の情報及びその回転処理指示の有った画像サイズの情報を取得する（前記ステップＳ１乃至ステップＳ３、ステップＳ５）。
【００３８】
そして、画像処理装置１は、取得したキャッシュメモリサイズ及び画像サイズを基に、矩形領域（その大きさ及び数）を決定する（前記ステップＳ６）。
そして、画像処理装置１は、図１７に示す（１）及び（２）の処理工程として、入力用メモリ空間１１ａから矩形領域内のデータ（１ブロック分のデータ）をキャッシュメモリ２２に読み出す（前記ステップＳ７、ステップＳ１１、ステップＳ１２）。
【００３９】
続いて、画像処理装置１は、図１７に示す（３）の処理工程として、キャッシュメモリ２２からデータを順次読み出していき、回転した画像を構成することになるように、出力用メモリ空間１１ｂの予め設定した領域に順次書き込んでいく（前記ステップＳ８、ステップＳ９）。そして、画像処理装置１は、キャッシュメモリ２２に読み出したデータ全て（１ブロック分のデータ）を出力用メモリ空間１１ｂに書き込むと、図１７に示す（１）及び（２）の処理工程として、入力用メモリ空間１１ａから次の矩形領域のデータ（次の１ブロック分のデータ）を読み出し、キャッシュメモリ２２に書き込む（前記ステップＳ７、ステップＳ１１、ステップＳ１２）。
【００４０】
以上のような処理を続けていくことで、画像処理装置１は、入力用メモリ空間１１ａに書き込まれた画像を構成するデータを矩形領域を単位として回転処理し、出力用メモリ空間１１ｂに回転させた画像データを生成する。そして、画像処理装置１は、生成した画像データを基に画像形成等の処理を行う。
次に、従来の回転処理と比較しつつ、本実施形態の回転処理を説明する。ここでは、図１８に示すような、入力画像（画素データＡ，Ｂ，Ｃ，Ｄ，・・・からなる画像データ）を出力画像に回転させる場合について説明する。その処理の順番で示す図１９乃至図３５に沿って説明する。
【００４１】
図１９（ｂ）乃至図２１（ｂ）に示すように、本実施形態では、入力用メモリ空間１１ａの画像データを矩形領域単位で出力用メモリ空間１１ｂに読み出すために、入力用メモリ空間１１ａのデータであって、矩形領域内のものをデータ列単位でキャッシュメモリ２２に読み出していく。そして、本実施形態では、キャッシュメモリ２２に読み出した各データ列の各先頭データを出力用メモリ空間１１ｂに順次書き込んでいく。このとき、指示された回転角度（９０°又は２７０°）の画像となるように、出力用メモリ空間１１ｂにおける予め設定した領域にデータを書き込んでいく。
【００４２】
一方、図１９（ａ）乃至図２１（ａ）に示すように、従来の処理では、入力用メモリ空間１１ａのデータを出力用メモリ空間１１ｂに読み出すために、入力用メモリ空間１１ａのデータをデータ列単位でキャッシュメモリ２２に順次読み出していく。そして、従来の処理では、キャッシュメモリ２２に読み出した各データ列の各先頭データを出力用メモリ空間に順次書き込んでいく。
【００４３】
そして、図２２（ｂ）乃至図２７（ｂ）に示すように、本実施形態では、矩形領域内の全てのデータをキャッシュメモリ２２に読み出すと、その読み出す処理を終了するが、キャッシュメモリ２２に読み出したデータを継続して出力用メモリ空間１１ｂに書き込んでいく。
一方、図２２（ａ）乃至図２５（ａ）に示すように、従来の処理では、出力用メモリ空間１１ｂに新たなデータ列の先頭データを読み出すために、入力用メモリ空間１１ａからキャッシュメモリ２２にデータ列を読み出し、そのデータ列の先頭データを出力用メモリ空間１１ｂに書き込む。このとき、従来の処理では、キャッシュメモリ２２に先に読み出されているデータ列（出力用メモリ空間１１ｂに未だ読み出されていないデータを含むデータ列）が溢れることになる（キャッシュメモリ２２から消去されることになる）。
【００４４】
そのため、図２６（ａ）及び図２７（ａ）に示すように、従来の処理では、出力用メモリ空間１１ｂに書き込まれていないデータ（この例では画素データＲ）を書き込むために、溢れたデータ列（画素データＱ，Ｒ，Ｓ，Ｔからなるデータ列）を再度入力用メモリ空間１１ａからキャッシュメモリ２２に読み出し、該データ列のデータを出力用メモリ空間１１ｂに書き込んでいる。
【００４５】
そして、本実施形態では、図２８（ｂ）に示すように、処理が進み、キャッシュメモリ２２に読み出した矩形領域単位のデータ全てについて出力用メモリ空間１１ｂへの書き込みが終了すると、図２９（ｂ）乃至図３３（ｂ）に示すように、入力用メモリ空間１１ａのデータであって、次の矩形領域内のものをデータ列単位でキャッシュメモリ２２に読み出していく。そして、本実施形態では、先の矩形領域内のデータに対する処理と同様に、キャッシュメモリ２２に読み出した各データ列の各先頭データを出力用メモリ空間１１ｂに順次書き込んでいく。
【００４６】
本実施形態では、以上のような処理により、図３４（ｂ）に示すように、入力用メモリ空間１１ａのデータをキャッシュメモリ２２を介して出力用メモリ空間１１ｂに読み出すことができる。
一方、従来の処理では、図２８（ａ）乃至図３３（ａ）に示すように、出力用メモリ空間１１ｂに読み出されていないデータを書き込むために、必要に応じて入力用メモリ空間１１ａからキャッシュメモリ２２に再度データ列を読み出し、該データ列のデータを出力用メモリ空間１１ｂに書き込んでいる。
【００４７】
しかし、図３４（ａ）に示すように、本実施形態が出力用メモリ空間１１ｂへのデータの書き込みを完了した時点で、従来の処理では、出力用メモリ空間１１ｂへのデータの用見み出しが完了していなく、その処理途中の状態になっている。
以上のように、本実施形態では、キャッシュメモリ２２を用いても、入力用メモリ空間１１ａから回転対象のデータを得るために再度同一のデータ列を読み出さずに、回転処理を完了させることができる。
【００４８】
そして、本実施形態では、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることができる。
なお、画像処理装置の適用分野として、画像読取装置を有する画像形成装置が、画像形成装置で読み込んだ画像を画像処理装置で回転させ、回転させた画像データを基に画像形成を行うことが考えられる。しかし、これに限定されないことは言うまでもない。
【００４９】
図３５は、矩形領域の大きさに応じた処理時間（画像の回転処理時間）の変化の一例を示す。ここでは、あるキャッシュラインサイズを持った（例えば１２８ｂｙｔｅの５１２エントリを持った）キャッシュメモリの使用時に、設定する矩形領域の大きさ（設定エントリ数）を変化させている。
図３５に示すように、設定する矩形領域（エントリ数）を大きくしていくことで、ある地点（５１２）から急激に処理時間が長くなっている。これは、設定する矩形領域を、キャッシュメモリのサイズを超えたサイズに設定してしまい、データ処理時に、キャッシュメモリに入りきらないデータ量をキャッシュメモリに格納しようとしてしまい、キャッシュメモリからデータが溢れ、結果、メモリからデータを呼び出すことになり、処理時間が急激に長くなっている。
【００５０】
なお、本実施形態では、第１記憶手段として、例えば、入力用メモリ空間１１ａを用いている。また、第２記憶手段として、例えば、出力用メモリ空間１１ｂを用いている。また、調整手段として、例えば、調整部２５を用いている。書き込み手段として、例えば、書き込み部２６を用いている。また、生成手段として、例えば、回転画像生成部２７を用いている。
【符号の説明】
【００５１】
１  画像処理装置、１１  メインメモリ、１１ａ  入力用メモリ空間、１１ｂ  出力用メモリ空間、２０  ＣＰＵ、２１  演算部、２２  キャッシュメモリ、２３  プログラム、２５  調整部、２６  書き込み部、２７  回転画像生成部
【図１】
2012103889.tif 000003
【図２】
2012103889.tif 000004
【図３】
2012103889.tif 000005
【図４】
2012103889.tif 000006
【図５】
2012103889.tif 000007
【図６】
2012103889.tif 000008
【図７】
2012103889.tif 000009
【図８】
2012103889.tif 000010
【図９】
2012103889.tif 000011
【図１０】
2012103889.tif 000012
【図１１】
2012103889.tif 000013
【図１２】
2012103889.tif 000014
【図１３】
2012103889.tif 000015
【図１４】
2012103889.tif 000016
【図１５】
2012103889.tif 000017
【図１６】
2012103889.tif 000018
【図１７】
2012103889.tif 000019
【図１８】
2012103889.tif 000020
【図１９】
2012103889.tif 000021
【図２０】
2012103889.tif 000022
【図２１】
2012103889.tif 000023
【図２２】
2012103889.tif 000024
【図２３】
2012103889.tif 000025
【図２４】
2012103889.tif 000026
【図２５】
2012103889.tif 000027
【図２６】
2012103889.tif 000028
【図２７】
2012103889.tif 000029
【図２８】
2012103889.tif 000030
【図２９】
2012103889.tif 000031
【図３０】
2012103889.tif 000032
【図３１】
2012103889.tif 000033
【図３２】
2012103889.tif 000034
【図３３】
2012103889.tif 000035
【図３４】
2012103889.tif 000036
【図３５】
2012103889.tif 000037