以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の実施形態の撮像装置100の構成を示している。図1に示すように、撮像装置100は、イメージセンサ1と、前処理部2と、画像処理部3と、表示処理部4と、表示デバイス5と、CPU(Central Processing Unit)6と、メモリ7と、メディアインタフェース(メディアIF)8と、記録媒体9と、バス10とを有する。前処理部2と、画像処理部3と、メモリ7とは画像処理ユニット110を構成する。前処理部2は、書き込み制御部20と、書き込み部21とを有する。画像処理部3は、オフセット算出部30と、読み出し制御部31と、読み出し部32と、書き込み制御部33と、書き込み部34とを有する。
イメージセンサ1は、CCD(Charge Coupled Devices)またはCMOS(Complementary Metal Oxide Semiconductor)イメージセンサ等である。イメージセンサ1は、画像データを生成する。
前処理部2は、イメージセンサ1から出力された画像データに、キズ補正またはシェーディング補正等の前処理を施す。前処理部2によって処理された画像データはメモリ7に格納される。画像処理部3は、メモリ7から画像データを読み出し、読み出された画像データに画像処理を施す。これにより、画像処理部3は、表示画像データまたは記録画像データを生成する。生成された表示画像データまたは記録画像データはメモリ7に格納される。
表示処理部4は、メモリ7から表示画像データを取得する。表示処理部4は、表示画像データにOSD(On Screen Display)重畳処理等の表示処理を施す。表示処理部4によって処理された表示画像データは表示デバイス5に出力される。表示デバイス5は、TFT(Thin Film Transistor)または有機EL(Electroluminescence)等の表示デバイスである。表示デバイス5は、表示画像データに基づいて画像を表示する。
CPU6は、撮像装置100の全体の制御を行う。メモリ7は、画像データまたは動きベクトル情報等の必要なデータまたは情報を記録する。画像データがメモリ7に記録される。画像データ(第1の画像データ)は矩形領域の画像データ(第2の画像データ)を含む。矩形領域の画像データは、メモリ7に格納される全体の画像データの一部である。つまり、矩形領域の画像データの画素数は全体の画像データ画素数よりも少ない。矩形領域の画像データは少なくとも2行のデータを含む。画像データがメモリ7から転送されるとき、メモリ7に対する1回のアクセスにより1回のバースト転送が行われる。
メディアインタフェース8は、メモリ7から記録画像データを取得し、記録画像データを記録媒体9に記録する。また、メディアインタフェース8は、記録画像データを記録媒体9から取得し、記録画像データをメモリ7に転送する。記録媒体9は、必要なデータまたは情報を記録する。バス10は、データおよびコマンド等を伝送する。
前処理部2は、前処理を行う前処理回路を有すると共に、書き込み制御部20と、書き込み部21とを有する。図1では前処理回路の図示は省略されている。画像処理部3は、画像処理回路を有すると共に、オフセット算出部30と、読み出し制御部31と、読み出し部32と、書き込み制御部33と、書き込み部34とを有する。図1では画像処理回路の図示は省略されている。
オフセット算出部30は、矩形領域の画像データ(第2の画像データ)のうちバースト転送により転送される転送データが行毎にメモリ7から読み出されるときに少なくとも1つの行でアクセス境界をまたがずに転送データがメモリ7から読み出されるためのオフセットを算出する。メモリ7において、画像データの第1の行のデータの格納位置と、第1の行に隣接する第2の行のデータの格納位置とのずれ量は、オフセットを含む。アクセス境界は、メモリ7に対する1回のアクセスによりアクセス可能なデータの境界である。
書き込み部21は、バス10を通してメモリ7に画像データ(第1の画像データ)を書き込む。書き込み制御部20は、オフセット算出部30によって算出されたオフセットに基づいて、画像データ(第1の画像データ)の書き込みアドレスを生成し、生成された書き込みアドレスに基づいて書き込み部21を制御する。
読み出し部32は、バス10を通してメモリ7から矩形領域の画像データ(第2の画像データ)を読み出す。読み出し制御部31は、オフセット算出部30によって算出されたオフセットに基づいて、矩形領域の画像データ(第2の画像データ)の読み出しアドレスを生成し、生成された読み出しアドレスに基づいて読み出し部32を制御する。
書き込み部34は、バス10を通してメモリ7に矩形領域の画像データ(第2の画像データ)を書き込む。書き込み制御部33は、オフセット算出部30によって算出されたオフセットに基づいて、矩形領域の画像データ(第2の画像データ)の書き込みアドレスを生成し、生成された書き込みアドレスに基づいて書き込み部34を制御する。メモリ7から読み出される矩形領域の画像データのサイズと、画像処理部3によって処理され、メモリ7に書き込まれる矩形領域の画像データのサイズとは、同一でなくてもよい。
画像処理部3は、読み出し部32によって読み出された矩形領域の画像データに対して画像処理を行う。例えば、画像処理部3は、ノイズ除去と、YC変換処理と、リサイズ処理と、圧縮処理との少なくとも1つを行う。これらの画像処理は、画像処理回路によって行われる。画像処理が行われた画像データは、書き込み部34によってメモリ7に書き込まれる。
(オフセットの第1の例)
オフセットの第1の例を説明する。図14と図15とは、従来技術におけるメモリ上の画像データの位置を示している。
図14において、最も左に記載された数字はアドレスを示している。図14に示すように、メモリの1アドレスに32ビットのデータが格納可能である。1画素のデータは8ビットで構成される。データ格納方式の1つであるリトルエンディアンの場合、各アドレスの下位ビットから順番にデータが格納される。アドレス0には1画素目から4画素目までの4つの画素のデータが格納される。アドレス1には5画素目から8画素目までの4つの画素のデータが格納される。アドレス2には9画素目から12画素目までの4つの画素のデータが格納される。
図15は、メモリ上の各画素のデータの位置を示している。図15では、5行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、18画素のデータで構成されている。1〜18の数字は、各行の画素のデータを示している。4画素毎に記載されている0〜24の数字は、アドレスを示している。各行において、各画素のデータはメモリのアドレス空間上で隣接している。各行の17画素目と18画素目とのデータは、アドレス4,9,14,19,24に格納されている。アドレス4,9,14,19,24において、17画素目と18画素目とのデータは下位ビットに格納されている。アドレス4,9,14,19,24において、不要なデータ(無効データ)が上位ビットに格納されている。
各行の最後の画素のデータと、その行の次の行の最初の画素のデータとは、連続するアドレスに格納されている。例えば、1行目の18画素目のデータはアドレス4に格納されている。2行目の1画素目のデータはアドレス5に格納されている。アドレス4とアドレス5とは連続する。
各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置である。各行の最後の画素のデータが格納される位置がアドレスの最後の位置でない場合、そのアドレスがデータで埋まるように不要なデータが格納される。各行のデータが18画素のデータで構成される場合、各行の最後の画素のデータは、アドレスの2番目の位置に格納される。そのアドレスの3番目と4番目との位置に不要なデータが格納される。
1行目の最後の画素のデータは、アドレス4の2番目の位置に格納されている。アドレス4の3番目と4番目との位置に不要なデータが格納されている。2行目の最初の画素のデータは、アドレス5の最初の位置に格納されている。2行目の最後の画素のデータは、アドレス9の2番目の位置に格納されている。アドレス9の3番目と4番目との位置に不要なデータが格納されている。3行目の最初の画素のデータは、アドレス10の最初の位置に格納されている。
3行目の最後の画素のデータは、アドレス14の2番目の位置に格納されている。アドレス14の3番目と4番目との位置に不要なデータが格納されている。4行目の最初の画素のデータは、アドレス15の最初の位置に格納されている。4行目の最後の画素のデータは、アドレス19の2番目の位置に格納されている。アドレス19の3番目と4番目との位置に不要なデータが格納されている。5行目の最初の画素のデータは、アドレス20の最初の位置に格納されている。5行目の最後の画素のデータは、アドレス24の2番目の位置に格納されている。アドレス24の3番目と4番目との位置に不要なデータが格納されている。
図14と図15とでは、1画素のデータ量は8ビットである。また、メモリに対する1回のアクセスによりアクセス可能なデータの量は32ビットである。つまり、メモリに対する1回のアクセスにより4画素のデータにアクセスし、そのデータを転送することが可能である。水平方向の4画素の領域の境界がアクセス境界である。アクセス境界は水平方向の4画素毎に出現する。図15では、アクセス境界とアドレス境界とが一致する。
図15では、矩形領域の画像データIMG210と画像データIMG215とが示されている。画像データIMG210と画像データIMG215とは、4行のデータで構成され、各行のデータは、3画素のデータで構成されている。画像データIMG210の各行のデータは、18画素×5行の画像データの1〜4行目のデータにおける7〜9画素目のデータで構成されている。画像データIMG215の各行のデータは、18画素×5行の画像データの1〜4行目のデータにおける14〜16画素目のデータで構成されている。
画像データIMG210の1行目のデータは、アドレス1とアドレス2とに格納されている。画像データIMG210の2行目のデータは、アドレス6とアドレス7とに格納されている。画像データIMG210の3行目のデータは、アドレス11とアドレス12とに格納されている。画像データIMG210の4行目のデータは、アドレス16とアドレス17とに格納されている。つまり、画像データIMG210の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図15では、18画素×5行の画像データの各行の8画素目のデータが格納される位置と、9画素目のデータが格納される位置との間にアクセス境界がある。このため、画像データIMG210がメモリから転送されるとき、画像データIMG210の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
一方、画像データIMG215の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データIMG215がメモリから転送されるとき、画像データIMG215の全ての行のデータが、アクセス境界をまたがずにメモリから読み出される。
従来技術では、メモリにおいて、矩形領域の画像データの位置に応じて、アクセス境界が含まれうる。従来技術では、矩形領域の画像データ(例えば、画像データIMG210)の全ての行に対して、各行のデータが格納される領域にアクセス境界がある。あるいは、従来技術では、矩形領域の画像データ(例えば、画像データIMG215)の全ての行に対して、各行のデータが格納される領域にアクセス境界がない。画像データIMG210が転送されるとき、矩形領域の画像データの転送回数が最大である最悪状態が発生する。
図2は、本発明の実施形態におけるメモリ7上の各画素のデータの位置を示している。図2では、5行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、18画素のデータで構成されている。1〜18の数字は、各行の画素のデータを示している。4画素毎に記載されている0〜26の数字は、アドレスを示している。各行において、各画素のデータはメモリ7のアドレス空間上で隣接している。
各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置からオフセットだけ離れている。図2では、各行の最後の画素のデータの後に2画素の不要なデータが格納されている。2画素の不要なデータが格納されている領域の後にオフセットの領域がある。各行のオフセットは矢印で示されている。図2では、各行のオフセットは、2画素に相当する。オフセットの領域に不要なデータが格納されている。
1行目の最後の画素のデータは、アドレス4の2番目の位置に格納されている。アドレス4の3番目と4番目との位置に不要なデータが格納されている。2行目の最初の画素のデータは、アドレス5の最初の位置から2画素分だけ離れた位置、すなわちアドレス5の3番目の位置に格納されている。2行目の最後の画素のデータは、アドレス9の最後の位置に格納されている。アドレス10の最初と2番目との位置に不要なデータが格納されている。
3行目の最初の画素のデータは、アドレス10の3番目の位置から2画素分だけ離れた位置、すなわちアドレス11の最初の位置に格納されている。3行目の最後の画素のデータは、アドレス15の2番目の位置に格納されている。アドレス15の3番目と4番目との位置に不要なデータが格納されている。4行目の最初の画素のデータは、アドレス16の最初の位置から2画素分だけ離れた位置、すなわちアドレス16の3番目の位置に格納されている。4行目の最後の画素のデータは、アドレス20の最後の位置に格納されている。アドレス21の最初と2番目との位置に不要なデータが格納されている。5行目の最初の画素のデータは、アドレス21の3番目の位置から2画素分だけ離れた位置、すなわちアドレス22の最初の位置に格納されている。5行目の最後の画素のデータは、アドレス26の2番目の位置に格納されている。アドレス26の3番目と4番目との位置に不要なデータが格納されている。
オフセット算出部30は、上記のオフセットを算出する。オフセットは、メモリ7に対する1回のアクセスによりアクセス可能なデータ、すなわち1回の転送により転送可能なデータの量(画素数)よりも少ない。
図2では、メモリ7に対する1回のアクセスにより4画素のデータにアクセスし、そのデータを転送することが可能である。水平方向の4画素の領域の境界がアクセス境界である。アクセス境界は水平方向の4画素毎に出現する。図2では、アクセス境界とアドレス境界とが一致する。
図2では、矩形領域の画像データIMG100と画像データIMG105とが示されている。画像データIMG100と画像データIMG105とは、4行のデータで構成され、各行のデータは、3画素のデータで構成されている。画像データIMG100の各行のデータは、18画素×5行の画像データの1〜4行目のデータにおける7〜9画素目のデータで構成されている。画像データIMG105の各行のデータは、18画素×5行の画像データの1〜4行目のデータにおける14〜16画素目のデータで構成されている。
画像データIMG100の1行目のデータは、アドレス1とアドレス2とに格納されている。画像データIMG100の2行目のデータは、アドレス7に格納されている。画像データIMG100の3行目のデータは、アドレス12とアドレス13とに格納されている。画像データIMG100の4行目のデータは、アドレス18に格納されている。つまり、画像データIMG100の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図2では、画像データIMG100の1行目と3行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データIMG100がメモリ7から転送されるとき、画像データIMG100の一部の行のデータが、アクセス境界をまたいでメモリ7から読み出される。
画像データIMG105の1行目のデータは、アドレス3に格納されている。画像データIMG105の2行目のデータは、アドレス8とアドレス9とに格納されている。画像データIMG105の3行目のデータは、アドレス14に格納されている。画像データIMG105の4行目のデータは、アドレス19とアドレス20とに格納されている。つまり、画像データIMG105の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図2では、画像データIMG105の2行目と4行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データIMG105がメモリ7から転送されるとき、画像データIMG105の一部の行のデータが、アクセス境界をまたいでメモリ7から読み出される。
図15に示す画像データIMG210がメモリから転送されるとき、1行毎に2回のデータの転送が発生する。したがって、画像データIMG210の全体に対して、8回のデータの転送が発生する。一方、図2に示す画像データIMG100がメモリ7から転送されるとき、1行目と3行目とでは2回のデータの転送が発生し、2行目と4行目とでは1回のデータの転送が発生する。したがって、画像データIMG100の全体に対して、6回のデータの転送が発生する。画像データIMG100が転送されるときの転送回数は、画像データIMG210が転送されるときの転送回数よりも少ない。つまり、図2では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
図15に示す画像データIMG215がメモリから転送されるとき、1行毎に1回のデータの転送が発生する。したがって、画像データIMG215の全体に対して、4回のデータの転送が発生する。一方、図2に示す画像データIMG105がメモリ7から転送されるとき、1行目と3行目とでは1回のデータの転送が発生し、2行目と4行目とでは2回のデータの転送が発生する。したがって、画像データIMG105の全体に対して、6回のデータの転送が発生する。画像データIMG105が転送されるときの転送回数は、画像データIMG215が転送されるときの転送回数よりも多い。このように、矩形領域の画像データの転送回数が従来技術における転送回数よりも増加する場合がある。しかし、矩形領域の位置によらず、矩形領域の画像データの転送回数は、最悪状態における転送回数よりも少ない。
オフセットが存在する行は、矩形領域の画像データの先頭の行のデータを除く全ての行でなくてもよい。矩形領域の画像データの先頭の行のデータを除く一部の行のみにオフセットが存在してもよい。オフセットは全ての行で同一でなくてもよい。各行のオフセットが固定値である場合、オフセットを簡易に算出することができる。ここではオフセットが、1回の転送により転送可能なデータの量よりも小さい場合を示したが、オフセットは1回の転送により転送可能なデータの量よりも大きくても良い。
(オフセットの第2の例)
オフセットの第2の例を説明する。各行のオフセットは固定値であり、1画素に相当する。
図16は、従来技術におけるメモリ上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の6画素の領域の境界がアクセス境界である。アクセス境界は水平方向の6画素毎に出現する。図16では、アクセス境界とアドレス境界とが一致する。図16では、アクセス境界B210とアクセス境界B211とが示されている。
図16では、矩形領域の画像データIMG220と画像データIMG225とが示されている。画像データIMG220と画像データIMG225とは8行のデータで構成され、各行のデータは3画素のデータで構成されている。
画像データIMG220の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データIMG220がメモリから転送されるとき、画像データIMG220の全ての行のデータが、アクセス境界をまたがずにメモリから読み出される。
一方、画像データIMG225の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界B211がある。このため、画像データIMG225がメモリから転送されるとき、画像データIMG225の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
図3は、本発明の実施形態におけるメモリ7上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の6画素の領域の境界がアクセス境界である。アクセス境界は水平方向の6画素毎に出現する。図3では、アクセス境界とアドレス境界とが一致する。図3では、アクセス境界B100と、アクセス境界B101と、アクセス境界B102とが示されている。図3では、各行のオフセットは、1画素に相当する。
図3では、矩形領域の画像データIMG110と画像データIMG115とが示されている。画像データIMG110と画像データIMG115とは8行のデータで構成され、各行のデータは3画素のデータで構成されている。
画像データIMG110の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図3では、画像データIMG110の5行目と6行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データIMG110がメモリ7から転送されるとき、画像データIMG110の一部の行のデータが、アクセス境界をまたいでメモリ7から読み出される。
画像データIMG115の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図3では、画像データIMG115の1行目と、2行目と、7行目と、8行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データIMG115がメモリ7から転送されるとき、画像データIMG115の一部の行のデータが、アクセス境界をまたいでメモリ7から読み出される。
図16に示す画像データIMG225がメモリから転送されるとき、1行毎に2回のデータの転送が発生する。したがって、画像データIMG225の全体に対して、16回のデータの転送が発生する。一方、図3に示す画像データIMG115がメモリ7から転送されるとき、1行目と、2行目と、7行目と、8行目とでは2回のデータの転送が発生し、他の行では1回のデータの転送が発生する。したがって、画像データIMG115の全体に対して、12回のデータの転送が発生する。画像データIMG115が転送されるときの転送回数は、画像データIMG225が転送されるときの転送回数よりも少ない。つまり、図3では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
図16に示す画像データIMG220がメモリから転送されるとき、1行毎に1回のデータの転送が発生する。したがって、画像データIMG220の全体に対して、8回のデータの転送が発生する。一方、図3に示す画像データIMG110がメモリ7から転送されるとき、5行目と6行目とでは2回のデータの転送が発生し、他の行では1回のデータの転送が発生する。したがって、画像データIMG110の全体に対して、10回のデータの転送が発生する。画像データIMG110が転送されるときの転送回数は、画像データIMG220が転送されるときの転送回数よりも多い。しかし、画像データIMG110の転送回数は、最悪状態における転送回数よりも少ない。
矩形領域の垂直方向のサイズすなわち行数は、メモリ7に対する1回のアクセスによりアクセス可能なデータ、すなわち1回の転送により転送可能なデータの量よりも小さいことが望ましい。図3では、矩形領域の行数は8であり、1回の転送により転送可能なデータの量は3である。この場合、矩形領域の画像データを構成する8行の少なくとも1つの行のデータが格納される領域の内部にアクセス境界がない。
(オフセットの第3の例)
オフセットの第3の例を説明する。オフセット算出部30は、メモリ7に対する1回のアクセスによりアクセス可能なデータの量と、1画素のデータ量とに基づいてオフセットを算出する。各行のオフセットは固定値である。
図17は、従来技術におけるメモリ上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の6画素の領域の境界がアクセス境界である。アクセス境界は水平方向の6画素毎に出現する。図17では、アクセス境界とアドレス境界とが一致する。図17では、アクセス境界B220とアクセス境界B221とが示されている。
図17では、矩形領域の画像データIMG230と画像データIMG235とが示されている。画像データIMG230と画像データIMG235とは4行のデータで構成され、各行のデータは3画素のデータで構成されている。
画像データIMG230の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データIMG230がメモリから転送されるとき、画像データIMG230の全ての行のデータが、アクセス境界をまたがずにメモリから読み出される。
一方、画像データIMG235の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界B221がある。このため、画像データIMG235がメモリから転送されるとき、画像データIMG235の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
図4は、本発明の実施形態におけるメモリ7上の画像データの位置を示している。最も左に記載された数字は、行番号を示している。最も上に記載された数字は、画素数を示している。水平方向の6画素の領域の境界がアクセス境界である。アクセス境界は水平方向の6画素毎に出現する。図4では、アクセス境界とアドレス境界とが一致する。図4では、アクセス境界B110と、アクセス境界B111と、アクセス境界B112と、アクセス境界B113とが示されている。図4では、各行のオフセットは、3画素に相当する。
図4では、矩形領域の画像データIMG120と画像データIMG125とが示されている。画像データIMG120と画像データIMG125とは4行のデータで構成され、各行のデータは3画素のデータで構成されている。
画像データIMG120の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がない。このため、画像データIMG120がメモリ7から転送されるとき、画像データIMG110の全ての行のデータが、アクセス境界をまたがずにメモリ7から読み出される。
画像データIMG125の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図4では、画像データIMG125の1行目と3行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データIMG125がメモリ7から転送されるとき、画像データIMG125の一部の行のデータが、アクセス境界をまたいでメモリ7から読み出される。
図17に示す画像データIMG235がメモリから転送されるとき、1行毎に2回のデータの転送が発生する。したがって、画像データIMG235の全体に対して、8回のデータの転送が発生する。一方、図4に示す画像データIMG125がメモリ7から転送されるとき、1行目と3行目とでは2回のデータの転送が発生し、他の行では1回のデータの転送が発生する。したがって、画像データIMG125の全体に対して、6回のデータの転送が発生する。画像データIMG125が転送されるときの転送回数は、画像データIMG235が転送されるときの転送回数よりも少ない。つまり、図4では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
図17に示す画像データIMG230がメモリから転送されるとき、1行毎に1回のデータの転送が発生する。したがって、画像データIMG230の全体に対して、4回のデータの転送が発生する。一方、図4に示す画像データIMG120がメモリ7から転送されるとき、1行毎に1回のデータの転送が発生する。したがって、画像データIMG120の全体に対して、4回のデータの転送が発生する。画像データIMG120が転送されるときの転送回数は、画像データIMG230が転送されるときの転送回数と同一である。
例えば、オフセット算出部30は、メモリ7に対する1回のアクセスによりアクセス可能なデータの量、すなわち1回の転送により転送可能なデータの量の半分の量を1画素のデータ量で割ることにより、オフセットを算出する。図4では、1回の転送により転送可能なデータの量は、6画素のデータ量である。このため、オフセットは、3画素に相当する。
矩形領域の水平方向のサイズは、メモリ7に対する1回のアクセスによりアクセス可能なデータ、すなわち1回の転送により転送可能なデータの量の半分以下であることが望ましい。これにより、矩形領域のある行のデータが格納される領域の内部にアクセス境界がある場合、その行の次の行のデータが格納される領域の内部にアクセス境界はない。つまり、矩形領域において、隣接する行の少なくとも一方のデータが格納される領域の内部にアクセス境界はない。
(オフセットの第4の例)
オフセットの第4の例を説明する。オフセット算出部30は、メモリ7に対する1回のアクセスによりアクセス可能なデータの量と、1画素のデータ量と、矩形領域の水平サイズとに基づいてオフセットを算出する。
図5は、オフセット算出部30の動作の手順を示している。以下では、オフセット算出部30の動作を説明する。
CPU6からオフセット算出部30に以下の情報が出力される。
1アクセスのデータ量:A_data [bit]
1画素のデータ量:P_data [bit]
矩形領域の水平サイズ(1行の画素数):H_pix [pix]
矩形領域の垂直サイズ(行数):V_pix [行]
1アクセスのデータ量は、メモリ7に対する1回のアクセスによりアクセスされるデータの量である。オフセット算出部30は、上記の情報に基づいて、図5に示す手順によりオフセットを算出する。
オフセット算出部30は、1アクセスのデータ量に対応する画素数(1アクセスあたりの画素数)を算出する(ステップS100)。ステップS100では、オフセット算出部30は、(1)式により、1アクセスあたりの画素数A_pixを算出する。(1)式の計算結果の小数点以下の値は切り上げられる。
A_pix=A_data/P_data ・・・(1)
(1)式に示すように、オフセット算出部30は、1アクセスのデータ量A_dataを1画素のデータ量P_dataで割ることにより、1アクセスあたりの画素数A_pixを算出する。
ステップS100の後、オフセット算出部30は、矩形領域の1行のデータを転送するときのアクセス数の最小値を算出する(ステップS110)。図6は、メモリ7に対するアクセスの種類を示している。図6では、メモリ7におけるアクセス境界と、アクセスされる矩形領域の1行のデータとが示されている。隣接する2つのアクセス境界の間の幅は、1アクセスあたりの画素数A_pixと同一である。
case1では、矩形領域の水平サイズH_pixが1アクセスあたりの画素数A_pix以下(H_pix≦A_pix)である。case1では、アクセスA11とアクセスA12との2種類のアクセスがある。アクセスA11では、アクセスされる領域にアクセス境界が含まれない。つまり、アクセスA11では、アクセス境界をまたがずに転送データがメモリ7から読み出される。アクセスA11では、メモリ7に1回アクセスされる。アクセスA12では、アクセスされる領域に1個のアクセス境界が含まれる。つまり、アクセスA12では、アクセス境界を1回またいで転送データがメモリ7から読み出される。アクセスA12では、メモリ7に2回アクセスされる。
case2では、矩形領域の水平サイズH_pixが1アクセスあたりの画素数A_pixよりも大きく、かつ、矩形領域の水平サイズH_pixが1アクセスあたりの画素数A_pixの2倍以下(A_pix<H_pix≦2×A_pix)である。case2では、アクセスA21とアクセスA22との2種類のアクセスがある。アクセスA21では、アクセスされる領域に1個のアクセス境界が含まれる。つまり、アクセスA21では、アクセス境界を1回またいで転送データがメモリ7から読み出される。アクセスA21では、メモリ7に2回アクセスされる。アクセスA22では、アクセスされる領域に2個のアクセス境界が含まれる。つまり、アクセスA22では、アクセス境界を2回またいで転送データがメモリ7から読み出される。アクセスA22では、メモリ7に3回アクセスされる。
caseNでは、矩形領域の水平サイズH_pixが1アクセスあたりの画素数A_pixの(n−1)倍よりも大きく、かつ、矩形領域の水平サイズH_pixが1アクセスあたりの画素数A_pixのn倍以下((n−1)×A_pix<H_pix≦n×A_pix)である。caseNでは、アクセスAN1とアクセスAN2との2種類のアクセスがある。アクセスAN1では、アクセスされる領域に(n−1)個のアクセス境界が含まれる。つまり、アクセスAN1では、アクセス境界を(n−1)回またいで転送データがメモリ7から読み出される。アクセスAN1では、メモリ7にn回アクセスされる。アクセスAN2では、アクセスされる領域にn個のアクセス境界が含まれる。つまり、アクセスAN2では、アクセス境界をn回またいで転送データがメモリ7から読み出される。アクセスAN2では、メモリ7に(n+1)回アクセスされる。
したがって、アクセスされる領域に(n−1)個のアクセス境界が含まれる場合(nは1以上の整数)、矩形領域の1行のデータを転送するときのアクセス数の最小値はnである。オフセット算出部30は、(2)式により、アクセス数の最小値nを算出する。(2)式の計算結果の小数点以下の値は切り上げられる。
n=H_pix/A_pix ・・・(2)
(2)式に示すように、オフセット算出部30は、矩形領域の水平サイズH_pixを1アクセスあたりの画素数A_pixで割ることにより、nを算出する。nは、水平サイズのデータを転送するために必要な最低アクセス数である。
ステップS110の後、オフセット算出部30は、アクセス数が最小である行が存在するために必要な行数を算出する(ステップS120)。矩形領域の画像データが格納されている領域において、アクセス数が最小である行が存在する場合、矩形領域の画像データの転送回数が最大である最悪状態を回避することができる。ステップS120で算出される行数のメモリ領域の1以上の行において、オフセットが与えられることにより、アクセス数が最小になりうる。ステップS120で算出される行数のメモリ領域の全てのオフセットの和が1アクセスあたりの画素数A_pixと等しくなるようにオフセットが設定されている場合、1以上の行において、アクセス数が最小である。
図7は、メモリ7における矩形領域の先頭の画素の位置とアクセス数との関係を示している。図7では、メモリ7におけるアクセス境界と、アクセスされる矩形領域の1行のデータとが示されている。図7において上側に、アクセス数がnである場合のアクセス境界と矩形領域の1行のデータとが矩形領域の先頭の画素の位置毎に示されている。図7において下側に、アクセス数が(n+1)である場合のアクセス境界と矩形領域の1行のデータとが矩形領域の先頭の画素の位置毎に示されている。
隣接する2つのアクセス境界の間のメモリ領域の幅は、A_pixである。A_pixは、画素数である。この幅のメモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数は、A_pixである。図7では、矩形領域の先頭の画素のデータが格納される位置が丸い印で示されている。上記のように、矩形領域の1行のデータを転送するときのアクセス数は、nまたは(n+1)である。
アクセス数がnである場合、矩形領域の画像データが格納されうるメモリ領域の幅は、n×A_pixである。矩形領域の水平サイズがH_pixであるため、上記の幅のメモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数num1は、(3)式により算出される。
num1=n×A_pix−H_pix+1 ・・・(3)
アクセス数がnである場合、矩形領域の先頭の画素のデータが格納されうる位置の数は、num1である。このため、アクセス数が(n+1)である場合、メモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数num2は、(4)式により算出される。
num2=A_pix−num1=A_pix−(n×A_pix−H_pix+1) ・・・(4)
上記のように、隣接する2つのアクセス境界の間のメモリ領域において矩形領域の先頭の画素のデータが格納されうる位置の数は、A_pixである。このため、アクセス数がnである確率n1_rateは、(5)式により算出される。また、アクセス数が(n+1)である確率n2_rateは、(6)式により算出される。
n1_rate=num1/A_pix=(n×A_pix−H_pix+1)/A_pix ・・・(5)
n2_rate=num2/A_pix=(A_pix−(n×A_pix−H_pix+1))/A_pix ・・・(6)
上記の確率n1_rateと確率n2_rateとは、矩形領域の1行のデータに関する確率である。アクセス数がnである事象が行毎に排他的に発生する場合、アクセス数がnである事象が矩形領域の複数の行の少なくとも1つで発生する確率は、行毎の確率n1_rateの和である。例えば、アクセス数がnである事象が矩形領域の2行の少なくとも1つで発生する確率は、2×n1_rateである。アクセス数がnである事象が矩形領域の3行の少なくとも1つで発生する確率は、3×n1_rateである。
アクセス数がnである事象が矩形領域のx行の少なくとも1つで発生する確率が1以上である条件は、(7)式で示される。
1≦x×n1_rate ・・・(7)
(7)式から(8)式と(9)式とが成り立つ。
x≧1/n1_rate ・・・(8)
x≧A_pix/(n×A_pix−H_pix+1) ・・・(9)
したがって、オフセット算出部30は、(10)式により、アクセス数が最小である行が存在するために必要な行数xを算出する。(10)式の計算結果の小数点以下の値は切り上げられる。
x=A_pix/(n×A_pix−H_pix+1) ・・・(10)
(10)式に示すように、オフセット算出部30は、最低アクセス数であるnに1アクセスあたりの画素数A_pixを乗じた第1の値から矩形領域の水平サイズH_pixを引いた第2の値に1を足すことにより第3の値を算出する。さらに、オフセット算出部30は、1アクセスあたりの画素数A_pixを第3の値で割ることにより第4の値を算出する。第4の値は、転送データがメモリ7から読み出されるときにアドレスの境界をまたがない行が発生するのに必要な行数である。
ステップS120の後、オフセット算出部30は、各行のオフセットを算出する(ステップS130)。ステップS120で算出された行数のメモリ領域の全てのオフセットの和が1アクセスあたりの画素数A_pixと等しくなるようにオフセットが設定されている場合、1以上の行において、アクセス数が最小である。オフセット算出部30は、(11)式により、各行のオフセットoffsetを算出する。(11)式の計算結果の小数点以下の値は切り上げられる。
offset=A_pix/x ・・・(11)
(11)式に示すように、オフセット算出部30は、1アクセスあたりの画素数A_pixを第4の値(x)で割ることにより、各行のオフセットを算出する。
端数が存在しうるため、最終行のオフセットは、他の行のオフセットと同一でない場合がある。オフセット算出部30は、(12)式により、最終行のオフセットoffset_finを算出する。最終行のオフセットoffset_finは、他の行のオフセットoffsetと同一である場合がある。
offset_fin=A_pix−(x−1)×offset ・・・(12)
図8は、与えられたオフセットを示している。図8では、2x行のメモリ領域が示されている。画像データの2行目の先頭のデータが格納される位置は、画像データの1行目の先頭のデータが格納される位置を基準とする位置からオフセットoffsetだけずれている。同様に、画像データの3〜x行目の先頭のデータが格納される位置は、その前の行の先頭のデータが格納される位置を基準とする位置からオフセットoffsetだけずれている。画像データのx+1行目の先頭のデータが格納される位置は、画像データのx行目の先頭のデータが格納される位置を基準とする位置からオフセットoffset_finだけずれている。
画像データの2行目からx+1行目までの少なくとも1つにおいて、アクセス数は最小である。画像データの2行目からx+1行目までの各行に与えられたオフセットと同様のオフセットが、x+2行目以降の各行に与えられる。
(11)式と(12)式とにより、各行のオフセットはほぼ均等である。この場合、オフセットoffsetを保持するレジスタと、オフセットoffset_finを保持するレジスタとの2つのレジスタのみが必要である。行毎にオフセットが異なる場合、異なるオフセットの数に応じたレジスタが必要である。各行のオフセットがほぼ均等であることにより、オフセットを保持するためのレジスタの数を少なくすることができる。つまり、回路規模を小さくすることができる。
矩形領域の垂直サイズがx行以上である場合、x行の少なくとも1つにおいて、アクセス数は最小である。矩形領域の全ての行のアクセス数が(n+1)である場合、矩形領域の画像データの転送回数が最大である最悪状態が発生する。上記のようにオフセットが各行に与えられることにより、x行の少なくとも1つにおいて、アクセス数はnである。このため、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
オフセットの具体例を説明する。例えば、CPU6からオフセット算出部30に以下の情報が出力される。
1アクセスのデータ量:512[bit]
1画素のデータ量:8[bit]
矩形領域の水平サイズ:36[pix]
矩形領域の垂直サイズ:36[行]
ステップS100では、オフセット算出部30は、(1)式に対応する(13)式により、1アクセスあたりの画素数A_pixを算出する。
A_pix=A_data/P_data=512/8=64[pix] ・・・(13)
ステップS110では、オフセット算出部30は、(2)式に対応する(14)式により、アクセス数の最小値nを算出する。
n=H_pix/A_pix=36/64=0.56 ・・・(14)
小数点以下の値が切り上げられることにより、アクセス数の最小値nは1である。この場合、アクセス数は1または2である。
ステップS120では、オフセット算出部30は、(3)式に対応する(15)式により、アクセス数がnである場合に矩形領域の先頭の画素のデータが格納されうる位置の数num1を算出する。
num1=n×A_pix−H_pix+1=(64−36+1)/64=29 ・・・(15)
(5)式に対応する(16)式により、アクセス数がnである確率n1_rateを算出することが可能である。
n1_rate=num1/A_pix=29/64 ・・・(16)
したがって、ステップS120では、オフセット算出部30は、(10)式に対応する(17)式により、アクセス数が最小である行が存在するために必要な行数xを算出する。
x=1/n1_rate=64/29=2.20 ・・・(17)
小数点以下の値が切り上げられることにより、xは3である。
ステップS130では、オフセット算出部30は、(11)式に対応する(18)式により、各行のオフセットoffsetを算出する。
offset=A_pix/x=64/3=21.33 ・・・(18)
小数点以下の値が切り上げられることにより、offsetは22である。ステップS130では、オフセット算出部30は、(12)式に対応する(19)式により、最終行のオフセットoffset_finを算出する。
offset_fin=A_pix−(x−1)×offset=64−(2×22)=20 ・・・(19)
図18は、従来技術におけるメモリ上の画像データの位置を示している。図18では、矩形領域の画像データIMG240が示されている。画像データIMG240は36行のデータで構成され、各行のデータは36画素のデータで構成されている。図18では、画像データIMG240の一部の行のデータのみが示されている。画像データIMG240の全ての行に対して、各行のデータが格納される領域の内部にアクセス境界がある。このため、画像データIMG240がメモリから転送されるとき、画像データIMG240の全ての行のデータが、アクセス境界をまたいでメモリから読み出される。
図9は、本発明の実施形態におけるメモリ7上の画像データの位置を示している。メモリ7に格納されている画像データの1行目を除く各行のデータは、前の行のデータが格納されている位置を基準とする位置に対して、オフセットだけずれている。図9における各行のオフセットは、22または20である。
図9では、矩形領域の画像データIMG130が示されている。画像データIMG130は36行のデータで構成され、各行のデータは36画素のデータで構成されている。図9では、画像データIMG130の一部の行のデータのみが示されている。画像データIMG130の一部の行に対して、各行のデータが格納される領域の内部にアクセス境界がある。図9では、画像データIMG130の1行目から3行目までの行のうち、1行目と3行目とのデータが格納される領域の内部にアクセス境界がある。このため、画像データIMG130がメモリ7から転送されるとき、画像データIMG130の一部の行のデータが、アクセス境界をまたいでメモリ7から読み出される。
図18に示す画像データIMG240がメモリから転送されるとき、1行毎に2回のデータの転送が発生する。したがって、画像データIMG240の全体に対して、72回のデータの転送が発生する。一方、図9に示す画像データIMG130がメモリ7から転送されるとき、3行あたり2行では2回のデータの転送が発生し、3あたり1行では1回のデータの転送が発生する。つまり、画像データIMG130の24行で2回のデータの転送が発生し、画像データIMG130の12行で1回のデータの転送が発生する。したがって、画像データIMG130の全体に対して、60回のデータの転送が発生する。画像データIMG130が転送されるときの転送回数は、画像データIMG240が転送されるときの転送回数よりも少ない。つまり、図9では、矩形領域の画像データの転送回数が最大である最悪状態が回避される。
第4の例では、矩形領域の画像データの複数行のデータの転送回数を制御することが可能である。このように、垂直サイズが行数xより大きい場合、つまりV_pix≧xの場合に転送回数を低減することができる。
(メモリ7に対する画像データの書き込みの制御方法)
前処理部2の書き込み制御部20による制御の例を説明する。撮影モードに応じて、矩形領域のサイズが決定される。オフセット算出部30は、決定されたサイズの矩形領域に適したオフセットを算出する。オフセット算出部30は、書き込み制御部20にオフセットを通知する。書き込み制御部20は、オフセット算出部30から通知されたオフセットに基づいて、画像データの書き込みアドレスを決定する。以下では、矩形領域の水平サイズが3画素であり、矩形領域の垂直サイズが4行である例を説明する。
図10は、本発明の実施形態におけるメモリ7上の各画素のデータの位置を示している。図10では、5行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、18画素のデータで構成されている。1〜18の数字は、各行の画素のデータを示している。4画素毎に記載されている0〜26の数字は、アドレスを示している。各行において、各画素のデータはメモリ7のアドレス空間上で隣接している。図10において画像データの各画素のデータが格納されている位置は、図2において画像データの各画素のデータが格納されている位置と同一である。図10におけるアクセス境界の位置は、図2におけるアクセス境界の位置と同一である。
前述したように、各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置からオフセットだけ離れている。図10では、各行の最後の画素のデータの後に2画素の不要なデータが格納されている。2画素の不要なデータが格納されている領域の後にオフセットの領域がある。図10では、各行のオフセットは、2画素に相当する。オフセットの領域に不要なデータが格納されている。
アドレスは、0から順番に1ずつ増加する。行が変わるとき、画素のデータが格納される位置にオフセットが加わる。書き込み制御部20は、画像データの各行の先頭の画素のデータが格納されるアドレスs_adrとアドレス内の位置s_pixとを生成する。
画像データの1行目の最後の画素のデータの後に2画素の不要なデータが格納される。画像データの2行目の先頭の画素のデータは、1行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの2行目の先頭の画素のデータが格納されるアドレスs_adrは5である。画像データの2行目の先頭の画素のデータが格納されるアドレス内の位置s_pixは2である。画像データの2行目の最後の画素のデータの後に2画素の不要なデータが格納される。画像データの3行目の先頭の画素のデータは、2行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの3行目の先頭の画素のデータが格納されるアドレスs_adrは11である。画像データの3行目の先頭の画素のデータが格納されるアドレス内の位置s_pixは0である。
画像データの3行目の最後の画素のデータの後に2画素の不要なデータが格納される。画像データの4行目の先頭の画素のデータは、3行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの4行目の先頭の画素のデータが格納されるアドレスs_adrは16である。画像データの4行目の先頭の画素のデータが格納されるアドレス内の位置s_pixは3である。画像データの4行目の最後の画素のデータの後に2画素の不要なデータが格納される。画像データの5行目の先頭の画素のデータは、4行目の不要なデータが格納される位置からオフセットだけずれた位置に格納される。画像データの5行目の先頭の画素のデータが格納されるアドレスs_adrは22である。画像データの5行目の先頭の画素のデータが格納されるアドレス内の位置s_pixは0である。
画像データの1行目の最後の2画素のデータと2画素の不要なデータとは、メモリ7に対する1回のアクセスにより書き込まれる。同様に、画像データの3行目の最後の2画素のデータと2画素の不要なデータとは、メモリ7に対する1回のアクセスにより書き込まれる。同様に、画像データの5行目の最後の2画素のデータと2画素の不要なデータとは、メモリ7に対する1回のアクセスにより書き込まれる。
画像データの2行目の最後の2画素のデータの後に格納される2画素の不要なデータと、3行目のオフセットの領域に格納される2画素の不要なデータとは、メモリ7に対する1回のアクセスにより書き込まれる。同様に、画像データの4行目の最後の2画素のデータの後に格納される2画素の不要なデータと、5行目のオフセットの領域に格納される2画素の不要なデータとは、メモリ7に対する1回のアクセスにより書き込まれる。
書き込み制御部20は、アドレスとデータとを書き込み部21に設定する。書き込み部21は、メモリ7の設定されたアドレスにデータを書き込む。
(メモリ7からの画像データの読み出しの制御方法)
画像処理部3の読み出し制御部31による制御の例を説明する。オフセット算出部30は、読み出し制御部31にオフセットを通知する。オフセット算出部30は、矩形領域の最初の画素(矩形領域の左上端の画素)のアドレス情報を読み出し制御部31に通知する。アドレス情報は、アドレスAdr0とアドレス内の位置s0_pixとを含む。読み出し制御部31は、オフセット算出部30から通知されたオフセットと、オフセット算出部30から通知されたアドレス情報とに基づいて、矩形領域の画像データの読み出しアドレスを決定する。以下では、矩形領域の水平サイズが3画素であり、矩形領域の垂直サイズが4行である例を説明する。
図19は、従来技術におけるメモリ上の各画素のデータの位置を示している。図19では、5行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、18画素のデータで構成されている。1〜18の数字は、各行の画素のデータを示している。4画素毎に記載されている0〜24の数字は、アドレスを示している。各行において、各画素のデータはメモリのアドレス空間上で隣接している。図19において画像データの各画素のデータが格納されている位置は、図15において画像データの各画素のデータが格納されている位置と同一である。図19におけるアクセス境界の位置は、図15におけるアクセス境界の位置と同一である。
図19では、矩形領域の画像データIMG250が示されている。画像データIMG250は、4行のデータで構成され、各行のデータは、3画素のデータで構成されている。画像データIMG250の各行のデータは、18画素×5行の画像データの2〜5行目のデータにおける7〜9画素目のデータで構成されている。
画像データIMG250の1行目のデータは、アドレス6とアドレス7とに格納されている。画像データIMG250の2行目のデータは、アドレス11とアドレス12とに格納されている。画像データIMG250の3行目のデータは、アドレス16とアドレス17とに格納されている。画像データIMG250の4行目のデータは、アドレス21とアドレス22とに格納されている。
図11は、本発明の実施形態におけるメモリ7上の各画素のデータの位置を示している。図11では、5行のデータで構成される画像データの位置が示されている。最も左に記載された数字は、行番号を示している。行番号の右に記載された数字は、各行の先頭の画素のデータが格納されるアドレスを示している。各行のデータは、18画素のデータで構成されている。1〜18の数字は、各行の画素のデータを示している。4画素毎に記載されている0〜26の数字は、アドレスを示している。各行において、各画素のデータはメモリ7のアドレス空間上で隣接している。図11において画像データの各画素のデータが格納されている位置は、図10において画像データの各画素のデータが格納されている位置と同一である。図11におけるアクセス境界の位置は、図10におけるアクセス境界の位置と同一である。
前述したように、各行の先頭の画素のデータが格納される位置は、その前の行の最後の画素のデータに続く不要なデータが格納される位置の次の位置からオフセットだけ離れている。図11では、各行の最後の画素のデータの後に2画素の不要なデータが格納されている。2画素の不要なデータが格納されている領域の後にオフセットの領域がある。図11では、各行のオフセットは、2画素に相当する。オフセットの領域に不要なデータが格納されている。
図11では、矩形領域の画像データIMG140が示されている。画像データIMG140は、4行のデータで構成され、各行のデータは、3画素のデータで構成されている。画像データIMG140の各行のデータは、18画素×5行の画像データの2〜5行目のデータにおける7〜9画素目のデータで構成されている。
画像データIMG140の1行目のデータは、アドレス7に格納されている。画像データIMG140の2行目のデータは、アドレス12とアドレス13とに格納されている。画像データIMG140の3行目のデータは、アドレス18に格納されている。画像データIMG140の4行目のデータは、アドレス23とアドレス24とに格納されている。
図19と図11とでは、矩形領域の最初の画素の位置(スタート位置)が示されている。画像データIMG250におけるスタート位置は、アドレス6の3番目の位置である。画像データIMG140におけるスタート位置は、アドレス7の最初の位置である。オフセット算出部30が読み出し制御部31に通知するスタート位置は、従来のスタート位置と同一である。このため、読み出し制御部31は、オフセット算出部30から通知されたスタート位置を、図11に対応するスタート位置に変換する。
オフセット算出部30から通知されるアドレスAdr0は6であり、オフセット算出部30から通知されるアドレス内の位置s0_pixは2である。読み出し制御部31は、画像データの水平サイズに対応するアドレスFh_max_adrに基づいて、(20)式により、スタート位置がある行line0を算出する。画像データの1行のデータは5アドレスのメモリ領域に格納されているので、アドレスFh_max_adrは5である。(20)式の計算結果の小数点以下の値は切り捨てられる。
line0=Adr0/Fh_max_adr+1 ・・・(20)
この例では、Adr0が6、Fh_max_adrが5であるため、line0は2である。読み出し制御部31は、スタート位置がある行line0に基づいて、(21)式により、その行までのオフセットの和offset_Sを算出する。
offset_S=offset×(line0−1)=2×(2−1)=2 ・・・(21)
オフセットがあることによって、スタート位置は従来のスタート位置に対してシフトする。読み出し制御部31は、(22)式により、アドレス単位のシフト量add_adrを算出する。(22)式において、A_pixは、1アクセスあたりの画素数である。(22)式の計算結果の小数点以下の値は切り捨てられる。
add_adr=offset_S/A_pix ・・・(22)
この例では、offset_Sが2、A_pixが4であるため、add_adrは0である。つまり、オフセットによるアドレス単位のシフトはない。読み出し制御部31は、(23)式により、アドレス内のシフト量offset_aを算出する。
offset_a=(offset_S/A_pix−add_adr)×A_pix=offset_S−add_adr×A_pix ・・・(23)
この例では、offset_Sが2、add_adrが0、A_pixが4であるため、offset_aは2である。つまり、オフセットによって、アドレス内の位置が2だけシフトする。読み出し制御部31は、オフセット算出部30から通知されたアドレス内の位置s0_pixと、アドレス内のシフト量offset_aとに基づいて、(24)式により、スタート位置のアドレス内の位置s_pixを算出する。
s_pix=s0_pix+offset_a ・・・(24)
s0_pixが2、offset_aが2であるため、s_pixは4である。つまり、アドレス内の位置がアドレス境界を越える。したがって、スタート位置のアドレスadrは7であり、スタート位置のアドレス内の位置s_pixは0である。つまり、スタート位置は、アドレス7の最初の位置である。算出されたアドレスadrとアドレス内の位置s_pixとは、矩形領域の行のスタート位置として保持される。行のスタート位置は、アドレスadr_lと、アドレス内の位置s_pixとを含む。アドレスadrは、アドレスadr_lとして保持される。アドレス内の位置s_pixは、アドレス内の位置s_pix_lとして保持される。上記のように、読み出し制御部31は、オフセットが設定されていない場合の矩形領域のスタート位置を、オフセットが設定されている場合の矩形領域のスタート位置に変換する。
行が変わるとき、読み出し制御部31は、行のスタート位置を、画像データの水平サイズに対応するアドレスFh_max_adrと、オフセットoffsetとに基づく量だけシフトさせる。具体的には、読み出し制御部31は、アドレスadr_lにアドレスFh_max_adrを加算することにより、アドレスadrを算出する。また、読み出し制御部31は、アドレス内の位置s_pix_lにオフセットを加算することにより、アドレス内の位置s_pixを算出する。
この例では、アドレスadr_lが7、アドレスFh_max_adrが5であるため、アドレスadrは12である。また、この例では、アドレス内の位置s_pix_lが0、オフセットが2であるため、アドレス内の位置s_pixは2である。つまり、矩形領域の2行目のスタート位置は、アドレス12の3番目の位置である。アドレスadrは、アドレスadr_lとして保持される。アドレス内の位置s_pixは、アドレス内の位置s_pix_lとして保持される。
矩形領域の3行目と4行目とのスタート位置は、上記と同様の方法により算出される。読み出し制御部31は、各行のスタート位置からアドレス内の位置を1ずつ増加させることにより、各画素のデータの読み出しアドレスを生成する。アドレス内の位置がアクセス境界すなわちアドレス境界をまたぐ場合、読み出し制御部31は、アドレスadrを1だけ増加させ、アドレス内の位置s_pixを0にリセットする。
読み出し制御部31は、アドレスを読み出し部32に設定する。読み出し部32は、メモリ7の設定されたアドレスからデータを読み出す。
画像処理部3の書き込み制御部33は、上記と同様の方法により、矩形領域の画像データを書き込むためのアドレスを生成することが可能である。
本発明の実施形態の画像処理装置(画像処理ユニット110)は、メモリ7と、オフセット算出部30と、書き込み部21と、書き込み制御部20と、読み出し部32と、読み出し制御部31と、画像処理部3とを有する。
本発明の実施形態では、オフセットに基づいて、画像データの書き込みアドレスと矩形領域の画像データの読み出しアドレスとが生成される。これにより、転送データが行毎にメモリ7から読み出されるときに少なくとも1つの行でアクセス境界をまたがずに転送データがメモリ7から読み出される。このため、矩形領域の画像データの転送回数が最大である最悪状態を回避することができる。
本発明の実施形態では、メモリ7に対する1回のアクセスによりアクセス可能なデータの量と、1画素のデータ量と、矩形領域の水平サイズとに基づいてオフセットが算出される場合がある。この場合、矩形領域の画像データの複数行のデータの転送回数を制御することが可能である。このため、矩形領域の垂直サイズに関わらず転送回数を低減することができる。
本発明の実施形態では、各行のオフセットは固定値である場合がある。この場合、オフセットを簡易に算出することができる。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。