(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
以下、実施形態について図面を参照して説明する。
【0019】
<1.実施形態>
[1−1.構成概要]
図1は、本発明の実施形態に係る画像処理装置1の構成を示す概略図である。当該画像処理装置1には、例えば、撮像素子を有した撮像装置および携帯電話、並びにパーソナルコンピュータ(PC)および携帯情報端末機等が含まれる。
【0020】
図1に示されるように、画像処理装置1は、いずれも基板上に集積回路として構成された、第1処理回路2および第2処理回路3を備えている。
【0021】
第1処理回路2は、レンズデータ記憶部21と画像データ記憶部22とを有している。画像データ記憶部22は、複数の画像データを記憶可能な容量を有するDRAM等の記憶手段であり、画像処理装置1に入力された或いは画像処理装置1内の撮像素子で撮像された画像(入力画像)の画像データGDを記憶する。レンズデータ記憶部21には、入力された画像データGDを撮像した撮像装置のレンズに関するレンズデータが記憶されている。レンズデータとしては、例えば、レンズの収差に起因した画像の歪みに関する情報(「歪み情報」とも称する)が記憶されている。
【0022】
第2処理回路3は、画像処理回路として構成され、画像データ記憶部22に保存された画像データGDに対して、各種の画像処理を施す。特に、本実施形態の第2処理回路3は、入力された画像データGDに対して、画像の歪みを補正する処理(「歪み補正処理」とも称する)を施す歪み補正部30を有している。
【0023】
ここで、歪み補正処理の概略について説明する。
図2および
図3は、歪み補正処理の様子を示す図であり、
図2には、樽型の歪曲収差を有する入力画像IGと、歪み補正処理後の出力画像UGとが示されている。なお、入力画像IGには、歪曲収差による被写体の歪みが破線によって示されている。
【0024】
図2に示されるように、画像処理装置1で実行される歪み補正処理は、出力画像UGを複数の領域に分割して得られる矩形領域(「画素ブロック」または単に「ブロック」とも称する)BKごとに行われる。例えば、ブロックBK1が歪み補正処理の実行対象のブロック(「実行対象ブロック」とも称する)BR(
図2中のハッチング領域)であるときは、入力画像IGにおいて当該ブロックBK1に対応する対応ブロックTB1付近の画素の画素値(「画素データ」とも称する)を用いて、ブロックBK1の各画素の画素値が算出される。
【0025】
より詳細には、ブロックBK1に歪み補正処理を施す場合、歪み補正部30は、対応ブロックTB1を囲む領域(読出領域)RN1に含まれる各画素の画素値を取得するための転送要求を出力する。そして、歪み補正部30は、当該転送要求に応じて取得された領域RN1内の各画素の画素値を用いた補間演算を行うことによって、ブロックBK1(実行対象ブロックBR)の各画素の画素値を算出する。このようにして算出されたブロックBK1の各画素の画素値は、歪み補正後の各画素の画素値となる。
【0026】
歪み補正処理では、このようなブロックBK単位の歪み補正が、出力画像UGを構成する各ブロックBKについて、左上のブロックを開始ブロックとして水平方向に順次に実行される。すなわち、歪み補正部30は、歪み補正処理の実行に応じて、各ブロックBKの各対応ブロックをそれぞれ囲む各読出領域を水平方向に順次に設定し、水平方向に並んで設定された読出領域それぞれに含まれる画像データの転送要求を水平方向の並び順に順次に出力する。そして、歪み補正部30は、転送要求に応じて取得された読出領域内の画像データを用いて、ブロックBKごとにブロック内の各画素の画素値を算出し、最終的に被写体の歪みを補正した出力画像UGを生成する。
【0027】
また、歪み補正部30は、歪み補正の実行にあたり、連続して並ぶ複数のブロックを囲む領域(読出領域)RN10に含まれる各画素の画素値を一度に取得してもよい。例えば、
図3に示されるように、歪み補正部30は、連続して並ぶ2つのブロックBK1,BK2それぞれに対応する対応ブロックTB1,TB2を内包する領域RN10に含まれる各画素の画素値を一度に取得し、ブロックBK1,BK2(実行対象ブロックBR1,BR2)の各画素の画素値を算出してもよい。この場合、歪み補正部30からは、領域RN10に含まれる各画素の画素値を取得するための転送要求が出力されることになる。
【0028】
そして、歪み補正部30は、読出領域ごとに読出領域内の各画素の画素値を順次に取得しつつ、実行対象ブロックごとに歪み補正処理を実行する。
【0029】
このように、歪み補正部30は、画像処理としての歪み補正処理を実行するために、入力画像IGの所定領域に含まれる画像データを読み出すための転送要求を出力するデータ転送要求手段として機能する。
【0030】
なお、ブロックBKの大きさは、画像処理装置1によって自動で設定される態様としてもよく、ユーザによって指定可能な態様としてもよい。本実施形態では、ブロックBKが縦8画素、横8画素のブロック、すなわち8×8の画素を有するブロックである場合を例にして説明する。
【0031】
図1の説明に戻って、第2処理回路3は、第1処理回路2と第2処理回路3との間のデータ転送を制御するDMAC(ダイレクトメモリアクセスコントローラ)35,36と、キャッシュメモリ37とをさらに有している。画像処理装置1では、第1処理回路2と第2処理回路3との間のバスを介したデータ転送は、CPUの代わりに当該DMAC35,36からの制御信号に基づいて行われる。
【0032】
具体的には、歪み補正部30から出力されたレンズデータの読出要求は、DMAC35に入力される。DMAC35は、当該読出要求に応じて、バスを介してレンズデータ記憶部21からレンズデータを読み出す。読み出されたレンズデータは、歪み補正部30において歪み補正処理に利用される。
【0033】
また、歪み補正部30から出力された画像データの転送要求は、キャッシュメモリ37に入力される。キャッシュメモリ37は、当該転送要求に応じた画像データがキャッシュメモリ37内の記憶部に記憶されている場合は、当該記憶部に記憶されているデータを歪み補正部30に対して出力する。
【0034】
一方、キャッシュメモリ37は、当該転送要求に応じた画像データがキャッシュメモリ37内の記憶部に記憶されていない場合は、記憶部に記憶されていない未記憶データを読み出すための読出要求をDMAC36に対して出力する。DMAC36は、当該読出要求に応じて、バスを介して画像データ記憶部22から画像データを読み出す。画像データ記憶部22から読み出された画像データは、キャッシュメモリ37に入力され、キャッシュメモリ37内の記憶部に記憶される。そして、キャッシュメモリ37は、歪み補正部30からの転送要求に応じた画像データを、歪み補正部30に対して出力する。
【0035】
上記のように、キャッシュメモリ37は、データ転送要求手段としての歪み補正部30から出力された画像データの転送要求に応じて、画像データ記憶部22から不足分の画像データを読み出し、転送要求の対象となっている画像データを歪み補正部30に転送する。このようなキャッシュメモリ37を有する画像処理装置1は、「データ転送装置」とも称される。
【0036】
[1−2.キャッシュメモリの詳細構成]
次に、キャッシュメモリ37の詳細構成について説明する。
図4は、画像処理装置1におけるキャッシュメモリ37の詳細構成を示す図である。
図5は、記憶部370における、画像データの記憶態様を示す図である。
図6は、管理用メモリにおける、記憶内容の管理態様を示す図である。
【0037】
図4に示されるように、キャッシュメモリ37は、記憶部370と、記憶内容管理部371と、データ取得制御部(読出制御手段)372と、記憶制御部373と、出力制御部374とを有している。
【0038】
記憶部370は、画像データ記憶部22よりもデータの書き込みおよび読み出しを高速に行うことが可能な記憶部である。このような記憶部370としては、例えば、SRAM等が採用され、記憶部370には、画像データ記憶部22から読み出された画像データが記憶される。
【0039】
ここで、記憶部370における画像データの記憶態様について説明する。
【0040】
記憶部370では、入力画像IGにおける水平方向の画素の行(「画素行」とも称する)の画像データが、画素行ごとに異なる記憶領域に区分して記憶される。画素行ごとに区分された記憶領域は、「区分記憶領域」とも称され、ゼロから順次にそれぞれ番号付けされている。これら各区分記憶領域には、所定の規則に従って行番号(ライン番号)に基づいて決定される特定の画素行の画像データが記憶されることになる。
【0041】
例えば、
図5に示されるように、記憶部370が、「0」〜「15」までの16個の区分記憶領域を有している場合を想定する。そして、入力画像IG中の各画素行において、最上部の行を行番号「0」とし、当該最上部の行から下に行くに従って1ずつ行番号を増やす手法で各画素行が番号付けされるものとする。この場合、記憶部370では、或る画素行の画像データは、当該画素行の行番号を、区分記憶領域の数「16」で割ったときの余りによって示される区分記憶領域に記憶される。
【0042】
より詳細には、「0」の区分記憶領域には、行番号を区分記憶領域の数「16」で割ったときの余りが「0」になる行番号を有する画素行の画像データ(例えば、0行目の画像データ、16行目の画像データ等)が記憶されることになる。また、「1」の区分記憶領域には、行番号を区分記憶領域の数「16」で割ったときの余りが「1」になる行番号を有する画素行の画像データ(例えば、1行目の画像データ、17行目の画像データ等)が記憶されることになる。また、「15」の区分記憶領域には、行番号を区分記憶領域の数「16」で割ったときの余りが「15」になる行番号を有する画素行の画像データ(例えば、15行目の画像データ、31行目の画像データ等)が記憶されることになる。
【0043】
このように、記憶部370では、入力画像IGに含まれる各画素行の画像データの保存先が、画素行に基づいて決定される。
【0044】
キャッシュメモリ37の構成説明(
図4参照)に戻って、記憶内容管理部371は、記憶部370に記憶されている画像データの記憶内容を管理する機能を有している。具体的には、記憶内容管理部371は、SRAM等の管理用メモリを有している。当該管理用メモリは、記憶部370の各区分記憶領域に現在記憶されている画像データそれぞれが、入力画像IG中のどの位置の画像データであるかを示す情報(「記憶内容情報」または単に「記憶内容」とも称する)を保持している。
【0045】
管理用メモリにおける、記憶内容の管理態様としては、例えば、
図6に示される態様を例示することができる。
【0046】
具体的には、
図6に示される管理用メモリでは、アドレス「0」〜「15」までの記憶領域が確保される。そして、アドレス「0」〜「15」までの各記憶領域には、記憶部370の「0」〜「15」までの各区分記憶領域に記憶されている画像データのライン番号、先頭アドレス、およびバースト長(詳細には、連続して転送したビット長所定量のデータを先頭アドレスから連続して転送する回数)が、記憶内容としてそれぞれ記憶されている。
【0047】
例えば、管理用メモリにおけるアドレス「0」の記憶領域には、記憶部370の「0」の区分記憶領域の記憶内容が記憶されている。また、管理用メモリにおけるアドレス「1」の記憶領域には、記憶部370の「1」の区分記憶領域の記憶内容が記憶されている。また、管理用メモリにおけるアドレス「15」の記憶領域には、記憶部370の「15」の区分記憶領域の記憶内容が記憶されている。
【0048】
このように、記憶内容管理部371の管理用メモリでは、記憶部370の各区分記憶領域の記憶内容が、区分記憶領域ごとに分けて管理されることになる。
【0049】
キャッシュメモリ37の構成説明(
図4参照)に戻って、データ取得制御部372は、歪み補正部30から画像データの転送要求が入力されると、記憶内容管理部371内のSRAMに保持されている記憶情報を参照して、当該転送要求に対応した画像データが記憶部370に記憶されているか否かを判定する。このように、データ取得制御部372は、転送要求に対応した画像データが記憶部370に記憶されているか否かを判定する判定手段として機能する。
【0050】
そして、歪み補正部30からの転送要求に対応した画像データが記憶部370に記憶されていない場合、データ取得制御部372は、未記憶データを読み出すための読出要求をDMAC36に対して出力する。このように、データ取得制御部372は、未記憶データの読み出しを制御する読出制御手段としても機能する。
【0051】
なお、当該読出要求は、読出領域に含まれる画像データを読み出すための転送要求を拡張したものであり、当該読出要求によれば、読出領域を超えて画像データが読み出されることになる。詳細は、後述する。
【0052】
一方、歪み補正部30からの転送要求に対応した画像データが記憶部370に記憶されている場合は、データ取得制御部372は、読出要求をDMAC36に対して出力しない。
【0053】
記憶制御部373は、画像データ記憶部22から読み出された画像データを記憶部370に記憶する際の格納先のアドレス(「キャッシュアドレス」とも称する)を画素行ごとに決定して、当該キャッシュアドレスを記憶部370に出力する。記憶部370は、画像データ記憶部22から読み出された画像データを、キャッシュアドレスで特定される記憶部370内の各区分記憶領域に画素行ごとに格納する。
【0054】
出力制御部374は、画像データの転送要求に応じた画像データを、記憶部370から出力する出力制御を行う。
【0055】
[1−3.キャッシュメモリの動作]
次に、キャッシュメモリ37の動作について詳述する。
図7は、キャッシュメモリ37の動作を示すフローチャートである。
図8は、歪み補正部からの転送要求に応じて、入力画像における読出領域から画像データを読み出す様子を示す図である。
【0056】
図7に示されるように、ステップSP1では、キャッシュメモリ37は、歪み補正部30から読出領域に含まれる画像データを読み出すための転送要求を歪み補正部30から取得する。当該転送要求は、読出領域に含まれる画素の行ごとに読出開始位置の情報と読出終了位置の情報とを含んでいる。
【0057】
ここで、
図8に示されるような、入力画像IGにおいて、連続して並ぶ4つの対応ブロックTB11〜TB14を囲む領域RNを読出領域とした転送要求が、歪み補正部30からキャッシュメモリ37に順次に入力される場合を想定する。すなわち、最初の転送要求では、破線HL1に囲まれた読出領域RN11に関する転送要求がキャッシュメモリ37に入力され、次の転送要求では、破線HL2に囲まれた読出領域RN12に関する転送要求がキャッシュメモリ37に入力されるものとする。
【0058】
この場合、各転送要求には、各読出領域RNにおける各画素行の情報と、画素行ごとの読出開始位置の情報および読出終了位置の情報とが含まれている。ここでいう、画素行の情報は、画素行の行番号であり、読出開始位置の情報および読出終了位置の情報はそれぞれ、読出開始アドレスおよび読出終了アドレスである。
【0059】
ステップSP2では、データ取得制御部372によって、転送要求に対応する画像データがキャッシュメモリ37内の記憶部370に存在するか否かが、転送要求に含まれる画素行ごとに判定される。当該判定は、転送要求に含まれる画素行の行番号、画素行ごとの読出開始アドレス、および画素行ごとの読出終了アドレスと、管理用メモリに記憶されている各区分記憶領域の記憶内容とを比較することによって行われる。
【0060】
当該判定により、転送要求の対象となっている画素行の画像データがキャッシュメモリ37内の記憶部370に存在すると判定された場合、動作工程は、ステップSP3を飛ばしてステップSP4に移行される。
【0061】
一方、上記判定により、転送要求の対象となっている画素行の画像データがキャッシュメモリ37内の記憶部370に存在しないと判定された場合、動作工程は、ステップSP3に移行される。
【0062】
ステップSP3では、データ取得制御部372の制御に基づいて、転送要求の対象となっている画素行における未記憶データを、画像データ記憶部22から取得するための読出処理が実行される。
【0063】
当該読出処理では、未記憶データを構成する各画素の画素データのうち、左端の画素の画素データから、一定の行方向(ここでは右方向)に沿って、各画素の画素データが順次に読み出される。
【0064】
また、一度の読出処理で読み出される画像データのデータ量(読出データ量)は、読出領域の行方向の最大幅よりも長い画素行の画像データを読み出すことが可能なように設定される。読出データ量は、所定量のデータを連続して転送する回数(バースト長)に依存し、具体的な読出データ量としては、例えば、128ビット×16バースト長を採用することができる。
【0065】
このように、一度の読出処理で読み出される画像データの読出データ量を、読出領域の行方向の最大幅よりも長い画素行の画像データを読み出すことが可能な量とすれば、一度の読出処理で、読出領域の行方向の最大幅を超えて、画像データを読み出すことになる。
【0066】
上記のような読出処理によって読み出された画像データは、キャッシュメモリ37内の記憶部370に格納される。
【0067】
そして、次のステップSP4では、出力制御部374によって転送要求に対応する画像データがキャッシュメモリ37内の記憶部370から読み出されて、歪み補正部30に転送される。
【0068】
ステップSP5では、転送要求の対象となっている全ての画素行の画像データの転送が完了したか否かが判定される。
【0069】
ステップSP5において、転送対象の全ての画素行の画像データの転送が完了したと判定された場合、転送要求に応じたキャッシュメモリ37の動作は終了される。一方、転送対象の全ての画素行の画像データの転送が完了していないと判定された場合、動作工程は、ステップSP2に移行される。そして、転送対象の全ての画素行について画像データの転送が完了するまで、ステップSP2〜ステップSP5の各工程が繰り返し実行される。
【0070】
このように、キャッシュメモリ37では、ステップSP1〜ステップSP5の各工程が実行され、歪み補正部30へのデータ転送が行われる。
【0071】
ここで、ステップSP3の読出処理で読み出される読出範囲について詳述する。
図9は、歪み補正部30からの転送要求に応じて、入力画像IGにおける読出領域RN11から画像データを読み出す様子を示す図である。
図10は、歪み補正部30からの転送要求に応じて、入力画像IGにおける読出領域RN12から画像データを読み出す様子を示す図である。
図11は、歪み補正部30からの転送要求に応じて、入力画像IGにおける読出領域RN11,RN12から画像データを読み出す様子を示す図である。
図12および
図13は、記憶部370内の画像データの記憶態様を示す図である。
【0072】
例えば、キャッシュメモリ37の動作開始後、最初の転送要求として、
図9に示されるような読出領域RN11に関する転送要求が入力された場合、記憶部370には、画像データが存在しないため、読出領域RN11に含まれる全ての画素行についてステップSP3の読出処理が実行されることになる。そして、この読出処理では、読出領域RN11を拡張した領域RL11(砂地ハッチングで示される領域)に含まれる各画素の画素データが読み出される。
【0073】
さらに、次の転送要求として、
図10に示されるような読出領域RN12に関する転送要求が入力された場合、ステップSP3の読出処理では、読出領域RN12に含まれる画素行のうち、記憶部370に記憶されていない画素行の画像データが読み出されることになる。すなわち、この読出処理では、領域RL12に含まれる各画素の画素データが読み出される。
【0074】
このように、読出処理では、読出領域に含まれる各画素行の画像データが、画素行ごとに一定の行方向に沿って、読出領域を超えた位置まで順次に読み出される。
【0075】
そして、当該読出処理によって読み出された画像データは、画素行ごとに記憶部370内の異なる区分記憶領域に格納されることになるが、記憶部370での画像データの格納先は、記憶制御部373によって各画素行の行番号に基づいて決定される。
【0076】
具体的には、
図5に示されるように、記憶部370が、「0」〜「15」までの16個の区分記憶領域を有している場合、記憶制御部373は、読出処理によって読み出された或る画素行の画像データの格納先を、区分記憶領域の数「16」で当該画素行の行番号を割ったときの余りによって表される区分記憶領域に決定する。
【0077】
例えば、読出領域RN11に含まれる各画素行の行番号が、
図11に示されるような行番号であった場合、読出領域RN11に関する最初の転送要求に応じた読出処理で取得された画像データは、
図12に示されるような態様で、記憶部370内の各区分記憶領域に記憶されることになる。詳細には、読出領域RN11に含まれる各画素行の行番号は、「10」〜「21」であることから、行番号「10」〜「21」までの各画素行の画像データはそれぞれ、記憶部370内の「10」〜「15」、「0」〜「5」の各区分記憶領域に記憶されることになる(
図12参照)。
【0078】
そして、読出領域RN12に関する次の転送要求に応じた読出処理では、領域RL12に含まれる行番号「4」〜「9」の各画素行の画像データが読み出されて、当該各画素行の画像データはそれぞれ、記憶部370内の「4」〜「9」の各区分記憶領域に記憶されることになる(
図13参照)。このとき、「4」の区分記憶領域には、最初の転送要求に応じた読出処理で読み出された行番号「20」の画像データが記憶されているが、当該画像データは消去され、行番号「4」の画像データが上書きして記憶される。同様に「5」の区分記憶領域には、最初の転送要求に応じた読出処理で読み出された行番号「21」の画像データが記憶されているが、当該画像データは消去され、行番号「5」の画像データが上書きして記憶される。
【0079】
図11に示されるように、2回目の転送要求後に実行される歪み補正処理では、読出領域RN12に含まれる画像データを用いて歪み補正処理が実行されるため、消去された行番号「20」、「21」の画像データは、歪み補正処理に利用されない不要なデータとなっている。このため、行番号「20」、「21」の画像データを記憶している区分記憶領域に、行番号「4」、「5」の新しい画像データを上書きして記憶することができる。
【0080】
歪み補正処理では、各読出領域が、入力画像IGの歪みに応じて行方向に垂直な方向(画像の上方向或いは下方向)に徐々にずらして設定されるため、歪み補正処理が進展すると、記憶部370内には不要な画像データを記憶する区分記憶領域が生まれることになる。したがって、行番号に基づいて各画素行の画像データの格納先を決定することによれば、不要な画像データを記憶する区分記憶領域に、新たな画素行の画像データを上書きして記憶していくことが可能になり、歪み補正処理に必要な画像データを消去してしまう可能性を低減することができる。
【0081】
これに対して、メモリアドレスから一意にキャッシュアドレスを決定するダイレクトマップ方式でキャッシュアドレスを決定して、読出領域に含まれる各画素行の画像データを記憶部370に記憶した場合、同一の読出領域に含まれる画像データ同士で、格納先が重なる可能性がある。格納先が重なると、同一の読出領域に含まれる必要な画像データが消去されることになり、再度、消去された当該必要な画像データを読み出すことになる。
【0082】
なお、或る画素行における画像データの格納先を、区分記憶領域の数「16」で当該画素行の行番号を割ったときの余りによって表される区分記憶領域とする上記決定手法は、或る画素行の行番号を2進数で表現した値の下位4ビットで表される区分記憶領域を当該画素行の格納先とする決定手法とも表現することができる。
【0083】
また、記憶部370内に設けられる区分記憶領域の数は、読出領域の垂直方向の幅、すなわち読出領域に含まれる画素行の数に応じて自由に変更可能であるが、画像データの格納先を決定する際の演算を容易にするには、区分記憶領域の数を2のべき乗個にすることが好ましい。
【0084】
ここでさらに、ステップSP3の読出処理で読み出される読出範囲の他の態様について詳述する。
図14は、読出処理で読み出される読出範囲の他の態様を示す図である。
【0085】
具体的には、
図14に示されるように、キャッシュメモリ37の動作開始後、読出領域RN11に関する最初の転送要求に応じた読出処理によって、領域RL21に含まれる各画素行の画像データが読み出された場合を想定する。
【0086】
この場合、読出領域RN12に関する次の転送要求に応じた読出処理では、領域RL22に含まれる各画素行の画像データに加えて、領域RL23に含まれる各画素行の画像データが読み出されることになる。
【0087】
このとき、領域RL23の画像データは、最初の転送要求に応じた読出処理の際に読み出された、破線HL3で囲まれる画像データを記憶する各区分記憶領域に記憶されることになるが、当該各区分記憶領域は、破線HL3の画像データをも保持しつつ、領域RL23の画像データをさらに記憶することになる。読出領域RN12の画像データを歪み補正部30に転送するためには、破線HL3の画像データが必要となるからである。
【0088】
このように、読出処理によって同一画素行の画像データが読み出された場合、記憶制御部373は、既に記憶されている画像データを消去しないように、新たに読み出された画像データの格納先を決定する。
【0089】
なお、新たに読み出された画像データを記憶する際には、歪み補正部30からの転送要求に応じた画像データを歪み補正部30に転送可能な範囲で、既に記憶されている画像データの一部を消去するようにしてもよい。
【0090】
以上のように、データ転送装置(画像処理装置1)は、入力画像IGの画像データを記憶した画像データ記憶部22(記憶手段)よりも、データの書き込みおよび読み出しを高速に行うキャッシュメモリ37と、入力画像IG内の或る領域の画像データの転送要求を、キャッシュメモリ37に対して出力するデータ転送要求手段30とを備えている。そして、キャッシュメモリ37は、転送要求に対応した読出領域に含まれる画素行の画像データが、キャッシュメモリ37内の記憶部に記憶されているか否かを画素行ごとに判断し、記憶部に記憶されていない未記憶の画像データを画素行ごとに当該読出領域を超えて画像データ記憶部22から読み出させるデータ取得制御部372と、データ取得制御部372によって読み出された画素行ごとの未記憶の画像データを、画素行ごとに格納先を替えてキャッシュメモリ37内の記憶部に記憶させる記憶制御部373と、転送要求に対応した読出領域の画像データをキャッシュメモリ37内の記憶部から読み出して、データ転送要求手段30に出力する出力制御部374とを有している。また、データ転送要求手段30は、入力画像IGの水平方向に並んだ複数の読出領域それぞれの画像データの転送要求を、水平方向の並び順に順次に行う。
【0091】
このように、データ転送装置では、転送要求に対応した読出領域に含まれる画素行の画像データが、キャッシュメモリ37内の記憶部に記憶されていない場合、未記憶の画像データが画素行ごとに当該読出領域を超えて画像データ記憶部22から読み出される。そして、画像データの転送要求は、入力画像IGの水平方向に並んだ複数の読出領域それぞれについて、水平方向の並び順に順次に行われる。したがって、データ転送装置は、転送要求に対応した画像データを先に読み出して、データの書き込みおよび読み出しを高速に行うキャッシュメモリ37内の記憶部に格納しておくことになるので、転送要求に応じた画像データの転送速度を早めることが可能になり、ひいては、画像データの取得に要する時間を短縮することができる。
【0092】
また、データ転送装置のデータ取得制御部372は、画像データ記憶部22から未記憶の画像データを読み出す場合、画素行ごとに一定の行方向に沿って読出領域を超えた位置まで順次に読み出させる。これによれば、画像データ記憶部22からのデータ読み出しに際して、行方向に長くアクセスすることが可能になり、メモリの転送効率を高めることができる。
【0093】
<2.変形例>
以上、実施の形態について説明したが、この発明は、上記に説明した内容に限定されるものではない。
【0094】
例えば、キャッシュメモリ37内の記憶部370は、1つのSRAMを用いて構成してもよく、2つのSRAMを用いて構成してもよい。
図15および
図16は、記憶部370を2つのSRAM101,102を用いて構成した場合の画像データの記憶態様を示す図である。
【0095】
図15に示されるように、記憶部370を2つのSRAM101,102を用いてダブルバッファ構成とした場合、2つのSRAM101,102のうちの一方のSRAMには画像データの書き込みを行いつつ、他方のSRAMからは画像データの読み出しを行うことができる。
【0096】
例えば、
図15に示されるように、画像データ記憶部22から読み出した画像データを、画素行ごとに交互に2つのSRAM101,102に記憶するようにすれば、一方のSRAMに画像データの書き込みを行っている間に、他方のSRAMから画像データの読み出しを行うことが可能になる。
【0097】
このような画素行ごとの交互記憶は、読み出された画像データの記憶部370における格納先のキャッシュアドレスを決定する記憶制御部373によって実現される。
【0098】
具体的には、
図15において、画像幅2000バイトの画像データから8行分の画像データを画素行ごとに256バイトずつ読み出す場合を想定する。また、
図15の画像データを記憶する画像データ記憶部22は、1メモリアドレスあたり1バイトの画像データを記憶し、SRAMのエントリENは、1つにつき16バイトのデータを記憶可能であるとする。このとき、記憶制御部373は、読み出された画素行の行番号を2進数で表現した値の下位4ビットを、キャッシュアドレスの上位4ビットとし、メモリアドレスの下位4ビットを削って得られる値の下位5ビットを、キャッシュアドレスの下位5ビットとして用いて、当該画素行の画像データを格納するキャッシュアドレスを決定する。
【0099】
このように、記憶部370を物理的に異なる2つのSRAM101,102を用いて構成した場合、記憶制御部373は、データ取得制御部372によって読み出された画素行ごとの未記憶の画像データを、2つのSRAM101,102のいずれか一方に画素行ごとに交互に記憶させる。これによれば、一方のSRAMに画像データの書き込みを行っている間に、他方のSRAMから画像データの読み出しを行うことが可能になるので、画像データの転送速度が速くなる。
【0100】
また、
図16に示されるように、画像データ記憶部22から読み出した画像データを、2つのSRAM101,102のいずれか一方に所定のデータ量ずつ交互に記憶させるようにしてもよい。
図16では、1つのエントリENずつ、すなわち16バイトずつ交互に記憶させる態様が例示されている。
【0101】
これによれば、所定のデータ量単位で、画像データの書き込みと読み出しとを並行して行うことが可能になるので、画像データの転送速度がさらに速くなる。
【0102】
なお、
図16の態様で2つのSRAM101,102に画像データの記憶を行う場合、キャッシュアドレスの決定手法としては、上記
図15の態様と同様の手法を採用することができる。2つのSRAM101,102のうち、どちらのSRAMに記憶するかについては、決定されたキャッシュアドレスの下位1ビットを用いて判断すればよい。例えば、下位1ビットが「0」の場合は、SRAM101に記憶し、下位1ビットが「1」の場合は、SRAM102に記憶する。
【0103】
また、
図15の態様では、複数の区分記憶領域は、2つのSRAM101,102のいずれか一方において、区分記憶領域の番号ごとに交互に設定されることになる。一方、
図16の態様では、各区分記憶領域は、2つのSRAM101,102にまたがって設定されることになる。
【0104】
また、上記実施形態では、データ転送装置としての画像処理装置1に、画像データ記憶部22が含まれる態様を例示していたが、これに限定されない。すなわち、画像データ記憶部22が、画像処理装置1の外部に設けられ、画像処理装置1は、外部の画像データ記憶部22から画像データを取得する態様であってもよい。