(57)【要約】【課題】矩形領域の画像データの転送回数が最大である最悪状態を回避することができる画像処理装置を提供する。【解決手段】オフセット算出部３０は、矩形領域の画像データのうちバースト転送により転送される転送データが行毎にメモリ７から読み出されるときに少なくとも１つの行でアクセス境界をまたがずに転送データがメモリ７から読み出されるためのオフセットを算出する。メモリ７において、画像データの隣接する２つの行のデータの格納位置のずれ量は、オフセットを含む。アクセス境界は、メモリ７に対する１回のアクセスによりアクセス可能なデータの境界である。読み出し制御部３１は、オフセットに基づいて、矩形領域の画像データの読み出しアドレスを生成する。書き込み制御部２０は、オフセットに基づいて、矩形領域の画像データを含む画像データの書き込みアドレスを生成する。【選択図】図１
2016134005.tif 000002
【特許請求の範囲】
【請求項１】
第１の画像データが記録され、前記第１の画像データは矩形領域の第２の画像データを含むメモリと、
前記第２の画像データのうちバースト転送により転送される転送データが行毎に前記メモリから読み出されるときに少なくとも１つの行でアクセス境界をまたがずに前記転送データが前記メモリから読み出されるためのオフセットを算出し、前記メモリにおいて、前記第１の画像データの第１の行のデータの格納位置と、前記第１の行に隣接する第２の行のデータの格納位置とのずれ量は、前記オフセットを含み、前記アクセス境界は、前記メモリに対する１回のアクセスによりアクセス可能なデータの境界であるオフセット算出部と、
バスを通して前記メモリに前記第１の画像データを書き込む書き込み部と、
前記オフセット算出部によって算出された前記オフセットに基づいて、前記第１の画像データの書き込みアドレスを生成し、生成された前記書き込みアドレスに基づいて前記書き込み部を制御する書き込み制御部と、
前記バスを通して前記メモリから前記第２の画像データを読み出す読み出し部と、
前記オフセット算出部によって算出された前記オフセットに基づいて、前記第２の画像データの読み出しアドレスを生成し、生成された前記読み出しアドレスに基づいて前記読み出し部を制御する読み出し制御部と、
前記読み出し部によって読み出された前記第２の画像データに対して画像処理を行う画像処理部と、
を有する画像処理装置。
【請求項２】
前記オフセット算出部は、前記メモリに対する１回のアクセスによりアクセス可能なデータの量と、１画素のデータ量と、前記矩形領域の水平サイズとに基づいて前記オフセットを算出する請求項１に記載の画像処理装置。
【請求項３】
前記オフセット算出部は、
前記メモリに対する１回のアクセスによりアクセス可能なデータの量を１画素のデータ量で割ることにより、１アクセスあたりの画素数を算出し、
前記矩形領域の水平サイズを前記１アクセスあたりの画素数で割ることにより、前記水平サイズのデータを転送するために必要な最低アクセス数を算出し、
前記最低アクセス数に前記１アクセスあたりの画素数を乗じた第１の値から前記矩形領域の水平サイズを引いた第２の値に１を足すことにより第３の値を算出し、前記１アクセスあたりの画素数を前記第３の値で割ることにより第４の値を算出し、前記第４の値は、前記転送データが前記メモリから読み出されるときに前記アドレスの境界をまたがない行が発生するのに必要な行数であり、
前記１アクセスあたりの画素数を前記第４の値で割ることにより、各行の前記オフセットを算出する請求項２に記載の画像処理装置。
【請求項４】
前記オフセットは、１回の転送により転送可能なデータの量よりも小さい請求項１に記載の画像処理装置。
【請求項５】
各行の前記オフセットは固定値である請求項１に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関する。
【背景技術】
【０００２】
画像を任意のサイズの複数の領域に分割し、動きベクトル情報に基づいて、異なる複数の画像間で各領域に対応する位置を決定し画像処理を行うことがある。このため、画像データが格納されているメモリから画像処理部に画像データを転送するときに画像データから矩形領域の画像データを切り出して転送する方法がある。この転送に必要な処理を高速化するために、画像データの転送回数を減らす方法が特許文献１に開示されている。特許文献１に開示された方法では、メモリにおいて矩形領域の画像データの先頭アドレス（矩形領域の左上端のデータのアドレス）から最終アドレス（矩形領域の右下端のデータのアドレス）まで連続するアドレスの一部のデータが読み出される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１２７０９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の方法では、矩形領域の１行のデータが転送されるとき、メモリに対する１回のアクセスによりアクセス可能なデータの境界をまたいでメモリからデータが読み出されることがある。以下では、１回のアクセスによりアクセス可能なデータの境界をアクセス境界と呼ぶ。
【０００５】
図１２と図１３とは、メモリに格納された画像データの状態を示している。小さい矩形は画素を示している。図１２と図１３とでは、１画素のデータ量は８ビットである。メモリに対する１回のアクセスによりアクセス可能なデータの量は３２ビットである。つまり、メモリに対する１回のアクセスにより４画素のデータにアクセスし、そのデータを転送することが可能である。水平方向の４画素の領域の境界がアクセス境界である。アクセス境界は水平方向の４画素毎に出現する。図１３では、アクセス境界Ｂ２００と、アクセス境界Ｂ２０１と、アクセス境界Ｂ２０２と、アクセス境界Ｂ２０３とが示されている。
【０００６】
図１３では、矩形領域の画像データＩＭＧ２００と画像データＩＭＧ２０５とが示されている。画像データＩＭＧ２００と画像データＩＭＧ２０５とは６行のデータで構成され、各行のデータは４画素のデータで構成されている。画像データＩＭＧ２００はアクセス境界Ｂ２００に接している。画像データＩＭＧ２００の１行のデータが転送されるとき、アクセス境界Ｂ２００をまたいでデータがメモリから読み出されることはない。つまり、画像データＩＭＧ２００の各行のデータは、メモリに対する１回のアクセスによりメモリから読み出される。画像データＩＭＧ２００の各行のデータは、１回のバースト転送によりメモリから転送される。
【０００７】
画像データＩＭＧ２０５の内部にアクセス境界Ｂ２０２がある。つまり、画像データＩＭＧ２０５の１行のデータはアクセス境界Ｂ２０２をまたいでメモリに格納されている。画像データＩＭＧ２０５の１行のデータが転送されるとき、アクセス境界Ｂ２０２をまたいでデータがメモリから読み出される。このため、画像データＩＭＧ２０５の１行のデータを転送するためにはメモリに対する２回のアクセスが必要である。画像データＩＭＧ２０５の各行のデータは、２回のバースト転送によりメモリから転送される。したがって、画像データＩＭＧ２０５が転送されるときの転送回数は、画像データＩＭＧ２００が転送されるときの転送回数の２倍である。
【０００８】
従来技術の方法では、矩形領域の画像データとアクセス境界との位置関係について考えられていない。このため、切り出される矩形領域のサイズとその位置とによっては、アクセス境界をまたいで画像データがメモリから読み出される。矩形領域の画像データを１フレーム内で大量に転送する場合、画像データの転送回数が増え、メモリへのアクセス効率あるいはバスの使用効率が下がる。これにより、システム全体の処理速度が低下する。この結果、所定時間内に処理が終わらず、画像処理が破綻しうる。装置の動作を保証するためには、矩形領域の画像データの転送回数が最大である最悪状態が回避される必要がある。
【０００９】
本発明は、矩形領域の画像データの転送回数が最大である最悪状態を回避することができる画像処理装置を提供する。
【課題を解決するための手段】
【００１０】
本発明は、第１の画像データが記録され、前記第１の画像データは矩形領域の第２の画像データを含むメモリと、前記第２の画像データのうちバースト転送により転送される転送データが行毎に前記メモリから読み出されるときに少なくとも１つの行でアクセス境界をまたがずに前記転送データが前記メモリから読み出されるためのオフセットを算出し、前記メモリにおいて、前記第１の画像データの第１の行のデータの格納位置と、前記第１の行に隣接する第２の行のデータの格納位置とのずれ量は、前記オフセットを含み、前記アクセス境界は、前記メモリに対する１回のアクセスによりアクセス可能なデータの境界であるオフセット算出部と、バスを通して前記メモリに前記第１の画像データを書き込む書き込み部と、前記オフセット算出部によって算出された前記オフセットに基づいて、前記第１の画像データの書き込みアドレスを生成し、生成された前記書き込みアドレスに基づいて前記書き込み部を制御する書き込み制御部と、前記バスを通して前記メモリから前記第２の画像データを読み出す読み出し部と、前記オフセット算出部によって算出された前記オフセットに基づいて、前記第２の画像データの読み出しアドレスを生成し、生成された前記読み出しアドレスに基づいて前記読み出し部を制御する読み出し制御部と、前記読み出し部によって読み出された前記第２の画像データに対して画像処理を行う画像処理部と、を有する画像処理装置である。
【００１１】
本発明の画像処理装置において、前記オフセット算出部は、前記メモリに対する１回のアクセスによりアクセス可能なデータの量と、１画素のデータ量と、前記矩形領域の水平サイズとに基づいて前記オフセットを算出する。
【００１２】
本発明の画像処理装置において、前記オフセット算出部は、前記メモリに対する１回のアクセスによりアクセス可能なデータの量を１画素のデータ量で割ることにより、１アクセスあたりの画素数を算出し、前記矩形領域の水平サイズを前記１アクセスあたりの画素数で割ることにより、前記水平サイズのデータを転送するために必要な最低アクセス数を算出し、前記最低アクセス数に前記１アクセスあたりの画素数を乗じた第１の値から前記矩形領域の水平サイズを引いた第２の値に１を足すことにより第３の値を算出し、前記１アクセスあたりの画素数を前記第３の値で割ることにより第４の値を算出し、前記第４の値は、前記転送データが前記メモリから読み出されるときに前記アドレスの境界をまたがない行が発生するのに必要な行数であり、前記１アクセスあたりの画素数を前記第４の値で割ることにより、各行の前記オフセットを算出する。
【００１３】
本発明の画像処理装置において、前記オフセットは、１回の転送により転送可能なデータの量よりも小さい。
【００１４】
本発明の画像処理装置において、各行の前記オフセットは固定値である。
【発明の効果】
【００１５】
本発明によれば、オフセットに基づいて、第１の画像データの書き込みアドレスと第２の画像データの読み出しアドレスとが生成される。これにより、転送データが行毎にメモリから読み出されるときに少なくとも１つの行でアクセス境界をまたがずに転送データがメモリから読み出される。このため、矩形領域の画像データの転送回数が最大である最悪状態を回避することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態の撮像装置の構成を示すブロック図である。
【図２】本発明の実施形態におけるメモリ上の画像データの位置を示す参考図である。
【図３】本発明の実施形態におけるメモリ上の画像データの位置を示す参考図である。
【図４】本発明の実施形態におけるメモリ上の画像データの位置を示す参考図である。
【図５】本発明の実施形態のオフセット算出部の動作の手順を示すフローチャートである。
【図６】本発明の実施形態のメモリに対するアクセスの種類を示す参考図である。
【図７】本発明の実施形態のメモリにおける矩形領域の先頭の画素の位置とアクセス数との関係を示す参考図である。
【図８】本発明の実施形態において、与えられたオフセットを示す参考図である。
【図９】本発明の実施形態におけるメモリ上の画像データの位置を示す参考図である。
【図１０】本発明の実施形態におけるメモリ上の画像データの位置を示す参考図である。
【図１１】本発明の実施形態におけるメモリ上の画像データの位置を示す参考図である。
【図１２】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【図１３】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【図１４】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【図１５】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【図１６】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【図１７】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【図１８】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【図１９】従来技術におけるメモリ上の画像データの位置を示す参考図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の実施形態の撮像装置１００の構成を示している。図１に示すように、撮像装置１００は、イメージセンサ１と、前処理部２と、画像処理部３と、表示処理部４と、表示デバイス５と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６と、メモリ７と、メディアインタフェース（メディアＩＦ）８と、記録媒体９と、バス１０とを有する。前処理部２と、画像処理部３と、メモリ７とは画像処理ユニット１１０を構成する。前処理部２は、書き込み制御部２０と、書き込み部２１とを有する。画像処理部３は、オフセット算出部３０と、読み出し制御部３１と、読み出し部３２と、書き込み制御部３３と、書き込み部３４とを有する。
【００１８】
イメージセンサ１は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅｓ）またはＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージセンサ等である。イメージセンサ１は、画像データを生成する。
【００１９】
前処理部２は、イメージセンサ１から出力された画像データに、キズ補正またはシェーディング補正等の前処理を施す。前処理部２によって処理された画像データはメモリ７に格納される。画像処理部３は、メモリ７から画像データを読み出し、読み出された画像データに画像処理を施す。これにより、画像処理部３は、表示画像データまたは記録画像データを生成する。生成された表示画像データまたは記録画像データはメモリ７に格納される。
【００２０】
表示処理部４は、メモリ７から表示画像データを取得する。表示処理部４は、表示画像データにＯＳＤ（Ｏｎ  Ｓｃｒｅｅｎ  Ｄｉｓｐｌａｙ）重畳処理等の表示処理を施す。表示処理部４によって処理された表示画像データは表示デバイス５に出力される。表示デバイス５は、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）または有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）等の表示デバイスである。表示デバイス５は、表示画像データに基づいて画像を表示する。
【００２１】
ＣＰＵ６は、撮像装置１００の全体の制御を行う。メモリ７は、画像データまたは動きベクトル情報等の必要なデータまたは情報を記録する。画像データがメモリ７に記録される。画像データ（第１の画像データ）は矩形領域の画像データ（第２の画像データ）を含む。矩形領域の画像データは、メモリ７に格納される全体の画像データの一部である。つまり、矩形領域の画像データの画素数は全体の画像データ画素数よりも少ない。矩形領域の画像データは少なくとも２行のデータを含む。画像データがメモリ７から転送されるとき、メモリ７に対する１回のアクセスにより１回のバースト転送が行われる。
【００２２】
メディアインタフェース８は、メモリ７から記録画像データを取得し、記録画像データを記録媒体９に記録する。また、メディアインタフェース８は、記録画像データを記録媒体９から取得し、記録画像データをメモリ７に転送する。記録媒体９は、必要なデータまたは情報を記録する。バス１０は、データおよびコマンド等を伝送する。
【００２３】
前処理部２は、前処理を行う前処理回路を有すると共に、書き込み制御部２０と、書き込み部２１とを有する。図１では前処理回路の図示は省略されている。画像処理部３は、画像処理回路を有すると共に、オフセット算出部３０と、読み出し制御部３１と、読み出し部３２と、書き込み制御部３３と、書き込み部３４とを有する。図１では画像処理回路の図示は省略されている。
【００２４】
オフセット算出部３０は、矩形領域の画像データ（第２の画像データ）のうちバースト転送により転送される転送データが行毎にメモリ７から読み出されるときに少なくとも１つの行でアクセス境界をまたがずに転送データがメモリ７から読み出されるためのオフセットを算出する。メモリ７において、画像データの第１の行のデータの格納位置と、第１の行に隣接する第２の行のデータの格納位置とのずれ量は、オフセットを含む。アクセス境界は、メモリ７に対する１回のアクセスによりアクセス可能なデータの境界である。
【００２５】
書き込み部２１は、バス１０を通してメモリ７に画像データ（第１の画像データ）を書き込む。書き込み制御部２０は、オフセット算出部３０によって算出されたオフセットに基づいて、画像データ（第１の画像データ）の書き込みアドレスを生成し、生成された書き込みアドレスに基づいて書き込み部２１を制御する。
【００２６】
読み出し部３２は、バス１０を通してメモリ７から矩形領域の画像データ（第２の画像データ）を読み出す。読み出し制御部３１は、オフセット算出部３０によって算出されたオフセットに基づいて、矩形領域の画像データ（第２の画像データ）の読み出しアドレスを生成し、生成された読み出しアドレスに基づいて読み出し部３２を制御する。
【００２７】
書き込み部３４は、バス１０を通してメモリ７に矩形領域の画像データ（第２の画像データ）を書き込む。書き込み制御部３３は、オフセット算出部３０によって算出されたオフセットに基づいて、矩形領域の画像データ（第２の画像データ）の書き込みアドレスを生成し、生成された書き込みアドレスに基づいて書き込み部３４を制御する。メモリ７から読み出される矩形領域の画像データのサイズと、画像処理部３によって処理され、メモリ７に書き込まれる矩形領域の画像データのサイズとは、同一でなくてもよい。
【００２８】
画像処理部３は、読み出し部３２によって読み出された矩形領域の画像データに対して画像処理を行う。例えば、画像処理部３は、ノイズ除去と、ＹＣ変換処理と、リサイズ処理と、圧縮処理との少なくとも１つを行う。これらの画像処理は、画像処理回路によって行われる。画像処理が行われた画像データは、書き込み部３４によってメモリ７に書き込まれる。
【００２９】
（オフセットの第１の例）
オフセットの第１の例を説明する。図１４と図１５とは、従来技術におけるメモリ上の画像データの位置を示している。
【００３０】
図１４において、最も左に記載された数字はアドレスを示している。図１４に示すように、メモリの１アドレスに３２ビットのデータが格納可能である。１画素のデータは８ビットで構成される。データ格納方式の１つであるリトルエンディアンの場合、各アドレスの下位ビットから順番にデータが格納される。アドレス０には１画素目から４画素目までの４つの画素のデータが格納される。アドレス１には５画素目から８画素目までの４つの画素のデータが格納される。アドレス２には９画素目から１２画素目までの４つの画素のデータが格納される。
【００３１】
図１５は、メモリ上の各画素のデータの位置を示している。図１５では、５行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、１８画素のデータで構成されている。１〜１８の数字は、各行の画素のデータを示している。４画素毎に記載されている０〜２４の数字は、アドレスを示している。各行において、各画素のデータはメモリのアドレス空間上で隣接している。各行の１７画素目と１８画素目とのデータは、アドレス４，９，１４，１９，２４に格納されている。アドレス４，９，１４，１９，２４において、１７画素目と１８画素目とのデータは下位ビットに格納されている。アドレス４，９，１４，１９，２４において、不要なデータ（無効データ）が上位ビットに格納されている。
【００３２】
各行の最後の画素のデータと、その行の次の行の最初の画素のデータとは、連続するアドレスに格納されている。例えば、１行目の１８画素目のデータはアドレス４に格納されている。２行目の１画素目のデータはアドレス５に格納されている。アドレス４とアドレス５とは連続する。
【００３３】
各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置である。各行の最後の画素のデータが格納される位置がアドレスの最後の位置でない場合、そのアドレスがデータで埋まるように不要なデータが格納される。各行のデータが１８画素のデータで構成される場合、各行の最後の画素のデータは、アドレスの２番目の位置に格納される。そのアドレスの３番目と４番目との位置に不要なデータが格納される。
【００３４】
１行目の最後の画素のデータは、アドレス４の２番目の位置に格納されている。アドレス４の３番目と４番目との位置に不要なデータが格納されている。２行目の最初の画素のデータは、アドレス５の最初の位置に格納されている。２行目の最後の画素のデータは、アドレス９の２番目の位置に格納されている。アドレス９の３番目と４番目との位置に不要なデータが格納されている。３行目の最初の画素のデータは、アドレス１０の最初の位置に格納されている。
【００３５】
３行目の最後の画素のデータは、アドレス１４の２番目の位置に格納されている。アドレス１４の３番目と４番目との位置に不要なデータが格納されている。４行目の最初の画素のデータは、アドレス１５の最初の位置に格納されている。４行目の最後の画素のデータは、アドレス１９の２番目の位置に格納されている。アドレス１９の３番目と４番目との位置に不要なデータが格納されている。５行目の最初の画素のデータは、アドレス２０の最初の位置に格納されている。５行目の最後の画素のデータは、アドレス２４の２番目の位置に格納されている。アドレス２４の３番目と４番目との位置に不要なデータが格納されている。
【００３６】
図１４と図１５とでは、１画素のデータ量は８ビットである。また、メモリに対する１回のアクセスによりアクセス可能なデータの量は３２ビットである。つまり、メモリに対する１回のアクセスにより４画素のデータにアクセスし、そのデータを転送することが可能である。水平方向の４画素の領域の境界がアクセス境界である。アクセス境界は水平方向の４画素毎に出現する。図１５では、アクセス境界とアドレス境界とが一致する。
【００３７】
図１５では、矩形領域の画像データＩＭＧ２１０と画像データＩＭＧ２１５とが示されている。画像データＩＭＧ２１０と画像データＩＭＧ２１５とは、４行のデータで構成され、各行のデータは、３画素のデータで構成されている。画像データＩＭＧ２１０の各行のデータは、１８画素×５行の画像データの１〜４行目のデータにおける７〜９画素目のデータで構成されている。画像データＩＭＧ２１５の各行のデータは、１８画素×５行の画像データの１〜４行目のデータにおける１４〜１６画素目のデータで構成されている。
【００３８】
画像データＩＭＧ２１０の１行目のデータは、アドレス１とアドレス２とに格納されている。画像データＩＭＧ２１０の２行目のデータは、アドレス６とアドレス７とに格納されている。画像データＩＭＧ２１０の３行目のデータは、アドレス１１とアドレス１２とに格納されている。画像データＩＭＧ２１０の４行目のデータは、アドレス１６とアドレス１７とに格納されている。つまり、画像データＩＭＧ２１０の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図１５では、１８画素×５行の画像データの各行の８画素目のデータが格納される位置と、９画素目のデータが格納される位置との間にアクセス境界がある。このため、画像データＩＭＧ２１０がメモリから転送されるとき、画像データＩＭＧ２１０の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
【００３９】
一方、画像データＩＭＧ２１５の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データＩＭＧ２１５がメモリから転送されるとき、画像データＩＭＧ２１５の全ての行のデータが、アクセス境界をまたがずにメモリから読み出される。
【００４０】
従来技術では、メモリにおいて、矩形領域の画像データの位置に応じて、アクセス境界が含まれうる。従来技術では、矩形領域の画像データ（例えば、画像データＩＭＧ２１０）の全ての行に対して、各行のデータが格納される領域にアクセス境界がある。あるいは、従来技術では、矩形領域の画像データ（例えば、画像データＩＭＧ２１５）の全ての行に対して、各行のデータが格納される領域にアクセス境界がない。画像データＩＭＧ２１０が転送されるとき、矩形領域の画像データの転送回数が最大である最悪状態が発生する。
【００４１】
図２は、本発明の実施形態におけるメモリ７上の各画素のデータの位置を示している。図２では、５行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、１８画素のデータで構成されている。１〜１８の数字は、各行の画素のデータを示している。４画素毎に記載されている０〜２６の数字は、アドレスを示している。各行において、各画素のデータはメモリ７のアドレス空間上で隣接している。
【００４２】
各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置からオフセットだけ離れている。図２では、各行の最後の画素のデータの後に２画素の不要なデータが格納されている。２画素の不要なデータが格納されている領域の後にオフセットの領域がある。各行のオフセットは矢印で示されている。図２では、各行のオフセットは、２画素に相当する。オフセットの領域に不要なデータが格納されている。
【００４３】
１行目の最後の画素のデータは、アドレス４の２番目の位置に格納されている。アドレス４の３番目と４番目との位置に不要なデータが格納されている。２行目の最初の画素のデータは、アドレス５の最初の位置から２画素分だけ離れた位置、すなわちアドレス５の３番目の位置に格納されている。２行目の最後の画素のデータは、アドレス９の最後の位置に格納されている。アドレス１０の最初と２番目との位置に不要なデータが格納されている。
【００４４】
３行目の最初の画素のデータは、アドレス１０の３番目の位置から２画素分だけ離れた位置、すなわちアドレス１１の最初の位置に格納されている。３行目の最後の画素のデータは、アドレス１５の２番目の位置に格納されている。アドレス１５の３番目と４番目との位置に不要なデータが格納されている。４行目の最初の画素のデータは、アドレス１６の最初の位置から２画素分だけ離れた位置、すなわちアドレス１６の３番目の位置に格納されている。４行目の最後の画素のデータは、アドレス２０の最後の位置に格納されている。アドレス２１の最初と２番目との位置に不要なデータが格納されている。５行目の最初の画素のデータは、アドレス２１の３番目の位置から２画素分だけ離れた位置、すなわちアドレス２２の最初の位置に格納されている。５行目の最後の画素のデータは、アドレス２６の２番目の位置に格納されている。アドレス２６の３番目と４番目との位置に不要なデータが格納されている。
【００４５】
オフセット算出部３０は、上記のオフセットを算出する。オフセットは、メモリ７に対する１回のアクセスによりアクセス可能なデータ、すなわち１回の転送により転送可能なデータの量（画素数）よりも少ない。
【００４６】
図２では、メモリ７に対する１回のアクセスにより４画素のデータにアクセスし、そのデータを転送することが可能である。水平方向の４画素の領域の境界がアクセス境界である。アクセス境界は水平方向の４画素毎に出現する。図２では、アクセス境界とアドレス境界とが一致する。
【００４７】
図２では、矩形領域の画像データＩＭＧ１００と画像データＩＭＧ１０５とが示されている。画像データＩＭＧ１００と画像データＩＭＧ１０５とは、４行のデータで構成され、各行のデータは、３画素のデータで構成されている。画像データＩＭＧ１００の各行のデータは、１８画素×５行の画像データの１〜４行目のデータにおける７〜９画素目のデータで構成されている。画像データＩＭＧ１０５の各行のデータは、１８画素×５行の画像データの１〜４行目のデータにおける１４〜１６画素目のデータで構成されている。
【００４８】
画像データＩＭＧ１００の１行目のデータは、アドレス１とアドレス２とに格納されている。画像データＩＭＧ１００の２行目のデータは、アドレス７に格納されている。画像データＩＭＧ１００の３行目のデータは、アドレス１２とアドレス１３とに格納されている。画像データＩＭＧ１００の４行目のデータは、アドレス１８に格納されている。つまり、画像データＩＭＧ１００の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図２では、画像データＩＭＧ１００の１行目と３行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データＩＭＧ１００がメモリ７から転送されるとき、画像データＩＭＧ１００の一部の行のデータが、アクセス境界をまたいでメモリ７から読み出される。
【００４９】
画像データＩＭＧ１０５の１行目のデータは、アドレス３に格納されている。画像データＩＭＧ１０５の２行目のデータは、アドレス８とアドレス９とに格納されている。画像データＩＭＧ１０５の３行目のデータは、アドレス１４に格納されている。画像データＩＭＧ１０５の４行目のデータは、アドレス１９とアドレス２０とに格納されている。つまり、画像データＩＭＧ１０５の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図２では、画像データＩＭＧ１０５の２行目と４行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データＩＭＧ１０５がメモリ７から転送されるとき、画像データＩＭＧ１０５の一部の行のデータが、アクセス境界をまたいでメモリ７から読み出される。
【００５０】
図１５に示す画像データＩＭＧ２１０がメモリから転送されるとき、１行毎に２回のデータの転送が発生する。したがって、画像データＩＭＧ２１０の全体に対して、８回のデータの転送が発生する。一方、図２に示す画像データＩＭＧ１００がメモリ７から転送されるとき、１行目と３行目とでは２回のデータの転送が発生し、２行目と４行目とでは１回のデータの転送が発生する。したがって、画像データＩＭＧ１００の全体に対して、６回のデータの転送が発生する。画像データＩＭＧ１００が転送されるときの転送回数は、画像データＩＭＧ２１０が転送されるときの転送回数よりも少ない。つまり、図２では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
【００５１】
図１５に示す画像データＩＭＧ２１５がメモリから転送されるとき、１行毎に１回のデータの転送が発生する。したがって、画像データＩＭＧ２１５の全体に対して、４回のデータの転送が発生する。一方、図２に示す画像データＩＭＧ１０５がメモリ７から転送されるとき、１行目と３行目とでは１回のデータの転送が発生し、２行目と４行目とでは２回のデータの転送が発生する。したがって、画像データＩＭＧ１０５の全体に対して、６回のデータの転送が発生する。画像データＩＭＧ１０５が転送されるときの転送回数は、画像データＩＭＧ２１５が転送されるときの転送回数よりも多い。このように、矩形領域の画像データの転送回数が従来技術における転送回数よりも増加する場合がある。しかし、矩形領域の位置によらず、矩形領域の画像データの転送回数は、最悪状態における転送回数よりも少ない。
【００５２】
オフセットが存在する行は、矩形領域の画像データの先頭の行のデータを除く全ての行でなくてもよい。矩形領域の画像データの先頭の行のデータを除く一部の行のみにオフセットが存在してもよい。オフセットは全ての行で同一でなくてもよい。各行のオフセットが固定値である場合、オフセットを簡易に算出することができる。ここではオフセットが、１回の転送により転送可能なデータの量よりも小さい場合を示したが、オフセットは１回の転送により転送可能なデータの量よりも大きくても良い。
【００５３】
（オフセットの第２の例）
オフセットの第２の例を説明する。各行のオフセットは固定値であり、１画素に相当する。
【００５４】
図１６は、従来技術におけるメモリ上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の６画素の領域の境界がアクセス境界である。アクセス境界は水平方向の６画素毎に出現する。図１６では、アクセス境界とアドレス境界とが一致する。図１６では、アクセス境界Ｂ２１０とアクセス境界Ｂ２１１とが示されている。
【００５５】
図１６では、矩形領域の画像データＩＭＧ２２０と画像データＩＭＧ２２５とが示されている。画像データＩＭＧ２２０と画像データＩＭＧ２２５とは８行のデータで構成され、各行のデータは３画素のデータで構成されている。
【００５６】
画像データＩＭＧ２２０の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データＩＭＧ２２０がメモリから転送されるとき、画像データＩＭＧ２２０の全ての行のデータが、アクセス境界をまたがずにメモリから読み出される。
【００５７】
一方、画像データＩＭＧ２２５の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界Ｂ２１１がある。このため、画像データＩＭＧ２２５がメモリから転送されるとき、画像データＩＭＧ２２５の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
【００５８】
図３は、本発明の実施形態におけるメモリ７上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の６画素の領域の境界がアクセス境界である。アクセス境界は水平方向の６画素毎に出現する。図３では、アクセス境界とアドレス境界とが一致する。図３では、アクセス境界Ｂ１００と、アクセス境界Ｂ１０１と、アクセス境界Ｂ１０２とが示されている。図３では、各行のオフセットは、１画素に相当する。
【００５９】
図３では、矩形領域の画像データＩＭＧ１１０と画像データＩＭＧ１１５とが示されている。画像データＩＭＧ１１０と画像データＩＭＧ１１５とは８行のデータで構成され、各行のデータは３画素のデータで構成されている。
【００６０】
画像データＩＭＧ１１０の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図３では、画像データＩＭＧ１１０の５行目と６行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データＩＭＧ１１０がメモリ７から転送されるとき、画像データＩＭＧ１１０の一部の行のデータが、アクセス境界をまたいでメモリ７から読み出される。
【００６１】
画像データＩＭＧ１１５の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図３では、画像データＩＭＧ１１５の１行目と、２行目と、７行目と、８行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データＩＭＧ１１５がメモリ７から転送されるとき、画像データＩＭＧ１１５の一部の行のデータが、アクセス境界をまたいでメモリ７から読み出される。
【００６２】
図１６に示す画像データＩＭＧ２２５がメモリから転送されるとき、１行毎に２回のデータの転送が発生する。したがって、画像データＩＭＧ２２５の全体に対して、１６回のデータの転送が発生する。一方、図３に示す画像データＩＭＧ１１５がメモリ７から転送されるとき、１行目と、２行目と、７行目と、８行目とでは２回のデータの転送が発生し、他の行では１回のデータの転送が発生する。したがって、画像データＩＭＧ１１５の全体に対して、１２回のデータの転送が発生する。画像データＩＭＧ１１５が転送されるときの転送回数は、画像データＩＭＧ２２５が転送されるときの転送回数よりも少ない。つまり、図３では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
【００６３】
図１６に示す画像データＩＭＧ２２０がメモリから転送されるとき、１行毎に１回のデータの転送が発生する。したがって、画像データＩＭＧ２２０の全体に対して、８回のデータの転送が発生する。一方、図３に示す画像データＩＭＧ１１０がメモリ７から転送されるとき、５行目と６行目とでは２回のデータの転送が発生し、他の行では１回のデータの転送が発生する。したがって、画像データＩＭＧ１１０の全体に対して、１０回のデータの転送が発生する。画像データＩＭＧ１１０が転送されるときの転送回数は、画像データＩＭＧ２２０が転送されるときの転送回数よりも多い。しかし、画像データＩＭＧ１１０の転送回数は、最悪状態における転送回数よりも少ない。
【００６４】
矩形領域の垂直方向のサイズすなわち行数は、メモリ７に対する１回のアクセスによりアクセス可能なデータ、すなわち１回の転送により転送可能なデータの量よりも小さいことが望ましい。図３では、矩形領域の行数は８であり、１回の転送により転送可能なデータの量は３である。この場合、矩形領域の画像データを構成する８行の少なくとも１つの行のデータが格納される領域の内部にアクセス境界がない。
【００６５】
（オフセットの第３の例）
オフセットの第３の例を説明する。オフセット算出部３０は、メモリ７に対する１回のアクセスによりアクセス可能なデータの量と、１画素のデータ量とに基づいてオフセットを算出する。各行のオフセットは固定値である。
【００６６】
図１７は、従来技術におけるメモリ上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の６画素の領域の境界がアクセス境界である。アクセス境界は水平方向の６画素毎に出現する。図１７では、アクセス境界とアドレス境界とが一致する。図１７では、アクセス境界Ｂ２２０とアクセス境界Ｂ２２１とが示されている。
【００６７】
図１７では、矩形領域の画像データＩＭＧ２３０と画像データＩＭＧ２３５とが示されている。画像データＩＭＧ２３０と画像データＩＭＧ２３５とは４行のデータで構成され、各行のデータは３画素のデータで構成されている。
【００６８】
画像データＩＭＧ２３０の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データＩＭＧ２３０がメモリから転送されるとき、画像データＩＭＧ２３０の全ての行のデータが、アクセス境界をまたがずにメモリから読み出される。
【００６９】
一方、画像データＩＭＧ２３５の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界Ｂ２２１がある。このため、画像データＩＭＧ２３５がメモリから転送されるとき、画像データＩＭＧ２３５の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
【００７０】
図４は、本発明の実施形態におけるメモリ７上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の６画素の領域の境界がアクセス境界である。アクセス境界は水平方向の６画素毎に出現する。図４では、アクセス境界とアドレス境界とが一致する。図４では、アクセス境界Ｂ１１０と、アクセス境界Ｂ１１１と、アクセス境界Ｂ１１２と、アクセス境界Ｂ１１３とが示されている。図４では、各行のオフセットは、３画素に相当する。
【００７１】
図４では、矩形領域の画像データＩＭＧ１２０と画像データＩＭＧ１２５とが示されている。画像データＩＭＧ１２０と画像データＩＭＧ１２５とは４行のデータで構成され、各行のデータは３画素のデータで構成されている。
【００７２】
画像データＩＭＧ１２０の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データＩＭＧ１２０がメモリ７から転送されるとき、画像データＩＭＧ１１０の全ての行のデータが、アクセス境界をまたがずにメモリ７から読み出される。
【００７３】
画像データＩＭＧ１２５の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図４では、画像データＩＭＧ１２５の１行目と３行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データＩＭＧ１２５がメモリ７から転送されるとき、画像データＩＭＧ１２５の一部の行のデータが、アクセス境界をまたいでメモリ７から読み出される。
【００７４】
図１７に示す画像データＩＭＧ２３５がメモリから転送されるとき、１行毎に２回のデータの転送が発生する。したがって、画像データＩＭＧ２３５の全体に対して、８回のデータの転送が発生する。一方、図４に示す画像データＩＭＧ１２５がメモリ７から転送されるとき、１行目と３行目とでは２回のデータの転送が発生し、他の行では１回のデータの転送が発生する。したがって、画像データＩＭＧ１２５の全体に対して、６回のデータの転送が発生する。画像データＩＭＧ１２５が転送されるときの転送回数は、画像データＩＭＧ２３５が転送されるときの転送回数よりも少ない。つまり、図４では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
【００７５】
図１７に示す画像データＩＭＧ２３０がメモリから転送されるとき、１行毎に１回のデータの転送が発生する。したがって、画像データＩＭＧ２３０の全体に対して、４回のデータの転送が発生する。一方、図４に示す画像データＩＭＧ１２０がメモリ７から転送されるとき、１行毎に１回のデータの転送が発生する。したがって、画像データＩＭＧ１２０の全体に対して、４回のデータの転送が発生する。画像データＩＭＧ１２０が転送されるときの転送回数は、画像データＩＭＧ２３０が転送されるときの転送回数と同一である。
【００７６】
例えば、オフセット算出部３０は、メモリ７に対する１回のアクセスによりアクセス可能なデータの量、すなわち１回の転送により転送可能なデータの量の半分の量を１画素のデータ量で割ることにより、オフセットを算出する。図４では、１回の転送により転送可能なデータの量は、６画素のデータ量である。このため、オフセットは、３画素に相当する。
【００７７】
矩形領域の水平方向のサイズは、メモリ７に対する１回のアクセスによりアクセス可能なデータ、すなわち１回の転送により転送可能なデータの量の半分以下であることが望ましい。これにより、矩形領域のある行のデータが格納される領域の内部にアクセス境界がある場合、その行の次の行のデータが格納される領域の内部にアクセス境界はない。つまり、矩形領域において、隣接する行の少なくとも一方のデータが格納される領域の内部にアクセス境界はない。
【００７８】
（オフセットの第４の例）
オフセットの第４の例を説明する。オフセット算出部３０は、メモリ７に対する１回のアクセスによりアクセス可能なデータの量と、１画素のデータ量と、矩形領域の水平サイズとに基づいてオフセットを算出する。
【００７９】
図５は、オフセット算出部３０の動作の手順を示している。以下では、オフセット算出部３０の動作を説明する。
【００８０】
ＣＰＵ６からオフセット算出部３０に以下の情報が出力される。
１アクセスのデータ量：Ａ＿ｄａｔａ  ［ｂｉｔ］
１画素のデータ量：Ｐ＿ｄａｔａ  ［ｂｉｔ］
矩形領域の水平サイズ（１行の画素数）：Ｈ＿ｐｉｘ  ［ｐｉｘ］
矩形領域の垂直サイズ（行数）：Ｖ＿ｐｉｘ  ［行］
【００８１】
１アクセスのデータ量は、メモリ７に対する１回のアクセスによりアクセスされるデータの量である。オフセット算出部３０は、上記の情報に基づいて、図５に示す手順によりオフセットを算出する。
【００８２】
オフセット算出部３０は、１アクセスのデータ量に対応する画素数（１アクセスあたりの画素数）を算出する（ステップＳ１００）。ステップＳ１００では、オフセット算出部３０は、（１）式により、１アクセスあたりの画素数Ａ＿ｐｉｘを算出する。（１）式の計算結果の小数点以下の値は切り上げられる。
Ａ＿ｐｉｘ＝Ａ＿ｄａｔａ／Ｐ＿ｄａｔａ    ・・・（１）
【００８３】
（１）式に示すように、オフセット算出部３０は、１アクセスのデータ量Ａ＿ｄａｔａを１画素のデータ量Ｐ＿ｄａｔａで割ることにより、１アクセスあたりの画素数Ａ＿ｐｉｘを算出する。
【００８４】
ステップＳ１００の後、オフセット算出部３０は、矩形領域の１行のデータを転送するときのアクセス数の最小値を算出する（ステップＳ１１０）。図６は、メモリ７に対するアクセスの種類を示している。図６では、メモリ７におけるアクセス境界と、アクセスされる矩形領域の１行のデータとが示されている。隣接する２つのアクセス境界の間の幅は、１アクセスあたりの画素数Ａ＿ｐｉｘと同一である。
【００８５】
ｃａｓｅ１では、矩形領域の水平サイズＨ＿ｐｉｘが１アクセスあたりの画素数Ａ＿ｐｉｘ以下（Ｈ＿ｐｉｘ≦Ａ＿ｐｉｘ）である。ｃａｓｅ１では、アクセスＡ１１とアクセスＡ１２との２種類のアクセスがある。アクセスＡ１１では、アクセスされる領域にアクセス境界が含まれない。つまり、アクセスＡ１１では、アクセス境界をまたがずに転送データがメモリ７から読み出される。アクセスＡ１１では、メモリ７に１回アクセスされる。アクセスＡ１２では、アクセスされる領域に１個のアクセス境界が含まれる。つまり、アクセスＡ１２では、アクセス境界を１回またいで転送データがメモリ７から読み出される。アクセスＡ１２では、メモリ７に２回アクセスされる。
【００８６】
ｃａｓｅ２では、矩形領域の水平サイズＨ＿ｐｉｘが１アクセスあたりの画素数Ａ＿ｐｉｘよりも大きく、かつ、矩形領域の水平サイズＨ＿ｐｉｘが１アクセスあたりの画素数Ａ＿ｐｉｘの２倍以下（Ａ＿ｐｉｘ＜Ｈ＿ｐｉｘ≦２×Ａ＿ｐｉｘ）である。ｃａｓｅ２では、アクセスＡ２１とアクセスＡ２２との２種類のアクセスがある。アクセスＡ２１では、アクセスされる領域に１個のアクセス境界が含まれる。つまり、アクセスＡ２１では、アクセス境界を１回またいで転送データがメモリ７から読み出される。アクセスＡ２１では、メモリ７に２回アクセスされる。アクセスＡ２２では、アクセスされる領域に２個のアクセス境界が含まれる。つまり、アクセスＡ２２では、アクセス境界を２回またいで転送データがメモリ７から読み出される。アクセスＡ２２では、メモリ７に３回アクセスされる。
【００８７】
ｃａｓｅＮでは、矩形領域の水平サイズＨ＿ｐｉｘが１アクセスあたりの画素数Ａ＿ｐｉｘの（ｎ−１）倍よりも大きく、かつ、矩形領域の水平サイズＨ＿ｐｉｘが１アクセスあたりの画素数Ａ＿ｐｉｘのｎ倍以下（（ｎ−１）×Ａ＿ｐｉｘ＜Ｈ＿ｐｉｘ≦ｎ×Ａ＿ｐｉｘ）である。ｃａｓｅＮでは、アクセスＡＮ１とアクセスＡＮ２との２種類のアクセスがある。アクセスＡＮ１では、アクセスされる領域に（ｎ−１）個のアクセス境界が含まれる。つまり、アクセスＡＮ１では、アクセス境界を（ｎ−１）回またいで転送データがメモリ７から読み出される。アクセスＡＮ１では、メモリ７にｎ回アクセスされる。アクセスＡＮ２では、アクセスされる領域にｎ個のアクセス境界が含まれる。つまり、アクセスＡＮ２では、アクセス境界をｎ回またいで転送データがメモリ７から読み出される。アクセスＡＮ２では、メモリ７に（ｎ＋１）回アクセスされる。
【００８８】
したがって、アクセスされる領域に（ｎ−１）個のアクセス境界が含まれる場合（ｎは１以上の整数）、矩形領域の１行のデータを転送するときのアクセス数の最小値はｎである。オフセット算出部３０は、（２）式により、アクセス数の最小値ｎを算出する。（２）式の計算結果の小数点以下の値は切り上げられる。
ｎ＝Ｈ＿ｐｉｘ／Ａ＿ｐｉｘ    ・・・（２）
【００８９】
（２）式に示すように、オフセット算出部３０は、矩形領域の水平サイズＨ＿ｐｉｘを１アクセスあたりの画素数Ａ＿ｐｉｘで割ることにより、ｎを算出する。ｎは、水平サイズのデータを転送するために必要な最低アクセス数である。
【００９０】
ステップＳ１１０の後、オフセット算出部３０は、アクセス数が最小である行が存在するために必要な行数を算出する（ステップＳ１２０）。矩形領域の画像データが格納されている領域において、アクセス数が最小である行が存在する場合、矩形領域の画像データの転送回数が最大である最悪状態を回避することができる。ステップＳ１２０で算出される行数のメモリ領域の１以上の行において、オフセットが与えられることにより、アクセス数が最小になりうる。ステップＳ１２０で算出される行数のメモリ領域の全てのオフセットの和が１アクセスあたりの画素数Ａ＿ｐｉｘと等しくなるようにオフセットが設定されている場合、１以上の行において、アクセス数が最小である。
【００９１】
図７は、メモリ７における矩形領域の先頭の画素の位置とアクセス数との関係を示している。図７では、メモリ７におけるアクセス境界と、アクセスされる矩形領域の１行のデータとが示されている。図７において上側に、アクセス数がｎである場合のアクセス境界と矩形領域の１行のデータとが矩形領域の先頭の画素の位置毎に示されている。図７において下側に、アクセス数が（ｎ＋１）である場合のアクセス境界と矩形領域の１行のデータとが矩形領域の先頭の画素の位置毎に示されている。
【００９２】
隣接する２つのアクセス境界の間のメモリ領域の幅は、Ａ＿ｐｉｘである。Ａ＿ｐｉｘは、画素数である。この幅のメモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数は、Ａ＿ｐｉｘである。図７では、矩形領域の先頭の画素のデータが格納される位置が丸い印で示されている。上記のように、矩形領域の１行のデータを転送するときのアクセス数は、ｎまたは（ｎ＋１）である。
【００９３】
アクセス数がｎである場合、矩形領域の画像データが格納されうるメモリ領域の幅は、ｎ×Ａ＿ｐｉｘである。矩形領域の水平サイズがＨ＿ｐｉｘであるため、上記の幅のメモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数ｎｕｍ１は、（３）式により算出される。
ｎｕｍ１＝ｎ×Ａ＿ｐｉｘ−Ｈ＿ｐｉｘ＋１    ・・・（３）
【００９４】
アクセス数がｎである場合、矩形領域の先頭の画素のデータが格納されうる位置の数は、ｎｕｍ１である。このため、アクセス数が（ｎ＋１）である場合、メモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数ｎｕｍ２は、（４）式により算出される。
ｎｕｍ２＝Ａ＿ｐｉｘ−ｎｕｍ１＝Ａ＿ｐｉｘ−（ｎ×Ａ＿ｐｉｘ−Ｈ＿ｐｉｘ＋１）    ・・・（４）
【００９５】
上記のように、隣接する２つのアクセス境界の間のメモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数は、Ａ＿ｐｉｘである。このため、アクセス数がｎである確率ｎ１＿ｒａｔｅは、（５）式により算出される。また、アクセス数が（ｎ＋１）である確率ｎ２＿ｒａｔｅは、（６）式により算出される。
ｎ１＿ｒａｔｅ＝ｎｕｍ１／Ａ＿ｐｉｘ＝（ｎ×Ａ＿ｐｉｘ−Ｈ＿ｐｉｘ＋１）／Ａ＿ｐｉｘ    ・・・（５）
ｎ２＿ｒａｔｅ＝ｎｕｍ２／Ａ＿ｐｉｘ＝（Ａ＿ｐｉｘ−（ｎ×Ａ＿ｐｉｘ−Ｈ＿ｐｉｘ＋１））／Ａ＿ｐｉｘ    ・・・（６）
【００９６】
上記の確率ｎ１＿ｒａｔｅと確率ｎ２＿ｒａｔｅとは、矩形領域の１行のデータに関する確率である。アクセス数がｎである事象が行毎に排他的に発生する場合、アクセス数がｎである事象が矩形領域の複数の行の少なくとも１つで発生する確率は、行毎の確率ｎ１＿ｒａｔｅの和である。例えば、アクセス数がｎである事象が矩形領域の２行の少なくとも１つで発生する確率は、２×ｎ１＿ｒａｔｅである。アクセス数がｎである事象が矩形領域の３行の少なくとも１つで発生する確率は、３×ｎ１＿ｒａｔｅである。
【００９７】
アクセス数がｎである事象が矩形領域のｘ行の少なくとも１つで発生する確率が１以上である条件は、（７）式で示される。
１≦ｘ×ｎ１＿ｒａｔｅ    ・・・（７）
【００９８】
（７）式から（８）式と（９）式とが成り立つ。
ｘ≧１／ｎ１＿ｒａｔｅ    ・・・（８）
ｘ≧Ａ＿ｐｉｘ／（ｎ×Ａ＿ｐｉｘ−Ｈ＿ｐｉｘ＋１）    ・・・（９）
【００９９】
したがって、オフセット算出部３０は、（１０）式により、アクセス数が最小である行が存在するために必要な行数ｘを算出する。（１０）式の計算結果の小数点以下の値は切り上げられる。
ｘ＝Ａ＿ｐｉｘ／（ｎ×Ａ＿ｐｉｘ−Ｈ＿ｐｉｘ＋１）    ・・・（１０）
【０１００】
（１０）式に示すように、オフセット算出部３０は、最低アクセス数であるｎに１アクセスあたりの画素数Ａ＿ｐｉｘを乗じた第１の値から矩形領域の水平サイズＨ＿ｐｉｘを引いた第２の値に１を足すことにより第３の値を算出する。さらに、オフセット算出部３０は、１アクセスあたりの画素数Ａ＿ｐｉｘを第３の値で割ることにより第４の値を算出する。第４の値は、転送データがメモリ７から読み出されるときにアドレスの境界をまたがない行が発生するのに必要な行数である。
【０１０１】
ステップＳ１２０の後、オフセット算出部３０は、各行のオフセットを算出する（ステップＳ１３０）。ステップＳ１２０で算出された行数のメモリ領域の全てのオフセットの和が１アクセスあたりの画素数Ａ＿ｐｉｘと等しくなるようにオフセットが設定されている場合、１以上の行において、アクセス数が最小である。オフセット算出部３０は、（１１）式により、各行のオフセットｏｆｆｓｅｔを算出する。（１１）式の計算結果の小数点以下の値は切り上げられる。
ｏｆｆｓｅｔ＝Ａ＿ｐｉｘ／ｘ    ・・・（１１）
【０１０２】
（１１）式に示すように、オフセット算出部３０は、１アクセスあたりの画素数Ａ＿ｐｉｘを第４の値（ｘ）で割ることにより、各行のオフセットを算出する。
【０１０３】
端数が存在しうるため、最終行のオフセットは、他の行のオフセットと同一でない場合がある。オフセット算出部３０は、（１２）式により、最終行のオフセットｏｆｆｓｅｔ＿ｆｉｎを算出する。最終行のオフセットｏｆｆｓｅｔ＿ｆｉｎは、他の行のオフセットｏｆｆｓｅｔと同一である場合がある。
ｏｆｆｓｅｔ＿ｆｉｎ＝Ａ＿ｐｉｘ−（ｘ−１）×ｏｆｆｓｅｔ    ・・・（１２）
【０１０４】
図８は、与えられたオフセットを示している。図８では、２ｘ行のメモリ領域が示されている。画像データの２行目の先頭のデータが格納される位置は、画像データの１行目の先頭のデータが格納される位置を基準とする位置からオフセットｏｆｆｓｅｔだけずれている。同様に、画像データの３〜ｘ行目の先頭のデータが格納される位置は、その前の行の先頭のデータが格納される位置を基準とする位置からオフセットｏｆｆｓｅｔだけずれている。画像データのｘ＋１行目の先頭のデータが格納される位置は、画像データのｘ行目の先頭のデータが格納される位置を基準とする位置からオフセットｏｆｆｓｅｔ＿ｆｉｎだけずれている。
【０１０５】
画像データの２行目からｘ＋１行目までの少なくとも１つにおいて、アクセス数は最小である。画像データの２行目からｘ＋１行目までの各行に与えられたオフセットと同様のオフセットが、ｘ＋２行目以降の各行に与えられる。
【０１０６】
（１１）式と（１２）式とにより、各行のオフセットはほぼ均等である。この場合、オフセットｏｆｆｓｅｔを保持するレジスタと、オフセットｏｆｆｓｅｔ＿ｆｉｎを保持するレジスタとの２つのレジスタのみが必要である。行毎にオフセットが異なる場合、異なるオフセットの数に応じたレジスタが必要である。各行のオフセットがほぼ均等であることにより、オフセットを保持するためのレジスタの数を少なくすることができる。つまり、回路規模を小さくすることができる。
【０１０７】
矩形領域の垂直サイズがｘ行以上である場合、ｘ行の少なくとも１つにおいて、アクセス数は最小である。矩形領域の全ての行のアクセス数が（ｎ＋１）である場合、矩形領域の画像データの転送回数が最大である最悪状態が発生する。上記のようにオフセットが各行に与えられることにより、ｘ行の少なくとも１つにおいて、アクセス数はｎである。このため、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
【０１０８】
オフセットの具体例を説明する。例えば、ＣＰＵ６からオフセット算出部３０に以下の情報が出力される。
１アクセスのデータ量：５１２［ｂｉｔ］
１画素のデータ量：８［ｂｉｔ］
矩形領域の水平サイズ：３６［ｐｉｘ］
矩形領域の垂直サイズ：３６［行］
【０１０９】
ステップＳ１００では、オフセット算出部３０は、（１）式に対応する（１３）式により、１アクセスあたりの画素数Ａ＿ｐｉｘを算出する。
Ａ＿ｐｉｘ＝Ａ＿ｄａｔａ／Ｐ＿ｄａｔａ＝５１２／８＝６４［ｐｉｘ］    ・・・（１３）
【０１１０】
ステップＳ１１０では、オフセット算出部３０は、（２）式に対応する（１４）式により、アクセス数の最小値ｎを算出する。
ｎ＝Ｈ＿ｐｉｘ／Ａ＿ｐｉｘ＝３６／６４＝０．５６    ・・・（１４）
【０１１１】
小数点以下の値が切り上げられることにより、アクセス数の最小値ｎは１である。この場合、アクセス数は１または２である。
【０１１２】
ステップＳ１２０では、オフセット算出部３０は、（３）式に対応する（１５）式により、アクセス数がｎである場合に矩形領域の先頭の画素のデータが格納されうる位置の数ｎｕｍ１を算出する。
ｎｕｍ１＝ｎ×Ａ＿ｐｉｘ−Ｈ＿ｐｉｘ＋１＝（６４−３６＋１）／６４＝２９    ・・・（１５）
【０１１３】
（５）式に対応する（１６）式により、アクセス数がｎである確率ｎ１＿ｒａｔｅを算出することが可能である。
ｎ１＿ｒａｔｅ＝ｎｕｍ１／Ａ＿ｐｉｘ＝２９／６４    ・・・（１６）
【０１１４】
したがって、ステップＳ１２０では、オフセット算出部３０は、（１０）式に対応する（１７）式により、アクセス数が最小である行が存在するために必要な行数ｘを算出する。
ｘ＝１／ｎ１＿ｒａｔｅ＝６４／２９＝２．２０    ・・・（１７）
【０１１５】
小数点以下の値が切り上げられることにより、ｘは３である。
【０１１６】
ステップＳ１３０では、オフセット算出部３０は、（１１）式に対応する（１８）式により、各行のオフセットｏｆｆｓｅｔを算出する。
ｏｆｆｓｅｔ＝Ａ＿ｐｉｘ／ｘ＝６４／３＝２１．３３    ・・・（１８）
【０１１７】
小数点以下の値が切り上げられることにより、ｏｆｆｓｅｔは２２である。ステップＳ１３０では、オフセット算出部３０は、（１２）式に対応する（１９）式により、最終行のオフセットｏｆｆｓｅｔ＿ｆｉｎを算出する。
ｏｆｆｓｅｔ＿ｆｉｎ＝Ａ＿ｐｉｘ−（ｘ−１）×ｏｆｆｓｅｔ＝６４−（２×２２）＝２０    ・・・（１９）
【０１１８】
図１８は、従来技術におけるメモリ上の画像データの位置を示している。図１８では、矩形領域の画像データＩＭＧ２４０が示されている。画像データＩＭＧ２４０は３６行のデータで構成され、各行のデータは３６画素のデータで構成されている。図１８では、画像データＩＭＧ２４０の一部の行のデータのみが示されている。画像データＩＭＧ２４０の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がある。このため、画像データＩＭＧ２４０がメモリから転送されるとき、画像データＩＭＧ２４０の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
【０１１９】
図９は、本発明の実施形態におけるメモリ７上の画像データの位置を示している。メモリ７に格納されている画像データの１行目を除く各行のデータは、前の行のデータが格納されている位置を基準とする位置に対して、オフセットだけずれている。図９における各行のオフセットは、２２または２０である。
【０１２０】
図９では、矩形領域の画像データＩＭＧ１３０が示されている。画像データＩＭＧ１３０は３６行のデータで構成され、各行のデータは３６画素のデータで構成されている。図９では、画像データＩＭＧ１３０の一部の行のデータのみが示されている。画像データＩＭＧ１３０の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図９では、画像データＩＭＧ１３０の１行目から３行目までの行のうち、１行目と３行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データＩＭＧ１３０がメモリ７から転送されるとき、画像データＩＭＧ１３０の一部の行のデータが、アクセス境界をまたいでメモリ７から読み出される。
【０１２１】
図１８に示す画像データＩＭＧ２４０がメモリから転送されるとき、１行毎に２回のデータの転送が発生する。したがって、画像データＩＭＧ２４０の全体に対して、７２回のデータの転送が発生する。一方、図９に示す画像データＩＭＧ１３０がメモリ７から転送されるとき、３行あたり２行では２回のデータの転送が発生し、３あたり１行では１回のデータの転送が発生する。つまり、画像データＩＭＧ１３０の２４行で２回のデータの転送が発生し、画像データＩＭＧ１３０の１２行で１回のデータの転送が発生する。したがって、画像データＩＭＧ１３０の全体に対して、６０回のデータの転送が発生する。画像データＩＭＧ１３０が転送されるときの転送回数は、画像データＩＭＧ２４０が転送されるときの転送回数よりも少ない。つまり、図９では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
【０１２２】
第４の例では、矩形領域の画像データの複数行のデータの転送回数を制御することが可能である。このように、垂直サイズが行数ｘより大きい場合、つまりＶ＿ｐｉｘ≧ｘの場合に転送回数を低減することができる。
【０１２３】
（メモリ７に対する画像データの書き込みの制御方法）
前処理部２の書き込み制御部２０による制御の例を説明する。撮影モードに応じて、矩形領域のサイズが決定される。オフセット算出部３０は、決定されたサイズの矩形領域に適したオフセットを算出する。オフセット算出部３０は、書き込み制御部２０にオフセットを通知する。書き込み制御部２０は、オフセット算出部３０から通知されたオフセットに基づいて、画像データの書き込みアドレスを決定する。以下では、矩形領域の水平サイズが３画素であり、矩形領域の垂直サイズが４行である例を説明する。
【０１２４】
図１０は、本発明の実施形態におけるメモリ７上の各画素のデータの位置を示している。図１０では、５行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、１８画素のデータで構成されている。１〜１８の数字は、各行の画素のデータを示している。４画素毎に記載されている０〜２６の数字は、アドレスを示している。各行において、各画素のデータはメモリ７のアドレス空間上で隣接している。図１０において画像データの各画素のデータが格納されている位置は、図２において画像データの各画素のデータが格納されている位置と同一である。図１０におけるアクセス境界の位置は、図２におけるアクセス境界の位置と同一である。
【０１２５】
前述したように、各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置からオフセットだけ離れている。図１０では、各行の最後の画素のデータの後に２画素の不要なデータが格納されている。２画素の不要なデータが格納されている領域の後にオフセットの領域がある。図１０では、各行のオフセットは、２画素に相当する。オフセットの領域に不要なデータが格納されている。
【０１２６】
アドレスは、０から順番に１ずつ増加する。行が変わるとき、画素のデータが格納される位置にオフセットが加わる。書き込み制御部２０は、画像データの各行の先頭の画素のデータが格納されるアドレスｓ＿ａｄｒとアドレス内の位置ｓ＿ｐｉｘとを生成する。
【０１２７】
画像データの１行目の最後の画素のデータの後に２画素の不要なデータが格納される。画像データの２行目の先頭の画素のデータは、１行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの２行目の先頭の画素のデータが格納されるアドレスｓ＿ａｄｒは５である。画像データの２行目の先頭の画素のデータが格納されるアドレス内の位置ｓ＿ｐｉｘは２である。画像データの２行目の最後の画素のデータの後に２画素の不要なデータが格納される。画像データの３行目の先頭の画素のデータは、２行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの３行目の先頭の画素のデータが格納されるアドレスｓ＿ａｄｒは１１である。画像データの３行目の先頭の画素のデータが格納されるアドレス内の位置ｓ＿ｐｉｘは０である。
【０１２８】
画像データの３行目の最後の画素のデータの後に２画素の不要なデータが格納される。画像データの４行目の先頭の画素のデータは、３行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの４行目の先頭の画素のデータが格納されるアドレスｓ＿ａｄｒは１６である。画像データの４行目の先頭の画素のデータが格納されるアドレス内の位置ｓ＿ｐｉｘは３である。画像データの４行目の最後の画素のデータの後に２画素の不要なデータが格納される。画像データの５行目の先頭の画素のデータは、４行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの５行目の先頭の画素のデータが格納されるアドレスｓ＿ａｄｒは２２である。画像データの５行目の先頭の画素のデータが格納されるアドレス内の位置ｓ＿ｐｉｘは０である。
【０１２９】
画像データの１行目の最後の２画素のデータと２画素の不要なデータとは、メモリ７に対する１回のアクセスにより書き込まれる。同様に、画像データの３行目の最後の２画素のデータと２画素の不要なデータとは、メモリ７に対する１回のアクセスにより書き込まれる。同様に、画像データの５行目の最後の２画素のデータと２画素の不要なデータとは、メモリ７に対する１回のアクセスにより書き込まれる。
【０１３０】
画像データの２行目の最後の２画素のデータの後に格納される２画素の不要なデータと、３行目のオフセットの領域に格納される２画素の不要なデータとは、メモリ７に対する１回のアクセスにより書き込まれる。同様に、画像データの４行目の最後の２画素のデータの後に格納される２画素の不要なデータと、５行目のオフセットの領域に格納される２画素の不要なデータとは、メモリ７に対する１回のアクセスにより書き込まれる。
【０１３１】
書き込み制御部２０は、アドレスとデータとを書き込み部２１に設定する。書き込み部２１は、メモリ７の設定されたアドレスにデータを書き込む。
【０１３２】
（メモリ７からの画像データの読み出しの制御方法）
画像処理部３の読み出し制御部３１による制御の例を説明する。オフセット算出部３０は、読み出し制御部３１にオフセットを通知する。オフセット算出部３０は、矩形領域の最初の画素（矩形領域の左上端の画素）のアドレス情報を読み出し制御部３１に通知する。アドレス情報は、アドレスＡｄｒ０とアドレス内の位置ｓ０＿ｐｉｘとを含む。読み出し制御部３１は、オフセット算出部３０から通知されたオフセットと、オフセット算出部３０から通知されたアドレス情報とに基づいて、矩形領域の画像データの読み出しアドレスを決定する。以下では、矩形領域の水平サイズが３画素であり、矩形領域の垂直サイズが４行である例を説明する。
【０１３３】
図１９は、従来技術におけるメモリ上の各画素のデータの位置を示している。図１９では、５行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、１８画素のデータで構成されている。１〜１８の数字は、各行の画素のデータを示している。４画素毎に記載されている０〜２４の数字は、アドレスを示している。各行において、各画素のデータはメモリのアドレス空間上で隣接している。図１９において画像データの各画素のデータが格納されている位置は、図１５において画像データの各画素のデータが格納されている位置と同一である。図１９におけるアクセス境界の位置は、図１５におけるアクセス境界の位置と同一である。
【０１３４】
図１９では、矩形領域の画像データＩＭＧ２５０が示されている。画像データＩＭＧ２５０は、４行のデータで構成され、各行のデータは、３画素のデータで構成されている。画像データＩＭＧ２５０の各行のデータは、１８画素×５行の画像データの２〜５行目のデータにおける７〜９画素目のデータで構成されている。
【０１３５】
画像データＩＭＧ２５０の１行目のデータは、アドレス６とアドレス７とに格納されている。画像データＩＭＧ２５０の２行目のデータは、アドレス１１とアドレス１２とに格納されている。画像データＩＭＧ２５０の３行目のデータは、アドレス１６とアドレス１７とに格納されている。画像データＩＭＧ２５０の４行目のデータは、アドレス２１とアドレス２２とに格納されている。
【０１３６】
図１１は、本発明の実施形態におけるメモリ７上の各画素のデータの位置を示している。図１１では、５行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、１８画素のデータで構成されている。１〜１８の数字は、各行の画素のデータを示している。４画素毎に記載されている０〜２６の数字は、アドレスを示している。各行において、各画素のデータはメモリ７のアドレス空間上で隣接している。図１１において画像データの各画素のデータが格納されている位置は、図１０において画像データの各画素のデータが格納されている位置と同一である。図１１におけるアクセス境界の位置は、図１０におけるアクセス境界の位置と同一である。
【０１３７】
前述したように、各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置からオフセットだけ離れている。図１１では、各行の最後の画素のデータの後に２画素の不要なデータが格納されている。２画素の不要なデータが格納されている領域の後にオフセットの領域がある。図１１では、各行のオフセットは、２画素に相当する。オフセットの領域に不要なデータが格納されている。
【０１３８】
図１１では、矩形領域の画像データＩＭＧ１４０が示されている。画像データＩＭＧ１４０は、４行のデータで構成され、各行のデータは、３画素のデータで構成されている。画像データＩＭＧ１４０の各行のデータは、１８画素×５行の画像データの２〜５行目のデータにおける７〜９画素目のデータで構成されている。
【０１３９】
画像データＩＭＧ１４０の１行目のデータは、アドレス７に格納されている。画像データＩＭＧ１４０の２行目のデータは、アドレス１２とアドレス１３とに格納されている。画像データＩＭＧ１４０の３行目のデータは、アドレス１８に格納されている。画像データＩＭＧ１４０の４行目のデータは、アドレス２３とアドレス２４とに格納されている。
【０１４０】
図１９と図１１とでは、矩形領域の最初の画素の位置（スタート位置）が示されている。画像データＩＭＧ２５０におけるスタート位置は、アドレス６の３番目の位置である。画像データＩＭＧ１４０におけるスタート位置は、アドレス７の最初の位置である。オフセット算出部３０が読み出し制御部３１に通知するスタート位置は、従来のスタート位置と同一である。このため、読み出し制御部３１は、オフセット算出部３０から通知されたスタート位置を、図１１に対応するスタート位置に変換する。
【０１４１】
オフセット算出部３０から通知されるアドレスＡｄｒ０は６であり、オフセット算出部３０から通知されるアドレス内の位置ｓ０＿ｐｉｘは２である。読み出し制御部３１は、画像データの水平サイズに対応するアドレスＦｈ＿ｍａｘ＿ａｄｒに基づいて、（２０）式により、スタート位置がある行ｌｉｎｅ０を算出する。画像データの１行のデータは５アドレスのメモリ領域に格納されているので、アドレスＦｈ＿ｍａｘ＿ａｄｒは５である。（２０）式の計算結果の小数点以下の値は切り捨てられる。
ｌｉｎｅ０＝Ａｄｒ０／Ｆｈ＿ｍａｘ＿ａｄｒ＋１    ・・・（２０）
【０１４２】
この例では、Ａｄｒ０が６、Ｆｈ＿ｍａｘ＿ａｄｒが５であるため、ｌｉｎｅ０は２である。読み出し制御部３１は、スタート位置がある行ｌｉｎｅ０に基づいて、（２１）式により、その行までのオフセットの和ｏｆｆｓｅｔ＿Ｓを算出する。
ｏｆｆｓｅｔ＿Ｓ＝ｏｆｆｓｅｔ×（ｌｉｎｅ０−１）＝２×（２−１）＝２    ・・・（２１）
【０１４３】
オフセットがあることによって、スタート位置は従来のスタート位置に対してシフトする。読み出し制御部３１は、（２２）式により、アドレス単位のシフト量ａｄｄ＿ａｄｒを算出する。（２２）式において、Ａ＿ｐｉｘは、１アクセスあたりの画素数である。（２２）式の計算結果の小数点以下の値は切り捨てられる。
ａｄｄ＿ａｄｒ＝ｏｆｆｓｅｔ＿Ｓ／Ａ＿ｐｉｘ    ・・・（２２）
【０１４４】
この例では、ｏｆｆｓｅｔ＿Ｓが２、Ａ＿ｐｉｘが４であるため、ａｄｄ＿ａｄｒは０である。つまり、オフセットによるアドレス単位のシフトはない。読み出し制御部３１は、（２３）式により、アドレス内のシフト量ｏｆｆｓｅｔ＿ａを算出する。
ｏｆｆｓｅｔ＿ａ＝（ｏｆｆｓｅｔ＿Ｓ／Ａ＿ｐｉｘ−ａｄｄ＿ａｄｒ）×Ａ＿ｐｉｘ＝ｏｆｆｓｅｔ＿Ｓ−ａｄｄ＿ａｄｒ×Ａ＿ｐｉｘ    ・・・（２３）
【０１４５】
この例では、ｏｆｆｓｅｔ＿Ｓが２、ａｄｄ＿ａｄｒが０、Ａ＿ｐｉｘが４であるため、ｏｆｆｓｅｔ＿ａは２である。つまり、オフセットによって、アドレス内の位置が２だけシフトする。読み出し制御部３１は、オフセット算出部３０から通知されたアドレス内の位置ｓ０＿ｐｉｘと、アドレス内のシフト量ｏｆｆｓｅｔ＿ａとに基づいて、（２４）式により、スタート位置のアドレス内の位置ｓ＿ｐｉｘを算出する。
ｓ＿ｐｉｘ＝ｓ０＿ｐｉｘ＋ｏｆｆｓｅｔ＿ａ    ・・・（２４）
【０１４６】
ｓ０＿ｐｉｘが２、ｏｆｆｓｅｔ＿ａが２であるため、ｓ＿ｐｉｘは４である。つまり、アドレス内の位置がアドレス境界を越える。したがって、スタート位置のアドレスａｄｒは７であり、スタート位置のアドレス内の位置ｓ＿ｐｉｘは０である。つまり、スタート位置は、アドレス７の最初の位置である。算出されたアドレスａｄｒとアドレス内の位置ｓ＿ｐｉｘとは、矩形領域の行のスタート位置として保持される。行のスタート位置は、アドレスａｄｒ＿ｌと、アドレス内の位置ｓ＿ｐｉｘとを含む。アドレスａｄｒは、アドレスａｄｒ＿ｌとして保持される。アドレス内の位置ｓ＿ｐｉｘは、アドレス内の位置ｓ＿ｐｉｘ＿ｌとして保持される。上記のように、読み出し制御部３１は、オフセットが設定されていない場合の矩形領域のスタート位置を、オフセットが設定されている場合の矩形領域のスタート位置に変換する。
【０１４７】
行が変わるとき、読み出し制御部３１は、行のスタート位置を、画像データの水平サイズに対応するアドレスＦｈ＿ｍａｘ＿ａｄｒと、オフセットｏｆｆｓｅｔとに基づく量だけシフトさせる。具体的には、読み出し制御部３１は、アドレスａｄｒ＿ｌにアドレスＦｈ＿ｍａｘ＿ａｄｒを加算することにより、アドレスａｄｒを算出する。また、読み出し制御部３１は、アドレス内の位置ｓ＿ｐｉｘ＿ｌにオフセットを加算することにより、アドレス内の位置ｓ＿ｐｉｘを算出する。
【０１４８】
この例では、アドレスａｄｒ＿ｌが７、アドレスＦｈ＿ｍａｘ＿ａｄｒが５であるため、アドレスａｄｒは１２である。また、この例では、アドレス内の位置ｓ＿ｐｉｘ＿ｌが０、オフセットが２であるため、アドレス内の位置ｓ＿ｐｉｘは２である。つまり、矩形領域の２行目のスタート位置は、アドレス１２の３番目の位置である。アドレスａｄｒは、アドレスａｄｒ＿ｌとして保持される。アドレス内の位置ｓ＿ｐｉｘは、アドレス内の位置ｓ＿ｐｉｘ＿ｌとして保持される。
【０１４９】
矩形領域の３行目と４行目とのスタート位置は、上記と同様の方法により算出される。読み出し制御部３１は、各行のスタート位置からアドレス内の位置を１ずつ増加させることにより、各画素のデータの読み出しアドレスを生成する。アドレス内の位置がアクセス境界すなわちアドレス境界をまたぐ場合、読み出し制御部３１は、アドレスａｄｒを１だけ増加させ、アドレス内の位置ｓ＿ｐｉｘを０にリセットする。
【０１５０】
読み出し制御部３１は、アドレスを読み出し部３２に設定する。読み出し部３２は、メモリ７の設定されたアドレスからデータを読み出す。
【０１５１】
画像処理部３の書き込み制御部３３は、上記と同様の方法により、矩形領域の画像データを書き込むためのアドレスを生成することが可能である。
【０１５２】
本発明の実施形態の画像処理装置（画像処理ユニット１１０）は、メモリ７と、オフセット算出部３０と、書き込み部２１と、書き込み制御部２０と、読み出し部３２と、読み出し制御部３１と、画像処理部３とを有する。
【０１５３】
本発明の実施形態では、オフセットに基づいて、画像データの書き込みアドレスと矩形領域の画像データの読み出しアドレスとが生成される。これにより、転送データが行毎にメモリ７から読み出されるときに少なくとも１つの行でアクセス境界をまたがずに転送データがメモリ７から読み出される。このため、矩形領域の画像データの転送回数が最大である最悪状態を回避することができる。
【０１５４】
本発明の実施形態では、メモリ７に対する１回のアクセスによりアクセス可能なデータの量と、１画素のデータ量と、矩形領域の水平サイズとに基づいてオフセットが算出される場合がある。この場合、矩形領域の画像データの複数行のデータの転送回数を制御することが可能である。このため、矩形領域の垂直サイズに関わらず転送回数を低減することができる。
【０１５５】
本発明の実施形態では、各行のオフセットは固定値である場合がある。この場合、オフセットを簡易に算出することができる。
【０１５６】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１５７】
１  イメージセンサ
２  前処理部
３  画像処理部
４  表示処理部
５  表示デバイス
６  ＣＰＵ
７  メモリ
８  メディアインタフェース
９  記録媒体
１０  バス
２０，３３  書き込み制御部
２１，３４  書き込み部
３０  オフセット算出部
３１  読み出し制御部
３２  読み出し部
１００  撮像装置
１１０  画像処理ユニット
【図１】
2016134005.tif 000003
【図２】
2016134005.tif 000004
【図３】
2016134005.tif 000005
【図４】
2016134005.tif 000006
【図５】
2016134005.tif 000007
【図６】
2016134005.tif 000008
【図７】
2016134005.tif 000009
【図８】
2016134005.tif 000010
【図９】
2016134005.tif 000011
【図１０】
2016134005.tif 000012
【図１１】
2016134005.tif 000013
【図１２】
2016134005.tif 000014
【図１３】
2016134005.tif 000015
【図１４】
2016134005.tif 000016
【図１５】
2016134005.tif 000017
【図１６】
2016134005.tif 000018
【図１７】
2016134005.tif 000019
【図１８】
2016134005.tif 000020
【図１９】
2016134005.tif 000021