(57)【要約】【課題】傾き補正処理を行うためのメモリからの画像の読み出しにおいて、無用な画素値の読み出しを抑制し、データ転送効率の向上を図る。【解決手段】画像データを保持する第１記憶部１０（ＤＲＡＭ）と、この第１記憶部１０から予め定められた大きさの転送単位領域であるタイルごとにバースト転送による画像データの転送を行う読み出し制御部２０と、この読み出し制御部２０により転送された転送単位領域ごとの画像データを保持する第２記憶部３０（ＳＲＡＭ）と、この第２記憶部３０から画像データを読み出し、読み出した画像に対して画像を回転する処理を行う補正処理部４０と、を備える。タイルのサイズは、第２記憶部３０の記憶容量に基づいて大きさが定められる対象画像の処理単位領域を包含するサイズである。【選択図】図１
2018157492.tif 000002
【特許請求の範囲】
【請求項１】
画像データを保持する第１の記憶手段と、
前記第１の記憶手段から予め定められた大きさの領域ごとに画像データを読み出して転送する転送手段と、
前記転送手段により転送された前記領域ごとの画像データを保持する、任意のアドレスごとの読み出しが可能な第２の記憶手段と、
前記第２の記憶手段から画像データを読み出し、読み出した画像に対して画像を回転する処理を行う処理手段と、
を備えることを特徴とする、画像処理装置。
【請求項２】
前記転送手段は、前記第２の記憶手段の記憶容量に基づいて設定された処理単位領域を含む転送単位領域ごとに、前記第１の記憶手段から画像データを読み出して前記第２の記憶手段に転送し、
前記処理手段は、前記第２の記憶手段に保持された前記処理単位領域の画像に対して画像処理を行うことを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記転送手段は、前記転送単位領域のサイズをバースト転送におけるバースト長に応じて拡大し、バースト転送により前記第１の記憶手段から画像データを読み出して前記第２の記憶手段に転送することを特徴とする、請求項２に記載の画像処理装置。
【請求項４】
前記転送手段は、ＤＭＡ（Direct Memory Access）転送におけるデータの転送開始位置のアライメントに基づき、前記転送単位領域の転送開始位置を調整し、ＤＭＡ転送により前記第１の記憶手段から画像データを読み出して前記第２の記憶手段に転送することを特徴とする、請求項２または請求項３に記載の画像処理装置。
【請求項５】
前記第２の記憶手段は、ＳＲＡＭ（Static Random Access Memory）であることを特徴とする、請求項１乃至請求項４のいずれかに記載の画像処理装置。
【請求項６】
画像データを保持するＤＲＡＭ（Dynamic Random Access Memory）と、
前記ＤＲＡＭから予め定められた大きさの領域ごとにバースト転送による画像データの転送を行う転送手段と、
前記転送手段により転送された前記領域ごとの画像データを保持するＳＲＡＭ（Static Random Access Memory）と、
前記ＳＲＡＭから画像データを読み出し、読み出した画像に対して画像を回転する処理を行う処理手段と、
を備えることを特徴とする、画像処理装置。
【請求項７】
ＤＭＡＣ（Direct Memory Access Controller）が、画像データを保持するＤＲＡＭ（Dynamic Random Access Memory）から予め定められた大きさの領域ごとに画像データを読み出してＳＲＡＭ（Static Random Access Memory）へ転送するステップと、
ＣＰＵ（Central Processing Unit）が、前記ＳＲＡＭから画像データを読み出し、読み出した画像に対して画像を回転する処理を行うステップと、
を含むことを特徴とする、画像処理方法。
【請求項８】
コンピュータに、
画像データを保持するＤＲＡＭ（Dynamic Random Access Memory）から予め定められた大きさの領域ごとに画像データを読み出してＳＲＡＭ（Static Random Access Memory）へ転送する処理と、
前記ＳＲＡＭから画像データを読み出し、読み出した画像に対して画像を回転して傾き補正する処理と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【０００２】
データ転送を高速に行う手法としてバースト転送がある。バースト転送では、バースト長分の連続するメモリアドレスに格納されているデータが、メモリから連続して読み出される。バースト転送によれば、データごとにアドレスを指定して読み出す通常の手法よりも高速にデータ転送が行われる。
【０００３】
画像読み取り装置により読み取られた（スキャンされた）画像は、メモリ上で、画像読み取り装置の主走査方向の行（ライン）ごとに連続的に格納される。そこで、バースト転送による高速な画像（データ）の読み出しが行われる。
【０００４】
特許文献１には、バースト長に対応して相異なる縦横比が設定された複数の矩形領域を用意し、原稿の傾きに基づいて選択された矩形領域を格納単位として画像をメモリに格納し、格納単位ごとにバースト読み出しを行って、読み出した画像に対して回転処理を含む画像処理を行うことが開示されている。
【０００５】
特許文献２には、記憶手段から、ブロック単位で画像データを読み出すデータ転送手段と、データ転送手段により読み出した画像データに対する回転処理を実行する傾き補正手段とを備え、傾き補正手段は、原稿の傾き角度と、傾き補正手段からデータを転送する際のバースト長とに基づき、ブロック間で重複する部分の長さを算出することが開示されている。
【０００６】
ここで、傾き補正が行われる場合、傾きが補正された後の出力画素に対する主走査方向の行は、補正前の画像の行方向に対して一定の角度でずれる。そのため、傾き補正を行うためにメモリから画像を読み出す際にバースト転送を行う場合、画像の傾きに応じて、画像以外の領域を転送したり、重複して読み取られる領域が生じたりする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−２０１６７７号公報
【特許文献２】特開２０１５−１９８４２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来、傾きのある画像に対してバースト転送によるメモリからの読み出しを行う場合、画像以外の領域を転送したり、重複して読み取られる領域が生じたりすることにより、無用な画素値の読み出しが生じていた。バースト転送により読み出す領域を調整することにより無用な画素値の読み出しを抑制するとしても、画像の傾き（回転角度）に応じて無用な画素値の読み出しを抑制する度合いが大きく異なるため、様々な画像の傾きに対して汎用的に用いることが困難であった。
【０００９】
本発明は、傾き補正処理を行うためのメモリからの画像の読み出しにおいて、無用な画素値の読み出しを抑制し、データ転送効率の向上を図ることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の請求項１に係る画像処理装置は、
画像データを保持する第１の記憶手段と、
前記第１の記憶手段から予め定められた大きさの領域ごとに画像データを読み出して転送する転送手段と、
前記転送手段により転送された前記領域ごとの画像データを保持する、任意のアドレスごとの読み出しが可能な第２の記憶手段と、
前記第２の記憶手段から画像データを読み出し、読み出した画像に対して画像を回転する処理を行う処理手段と、
を備えることを特徴とする、画像処理装置である。
請求項２に係る画像処理装置は、
前記転送手段は、前記第２の記憶手段の記憶容量に基づいて設定された処理単位領域を含む転送単位領域ごとに、前記第１の記憶手段から画像データを読み出して前記第２の記憶手段に転送し、
前記処理手段は、前記第２の記憶手段に保持された前記処理単位領域の画像に対して画像処理を行うことを特徴とする、請求項１に記載の画像処理装置である。
請求項３に係る画像処理装置は、
前記転送手段は、前記転送単位領域のサイズをバースト転送におけるバースト長に応じて拡大し、バースト転送により前記第１の記憶手段から画像データを読み出して前記第２の記憶手段に転送することを特徴とする、請求項２に記載の画像処理装置である。
請求項４に係る画像処理装置は、
前記転送手段は、ＤＭＡ（Direct Memory Access）転送におけるデータの転送開始位置のアライメントに基づき、前記転送単位領域の転送開始位置を調整し、ＤＭＡ転送により前記第１の記憶手段から画像データを読み出して前記第２の記憶手段に転送することを特徴とする、請求項２または請求項３に記載の画像処理装置である。
請求項５に係る画像処理装置は、
前記第２の記憶手段は、ＳＲＡＭ（Static Random Access Memory）であることを特徴とする、請求項１乃至請求項４のいずれかに記載の画像処理装置である。
請求項６に係る画像処理装置は、
画像データを保持するＤＲＡＭ（Dynamic Random Access Memory）と、
前記ＤＲＡＭから予め定められた大きさの領域ごとにバースト転送による画像データの転送を行う転送手段と、
前記転送手段により転送された前記領域ごとの画像データを保持するＳＲＡＭ（Static Random Access Memory）と、
前記ＳＲＡＭから画像データを読み出し、読み出した画像に対して画像を回転する処理を行う処理手段と、
を備えることを特徴とする、画像処理装置である。
請求項７に係る画像処理方法は、
ＤＭＡＣ（Direct Memory Access Controller）が、画像データを保持するＤＲＡＭ（Dynamic Random Access Memory）から予め定められた大きさの領域ごとに画像データを読み出してＳＲＡＭ（Static Random Access Memory）へ転送するステップと、
ＣＰＵ（Central Processing Unit）が、前記ＳＲＡＭから画像データを読み出し、読み出した画像に対して画像を回転する処理を行うステップと、
を含むことを特徴とする、画像処理方法である。
請求項８に係るプログラムは、
コンピュータに、
画像データを保持するＤＲＡＭ（Dynamic Random Access Memory）から予め定められた大きさの領域ごとに画像データを読み出してＳＲＡＭ（Static Random Access Memory）へ転送する処理と、
前記ＳＲＡＭから画像データを読み出し、読み出した画像に対して画像を回転して傾き補正する処理と、
を実行させるための、プログラムである。
【発明の効果】
【００１１】
請求項１の発明によれば、補正処理のために処理対象の画像全体をバースト転送により転送する場合と比較して、無用な画素値の読み出しを抑制し、データ転送効率の向上を図ることができる。
請求項２の発明によれば、処理単位領域とは別に転送単位領域とを設定しない場合と比較して、データ転送効率を向上させることができる。
請求項３の発明によれば、転送単位領域のサイズを処理単位領域のサイズのみに基づいて特定する場合と比較して、バースト転送を効率よく実行することができる。
請求項４の発明によれば、転送単位領域の転送開始位置を処理単位領域の位置のみに基づいて特定する場合と比較して、ＤＭＡ転送を効率よく実行することができる。
請求項５の発明によれば、第２の記憶手段としてＳＲＡＭを用いることにより、アドレス単位でデータにアクセスし、無駄な画素値の読み出しを削減することができる。
請求項６の発明によれば、補正処理のためにＤＲＡＭに格納された処理対象の画像全体をバースト転送により転送する場合と比較して、無用な画素値の読み出しを抑制し、データ転送効率の向上を図ることができる。
請求項７の発明によれば、補正処理のためにＤＲＡＭに格納された処理対象の画像全体をバースト転送により転送する方法と比較して、無用な画素値の読み出しを抑制し、データ転送効率の向上を図ることができる。
請求項８の発明によれば、本発明のプログラムを実行することにより、補正処理のためにＤＲＡＭに格納された処理対象の画像全体をバースト転送により転送する場合と比較して、無用な画素値の読み出しを抑制し、データ転送効率の向上を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態による画像処理装置の機能構成を示す図である。
【図２】画像処理装置の一例としての複合機の機能構成を示す図である。
【図３】対象画像のブロックを示す図であり、図３（Ａ）は、対象画像に設定される１番目のブロックを示す図、図３（Ｂ）は、２番目以降のブロックによる１列分のブロック列を示す図、図３（Ｃ）は、対象画像全体に設定されたブロックを示す図である。
【図４】バースト転送で画像を読み出す方向に対して対象画像が傾いている場合における、読み出し制御部による画像の読み出し方法を示す図であり、図４（Ａ）は、図３に示したブロック＃００を読み出す様子を示す図、図４（Ｂ）は、図３に示したブロック＃０１を読み出す様子を示す図である。
【図５】隣接する二つのブロックに係る二つのタイルの位置関係を示す図であり、図５（Ａ）は、主走査方向に隣接するブロックに係る二つのタイルの位置関係を示す図である。図５（Ｂ）は、副走査方向に隣接するブロックに係る二つのタイルの位置関係を示す図である。
【図６】傾いた対象画像の各画素の位置を示す図である。
【図７】画素値の補間処理を説明する図である。
【図８】タイルを拡大する様子を示す図であり、図８（Ａ）は、図６に示したように設定されたタイルを示す図、図８（Ｂ）は、図８（Ａ）に示すタイルを拡大した図である。
【図９】本実施形態の画像処理装置による画像処理方法を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
＜本実施形態の画像処理装置の構成＞
図１は、本実施形態による画像処理装置の機能構成を示す図である。図１に示すように、本実施形態の画像処理装置１００は、第１記憶部１０と、読み出し制御部２０と、第２記憶部３０と、補正処理部４０と、書き込み制御部５０とを備える。
【００１４】
第１記憶部１０は、処理対象の画像（以下、対象画像）および補正処理部４０により処理された対象画像を保持する第１の記憶手段である。第１記憶部１０としては、対象画像全体を保持し得る記憶容量を有する記憶装置が用いられ、例えば、ＤＲＡＭ（Dynamic Random Access Memory）が用いられる。
【００１５】
読み出し制御部２０は、第１記憶部１０から画像のデータを読み出して第２記憶部３０へ転送する転送手段である。読み出し制御部２０は、例えば、図１に示すように、読み出そうとするデータが格納された第１記憶部１０のアドレスを生成するアドレス生成回路２１と、ＤＭＡＣ（Direct Memory Access Controller）２２とにより実現される。本実施形態の読み出し制御部２０は、予め定められた大きさの領域を基準として画像を読み出して転送する。また、読み出し制御部２０は、バースト転送により画像を転送する。読み出し制御部２０による画像の読み出しの詳細については後述する。
【００１６】
第２記憶部３０は、補正処理部４０による補正処理の対象として読み出し制御部２０により読み出された画像を保持する第２の記憶手段である。第２記憶部３０としては、アドレス単位でランダムアクセスが可能な記憶装置が用いられ、例えば、ＳＲＡＭ（Static Random Access Memory）が用いられる。
【００１７】
補正処理部４０は、第２記憶部３０に保持された画像に対して画像を回転する処理（傾き補正処理）を含む画像処理を行う処理手段である。補正処理部４０の機能は、例えば、ＣＰＵ（Central Processing Unit）がプログラムを実行することにより実現される。補正処理部４０による補正の詳細については後述する。
【００１８】
書き込み制御部５０は、補正処理部４０により補正された画像を第１記憶部１０に書き込む出力手段である。書き込み制御部５０は、例えば、図１に示すように、第１記憶部１０の書き込み先のアドレスを生成するアドレス生成回路５１と、ＤＭＡＣ５２とにより実現される。
【００１９】
上記の構成では、対象画像が第１記憶部１０に格納されているものとして説明したが、第１記憶部１０に格納される画像を入力するための入力手段を備え、入力手段により入力された画像が第１記憶部１０に格納される構成としても良い。画像の入力手段としては、光学的に画像を読み取る読み取り装置（スキャナ）を設けても良いし、ネットワーク・インターフェイスを備え、ネットワークを介して外部装置（図示せず）から受信する構成としても良い。一例として、複写機能、画像読み取り機能、印刷機能、ＦＡＸ通信機能などを有する複合機を画像処理装置１００として用いた場合について説明する。
【００２０】
＜画像処理装置の適用例＞
図２は、画像処理装置１００の一例としての複合機の機能構成を示す図である。図２に示す構成において、画像処理装置１００は、制御部６０を構成するＣＰＵ（Central Processing Unit）１０２と、ＲＯＭ（Read Only Memory）１０３と、ＲＡＭ（Random Access Memory）１０４とを備える。また、画像処理装置１００は、記憶部１０５と、操作部１０６と、表示部１０７と、画像読み取り部１０８と、画像形成部１０９と、通信部１１０と、画像処理部１１１とを備える。これらの各機能部は、バス１０１に接続され、このバス１０１を介してデータの授受を行う。
【００２１】
操作部１０６は、ユーザ（使用者）の操作を受け付ける。操作部１０６は、例えば、ハードウェアキーにより構成される。また、例えば、押圧された位置に応じた制御信号を出力するタッチセンサにより構成される。タッチセンサと後述の表示部１０７を構成する液晶ディスプレイとを組み合わせたタッチパネルとして構成しても良い。
【００２２】
表示部１０７は、表示手段の一例であり、例えば液晶ディスプレイにより構成される。この表示部１０７は、ＣＰＵ１０２の制御の下、画像処理装置１００に関する情報を表示する。また、表示部１０７は、ユーザが画像処理装置１００を操作する際にユーザが参照するメニュー画面を表示する。すなわち、上記の操作部１０６と表示部１０７とを組み合わせて、画像処理装置１００のユーザインタフェース部として機能する。
【００２３】
画像読み取り部１０８は、いわゆるスキャナ装置により構成され、セットされた原稿上の画像を光学的に読み取り、読み取り画像（画像データ）を生成する。画像の読み取り方式としては、例えば、光源から原稿に照射した光に対する反射光をレンズで縮小してＣＣＤ（Charge Coupled Devices）で受光するＣＣＤ方式や、ＬＥＤ（Light Emitting Diode）光源から原稿に順に照射した光に対する反射光をＣＩＳ（Contact Image Sensor）で受光するＣＩＳ方式が用いられる。
【００２４】
画像形成部１０９は、画像形成手段の一例であり、記録材の一例である用紙に対して、画像形成材を用いて画像データに基づく画像を形成する。記録材に画像を形成する方式としては、例えば、感光体に付着させたトナーを記録材に転写して像を形成する電子写真方式や、インクを記録材上に吐出して像を形成するインクジェット方式等が用いられる。
【００２５】
通信部１１０は、ネットワーク３００を介して外部装置に接続するためのネットワーク・インターフェイスを有している。また、特に区別して記載しないが、画像処理装置１００がファクシミリ機能を有する場合は、通信部１１０は、ファクシミリによる送受信を行うための電話回線への接続機能も有している。
【００２６】
画像処理部１１１は、演算手段であるプロセッサと作業用メモリとを備え、画像データが表す画像に色補正や階調補正等の画像処理を施す。特に図示しないが、画像処理部１１１には、作業用メモリとして、対象画像を保持するメモリ（例えばＤＲＡＭ）と、処理を実行する際に用いられるバッファメモリ（例えばＳＲＡＭ）とが設けられる。そして、画像処理部１１１には、これらのメモリ間でデータを直接やり取りする（ＤＭＡ）ためのアドレス生成回路およびＤＭＡＣが設けられる。なお、ＣＰＵ１０２と画像処理部１１１のプロセッサをＳｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ（ＳｏＣ）で構成する場合には、ＲＡＭ１０４を作業用メモリとして兼用する構成としても良い。さらには、ＣＰＵ１０２を画像処理部１１１のプロセッサと兼用させ、ＲＡＭ１０４を作業用メモリとして兼用しても良い。
【００２７】
記憶部１０５は、記憶手段の一例であり、例えば、ハードディスク装置などの記憶装置により構成される。記憶部１０５は、画像読み取り部１０８にて生成された読み取り画像等の画像データを記憶する。
【００２８】
制御部６０を構成するＣＰＵ１０２、ＲＯＭ１０３およびＲＡＭ１０４において、ＲＯＭ１０３は、ＣＰＵ１０２により実行されるプログラムを記憶する。ＣＰＵ１０２は、ＲＯＭ１０３に記憶されているプログラムを読み出し、ＲＡＭ１０４を作業エリアにして、プログラムを実行する。また、記憶部１０５に格納されたプログラムをＲＡＭ１０４に読み込んで、ＲＡＭ１０４に読み込んだプログラムをＣＰＵ１０２が実行するようにしても良い。
【００２９】
ここで、ＣＰＵ１０２によって実行されるプログラムは、磁気記録媒体（磁気ディスクなど）、光記録媒体（光ディスクなど）、半導体メモリなどのコンピュータが読取可能な記録媒体に記憶した状態で、画像処理装置１００へ提供し得る。また、ＣＰＵ１０２によって実行されるプログラムは、インターネットなどのネットワークを介して画像処理装置１００に提供するようにしても良い。
【００３０】
図２に示した複合機において、画像処理部１１１により画像処理装置１００の機能が実現される。すなわち、画像処理部１１１の作業用メモリにより第１記憶部１０および第２記憶部３０が実現され、画像処理部１１１のプロセッサにより補正処理部４０が実現される。また、上述したように画像処理部１１１のプロセッサおよび作業メモリとして制御部６０のＣＰＵ１０２およびＲＡＭ１０４が兼用される場合、図１に示した第１記憶部１０としてＲＡＭ１０４を、第２記憶部３０としてＣＰＵのキャッシュメモリ（図示せず）を、補正処理部４０としてＣＰＵ１０２を、それぞれ用いても良い。また、図２に示した複合機において、対象画像を入力するための入力手段として、画像読み取り部１０８を用いても良い。
【００３１】
＜画像の処理単位＞
ここで、対象画像の処理単位について説明する。本実施形態では、第１記憶部１０に保持された対象画像の読み出し、補正処理部４０による対象画像の補正処理、第１記憶部１０への対象画像の書き込みは、対象画像を区画する予め定められたサイズのブロック（矩形領域）ごとに行われる。すなわち、１ブロックは、第１記憶部１０からの対象画像の読み出し単位であり、補正処理単位であり、第１記憶部１０への対象画像の書き込み単位である。
【００３２】
図３は、対象画像のブロック（処理単位領域）を示す図である。図３（Ａ）は、対象画像に設定される１番目のブロックを示す図、図３（Ｂ）は、２番目以降のブロックによる１列分のブロック列を示す図、図３（Ｃ）は、対象画像全体に設定されたブロックを示す図である。図３に示す例では、対象画像ＴＩの左上端に１番目のブロック＃００が設定されている（図３（Ａ）参照）。そして、２番目以降のブロック（＃０１〜）によるブロック列が、ブロック＃００の右隣から対象画像ＴＩの右上端まで、順次右方向へ並ぶ（図３（Ｂ）参照）。さらに、この１段目のブロック列の下段に、２段目のブロック列（＃１０〜）が、ブロック＃００の直下から右方向へ並んで設定され、同様に対象画像ＴＩの下端まで、順次下方へ同様のブロック列が並ぶ（図３（Ｃ）参照）。この１列のブロック列における各ブロックが並ぶ方向を主走査方向とし、各ブロック列が並ぶ方向を副走査方向とする。本実施形態において、対象画像ＴＩの読み出し、補正処理、書き込みは、上記の順番（すなわち、各ブロック列を左端から右端へ進み、かつ、上端のブロック列から下端のブロック列へ進んで、左上端のブロックから右下端のブロックへ到達する順番）で行われるものとする。なお、上記の説明における各ブロックの設定および処理の順番は例示に過ぎず、上記の順番には限定されない。
【００３３】
本実施形態において、１ブロックのサイズは、バースト転送におけるバースト長および第２記憶部３０の記憶容量に基づいて定まる。ただし、対象画像ＴＩのブロック列に沿う方向の辺のサイズがブロックの同方向の辺のサイズの整数倍でない場合、各列の左端のブロックに含まれる部分画像は、その部分画像の同方向のサイズがブロックの同方向の辺のサイズよりも小さくなる。また、対象画像ＴＩのブロック列と交差する方向の辺のサイズがブロックの同方向の辺のサイズの整数倍でない場合、下端のブロック列における各ブロックに含まれる部分画像は、その部分画像における同方向のサイズがブロックの同方向の辺のサイズよりも小さくなる。なお、上記のように、対象画像ＴＩの辺のサイズがブロックの辺のサイズの整数倍でない場合に、各列の左端のブロックや下端のブロック列における各ブロック自体を、対象画像ＴＩのサイズに合わせたサイズの小さいブロックとして調整しても良い。
【００３４】
＜画像の読み出し処理＞
次に、読み出し制御部２０による画像の読み出し処理について説明する。本実施形態において、読み出し制御部２０は、第１記憶部１０に保持された対象画像を、上記のブロック単位で、上述した順番で読み出す。このとき、バースト転送で画像を読み出す方向に対して対象画像ＴＩが傾いていなければ、各ブロックに対応する領域ごとに対象画像ＴＩを読んでいけば良い。一方、バースト転送で画像を読み出す方向に対して対象画像ＴＩが傾いている場合は、この傾きのために、ブロックごとに画像を読み出すためには、ブロックを包含する、より大きい領域（以下、この領域をタイルと呼ぶ）単位で画像を読み出すことが必要である。転送単位領域としてのタイルは、ブロックが外接し、バースト転送で画像を読み出す方向に対して傾いていない辺を有する矩形領域である。なお、対象画像ＴＩが傾いているか否かの判断は、既存の種々の手法によって行って良い。例えば、対象画像ＴＩが、図２に示した画像処理装置１００の画像読み取り部１０８により用紙に形成された画像を読み取って得られる場合は、画像読み取り部１０８に用紙が置かれた状態を認識するためのセンサを設けておき、読み取りの際に用紙の傾きを検知し、対象画像ＴＩの傾きとして判断しても良い。また、用紙に形成された画像を解析して対象画像ＴＩの傾きを検出しても良い。
【００３５】
図４は、バースト転送で画像を読み出す方向に対して対象画像ＴＩが傾いている場合における、読み出し制御部２０による画像の読み出し方法を示す図である。図４（Ａ）は、図３に示したブロック＃００を読み出す様子を示す図、図４（Ｂ）は、図３に示したブロック＃０１を読み出す様子を示す図である。図４に示す例において、領域ＳＡは、第１記憶部１０における画像の格納領域を示す。この領域ＳＡには直交座標が設定されており（図示の例ではＸ−Ｙ座標）、直交座標の一方の軸は、バースト転送で画像を読み出す方向と一致している。また、図４に示す例において、領域ＳＡ内に格納された対象画像ＴＩは、左に角度θ傾いた（回転した）状態となっている。領域ＳＡの座標系による対象画像ＴＩの各ブロックの位置は、アフィン変換を用いた計算により算出される。
【００３６】
図４（Ａ）に示すように、傾いた対象画像ＴＩのブロック＃００を読み出す際には、ブロック＃００を包含するタイルの範囲の画像が読み出される。同様に、図４（Ｂ）に示すように、ブロック＃０１を読み出す際には、ブロック＃０１を包含するタイルの範囲の画像が読み出される。以下、ブロック＃００を包含するタイルをタイル＃００と呼び、ブロック＃０１を包含するタイルをタイル＃０１と呼ぶ。図４（Ｂ）を参照すると、領域ＳＡに対する対象画像ＴＩの傾きのために、ブロック＃００を包含するタイル＃００とブロック＃０１を包含するタイル＃０１とは、一部が重なっている。
【００３７】
図５は、隣接する二つのブロックに係る二つのタイルの位置関係を示す図である。図５（Ａ）は、主走査方向に隣接するブロック（ブロック＃００とブロック＃０１）に係る二つのタイル（タイル＃００とタイル＃０１）の位置関係を示す図である。図５（Ｂ）は、副走査方向に隣接するブロック（ブロック＃００とブロック＃１０）に係る二つのタイル（タイル＃００とタイル＃１０）の位置関係を示す図である。図５に示す例において、タイルの左上角（黒丸で示した位置）を、タイル間の位置関係を特定するための基準位置とする。
【００３８】
図５（Ａ）を参照すると、主走査方向に隣接するブロックに係る二つのタイルの基準位置の間隔は、領域ＳＡに設定された直交座標（Ｘ−Ｙ座標）において、座標軸Ｘに沿ってΔＸ１、座標軸Ｙに沿ってΔＹ１となる。ここで、対象画像ＴＩは領域ＳＡに対して角度θだけ回転しているので、各ブロックの主走査方向のサイズをｎとすると、ΔＸ１＝ｎ×ｃｏｓθ、ΔＹ１＝ｎ×ｓｉｎθである。同様に、図５（Ｂ）を参照すると、副走査方向に隣接するブロックに係る二つのタイルの基準位置の間隔は、座標軸Ｘに沿ってΔＸ２、座標軸Ｙに沿ってΔＹ２となる。そして、各ブロックの副走査方向のサイズをｍとすると、ΔＸ２＝ｍ×ｓｉｎθ、ΔＹ２＝ｍ×ｃｏｓθである。このため、図５（Ａ）（Ｂ）に示すように、タイル＃００とタイル＃０１およびタイル＃００とタイル＃１０は、各々一部が重なっている。
【００３９】
したがって、ブロックごとに対象画像ＴＩを読み出す場合、読み出し制御部２０は、まず、タイルを｛ΔＸ１，ΔＹ１｝ずつ移動しながら主走査方向の走査を行い、１列分のブロックの走査が完了するたびに、タイルを｛ΔＸ２，ΔＹ２｝ずつ移動して副走査方向の走査を行う。
【００４０】
次に、タイルのサイズおよびタイルに包含されるブロックにおける対象画像ＴＩの画素値について説明する。対象画像ＴＩがバースト転送で画像を読み出す方向に対して（領域ＳＡの座標系に対して）傾いている場合の領域ＳＡの座標系による対象画像ＴＩの各画素の位置は、アフィン変換を用いた計算により算出される。ここで、対象画像ＴＩが傾いていない場合の各画素の位置が、領域ＳＡの座標系における整数値の座標位置に対応するものとする。すると、アフィン変換により算出された各画素の座標値は、通常、小数を含む値となる。
【００４１】
図６は、領域ＳＡの座標系において、傾いた対象画像ＴＩの各画素の位置を示す図である。図６において、白丸は、領域ＳＡに格納されている画像における実際の画素の位置を示す。また、各白丸の位置は、領域ＳＡの座標系における整数値の座標位置である。そして、この白丸の位置は、対象画像ＴＩが傾いていない場合の各画素の位置に一致する。また、図６において、黒丸は、対象画像ＴＩが傾いていない状態でブロックに含まれる各画素（仮想的な画素）に関して、対象画像ＴＩが傾いている状態での位置を示したものである。言い換えれば、図６においては、対象画像ＴＩの一つのブロックが、黒丸の集合で示されている。図６において黒丸で示された仮想的な画素は、傾き補正が行われた後に、図６において白丸で示されたいずれかの画素の位置に重なり、補正後のブロックを構成する画素となる。領域ＳＡの座標系における黒丸の座標値は小数を含む値であるので、図示のように、黒丸の位置は、白丸の位置（整数の座標値の位置）からずれている。なお、黒丸の位置は、対象画像ＴＩの傾きの角度に応じて異なるものであり、図６に示す位置は例示に過ぎない。
【００４２】
図６に示したように、対象画像ＴＩが傾いている場合、黒丸（ブロックにおける仮想的な画素）の位置は、白丸（領域ＳＡの座標系における整数値の座標位置）と一致しない。そこで、各黒丸で示される画素の画素値は、例えば、領域ＳＡに格納された画像（傾いている対象画像ＴＩ）における実際の画素の画素値を用いた補間演算により求める。
【００４３】
図７は、画素値の補間処理を説明する図である。図７において黒丸で示した画素Ｐｘｘの画素値は、その周囲の４つの画素Ｐ００、Ｐ０１、Ｐ１０、Ｐ１１の画素値を用い、画素Ｐｘｘと周囲の４画素との間の距離を重み付け係数とした補間演算により得られる。具体的には、画素Ｐｘｘの位置を、領域ＳＡの座標軸を用い、画素Ｐ００の位置を基準としてＸ方向にΔｘ、Ｙ方向にΔｙとする。また、画素Ｐ００、Ｐ０１、Ｐ１０、Ｐ１１を結ぶ正方形の１辺の長さを１とする。そして、画素値を各画素の符号で示す。すると、画素Ｐｘｘの画素値「Ｐｘｘ」は、下記の式で得られる。
Pxx = (P00 ×(1 - Δx)+ P01 × Δx)×(1 - Δy)+(P10 ×(1 - Δx)+ P11 × Δx)× Δy
なお、補間処理の手法は、本手法に限定されず、既存の種々の方法を適用して良い。
【００４４】
ところで、画像を読み出す単位であるタイルに関して、対象画像ＴＩのブロックが外接することを上述した。図６において、ブロックとして示される黒丸画素の集合に外接する矩形は、一点鎖線で示されている。しかし、上述したように、黒丸画素の画素値を求めるには、その周囲の白丸画素の画素値が必要である。したがって、ブロックにおける最も外側（すなわち、矩形のブロックの４つの角）に位置する黒丸画素のさらに外側に隣接する白丸画素までを含む範囲（実線で示された矩形）が、画像を読み出す単位としてのタイルとなる。図示の例では、８画素×８画素の黒丸画素の集合であるブロックを包含するタイルとして、１０画素×１０画素のサイズのタイルが設定されている。
【００４５】
以上のようにしてタイルのサイズが特定されたが、実際にデータが転送される際には、必要に応じて、さらにタイルのサイズが調整（拡大）される。本実施形態において、読み出し制御部２０（図１参照）は、ＤＭＡ転送により第１記憶部１０から第２記憶部３０へ転送するとした。ここで、ＤＭＡ転送では、転送を実行するＤＭＡＣ２２の仕様によっては、転送の開始アドレスのアライメントに制約があったり、特定のアライメント位置にないと転送効率が低下したりする場合がある。そこで、本実施形態では、ＤＭＡ転送における仕様に基づき画像（タイル）の転送の開始位置を調整して、転送効率の低下を抑制する。また、本実施形態では、画像の転送をバースト転送により行うこととした。したがって、転送されるデータが、バースト長に応じたデータ量となるようにタイルのサイズを調整することで、転送効率を向上させることができる。
【００４６】
図８は、タイルを拡大する様子を示す図である。図８（Ａ）は、図６に示したように設定されたタイルを示す図、図８（Ｂ）は、図８（Ａ）に示すタイルを拡大した図である。図８（Ａ）において、タイルＴは、ブロックＢを包含する。図６を参照して説明したように、タイルＴには、ブロックＢを構成する仮想的な画素の画素値を計算するために必要な全ての画素が含まれる。また、図８（Ａ）において、タイルＴの左上に記載した矢印（三角形）は、転送開始位置を示している。すなわち、読み出し制御部２０は、タイルＴを読み出す際、タイルＴの左上角の画素を先頭として右上角の画素までの一列（ライン）を読み込んで転送し、左下角の画素を先頭として右下角の画素までの一列に至るまで、一列ずつ順に読み込んで転送する。
【００４７】
図８（Ａ）に示した転送開始位置からＤＭＡ転送を開始すると転送効率が低下する場合は、図８（Ｂ）に示すように、タイルを拡大して転送開始位置が変更される。例えば、ＤＭＡＣ２２により転送開始位置のアドレスが数値「１６」の倍数に限定されるものとする。この場合、タイルの各ラインの先頭位置（図８（Ａ）のタイルにおいて矢印で示した左辺）のアドレスに対して、下位４ビットを０にマスクする。これにより、アドレスの値が数値「１６」の倍数となり、タイルの各ラインの先頭位置が、図８（Ｂ）に示すように移動する。
【００４８】
また、タイルＴの画素列（ライン）の読み込みはバースト長ごとに行われるので、転送開始位置を移動させたタイルＴのラインの長さ（画素数）がバースト長の整数倍でない場合は、バースト長の整数倍となるようにラインの長さを調整する。すなわち、図８（Ｂ）に示すように、ラインの終端位置を移動させる。これにより、タイルＴは、読み出し制御部２０が画素列を読み込む方向に沿って、サイズが拡大する。読み出し制御部２０は、この拡大されたタイルＴ単位で第１記憶部１０から画像を読み出し、第２記憶部３０へ転送する。
【００４９】
なお、上記のタイルＴの拡大において、転送開始位置の移動は、図８（Ａ）に示す元のタイルＴにおけるラインの先頭位置のアドレスに応じて行われる。したがって、転送開始位置の移動量は、タイルＴごとに個別に決まる。また、ラインの終端位置は、移動後の先頭位置からの長さがバースト長の整数倍となるように定められる。したがって、この終端位置の移動量も、タイルＴごとに個別に決まる。
【００５０】
＜傾き補正処理＞
次に、補正処理部４０による傾き補正処理について説明する。補正処理部４０は、第２記憶部３０に転送された１ブロックの画像を読み出して傾き補正を行う。具体的には、ブロックを構成する画素（図６および図７において黒丸で示した仮想的な画素）ごとに、画素値および第２記憶部３０のメモリ空間における傾き補正後のアドレスを計算し、計算結果に基づいて、補正後の各画素を第２記憶部３０に書き込む。各画素の画素値は、図６および図７を参照して説明したように、各画素の画素値の補間に必要な周囲の画素（図６および図７において白丸で示した実際の画素）の画素値を用いて補間演算により求める。傾き補正後のアドレスは、例えば、読み出し制御部２０が第１記憶部１０からブロック（タイル）を読み出す際にブロックの位置を求めるために用いたアフィン変換の逆変換により求める。第２記憶部３０は、アドレス単位でランダムアクセスが可能であるので、ブロックを構成する画素ごとに、個別に上記の処理を行うことができる。
【００５１】
１ブロック分の各画素に対し、上記のようにして画素値の計算およびアドレス変換が完了すると、第２記憶部３０には、傾きが補正されたブロックの画像が格納されることになる。この後、書き込み制御部５０が、第２記憶部３０に保持された傾き補正後のブロックの画像を読み出し、第１記憶部１０へ転送する。このとき、データの転送は、ＤＭＡ転送で行われ、またバースト転送で行われる。したがって、読み出し制御部２０による画像の読み出しの際と同様に、第１記憶部１０へ書き込む際の書き込みアドレスの開始位置および転送する１ライン分の画素列の長さを調整してもよい。
【００５２】
以上の処理が、対象画像ＴＩを構成する全てのブロックに対して行われると、対象画像ＴＩの傾き補正が完了する。以上のように、本実施形態では、第２記憶部３０の記憶容量に基づいて設定されるサイズのブロックを基準とし、このブロックを包含するタイル単位で、対象画像ＴＩが第１記憶部１０から第２記憶部３０へバースト転送される。そして、アドレス単位でランダムアクセスが可能な第２記憶部３０に格納されたブロックの画像に対して傾き補正処理が行われる。したがって、本実施形態では、タイル単位でのデータ転送においてのみバースト転送が行われる。このため、傾き補正処理のために傾いた画像をバースト転送する際に生じる読み出しデータの重複は、タイルどうしが重なる部分のみとなり、処理対象の画像全体をバースト転送により転送する場合よりも小さくなる。
【００５３】
図９は、本実施形態の画像処理装置による画像処理方法を示すフローチャートである。ここでは、第１記憶部１０としてＤＲＡＭが用いられ、第２記憶部３０としてＳＲＡＭが用いられたものとして説明する。本実施形態において、画像処理装置１００は、第１記憶部１０であるＤＲＡＭに格納された対象画像に対し、傾き補正処理を行う。画像処理装置１００の読み出し制御部２０は、第１記憶部１０であるＤＲＡＭから、予め定められたブロックを包含するタイルごとに画像データを読み出し、第２記憶部３０であるＳＲＡＭへ転送する（Ｓ９０１）。ここで、転送は、バースト転送により行われ、ＤＭＡ転送により行われる。したがって、タイルのサイズは、ブロックに外接するように設定されるが、実際に転送される際には、ＤＭＡ転送による転送効率を向上させるために転送開始位置を調整し、バースト長に応じて拡大される。なお、読み出し制御部２０による上記の処理は、ＤＭＡＣとしてのプロセッサがプログラムを実行することにより実現される。
【００５４】
次に、画像処理装置１００の補正処理部４０は、第２記憶部３０であるＳＲＡＭから画像データを読み出し、読み出した画像に対して傾き補正処理（画像を回転する処理）を行う（Ｓ９０２）。ここで、ＳＲＡＭに対しては、アドレス単位でランダムアクセスが可能であるので、補正処理部４０は、画素単位で画像データを読み出し、傾き補正処理としての補間処理およびアドレス変換処理を行って、第２記憶部３０に書き込む。なお、補正処理部４０による上記の処理は、ＣＰＵがプログラムを実行することにより実現される。
【００５５】
次に、画像処理装置１００の書き込み制御部５０は、第２記憶部３０であるＳＲＡＭから補正後のブロックの画像データを読み出し、第１記憶部１０であるＤＲＡＭにおいて補正後の対象画像を格納するように設定された記憶領域に書き込む（Ｓ９０３）。この転送は、読み出し制御部２０によるＳ９０１の転送と同様に、バースト転送により行われ、ＤＭＡ転送により行われる。
【００５６】
＜変形例＞
本実施形態において、第２記憶部３０の記憶容量とブロックのデータサイズとの関係を、２タイル分のデータ転送が可能となるようにして、データ転送を並列に行うようにしても良い。この場合、１ブロック分の画素の補間処理を行っている間に、他の１ブロック分のデータ転送を行うこと（いわゆるピンポンバッファ）により、処理の実行効率を向上させ、処理速度を向上させることができる。
【符号の説明】
【００５７】
１０…第１記憶部、２０…読み出し制御部、３０…第２記憶部、４０…補正処理部、５０…書き込み制御部、１００…画像処理装置
【図１】
2018157492.tif 000003
【図２】
2018157492.tif 000004
【図３】
2018157492.tif 000005
【図４】
2018157492.tif 000006
【図５】
2018157492.tif 000007
【図６】
2018157492.tif 000008
【図７】
2018157492.tif 000009
【図８】
2018157492.tif 000010
【図９】
2018157492.tif 000011