画像処理装置及び制御プログラム
【課題】画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にする。
【解決手段】CPU20は、キャッシュメモリ22のデータ書き込み可能な領域の記憶容量に応じて得られる入力用メモリ空間11a上で特定される矩形形状の領域の大きさを、入力用メモリ空間11a上に記憶された画像を該領域を単位として分割したときにその分割された各領域の画像を構成するデータの幅が同等になるように調整し、入力用メモリ空間11aに記憶された画像を調整した矩形形状の領域を単位として分割しながら、分割した領域単位でデータを順次キャッシュメモリ22に書き込み、キャッシュメモリ22に書き込んだデータを、分割した領域単位で該キャッシュメモリ22から読み出し、出力用メモリ空間11bの予め設定した領域に書き込むことで回転した画像を生成する。
【解決手段】CPU20は、キャッシュメモリ22のデータ書き込み可能な領域の記憶容量に応じて得られる入力用メモリ空間11a上で特定される矩形形状の領域の大きさを、入力用メモリ空間11a上に記憶された画像を該領域を単位として分割したときにその分割された各領域の画像を構成するデータの幅が同等になるように調整し、入力用メモリ空間11aに記憶された画像を調整した矩形形状の領域を単位として分割しながら、分割した領域単位でデータを順次キャッシュメモリ22に書き込み、キャッシュメモリ22に書き込んだデータを、分割した領域単位で該キャッシュメモリ22から読み出し、出力用メモリ空間11bの予め設定した領域に書き込むことで回転した画像を生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及び制御プログラムである。
【背景技術】
【0002】
特許文献1には、画像データを回転させる技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−226330号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることである。
【課題を解決するための手段】
【0005】
請求項1に係る発明は、画像が展開されて記憶される第1記憶手段と、前記第1記憶手段に記憶された画像が回転されて記憶される第2記憶手段と、前記第1記憶手段に記憶された画像が書き込まれ、書き込まれた画像が前記第2記憶手段に読み出されるキャッシュメモリと、前記キャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される記画像を構成するデータの幅が同等になるように調整する調整手段と、前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで前記回転した画像を生成する生成手段と、を備える画像処理装置である。
【0006】
請求項2に係る発明は、第1記憶手段に展開され記憶された画像が書き込まれ、第2記憶手段に前記書き込まれた画像が読み出されるキャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで回転した画像を生成する生成手段と、をコンピュータに実行させるコンピュータに読み取り可能な制御プログラムである。
【発明の効果】
【0007】
請求項1及び2に係る発明によれば、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることができる。
【図面の簡単な説明】
【0008】
【図1】本実施形態の画像処理装置の構成を示すブロック図である。
【図2】CPU及びメインメモリの構成を示すブロック図である。
【図3】回転対象の画像の例を示す図である。
【図4】メインメモリに確保される入力用メモリ空間及び出力用メモリ空間を示す図である。
【図5】入力用メモリ空間への画像データの読み込みを説明する図である。
【図6】回転処理時の入力用メモリ空間と出力用メモリ空間との間のデータのやり取りを説明する図である。
【図7】回転した画像データを説明する図である。
【図8】入力画像に対して90°回転した出力画像を得るまでの流れを説明する図である。
【図9】0°(又は180°)の回転処理を説明する図である。
【図10】キャッシュメモリの構成を説明する図である。
【図11】90°(又は270°)の回転処理を説明する図である。
【図12】キャッシュメモリからデータ列が溢れたときを説明する図である。
【図13】本実施形態の回転処理の処理手順を示すフローチャートである。
【図14】矩形領域を決定する工程を説明する図である。
【図15】矩形領域を単位として画像全体を分割していくことを説明する図である。
【図16】CPUの機能を示すブロック図である。
【図17】画像処理装置の動作、作用等を説明する図である。
【図18】比較例(従来の処理)と本実施形態とを比較するために用いた回転対象の画像を示す図である。
【図19】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図20】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図22】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図21】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図23】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図24】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図25】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図26】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図27】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図28】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図29】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図30】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図31】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図32】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図33】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図34】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図35】矩形領域の大きさに応じた処理時間(画像の回転処理時間)の変化の一例を示す特性図である。
【発明を実施するための形態】
【0009】
本実施形態は、画像処理装置である。
図1は、画像処理装置1の概略構成を示す。
図1に示すように、画像処理装置1は、演算処理装置10、操作部2、表示部3、及びHDD(Hard Disk Drive)4を有する。画像処理装置1は、例えばコンピュータである。
【0010】
操作部2は、使用者が情報を入力するためのものである。例えば、操作部2は、キーボード、マウス等である。
表示部3は、演算処理装置1による処理結果等を表示するディスプレイ等である。
HDD4には、各種のデータやプログラム等が記憶されている。
演算処理装置10は、CPU20、メインメモリ11、及びインターフェース(I/F)12を有する。
【0011】
CPU20は、各種のプログラムに従い各種処理を行う。
メインメモリ11には、各種データが記憶される。本実施形態では、HDD4等に記憶されている画像データが回転処理のためにメインメモリ11に一時的に記憶される。
インターフェース12は、CPU20と操作部2等の外部機器との間でデータの送受信を行うための通信インターフェースである。
【0012】
図2は、CPU20及びメインメモリ11の構成を示す。
図2に示すように、CPU20は、演算部21、キャッシュメモリ22、及び制御プログラム23を有する。
ここで、制御プログラム23は、記憶部に記憶されており、画像処理装置1の製造当初からセットアップされているが、後にインターネットなどの通信手段を介してダウンロードしてセットアップし、或いは、後に制御プログラム23を記憶した記憶媒体から読み取ってセットアップするようにしても良い。
また、メインメモリ11は、入力用メモリ空間11a及び出力用メモリ空間11bを有する。
【0013】
この画像処理装置1は、以上のような構成により画像を回転処理させることができる。その画像の回転処理の処理工程は概略として次のようになる。
(1)画像データのヘッダ情報から画像の情報を取得する。
(2)取得した画像の情報を基に、メインメモリ11に入力用メモリ空間(読み込み用メモリ領域、入力用メモリ領域)11a及び出力用メモリ空間(書き込み用メモリ領域、出力用メモリ領域)11bを確保する。
(3)HDD4等から取得した画像データを、メインメモリ11の入力用メモリ空間11aに読み出す(画像を展開する)。
(4)回転させる角度に応じて入力用メモリ空間11aからデータ(具体的には画素データ)を読み出して、出力用メモリ空間11bに書き込む。
(5)入力用メモリ空間11aに読み出された画像を構成するデータ全てについて、入力用メモリ空間11aから出力用メモリ空間11bへの書き込みが終了すると、出力用メモリ空間11bに書き込まれた回転された画像データを基に、プリンタエンジン等を制御して画像を出力する。
【0014】
次に以上の処理工程に基づいて行う画像の回転処理を具体的に説明する。
図3は、回転対象の画像100の例を示す。ここでは、この画像100を90°回転させる例を説明する。
先ず、CPU20(演算部21)は、前記(1)の処理工程として、図3の画像データのヘッダ情報から画像の情報を取得する。
【0015】
続いて、CPU20は、前記(2)の処理工程として、取得した画像の情報を基に、図4に示すように、メインメモリ11に入力用メモリ空間11a及び出力用メモリ空間11bを確保する。
続いて、CPU20は、前記(3)の処理工程として、図5(a)から(b)に示すように、HDD4等から取得した画像データをメインメモリ11の入力用メモリ空間11aに読み込む(画像を展開する)。
【0016】
続いて、CPU20は、前記(4)の処理工程として、図6(a)に示すように、回転角度に応じて入力用メモリ空間11aからデータ(画素データ)を読み出す。すなわち、画像を90°回転させる場合、画像データの縦方向を走査してそのデータ(画素データ)を読み出す。例えば、画像データがラスタースキャンにより得られたラスター画像のものであれば、副走査方向に画像データを走査してそのデータを読み出していることになる。そして、CPU20は、図6(b)に示すように、そのようにして読み出したデータを出力用メモリ空間11bに書き込む。このように、画像を構成する全データ(全画素データ)について入力用メモリ空間11aから出力用メモリ空間11bに書き込むことで、図7(a)から図7(b)に示すように回転した画像データが得られるようになる。
【0017】
そして、CPU20は、前記(5)の処理工程として、出力用メモリ空間11bに回転されて書き込まれた画像データを基に、プリンタエンジン等を制御して画像を出力する。
以上の処理工程により、画像処理装置1では、図8(a)乃至(d)に示すように、入力画像100に対して90°回転した出力画像101を得ることができる。
ここで、従来の回転処理を説明する。
【0018】
先ず、図9は、0°(又は180°)の回転処理を説明する図である。
図9に示すように、キャッシュメモリ22は、キャッシュラインサイズ(キャッシュライン幅)に応じた大きさ(幅)のデータ列(1列の画素データ群)を入力用メモリ空間11aから読み出す(図9に示す(1)及び(2)の処理)。
ここで、図10を用いて、一般的なキャッシュメモリの構成を説明する。
【0019】
図10(a)に示すように、キャッシュメモリは、キャッシュサイズによりキャッシュラインサイズ及びエントリ数が制約を受ける。これは、キャッシュサイズ及びキャッシュラインサイズが固定値であれば、エントリ数が制約を受けるとも言える。ここで、例を挙げると、図10(b)に示すように、キャッシュメモリ22には、キャッシュラインサイズが128byteで、エントリ数が521エントリとなるものがある。
【0020】
このようなキャッシュメモリ22では、図9に示すように、入力用メモリ空間11aに書き込んだデータ列の一部のデータ(回転対象のデータ(画素データ))を読み出し、読み出したデータを出力用メモリ空間11bに書き込んでいる(図9に示す(3)の処理)。このような処理を、キャッシュメモリ22は、入力用メモリ空間11aに書き込んだデータ列(1ラインのデータ)の先頭データから最後尾のデータに対して行う。そして、キャッシュメモリ22は、このような書き込みをしつつ、次のエントリとなる、キャッシュラインサイズに応じたデータ列を入力用メモリ空間11aから読み出している(図9に示す(1)の処理)。
【0021】
なお、一般的に、キャッシュメモリ22のキャッシュラインサイズは非常に大きいため、キャッシュメモリ22は、キャッシュラインサイズに応じたデータとして、入力用メモリ空間11aの1列分を構成するデータの全てを読み出すことができる。
このようなことから、キャッシュメモリ22を介してデータの入出力を行う場合、その入出力は、主として、キャッシュメモリ22のエントリ数の制約を受けることになる。
【0022】
ここで、図11及び図12は、90°(又は270°)の回転処理を説明する図である。
図11に示すように、キャッシュメモリ22は、90°の回転角度に対応しつつ、キャッシュラインサイズに応じた大きさのデータ列を入力用メモリ空間11aから読み出す(図11に示す(1)及び(2)の処理)。
そして、キャッシュメモリ22は、入力用メモリ空間11aから読み込んだデータ列における先頭データを回転対象のデータとして読み出して、出力用メモリ空間11bに書き込む(図11に示す(3)の処理手順)。そして、90°の回転処理の場合には、キャッシュメモリ22は、次のエントリとなる、キャッシュラインサイズに応じた大きさの次のデータ列を入力用メモリ空間11aから読み出す。これにより、キャッシュメモリ22は、次のエントリのデータ列の先頭データを回転対象のデータとして読み出して、出力用メモリ空間11bに書き込んでいる(図11に示す(1)乃至(3)の処理手順)。
【0023】
しかし、出力用メモリ空間11bにデータを書き込んでいくために入力用メモリ空間11aからデータ列を順次読み出していく最中に、キャッシュメモリ22のエントリ数による制約から、図12に示すように、先に読み出しているデータ列がキャッシュメモリ22から溢れてしまうことがある。すなわち、回転する単位となる1ライン(入力用メモリ空間11aにおける縦方向のデータ列)の最終データを出力用メモリ空間11bに書き込むために入力用メモリ空間11aから該最終データを含むデータ列を読み出すときに、先に書き込んでいるデータ列をキャッシュメモリ22から削除しなければならなかった。
【0024】
これにより、キャッシュメモリ22は、回転対象のデータを得るために、入力用メモリ空間11aから再度同一のデータ列を読み出さなければならなくなる。これでは、回転処理に時間がかかってしまうことになる。
これに対して、本実施形態では、キャッシュメモリ22を用いても、入力用メモリ空間11aから回転対象のデータを得るために再度同一のデータ列を読み出さずに、回転処理を完了させることを実現している。
【0025】
図13は、本実施形態における、その回転処理の処理手順を示すフローチャートである。
図13に示すように、先ずステップS1において、CPU20(演算部21)は、回転処理の指示が有るか否かを判定する。CPU20は、回転処理の指示が有ると判定したとき、ステップS2に進む。
【0026】
ステップS2では、CPU20は、指示された回転処理が90°又は270°の回転処理か否かを判定する。CPU20は、90°又は270°の回転処理であると判定すると、ステップS3に進む。また、CPU20は、90°又は270°の回転処理でないと判定すると、すなわち、180°の回転処理の場合、ステップS4に進む。
ステップS4では、CPU20は、通常の処理による回転処理を行う。すなわち、CPU20は、前記図9を用いて説明したような手順による回転処理を行う。
【0027】
一方、ステップS3では、CPU20は、キャッシュメモリ22のデータ書き込み可能な領域の記憶容量の情報を取得する。
続くステップS5において、CPU20は、回転対象の画像(入力用メモリ空間11aに記憶される画像データ)のサイズの情報を取得する。
続くステップS6において、CPU20は、前記ステップS2で取得したキャッシュメモリサイズ及び前記ステップS5で取得した画像サイズを基に、入力用メモリ空間11a(入力用メモリ空間11aに展開された画像)を分割するための矩形領域を決定する。
【0028】
図14は、矩形領域を決定する工程を説明する図である。
図14(a)に示すように、CPU20は、キャッシュメモリサイズ相当の矩形領域を先ず決定して、すなわち、キャッシュメモリのスペックに応じた矩形領域を先ず決定して、その決定した矩形領域を入力用メモリ空間11a上でその縦方向(入力用メモリ空間11aから読み出すデータ列に対する垂直方向に相当)に割り振る。
【0029】
そして、図14(b)に示すように、CPU20は、そのような各矩形領域により分割される縦方向のデータの幅(具体的には矩形領域により区画された縦方向の画素データの数)がそれら各矩形領域で同等になるように、該矩形領域の縦方向の大きさ(幅)を調整し、最終的な矩形領域の大きさを決定する。図14(a)では、画像データの下端に位置する矩形領域が該画像データからはみ出ている。すなわち、その矩形領域により分割されるデータの幅が、その矩形領域の上方に位置する他の矩形領域により分割されるデータの幅よりも小さくなっている。このように、矩形領域により分割されるデータの幅が、他の矩形領域により分割されるデータの幅よりも小さい場合、CPU20は、図14(b)に示すように、全ての矩形領域により分割されるデータの幅が等しくなるように、該矩形領域の大きさを調整し、最終的な矩形領域の大きさを決定する。すなわち、CPU20は、キャッシュメモリサイズを超えずに(当初の矩形領域の大きさの範囲内で)、画像データを等分割できる矩形領域の大きさを決定する。
【0030】
また、同様にして、CPU20は、矩形領域により分割される横方向のデータの幅(横方向の画素データの数)が各矩形領域で同等になるように、該矩形領域の横方向の大きさを調整し、最終的な矩形領域の大きさを決定する。
続いて、CPU20は、画像データ全体について分割するのに必要な矩形領域の数を取得する。例えば、CPU20は、画像データの縦方向を分割するのに必要な矩形領域の数と、画像データの横方向を分割するのに必要な矩形領域の数を基に、画像データ全体を分割するのに必要な矩形領域の数、すなわち矩形領域による画像データの分割数を取得する。
【0031】
なお、前述のように、一般的に、キャッシュメモリ22のキャッシュラインサイズは非常に大きいため、キャッシュメモリ22は、キャッシュラインサイズに応じたデータとして、画像データの1列分のデータ全て(図14に示す横方向の1列分のデータ全て)を読み出すことができる。よって、矩形領域の横方向の幅は、図14に示すように画像データの横方向の1列分のデータよりも小さくなっているが、実際には非常に大きいキャッシュメモリ相当の大きさに応じた幅(具体的には該1列分のデータの幅よりも十分大きな幅)にすることもできる。このような場合には、キャッシュメモリ相当の大きさとして最初に決定した矩形領域の横方向の幅の調整が不要になったり、分割数も少なくなったりすることになる。
【0032】
続くステップS7において、CPU20は、キャッシュメモリ22に回転対象のデータ(画素データ)が有るか否かを判定する。CPU20は、回転対象のデータが有ると判定すると、ステップS8に進む。また、CPU20は、回転対象のデータが無いと判定すると、ステップS11に進む。
ステップS11では、キャッシュメモリ22が、入力用メモリ空間11aに読み込んでいるデータから、前記ステップS6で決定した矩形領域分のデータ(1ブロック分のデータ)を読み出す。
【0033】
続くステップS12において、前記ステップS12で読み出した矩形領域分のデータがキャッシュメモリ22に書き込まれる。そして、CPU20は、前記ステップS7から再び処理を開始する。以上のステップS11及びステップS12の処理が実行されることにより、CPU20は、ステップS7において、キャッシュメモリ22に回転対象のデータが有ると判定して、ステップS8に進むようになる。
【0034】
ステップS8では、CPU20は、キャッシュメモリ22から回転対象のデータを読み出して回転させて出力用メモリ空間11bに書き込む。すなわち、CPU20は、キャッシュメモリ22から読み出したデータを、回転した画像を構成することになるように、出力用メモリ空間11bの予め設定した領域に書き込む。
続くステップS9において、CPU20は、キャッシュメモリ22に読み出した回転対象のデータ全て(矩形領域分のデータ)について回転処理(前記ステップS8の処理)を終了したか否かを判定する。CPU20は、その回転処理を終了したと判定すると、ステップS10に進む。また、CPU20は、その回転処理を終了していないと判定すると、前記ステップS7から再び処理を開始する。
【0035】
ステップS10では、CPU20は、画像データ全体について回転処理を終了したか否かを判定する。すなわち、CPU20は、前記ステップS6で取得した分割数の回数だけ画像データから矩形領域単位でデータを読み出して回転処理をしたか否かを判定する。CPU20は、その回転処理を終了したと判定すると、該図13に示す処理を終了する。また、CPU20は、その回転処理を終了していないと判定すると、前記ステップS7から再び処理を開始する。
【0036】
以上の処理により、入力用メモリ空間11aに書き込まれた画像データは、図15に示すように矩形領域を単位として分割され、その後、回転されるようになる。
図16は、以上の処理を行うCPU20の主な機能を示すブロック図である。
図16に示すように、CPU20は、矩形領域を決定(調整)する調整部25と、入力用メモリ空間11aのデータを矩形領域単位でキャッシュメモリ22に書き込む書き込み部26と、キャッシュメモリ22に書き込まれたデータを出力用メモリ空間11bに書き込み回転した画像を生成する回転画像生成部27とを有する。
【0037】
以上のような構成を有する画像処理装置1の動作、作用等は次のようになる。図17を用いて説明する。
画像処理装置1は、90°又は270°の回転処理の指示(例えば操作部2に対する使用者の指示)があると、キャッシュメモリサイズ22の情報及びその回転処理指示の有った画像サイズの情報を取得する(前記ステップS1乃至ステップS3、ステップS5)。
【0038】
そして、画像処理装置1は、取得したキャッシュメモリサイズ及び画像サイズを基に、矩形領域(その大きさ及び数)を決定する(前記ステップS6)。
そして、画像処理装置1は、図17に示す(1)及び(2)の処理工程として、入力用メモリ空間11aから矩形領域内のデータ(1ブロック分のデータ)をキャッシュメモリ22に読み出す(前記ステップS7、ステップS11、ステップS12)。
【0039】
続いて、画像処理装置1は、図17に示す(3)の処理工程として、キャッシュメモリ22からデータを順次読み出していき、回転した画像を構成することになるように、出力用メモリ空間11bの予め設定した領域に順次書き込んでいく(前記ステップS8、ステップS9)。そして、画像処理装置1は、キャッシュメモリ22に読み出したデータ全て(1ブロック分のデータ)を出力用メモリ空間11bに書き込むと、図17に示す(1)及び(2)の処理工程として、入力用メモリ空間11aから次の矩形領域のデータ(次の1ブロック分のデータ)を読み出し、キャッシュメモリ22に書き込む(前記ステップS7、ステップS11、ステップS12)。
【0040】
以上のような処理を続けていくことで、画像処理装置1は、入力用メモリ空間11aに書き込まれた画像を構成するデータを矩形領域を単位として回転処理し、出力用メモリ空間11bに回転させた画像データを生成する。そして、画像処理装置1は、生成した画像データを基に画像形成等の処理を行う。
次に、従来の回転処理と比較しつつ、本実施形態の回転処理を説明する。ここでは、図18に示すような、入力画像(画素データA,B,C,D,・・・からなる画像データ)を出力画像に回転させる場合について説明する。その処理の順番で示す図19乃至図35に沿って説明する。
【0041】
図19(b)乃至図21(b)に示すように、本実施形態では、入力用メモリ空間11aの画像データを矩形領域単位で出力用メモリ空間11bに読み出すために、入力用メモリ空間11aのデータであって、矩形領域内のものをデータ列単位でキャッシュメモリ22に読み出していく。そして、本実施形態では、キャッシュメモリ22に読み出した各データ列の各先頭データを出力用メモリ空間11bに順次書き込んでいく。このとき、指示された回転角度(90°又は270°)の画像となるように、出力用メモリ空間11bにおける予め設定した領域にデータを書き込んでいく。
【0042】
一方、図19(a)乃至図21(a)に示すように、従来の処理では、入力用メモリ空間11aのデータを出力用メモリ空間11bに読み出すために、入力用メモリ空間11aのデータをデータ列単位でキャッシュメモリ22に順次読み出していく。そして、従来の処理では、キャッシュメモリ22に読み出した各データ列の各先頭データを出力用メモリ空間に順次書き込んでいく。
【0043】
そして、図22(b)乃至図27(b)に示すように、本実施形態では、矩形領域内の全てのデータをキャッシュメモリ22に読み出すと、その読み出す処理を終了するが、キャッシュメモリ22に読み出したデータを継続して出力用メモリ空間11bに書き込んでいく。
一方、図22(a)乃至図25(a)に示すように、従来の処理では、出力用メモリ空間11bに新たなデータ列の先頭データを読み出すために、入力用メモリ空間11aからキャッシュメモリ22にデータ列を読み出し、そのデータ列の先頭データを出力用メモリ空間11bに書き込む。このとき、従来の処理では、キャッシュメモリ22に先に読み出されているデータ列(出力用メモリ空間11bに未だ読み出されていないデータを含むデータ列)が溢れることになる(キャッシュメモリ22から消去されることになる)。
【0044】
そのため、図26(a)及び図27(a)に示すように、従来の処理では、出力用メモリ空間11bに書き込まれていないデータ(この例では画素データR)を書き込むために、溢れたデータ列(画素データQ,R,S,Tからなるデータ列)を再度入力用メモリ空間11aからキャッシュメモリ22に読み出し、該データ列のデータを出力用メモリ空間11bに書き込んでいる。
【0045】
そして、本実施形態では、図28(b)に示すように、処理が進み、キャッシュメモリ22に読み出した矩形領域単位のデータ全てについて出力用メモリ空間11bへの書き込みが終了すると、図29(b)乃至図33(b)に示すように、入力用メモリ空間11aのデータであって、次の矩形領域内のものをデータ列単位でキャッシュメモリ22に読み出していく。そして、本実施形態では、先の矩形領域内のデータに対する処理と同様に、キャッシュメモリ22に読み出した各データ列の各先頭データを出力用メモリ空間11bに順次書き込んでいく。
【0046】
本実施形態では、以上のような処理により、図34(b)に示すように、入力用メモリ空間11aのデータをキャッシュメモリ22を介して出力用メモリ空間11bに読み出すことができる。
一方、従来の処理では、図28(a)乃至図33(a)に示すように、出力用メモリ空間11bに読み出されていないデータを書き込むために、必要に応じて入力用メモリ空間11aからキャッシュメモリ22に再度データ列を読み出し、該データ列のデータを出力用メモリ空間11bに書き込んでいる。
【0047】
しかし、図34(a)に示すように、本実施形態が出力用メモリ空間11bへのデータの書き込みを完了した時点で、従来の処理では、出力用メモリ空間11bへのデータの用見み出しが完了していなく、その処理途中の状態になっている。
以上のように、本実施形態では、キャッシュメモリ22を用いても、入力用メモリ空間11aから回転対象のデータを得るために再度同一のデータ列を読み出さずに、回転処理を完了させることができる。
【0048】
そして、本実施形態では、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることができる。
なお、画像処理装置の適用分野として、画像読取装置を有する画像形成装置が、画像形成装置で読み込んだ画像を画像処理装置で回転させ、回転させた画像データを基に画像形成を行うことが考えられる。しかし、これに限定されないことは言うまでもない。
【0049】
図35は、矩形領域の大きさに応じた処理時間(画像の回転処理時間)の変化の一例を示す。ここでは、あるキャッシュラインサイズを持った(例えば128byteの512エントリを持った)キャッシュメモリの使用時に、設定する矩形領域の大きさ(設定エントリ数)を変化させている。
図35に示すように、設定する矩形領域(エントリ数)を大きくしていくことで、ある地点(512)から急激に処理時間が長くなっている。これは、設定する矩形領域を、キャッシュメモリのサイズを超えたサイズに設定してしまい、データ処理時に、キャッシュメモリに入りきらないデータ量をキャッシュメモリに格納しようとしてしまい、キャッシュメモリからデータが溢れ、結果、メモリからデータを呼び出すことになり、処理時間が急激に長くなっている。
【0050】
なお、本実施形態では、第1記憶手段として、例えば、入力用メモリ空間11aを用いている。また、第2記憶手段として、例えば、出力用メモリ空間11bを用いている。また、調整手段として、例えば、調整部25を用いている。書き込み手段として、例えば、書き込み部26を用いている。また、生成手段として、例えば、回転画像生成部27を用いている。
【符号の説明】
【0051】
1 画像処理装置、11 メインメモリ、11a 入力用メモリ空間、11b 出力用メモリ空間、20 CPU、21 演算部、22 キャッシュメモリ、23 プログラム、25 調整部、26 書き込み部、27 回転画像生成部
【技術分野】
【0001】
本発明は、画像処理装置及び制御プログラムである。
【背景技術】
【0002】
特許文献1には、画像データを回転させる技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−226330号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることである。
【課題を解決するための手段】
【0005】
請求項1に係る発明は、画像が展開されて記憶される第1記憶手段と、前記第1記憶手段に記憶された画像が回転されて記憶される第2記憶手段と、前記第1記憶手段に記憶された画像が書き込まれ、書き込まれた画像が前記第2記憶手段に読み出されるキャッシュメモリと、前記キャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される記画像を構成するデータの幅が同等になるように調整する調整手段と、前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで前記回転した画像を生成する生成手段と、を備える画像処理装置である。
【0006】
請求項2に係る発明は、第1記憶手段に展開され記憶された画像が書き込まれ、第2記憶手段に前記書き込まれた画像が読み出されるキャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで回転した画像を生成する生成手段と、をコンピュータに実行させるコンピュータに読み取り可能な制御プログラムである。
【発明の効果】
【0007】
請求項1及び2に係る発明によれば、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることができる。
【図面の簡単な説明】
【0008】
【図1】本実施形態の画像処理装置の構成を示すブロック図である。
【図2】CPU及びメインメモリの構成を示すブロック図である。
【図3】回転対象の画像の例を示す図である。
【図4】メインメモリに確保される入力用メモリ空間及び出力用メモリ空間を示す図である。
【図5】入力用メモリ空間への画像データの読み込みを説明する図である。
【図6】回転処理時の入力用メモリ空間と出力用メモリ空間との間のデータのやり取りを説明する図である。
【図7】回転した画像データを説明する図である。
【図8】入力画像に対して90°回転した出力画像を得るまでの流れを説明する図である。
【図9】0°(又は180°)の回転処理を説明する図である。
【図10】キャッシュメモリの構成を説明する図である。
【図11】90°(又は270°)の回転処理を説明する図である。
【図12】キャッシュメモリからデータ列が溢れたときを説明する図である。
【図13】本実施形態の回転処理の処理手順を示すフローチャートである。
【図14】矩形領域を決定する工程を説明する図である。
【図15】矩形領域を単位として画像全体を分割していくことを説明する図である。
【図16】CPUの機能を示すブロック図である。
【図17】画像処理装置の動作、作用等を説明する図である。
【図18】比較例(従来の処理)と本実施形態とを比較するために用いた回転対象の画像を示す図である。
【図19】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図20】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図22】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図21】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図23】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図24】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図25】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図26】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図27】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図28】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図29】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図30】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図31】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図32】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図33】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図34】比較例及び本実施形態の画像の回転処理における一の処理状態を示す図である。
【図35】矩形領域の大きさに応じた処理時間(画像の回転処理時間)の変化の一例を示す特性図である。
【発明を実施するための形態】
【0009】
本実施形態は、画像処理装置である。
図1は、画像処理装置1の概略構成を示す。
図1に示すように、画像処理装置1は、演算処理装置10、操作部2、表示部3、及びHDD(Hard Disk Drive)4を有する。画像処理装置1は、例えばコンピュータである。
【0010】
操作部2は、使用者が情報を入力するためのものである。例えば、操作部2は、キーボード、マウス等である。
表示部3は、演算処理装置1による処理結果等を表示するディスプレイ等である。
HDD4には、各種のデータやプログラム等が記憶されている。
演算処理装置10は、CPU20、メインメモリ11、及びインターフェース(I/F)12を有する。
【0011】
CPU20は、各種のプログラムに従い各種処理を行う。
メインメモリ11には、各種データが記憶される。本実施形態では、HDD4等に記憶されている画像データが回転処理のためにメインメモリ11に一時的に記憶される。
インターフェース12は、CPU20と操作部2等の外部機器との間でデータの送受信を行うための通信インターフェースである。
【0012】
図2は、CPU20及びメインメモリ11の構成を示す。
図2に示すように、CPU20は、演算部21、キャッシュメモリ22、及び制御プログラム23を有する。
ここで、制御プログラム23は、記憶部に記憶されており、画像処理装置1の製造当初からセットアップされているが、後にインターネットなどの通信手段を介してダウンロードしてセットアップし、或いは、後に制御プログラム23を記憶した記憶媒体から読み取ってセットアップするようにしても良い。
また、メインメモリ11は、入力用メモリ空間11a及び出力用メモリ空間11bを有する。
【0013】
この画像処理装置1は、以上のような構成により画像を回転処理させることができる。その画像の回転処理の処理工程は概略として次のようになる。
(1)画像データのヘッダ情報から画像の情報を取得する。
(2)取得した画像の情報を基に、メインメモリ11に入力用メモリ空間(読み込み用メモリ領域、入力用メモリ領域)11a及び出力用メモリ空間(書き込み用メモリ領域、出力用メモリ領域)11bを確保する。
(3)HDD4等から取得した画像データを、メインメモリ11の入力用メモリ空間11aに読み出す(画像を展開する)。
(4)回転させる角度に応じて入力用メモリ空間11aからデータ(具体的には画素データ)を読み出して、出力用メモリ空間11bに書き込む。
(5)入力用メモリ空間11aに読み出された画像を構成するデータ全てについて、入力用メモリ空間11aから出力用メモリ空間11bへの書き込みが終了すると、出力用メモリ空間11bに書き込まれた回転された画像データを基に、プリンタエンジン等を制御して画像を出力する。
【0014】
次に以上の処理工程に基づいて行う画像の回転処理を具体的に説明する。
図3は、回転対象の画像100の例を示す。ここでは、この画像100を90°回転させる例を説明する。
先ず、CPU20(演算部21)は、前記(1)の処理工程として、図3の画像データのヘッダ情報から画像の情報を取得する。
【0015】
続いて、CPU20は、前記(2)の処理工程として、取得した画像の情報を基に、図4に示すように、メインメモリ11に入力用メモリ空間11a及び出力用メモリ空間11bを確保する。
続いて、CPU20は、前記(3)の処理工程として、図5(a)から(b)に示すように、HDD4等から取得した画像データをメインメモリ11の入力用メモリ空間11aに読み込む(画像を展開する)。
【0016】
続いて、CPU20は、前記(4)の処理工程として、図6(a)に示すように、回転角度に応じて入力用メモリ空間11aからデータ(画素データ)を読み出す。すなわち、画像を90°回転させる場合、画像データの縦方向を走査してそのデータ(画素データ)を読み出す。例えば、画像データがラスタースキャンにより得られたラスター画像のものであれば、副走査方向に画像データを走査してそのデータを読み出していることになる。そして、CPU20は、図6(b)に示すように、そのようにして読み出したデータを出力用メモリ空間11bに書き込む。このように、画像を構成する全データ(全画素データ)について入力用メモリ空間11aから出力用メモリ空間11bに書き込むことで、図7(a)から図7(b)に示すように回転した画像データが得られるようになる。
【0017】
そして、CPU20は、前記(5)の処理工程として、出力用メモリ空間11bに回転されて書き込まれた画像データを基に、プリンタエンジン等を制御して画像を出力する。
以上の処理工程により、画像処理装置1では、図8(a)乃至(d)に示すように、入力画像100に対して90°回転した出力画像101を得ることができる。
ここで、従来の回転処理を説明する。
【0018】
先ず、図9は、0°(又は180°)の回転処理を説明する図である。
図9に示すように、キャッシュメモリ22は、キャッシュラインサイズ(キャッシュライン幅)に応じた大きさ(幅)のデータ列(1列の画素データ群)を入力用メモリ空間11aから読み出す(図9に示す(1)及び(2)の処理)。
ここで、図10を用いて、一般的なキャッシュメモリの構成を説明する。
【0019】
図10(a)に示すように、キャッシュメモリは、キャッシュサイズによりキャッシュラインサイズ及びエントリ数が制約を受ける。これは、キャッシュサイズ及びキャッシュラインサイズが固定値であれば、エントリ数が制約を受けるとも言える。ここで、例を挙げると、図10(b)に示すように、キャッシュメモリ22には、キャッシュラインサイズが128byteで、エントリ数が521エントリとなるものがある。
【0020】
このようなキャッシュメモリ22では、図9に示すように、入力用メモリ空間11aに書き込んだデータ列の一部のデータ(回転対象のデータ(画素データ))を読み出し、読み出したデータを出力用メモリ空間11bに書き込んでいる(図9に示す(3)の処理)。このような処理を、キャッシュメモリ22は、入力用メモリ空間11aに書き込んだデータ列(1ラインのデータ)の先頭データから最後尾のデータに対して行う。そして、キャッシュメモリ22は、このような書き込みをしつつ、次のエントリとなる、キャッシュラインサイズに応じたデータ列を入力用メモリ空間11aから読み出している(図9に示す(1)の処理)。
【0021】
なお、一般的に、キャッシュメモリ22のキャッシュラインサイズは非常に大きいため、キャッシュメモリ22は、キャッシュラインサイズに応じたデータとして、入力用メモリ空間11aの1列分を構成するデータの全てを読み出すことができる。
このようなことから、キャッシュメモリ22を介してデータの入出力を行う場合、その入出力は、主として、キャッシュメモリ22のエントリ数の制約を受けることになる。
【0022】
ここで、図11及び図12は、90°(又は270°)の回転処理を説明する図である。
図11に示すように、キャッシュメモリ22は、90°の回転角度に対応しつつ、キャッシュラインサイズに応じた大きさのデータ列を入力用メモリ空間11aから読み出す(図11に示す(1)及び(2)の処理)。
そして、キャッシュメモリ22は、入力用メモリ空間11aから読み込んだデータ列における先頭データを回転対象のデータとして読み出して、出力用メモリ空間11bに書き込む(図11に示す(3)の処理手順)。そして、90°の回転処理の場合には、キャッシュメモリ22は、次のエントリとなる、キャッシュラインサイズに応じた大きさの次のデータ列を入力用メモリ空間11aから読み出す。これにより、キャッシュメモリ22は、次のエントリのデータ列の先頭データを回転対象のデータとして読み出して、出力用メモリ空間11bに書き込んでいる(図11に示す(1)乃至(3)の処理手順)。
【0023】
しかし、出力用メモリ空間11bにデータを書き込んでいくために入力用メモリ空間11aからデータ列を順次読み出していく最中に、キャッシュメモリ22のエントリ数による制約から、図12に示すように、先に読み出しているデータ列がキャッシュメモリ22から溢れてしまうことがある。すなわち、回転する単位となる1ライン(入力用メモリ空間11aにおける縦方向のデータ列)の最終データを出力用メモリ空間11bに書き込むために入力用メモリ空間11aから該最終データを含むデータ列を読み出すときに、先に書き込んでいるデータ列をキャッシュメモリ22から削除しなければならなかった。
【0024】
これにより、キャッシュメモリ22は、回転対象のデータを得るために、入力用メモリ空間11aから再度同一のデータ列を読み出さなければならなくなる。これでは、回転処理に時間がかかってしまうことになる。
これに対して、本実施形態では、キャッシュメモリ22を用いても、入力用メモリ空間11aから回転対象のデータを得るために再度同一のデータ列を読み出さずに、回転処理を完了させることを実現している。
【0025】
図13は、本実施形態における、その回転処理の処理手順を示すフローチャートである。
図13に示すように、先ずステップS1において、CPU20(演算部21)は、回転処理の指示が有るか否かを判定する。CPU20は、回転処理の指示が有ると判定したとき、ステップS2に進む。
【0026】
ステップS2では、CPU20は、指示された回転処理が90°又は270°の回転処理か否かを判定する。CPU20は、90°又は270°の回転処理であると判定すると、ステップS3に進む。また、CPU20は、90°又は270°の回転処理でないと判定すると、すなわち、180°の回転処理の場合、ステップS4に進む。
ステップS4では、CPU20は、通常の処理による回転処理を行う。すなわち、CPU20は、前記図9を用いて説明したような手順による回転処理を行う。
【0027】
一方、ステップS3では、CPU20は、キャッシュメモリ22のデータ書き込み可能な領域の記憶容量の情報を取得する。
続くステップS5において、CPU20は、回転対象の画像(入力用メモリ空間11aに記憶される画像データ)のサイズの情報を取得する。
続くステップS6において、CPU20は、前記ステップS2で取得したキャッシュメモリサイズ及び前記ステップS5で取得した画像サイズを基に、入力用メモリ空間11a(入力用メモリ空間11aに展開された画像)を分割するための矩形領域を決定する。
【0028】
図14は、矩形領域を決定する工程を説明する図である。
図14(a)に示すように、CPU20は、キャッシュメモリサイズ相当の矩形領域を先ず決定して、すなわち、キャッシュメモリのスペックに応じた矩形領域を先ず決定して、その決定した矩形領域を入力用メモリ空間11a上でその縦方向(入力用メモリ空間11aから読み出すデータ列に対する垂直方向に相当)に割り振る。
【0029】
そして、図14(b)に示すように、CPU20は、そのような各矩形領域により分割される縦方向のデータの幅(具体的には矩形領域により区画された縦方向の画素データの数)がそれら各矩形領域で同等になるように、該矩形領域の縦方向の大きさ(幅)を調整し、最終的な矩形領域の大きさを決定する。図14(a)では、画像データの下端に位置する矩形領域が該画像データからはみ出ている。すなわち、その矩形領域により分割されるデータの幅が、その矩形領域の上方に位置する他の矩形領域により分割されるデータの幅よりも小さくなっている。このように、矩形領域により分割されるデータの幅が、他の矩形領域により分割されるデータの幅よりも小さい場合、CPU20は、図14(b)に示すように、全ての矩形領域により分割されるデータの幅が等しくなるように、該矩形領域の大きさを調整し、最終的な矩形領域の大きさを決定する。すなわち、CPU20は、キャッシュメモリサイズを超えずに(当初の矩形領域の大きさの範囲内で)、画像データを等分割できる矩形領域の大きさを決定する。
【0030】
また、同様にして、CPU20は、矩形領域により分割される横方向のデータの幅(横方向の画素データの数)が各矩形領域で同等になるように、該矩形領域の横方向の大きさを調整し、最終的な矩形領域の大きさを決定する。
続いて、CPU20は、画像データ全体について分割するのに必要な矩形領域の数を取得する。例えば、CPU20は、画像データの縦方向を分割するのに必要な矩形領域の数と、画像データの横方向を分割するのに必要な矩形領域の数を基に、画像データ全体を分割するのに必要な矩形領域の数、すなわち矩形領域による画像データの分割数を取得する。
【0031】
なお、前述のように、一般的に、キャッシュメモリ22のキャッシュラインサイズは非常に大きいため、キャッシュメモリ22は、キャッシュラインサイズに応じたデータとして、画像データの1列分のデータ全て(図14に示す横方向の1列分のデータ全て)を読み出すことができる。よって、矩形領域の横方向の幅は、図14に示すように画像データの横方向の1列分のデータよりも小さくなっているが、実際には非常に大きいキャッシュメモリ相当の大きさに応じた幅(具体的には該1列分のデータの幅よりも十分大きな幅)にすることもできる。このような場合には、キャッシュメモリ相当の大きさとして最初に決定した矩形領域の横方向の幅の調整が不要になったり、分割数も少なくなったりすることになる。
【0032】
続くステップS7において、CPU20は、キャッシュメモリ22に回転対象のデータ(画素データ)が有るか否かを判定する。CPU20は、回転対象のデータが有ると判定すると、ステップS8に進む。また、CPU20は、回転対象のデータが無いと判定すると、ステップS11に進む。
ステップS11では、キャッシュメモリ22が、入力用メモリ空間11aに読み込んでいるデータから、前記ステップS6で決定した矩形領域分のデータ(1ブロック分のデータ)を読み出す。
【0033】
続くステップS12において、前記ステップS12で読み出した矩形領域分のデータがキャッシュメモリ22に書き込まれる。そして、CPU20は、前記ステップS7から再び処理を開始する。以上のステップS11及びステップS12の処理が実行されることにより、CPU20は、ステップS7において、キャッシュメモリ22に回転対象のデータが有ると判定して、ステップS8に進むようになる。
【0034】
ステップS8では、CPU20は、キャッシュメモリ22から回転対象のデータを読み出して回転させて出力用メモリ空間11bに書き込む。すなわち、CPU20は、キャッシュメモリ22から読み出したデータを、回転した画像を構成することになるように、出力用メモリ空間11bの予め設定した領域に書き込む。
続くステップS9において、CPU20は、キャッシュメモリ22に読み出した回転対象のデータ全て(矩形領域分のデータ)について回転処理(前記ステップS8の処理)を終了したか否かを判定する。CPU20は、その回転処理を終了したと判定すると、ステップS10に進む。また、CPU20は、その回転処理を終了していないと判定すると、前記ステップS7から再び処理を開始する。
【0035】
ステップS10では、CPU20は、画像データ全体について回転処理を終了したか否かを判定する。すなわち、CPU20は、前記ステップS6で取得した分割数の回数だけ画像データから矩形領域単位でデータを読み出して回転処理をしたか否かを判定する。CPU20は、その回転処理を終了したと判定すると、該図13に示す処理を終了する。また、CPU20は、その回転処理を終了していないと判定すると、前記ステップS7から再び処理を開始する。
【0036】
以上の処理により、入力用メモリ空間11aに書き込まれた画像データは、図15に示すように矩形領域を単位として分割され、その後、回転されるようになる。
図16は、以上の処理を行うCPU20の主な機能を示すブロック図である。
図16に示すように、CPU20は、矩形領域を決定(調整)する調整部25と、入力用メモリ空間11aのデータを矩形領域単位でキャッシュメモリ22に書き込む書き込み部26と、キャッシュメモリ22に書き込まれたデータを出力用メモリ空間11bに書き込み回転した画像を生成する回転画像生成部27とを有する。
【0037】
以上のような構成を有する画像処理装置1の動作、作用等は次のようになる。図17を用いて説明する。
画像処理装置1は、90°又は270°の回転処理の指示(例えば操作部2に対する使用者の指示)があると、キャッシュメモリサイズ22の情報及びその回転処理指示の有った画像サイズの情報を取得する(前記ステップS1乃至ステップS3、ステップS5)。
【0038】
そして、画像処理装置1は、取得したキャッシュメモリサイズ及び画像サイズを基に、矩形領域(その大きさ及び数)を決定する(前記ステップS6)。
そして、画像処理装置1は、図17に示す(1)及び(2)の処理工程として、入力用メモリ空間11aから矩形領域内のデータ(1ブロック分のデータ)をキャッシュメモリ22に読み出す(前記ステップS7、ステップS11、ステップS12)。
【0039】
続いて、画像処理装置1は、図17に示す(3)の処理工程として、キャッシュメモリ22からデータを順次読み出していき、回転した画像を構成することになるように、出力用メモリ空間11bの予め設定した領域に順次書き込んでいく(前記ステップS8、ステップS9)。そして、画像処理装置1は、キャッシュメモリ22に読み出したデータ全て(1ブロック分のデータ)を出力用メモリ空間11bに書き込むと、図17に示す(1)及び(2)の処理工程として、入力用メモリ空間11aから次の矩形領域のデータ(次の1ブロック分のデータ)を読み出し、キャッシュメモリ22に書き込む(前記ステップS7、ステップS11、ステップS12)。
【0040】
以上のような処理を続けていくことで、画像処理装置1は、入力用メモリ空間11aに書き込まれた画像を構成するデータを矩形領域を単位として回転処理し、出力用メモリ空間11bに回転させた画像データを生成する。そして、画像処理装置1は、生成した画像データを基に画像形成等の処理を行う。
次に、従来の回転処理と比較しつつ、本実施形態の回転処理を説明する。ここでは、図18に示すような、入力画像(画素データA,B,C,D,・・・からなる画像データ)を出力画像に回転させる場合について説明する。その処理の順番で示す図19乃至図35に沿って説明する。
【0041】
図19(b)乃至図21(b)に示すように、本実施形態では、入力用メモリ空間11aの画像データを矩形領域単位で出力用メモリ空間11bに読み出すために、入力用メモリ空間11aのデータであって、矩形領域内のものをデータ列単位でキャッシュメモリ22に読み出していく。そして、本実施形態では、キャッシュメモリ22に読み出した各データ列の各先頭データを出力用メモリ空間11bに順次書き込んでいく。このとき、指示された回転角度(90°又は270°)の画像となるように、出力用メモリ空間11bにおける予め設定した領域にデータを書き込んでいく。
【0042】
一方、図19(a)乃至図21(a)に示すように、従来の処理では、入力用メモリ空間11aのデータを出力用メモリ空間11bに読み出すために、入力用メモリ空間11aのデータをデータ列単位でキャッシュメモリ22に順次読み出していく。そして、従来の処理では、キャッシュメモリ22に読み出した各データ列の各先頭データを出力用メモリ空間に順次書き込んでいく。
【0043】
そして、図22(b)乃至図27(b)に示すように、本実施形態では、矩形領域内の全てのデータをキャッシュメモリ22に読み出すと、その読み出す処理を終了するが、キャッシュメモリ22に読み出したデータを継続して出力用メモリ空間11bに書き込んでいく。
一方、図22(a)乃至図25(a)に示すように、従来の処理では、出力用メモリ空間11bに新たなデータ列の先頭データを読み出すために、入力用メモリ空間11aからキャッシュメモリ22にデータ列を読み出し、そのデータ列の先頭データを出力用メモリ空間11bに書き込む。このとき、従来の処理では、キャッシュメモリ22に先に読み出されているデータ列(出力用メモリ空間11bに未だ読み出されていないデータを含むデータ列)が溢れることになる(キャッシュメモリ22から消去されることになる)。
【0044】
そのため、図26(a)及び図27(a)に示すように、従来の処理では、出力用メモリ空間11bに書き込まれていないデータ(この例では画素データR)を書き込むために、溢れたデータ列(画素データQ,R,S,Tからなるデータ列)を再度入力用メモリ空間11aからキャッシュメモリ22に読み出し、該データ列のデータを出力用メモリ空間11bに書き込んでいる。
【0045】
そして、本実施形態では、図28(b)に示すように、処理が進み、キャッシュメモリ22に読み出した矩形領域単位のデータ全てについて出力用メモリ空間11bへの書き込みが終了すると、図29(b)乃至図33(b)に示すように、入力用メモリ空間11aのデータであって、次の矩形領域内のものをデータ列単位でキャッシュメモリ22に読み出していく。そして、本実施形態では、先の矩形領域内のデータに対する処理と同様に、キャッシュメモリ22に読み出した各データ列の各先頭データを出力用メモリ空間11bに順次書き込んでいく。
【0046】
本実施形態では、以上のような処理により、図34(b)に示すように、入力用メモリ空間11aのデータをキャッシュメモリ22を介して出力用メモリ空間11bに読み出すことができる。
一方、従来の処理では、図28(a)乃至図33(a)に示すように、出力用メモリ空間11bに読み出されていないデータを書き込むために、必要に応じて入力用メモリ空間11aからキャッシュメモリ22に再度データ列を読み出し、該データ列のデータを出力用メモリ空間11bに書き込んでいる。
【0047】
しかし、図34(a)に示すように、本実施形態が出力用メモリ空間11bへのデータの書き込みを完了した時点で、従来の処理では、出力用メモリ空間11bへのデータの用見み出しが完了していなく、その処理途中の状態になっている。
以上のように、本実施形態では、キャッシュメモリ22を用いても、入力用メモリ空間11aから回転対象のデータを得るために再度同一のデータ列を読み出さずに、回転処理を完了させることができる。
【0048】
そして、本実施形態では、画像の回転処理時に、キャッシュメモリのスペックに応じた矩形領域を設定することで、高速な回転処理を実施可能にすることができる。
なお、画像処理装置の適用分野として、画像読取装置を有する画像形成装置が、画像形成装置で読み込んだ画像を画像処理装置で回転させ、回転させた画像データを基に画像形成を行うことが考えられる。しかし、これに限定されないことは言うまでもない。
【0049】
図35は、矩形領域の大きさに応じた処理時間(画像の回転処理時間)の変化の一例を示す。ここでは、あるキャッシュラインサイズを持った(例えば128byteの512エントリを持った)キャッシュメモリの使用時に、設定する矩形領域の大きさ(設定エントリ数)を変化させている。
図35に示すように、設定する矩形領域(エントリ数)を大きくしていくことで、ある地点(512)から急激に処理時間が長くなっている。これは、設定する矩形領域を、キャッシュメモリのサイズを超えたサイズに設定してしまい、データ処理時に、キャッシュメモリに入りきらないデータ量をキャッシュメモリに格納しようとしてしまい、キャッシュメモリからデータが溢れ、結果、メモリからデータを呼び出すことになり、処理時間が急激に長くなっている。
【0050】
なお、本実施形態では、第1記憶手段として、例えば、入力用メモリ空間11aを用いている。また、第2記憶手段として、例えば、出力用メモリ空間11bを用いている。また、調整手段として、例えば、調整部25を用いている。書き込み手段として、例えば、書き込み部26を用いている。また、生成手段として、例えば、回転画像生成部27を用いている。
【符号の説明】
【0051】
1 画像処理装置、11 メインメモリ、11a 入力用メモリ空間、11b 出力用メモリ空間、20 CPU、21 演算部、22 キャッシュメモリ、23 プログラム、25 調整部、26 書き込み部、27 回転画像生成部
【特許請求の範囲】
【請求項1】
画像が展開されて記憶される第1記憶手段と、
前記第1記憶手段に記憶された画像が回転されて記憶される第2記憶手段と、
前記第1記憶手段に記憶された画像が書き込まれ、書き込まれた画像が前記第2記憶手段に読み出されるキャッシュメモリと、
前記キャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、
前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、
前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで前記回転した画像を生成する生成手段と、
を備える画像処理装置。
【請求項2】
第1記憶手段に展開され記憶された画像が書き込まれ、第2記憶手段に前記書き込まれた画像が読み出されるキャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、
前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、
前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで回転した画像を生成する生成手段と、
をコンピュータに実行させるコンピュータに読み取り可能な制御プログラム。
【請求項1】
画像が展開されて記憶される第1記憶手段と、
前記第1記憶手段に記憶された画像が回転されて記憶される第2記憶手段と、
前記第1記憶手段に記憶された画像が書き込まれ、書き込まれた画像が前記第2記憶手段に読み出されるキャッシュメモリと、
前記キャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、
前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、
前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで前記回転した画像を生成する生成手段と、
を備える画像処理装置。
【請求項2】
第1記憶手段に展開され記憶された画像が書き込まれ、第2記憶手段に前記書き込まれた画像が読み出されるキャッシュメモリのデータ書き込み可能な領域の記憶容量に応じて得られる前記第1記憶手段上で特定される矩形形状の領域の大きさを、前記第1記憶手段に記憶された画像を該領域を単位として分割したときにその分割された各領域で区画される前記画像を構成するデータの幅が同等になるように調整する調整手段と、
前記第1記憶手段に記憶された画像を前記調整手段が調整した前記矩形形状の領域を単位として分割しながら、分割した領域単位で前記データを順次前記キャッシュメモリに書き込む書き込み手段と、
前記書き込み手段が前記キャッシュメモリに書き込んだ前記データを、前記分割した領域単位で該キャッシュメモリから読み出し、前記第2記憶手段の予め設定した領域に書き込むことで回転した画像を生成する生成手段と、
をコンピュータに実行させるコンピュータに読み取り可能な制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【公開番号】特開2012−103889(P2012−103889A)
【公開日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願番号】特願2010−251627(P2010−251627)
【出願日】平成22年11月10日(2010.11.10)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
【公開日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願日】平成22年11月10日(2010.11.10)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
[ Back to top ]