(57)【要約】【課題】画像データの一部分が読み込み済みであるか否かを簡便に判断できる。【解決手段】処理装置は、列方向および行方向に広がりを有する画像が格納される低速記憶部と、低速記憶部よりも高速な読み出しが可能であり、画像の列方向の全てと行方向の一部である所定記憶行に相当する領域を記憶する高速記憶部と、高速記憶部から画像を列方向に連続して読み出す読み出し部と、低速記憶部から画像を読み込み高速記憶部へ書き込む判定部とを備え、判定部は、列方向を所定の画素ごとに分割した処理単位列ごとに、高速記憶部に格納されている画像の行方向の最小または最大の行番号に基づき次に読み込む画像の行番号を決定する。【選択図】図２
2019008674.tif 000002
【特許請求の範囲】
【請求項１】
列方向および行方向に広がりを有する画像が格納される低速記憶部と、
前記低速記憶部よりも高速な読み出しが可能であり、前記画像の前記列方向の全てと前記行方向の一部である所定記憶行に相当する領域を記憶する高速記憶部と、
前記高速記憶部から前記画像を前記列方向に連続して読み出す読み出し部と、
前記低速記憶部から前記画像を読み込み前記高速記憶部へ書き込む判定部とを備え、
前記判定部は、前記列方向を所定の画素ごとに分割した処理単位列ごとに、前記高速記憶部に格納されている前記画像の前記行方向の最小または最大の行番号に基づき次に読み込む前記画像の行番号を決定する処理装置。
【請求項２】
請求項１に記載の処理装置において、
前記処理単位列ごとに、前記高速記憶部に格納される前記行方向の最小または最大の行番号を格納する管理テーブルをさらに備え、
前記判定部は、前記管理テーブルを参照することで、前記低速記憶部から前記画像を読み込み前記高速記憶部へ書き込むか否かを決定し、
前記判定部は、前記高速記憶部へ前記画像を書き込む場合は、前記低速記憶部から読み込んだ前記画像の行番号を前記管理テーブルに書き込む処理装置。
【請求項３】
請求項１に記載の処理装置において、
前記判定部は、前記画像を書き込む前記高速記憶部の前記行方向の位置を、前記画像の行番号の前記高速記憶部の前記所定記憶行による剰余に基づき決定する処理装置。
【請求項４】
請求項３に記載の処理装置において、
前記所定記憶行は、２の累乗である処理装置。
【請求項５】
請求項１に記載の処理装置において、
前記判定部は、前記画像を書き込む前記高速記憶部の前記列方向の位置を、前記画像における前記列方向の位置と対応させる処理装置。
【請求項６】
請求項１に記載の処理装置において、
前記処理単位列の幅は、前記低速記憶部からの前記画像の読み出し単位である処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置に関する。
【背景技術】
【０００２】
カメラのレンズは歪特性を有するため、生成された画像データは歪みを含む。またカメラの設置状況によっては拡大・縮小・回転・剪断などの効果が生じ、生成された画像データは更に実像との差異を含む。さらに記録された画像を再生する際にも、再生機器の設置状況によっては再生画像は拡大・縮小・回転・剪断などの効果を含むこととなる。このような実像との差異を補正する画像処理装置では、補正前画像と補正後画像の対応関係を算出し、補正後画像の各画素に必要な補正前画素または画素群を読み込む。画像データを格納する記憶装置は一般にアクセス速度が高速であるほど高コストな傾向がある。したがって、１フレーム分の大きな画像データを低コストに格納するためには低速な記憶装置が選択されるが、同一データを繰り返し読み出す画像補正処理などでは、アクセス速度が低速であることが処理速度低下の要因となる。
この問題を解決する方法の１つとして、高速な記憶装置を用いるキャッシュ方式が知られている。キャッシュ方式とは、１フレーム分の大きな画像データを格納した低速の記憶装置から、１フレームのうち一部分の小さな画像データをより高速な記憶装置に読み込み、繰り返しの読み出しは高速な記憶装置から行なう方法である。特許文献１には、入力タイルＱ２１の入力画像データをメモリ１２０から読み出して記憶部１１０に記憶させる際、重複領域Ｓの入力画像データが残された記憶部１１０のキャッシュ領域の画像データを除いて、入力画像領域Ｒ２１の画像データをメモリ１２０から取得して記憶部１１０に記憶させる構成が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２１８６１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、画像データの一部分が読み込み済みであるか否かを簡便に判断できない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様による処理装置は、列方向および行方向に広がりを有する画像が格納される低速記憶部と、前記低速記憶部よりも高速な読み出しが可能であり、前記画像の前記列方向の全てと前記行方向の一部である所定記憶行に相当する領域を記憶する高速記憶部と、前記高速記憶部から前記画像を前記列方向に連続して読み出す読み出し部と、前記低速記憶部から前記画像を読み込み前記高速記憶部へ書き込む判定部とを備え、前記判定部は、前記列方向を所定の画素ごとに分割した処理単位列ごとに、前記高速記憶部に格納されている前記画像の前記行方向の最小または最大の行番号に基づき次に読み込む前記画像の行番号を決定する。
【発明の効果】
【０００６】
本発明によれば、画像データの一部分が読み込み済みであるか否かを簡便に判断できる。
【図面の簡単な説明】
【０００７】
【図１】画像処理システムＳの構成図
【図２】画像処理装置１の機能ブロック図
【図３】撮影画像を示す模式図
【図４】撮影画像において読み込まれる領域を示す図
【図５】高速記憶部１４５の構造を示す模式図
【図６】管理テーブル１４４の一例を示す図
【図７】画像処理装置１の動作例を説明する図。図７（ａ）は１〜４回目に高速記憶部１４５に書き込まれる領域を示す図、図７（ｂ）は３４〜３７回目に高速記憶部１４５に書き込まれる領域を示す図、図７（ｃ）は管理テーブル１４４に格納される値を示す図。
【図８】キャッシュ部１４１の蓄積処理を示すフローチャート
【図９】キャッシュ部１４１の読出処理を示すフローチャート
【発明を実施するための形態】
【０００８】
―実施の形態―
以下、図１〜図９を参照して、画像処理装置の実施の形態を説明する。
【０００９】
（構成）
図１は、画像処理装置１を含む画像処理システムＳの構成図である。画像処理システムＳは、画像処理装置１と、カメラ２と、認識装置３とを備える。カメラ２は、撮影して得られた画像（以下、「撮影画像」）を画像処理装置１に出力する。画像処理装置１は、撮影画像に歪み補正処理を施して歪みを補正した画像（以下、「歪み補正画像」）を生成して認識装置３に出力する。認識装置３は、歪み補正画像を用いて各種アプリケーションを実行する。なお画像処理装置１、カメラ２、および認識装置３は、それぞれが有線で接続されて上述した画像の情報を授受してもよいし、無線通信により画像の情報を授受してもよい。さらに画像処理装置１、カメラ２、および認識装置３は、同一の地点に設置されてもよいし、それぞれが異なる地点や異なる国に設置されてもよい。さらに画像処理装置１、カメラ２、および認識装置３における情報の授受は、通信により即時に行われてもよいし、画像の情報を持ち運びが可能な記憶装置に格納した後に記憶装置を移動させて画像の情報を読み出してもよい。
【００１０】
図２は、画像処理装置１の機能構成を示す機能ブロック図である。画像処理装置１は、画像入力部１１と、前処理部１２と、低速記憶部１３と、後処理部１４と、画像出力部１５とを備える。画像入力部１１および画像出力部１５は、入出力インタフェース回路である。前処理部１２および後処理部１４は、たとえばＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）に構成される回路である。低速記憶部１３は、たとえばＳＤ−ＲＡＭであり、後述する高速記憶部１４５よりもアクセス速度、すなわち読み込み速度および書き込み速度が遅い。また低速記憶部１３は、所定の読み出し情報量の単位がハードウエア特性として予め定められている。たとえば読み出し情報量の単位が６４バイトの場合に、低速記憶部１３に対してある３バイトの情報を要求すると、要求した３バイトを含む６４バイトの情報が低速記憶部１３から得られる。
【００１１】
画像入力部１１には、カメラ２から撮影画像が入力される。画像入力部１１は入力された撮影画像を前処理部１２に出力する。前処理部１２は、入力された撮影画像に画素ごとの演算から成る処理、たとえば輝度調整を施し、処理後の撮影画像を低速記憶部１３に格納する。後処理部１４は、低速記憶部１３に格納された撮影画像を読み出して、歪み補正処理を施して歪み補正画像を作成する。そして後処理部１４は、作成した歪み補正画像を画像出力部１５に出力する。画像出力部１５は、後処理部１４から出力された画像を認識装置３に出力する。
【００１２】
後処理部１４は、キャッシュ部１４１と、歪補正部１４６とを備える。キャッシュ部１４１は、歪補正部１４６から要求される撮影画像の情報を歪補正部１４６に提供する。歪補正部１４６は撮影画像を読み込んで歪み補正画像を生成する。歪補正部１４６は、キャッシュ部１４１に撮影画像の一部の領域ずつの情報を要求して、撮影画像の全体を複数回に分けて取得する。キャッシュ部１４１は歪補正部１４６から要求されるおおよその領域をあらかじめ算出し、歪補正部１４６から要求される前に低速記憶部１３から撮影画像のその領域の情報を取得する。そしてキャッシュ部１４１は、歪補正部１４６から要求があると迅速に撮影画像の情報を提供する。
【００１３】
キャッシュ部１４１は、簡易アドレス生成部１４２と、判定部１４３と、管理テーブル１４４と、高速記憶部１４５とを備える。簡易アドレス生成部１４２は、歪補正部１４６が備える、後述するアドレス生成部１４７と略同一のアドレス算出処理を実行する。これにより、次に歪補正部１４６から要求される撮影画像中の画素を全て含む領域、すなわち読み込み先アドレスを算出する。なお簡易アドレス生成部１４２が算出するアドレスは概算、たとえば１０ピクセル単位であり計算の負荷が小さい。詳しくは後述する。
【００１４】
判定部１４３は、簡易アドレス生成部１４２が出力する読み込み先アドレスが示す領域のうち、まだ高速記憶部１４５に格納されていない領域を判断し、その領域の画素の情報を低速記憶部１３から取得して高速記憶部１４５に格納する。判定部１４３は、管理テーブル１４４を参照して高速記憶部１４５に格納されている領域を判断し、必要に応じて管理テーブル１４４を書き換える。判定部１４３の動作は後に詳述する。管理テーブル１４４は、ＦＰＧＡ上に確保される記憶領域であり、管理テーブル１４４には高速記憶部１４５に格納されている撮影画像の領域を示す情報が格納される。高速記憶部１４５は、ＦＰＧＡ上に構成された記憶領域であり、低速記憶部１３よりも高速なアクセスが可能である。高速記憶部１４５の構成は後述する。
【００１５】
歪補正部１４６は、アドレス生成部１４７と補正部１４８とを備える。アドレス生成部１４７は、補正部１４８が処理対象とする撮影画像の領域を示すアドレスを厳密に、たとえば１ピクセル単位で算出し、キャッシュ部１４１に送信する。キャッシュ部１４１は受信したアドレスに対応する撮影画像の情報を歪補正部１４６に出力する。補正部１４８は、キャッシュ部１４１から取得した情報を用いて、既知の手法により歪みおよびカラー情報の補正を行い、歪み補正画像を生成する。
【００１６】
（撮影画像と画像読み込みの例）
図３は、撮影画像を示す模式図である。撮影画像は、たとえば横１９２０ピクセル、縦１０８０ピクセルの解像度を有する。換言すると撮影画像は、１９２０ｘ１０８０個の色情報が格子状に並べられたものである。本実施の形態では、撮影画像の左下の画素を基準位置、すなわち座標（１，１）の画素とし、図示右側をＸ軸のプラス方向、図示上側をＹ軸のプラス方向とする。撮影画像は、横方向に連続した画素の情報が低速記憶部１３における連続した領域に格納される。本実施の形態では、低速記憶部１３の読み出し情報量の単位に相当する撮影画像の画素の情報が１０ピクセルに相当する。以下では撮影画像を横方向に１０ピクセル単位でｗ１、ｗ２、ｗ３・・と呼ぶ。本実施の形態では撮影画像の横幅は１９２０ピクセルなので、右端はｗ１９２である。
【００１７】
歪補正部１４６は、撮影画像をＸ軸の１ピクセル目付近から正方向に走査して処理を行い、撮影画像の右端に到達するとＹ軸の正方向に処理対象をずらして、Ｘ軸の１ピクセル目付近から正方向に走査する。すなわち歪補正部１４６は、いわゆるラスタースキャンを行う。また歪み補正処理は、処理対象の画素の情報だけでなく、その周辺の画素の情報も利用するため、撮影画像を複数画素からなる複数のブロックに分割し、１ブロックを処理単位とする。すなわち歪補正部１４６は、所定のアルゴリズムにより補正部１４８の処理単位とするブロックのアドレス、すなわち撮影画像上の領域を算出する。
【００１８】
図４は、撮影画像において読み込まれる領域を示す図である。図４では、図３とは異なり横方向は読み出し情報量の単位であるｗ１、ｗ２、ｗ３・・で表記している。すなわち図４における１つの格子に格納される情報量は、図３における１０個の格子に格納される情報量に等しい。図４では、歪補正部１４６のアドレス生成部１４７が生成するアドレス領域Ｓ１〜Ｓ３を破線で示し、キャッシュ部１４１の簡易アドレス生成部１４２が生成するアドレス領域Ｄ１〜Ｄ４を実線で示す。
【００１９】
初めにアドレス生成部１４７が生成するアドレス領域がＳ１であり、初めに簡易アドレス生成部１４２が生成するアドレス領域Ｄ１は前述のＳ１を含むように算出される。アドレス生成部１４７が生成するアドレス領域Ｓ１は、１ピクセル単位なので図４では１０ピクセルごとの区切りを示す格子に沿っていない。その一方で簡易アドレス生成部１４２は１０ピクセル単位でアドレス領域を算出するので、簡易アドレス生成部１４２が生成するアドレス領域Ｄ１は図４に示す格子に沿って存在する。２番目にアドレス生成部１４７が生成するアドレス領域がＳ２であり、２番目に簡易アドレス生成部１４２が生成するアドレス領域Ｄ２は前述のＳ２を含むように算出される。ここで、Ｄ１とＤ２の関係に注目すると、２つの領域は一部が重複している。
【００２０】
領域を左下の座標と右上の座標で表すと、領域Ｄ１は（ｗ１，１）〜（ｗ５，３）であり、領域Ｄ２は（ｗ４，３）〜（ｗ８，５）である。したがって、領域Ｄ１と領域Ｄ２は（ｗ４，３）〜（ｗ５，３）で重複する。キャッシュ部１４１の判定部１４３は、管理テーブル１４４を利用することで、領域Ｄ２の読み込みの際に重複する領域である（ｗ４，３）〜（ｗ５，３）の読み込みを省略する。判定部１４３の動作は後述する。なお以下では、図４に示す格子のＸ方向のそれぞれの区画を「列」とも呼び、格子のＹ方向のそれぞれの区画を「行」とも呼ぶ。たとえばｗ１の隣の列はｗ２である。
【００２１】
（高速記憶部）
図５は、高速記憶部１４５の構造を示す模式図である。高速記憶部１４５は、Ｘ方向に１９２個、Ｙ方向に８個の広がりを有する格子状の記憶領域である。図５に示すそれぞれの格子に格納される情報量は、図４に示すそれぞれの格子に格納される情報量と等しく、図３に示す１０個の格子に格納される情報量と等しい。したがって、高速記憶部１４５のＸ方向には撮影画像のＸ方向、すなわち横方向の情報が全て格納され、高速記憶部１４５のＹ方向には撮影画像のＹ方向の８行分の情報が格納される。また図５に示すそれぞれの格子に格納される情報の格納順番は、図３や図４と同様に図示左側から右側にかけて列番号が大きくなるように格納される。以下では、高速記憶部１４５のＹ方向の行数を「所定記憶行」とも呼ぶ。すなわち本実施の形態における所定記憶行は「８」である。図４に示す低速記憶部１３に格納される撮影画像の情報と区別するために、高速記憶部１４５のＸ方向はｃ１、ｃ２、ｃ３、・・と呼び、Ｙ方向はｒ１、ｒ２、ｒ３、・・と呼ぶ。なお以下では、図５に示す格子のＸ方向のそれぞれの区画を「列」とも呼び、格子のＹ方向のそれぞれの区画を「行」とも呼ぶ。たとえばｃ１の隣の列はｃ２である。
【００２２】
（管理テーブル）
図６は管理テーブル１４４の一例を示す図である。管理テーブル１４４は、高速記憶部１４５のＸ方向の格子のそれぞれに対応する記憶領域が設けられる。管理テーブル１４４には、高速記憶部１４５のＸ方向の各格子に入力されている撮影画像のＹ座標の最大値が格納される。たとえば図６に示す例では、ｃ１には撮影画像のｙ＝１２０までの情報が格納されていることが示されている。ただし高速記憶部１４５は前述のとおり８行分の情報しか格納できないため、ｃ１にはｙ＝１１３〜ｙ＝１２０が格納されている。なお前述のとおり、歪補正部１４６はＹ軸のプラス方向に撮影画像の情報を読み進めるため、管理テーブル１４４に記録される数値は処理が進むにつれて増加する。
【００２３】
（動作例）
図７を参照して画像処理装置１の動作例を説明する。図７（ａ）は１〜４回目に高速記憶部１４５に書き込まれる領域を示す図、図７（ｂ）は３４〜３７回目に高速記憶部１４５に書き込まれる領域を示す図、図７（ｃ）は管理テーブル１４４に格納される値を示す図である。図７（ａ）、（ｂ）に示す各格子の中の数字は、何回目の書き込みによりその格子に画像情報が書き込まれるかを示す。また図７における太線で囲む領域は、簡易アドレス生成部１４２が生成するアドレスに対応する領域である。
【００２４】
図７に示す動作例が開始する前は、高速記憶部１４５には撮影画像の情報が格納されていないので、図７（ｃ）の「初期」の行に示すように、ｃ１〜ｃ１２８の全ての列についてＹ座標の最大値がゼロである。キャッシュ部１４１による１回目の書き込みは、図７（ａ）の領域Ｅ１の全域を対象に行われる。キャッシュ部１４１は、図４に示す領域Ｄ１の情報を読み込み、領域Ｅ１に書き込む。このとき書き込まれた高速記憶部１４５の領域は図７（ａ）において「１」を記載している。これにより管理テーブル１４４のｃ１〜ｃ５の列には撮影画像のｙ＝３までが読み込まれるので、管理テーブル１４４のｃ１〜ｃ５の欄には「３」が記録される。
【００２５】
次にキャッシュ部１４１は、簡易アドレス生成部１４２が算出する２つ目の領域、すなわち図４に示す領域Ｄ２を読み込む。ただし領域Ｄ２において領域Ｄ１と重複する領域、すなわち（ｗ４，３）〜（ｗ５，３）は読み込まない。キャッシュ部１４１は、この判断を管理テーブル１４４を参照することで実現する。すなわちキャッシュ部１４１は、管理テーブル１４４のｃ４の欄に「３」が格納されていると、ｙ＝３以下の情報を低速記憶部１３から読み込まない。そしてキャッシュ部１４１は、読み込んだ画素の情報を高速記憶部１４５の領域Ｅ２に書き込む。領域Ｅ２への書き込みが完了すると、高速記憶部１４５のｃ４〜ｃ８には撮影画像のｙ＝５までが読み込まれたので、管理テーブル１４４のｃ４〜ｃ８の欄には「５」が記録される。
【００２６】
以下、同様にキャッシュ部１４１は低速記憶部１３からの撮影画像の読み込みと高速記憶部１４５への書き込み、および管理テーブル１４４への書き込みを行う。ただし高速記憶部１４５のＹ方向の記憶領域は撮影画像に比べて短いので、書き込む領域が不足する。その場合はキャッシュ部１４１は、あたかもｒ８の上部にｒ１が存在するかのように書き込む領域を決定する。すなわち撮影画像におけるある画素のＹ座標をＤｙ、その画素が書き込まれる高速記憶部１４５のＹ座標をＥｙ、高速記憶部１４５のＹ方向の行数、すなわち所定記憶行をＲとすると、これらは式（１）の関係を満たす。
Ｅｙ＝Ｄｙ％Ｒ  ・・・（１）
【００２７】
すなわちＥｙはＤｙのＲによる剰余である。本実施の形態ではＲ＝８なので、たとえば撮影画像におけるＹ＝９の画素の情報は、９％８＝１なので高速記憶部１４５のｒ１の行に格納される。キャッシュ部１４１は、この演算に基づき書き込み先の高速記憶部１４５の領域を決定する。キャッシュ部１４１による４回目までの処理が完了すると、管理テーブル１４４には２行目に示す情報が格納される。
【００２８】
その後、低速記憶部１３からの撮影画像の読み込みおよび高速記憶部１４５への書き込みが右端、すなわちｗ１２８やｃ１２８まで到達すると、簡易アドレス生成部１４２は算出する領域をＹ軸の正方向にずらす。ただしこの場合も従前に読み込んだ領域と一部重複する。たとえば図７（ｂ）の領域Ｅ３４は、簡易アドレス生成部１４２が算出する領域を最初にＹ軸の正方向にずらした直後の処理である３４回目に算出するアドレスに対応する領域を示している。すなわち、簡易アドレス生成部１４２の算出によるとＥ３４はｃ１〜ｃ５の３〜５行目に対応する。しかしｃ１〜ｃ３の列は１回目の読み込みで３行目まで読み込み済みであり、ｃ４〜ｃ５の列は２回目の読み込みで５行目まで読み込み済みである。そのためキャッシュ部１４１は、まだ読み込んでいないｗ１〜ｗ３の４行目〜５行目の画素の情報のみを低速記憶部１３から読み込み、高速記憶部１４５に書き込む。キャッシュ部１４１は、以下同様に処理を行う。キャッシュ部１４１による３７回目までの処理が完了すると、管理テーブル１４４には３行目に示す情報が格納される。
【００２９】
なお、さらに処理が進み、判定部１４３が読み込んだ撮影画像の座標（ｗ１，９）の画素情報は、高速記憶部１４５の（ｃ１、ｒ１）に書き込まれる。すなわち１回目の読み込みにより書き込まれた情報が上書きされる。前述のとおり、歪補正部１４６はラスタースキャンを行うので、Ｙ座標を遡って画像情報を参照することはない。このような特性を有するので、高速記憶部１４５に従前に書き込まれた情報を保存することなく、次々に上書きをすることができる。
【００３０】
（フローチャート｜蓄積処理）
図８は、キャッシュ部１４１が高速記憶部１４５に撮影画像の情報を蓄積する蓄積処理の動作を示すフローチャートである。上述した動作例を可能とするキャッシュ部１４１の動作をフローチャートを用いて説明する。キャッシュ部１４１は、歪補正部１４６の動作に先立って動作を開始する。
【００３１】
ステップＳ３０１では、キャッシュ部１４１の簡易アドレス生成部１４２は、最初の簡易アドレスの算出を行う。続くステップＳ３０２では、判定部１４３は、ステップＳ３０１において算出されたアドレス領域に含まれる全ての列を順番に処理対象としてステップＳ３０３〜Ｓ３０７の処理を繰り返す。以下では、処理対象とする列をＰ列と呼ぶ。続くステップＳ３０３では、判定部１４３は、ステップＳ３０１において算出されたアドレス領域に含まれる全ての行を順番に処理対象としてステップＳ３０４〜Ｓ３０６の処理を繰り返す。以下では、処理対象とする行をＱ行と呼ぶ。
【００３２】
続くステップＳ３０４では、判定部１４３は、管理テーブル１４４におけるＰ列の欄に格納された値を読み込み、その値がＱ未満であるか否かを判断する。Ｑ未満であると判断する場合はステップＳ３０５に進み、Ｑ以上であると判断する場合はステップＳ３０７に進む。ステップＳ３０５では、処理対象の画素の情報を低速記憶部１３から読み込み、高速記憶部１４５におけるＰ列のＱ％Ｒ行目、すなわち式（１）のＥｙ行目に格納する。続くステップＳ３０６では、管理テーブル１４４のＰ列の欄の値をＱに書き換えてステップＳ３０７に進む。
【００３３】
ステップＳ３０７では、歪補正部１４６はステップＳ３０１において算出されたアドレス領域に含まれる全ての行を処理対象としたか否かを判断する。歪補正部１４６は、処理対象としていない行が存在すると判断する場合はその行を処理対象としてステップＳ３０４に戻り、全ての行を処理対象としたと判断する場合はステップＳ３０８に進む。ステップＳ３０８では、歪補正部１４６はステップＳ３０１において算出されたアドレス領域に含まれる全ての列を処理対象としたか否かを判断する。歪補正部１４６は、処理対象としていない列が存在すると判断する場合はその列を処理対象としてステップＳ３０３に戻り、全ての列を処理対象としたと判断する場合はステップＳ３０９に進む。
【００３４】
ステップＳ３０９ではキャッシュ部１４１は、簡易アドレス生成部１４２によるアドレス生成が完了したか否かを判断する。換言すると、ある１枚の撮影画像の全体について処理が完了したか否かを判断する。アドレス生成が完了したと判断する場合は図８に示す動作を完了し、アドレス生成が完了していないと判断する場合はステップＳ３１０に進む。ステップＳ３１０ではキャッシュ部１４１は、歪補正部１４６から撮影画像を要求されたか否かを判断する。歪補正部１４６による読み込みを待たずに次々に高速記憶部１４５に撮影画像を読み込むと、新たに読み込んだ撮影画像の情報で上書きした後に歪補正部１４６から撮影画像の要求を受ける可能性があるからである。歪補正部１４６が画像情報を要求したと判断する場合はステップＳ３０１に戻り、歪補正部１４６がまだ次の画像情報を要求していないと判断する場合はステップＳ３１０に留まる。
【００３５】
（フローチャート｜読出処理）
図９は、キャッシュ部１４１が歪補正部１４６の要求に応じて高速記憶部１４５から撮影画像の情報を読み出す読出処理の動作を示すフローチャートである。ステップＳ３２１では、キャッシュ部１４１は歪補正部１４６からの読み出し指令、すなわち撮影画像の読み込み対象のアドレスを受信する。ここでは受信したアドレスが、撮影画像の（ｋ、ｌ）の座標を指すとする。続くステップＳ３２２では、キャッシュ部１４１は、高速記憶部１４５において撮影画像のＸ座標がｋの画素を含む列を特定する。列の特定は、高速記憶部１４５における１列に含まれる画素数を用いて算出される。たとえばｋ＝４５の場合に、本実施の形態では１列に１０画素が含まれるので、４５／１０の商を繰り上げた値、すなわち５列目に含まれることが特定される。
【００３６】
続くステップＳ３２３では、キャッシュ部１４１は、高速記憶部１４５において撮影画像のＹ座標が１の座標を含む行を特定する。行の特定は、前述の式（１）に基づき行うことができる。ただし本実施の形態では高速記憶部１４５の行数が２の累乗なので、以下のように簡便に算出することができる。すなわち撮影画像のＹ座標値を２進数で表記し、下位から高速記憶部１４５の行数に対応する桁だけ評価する。具体的には、本実施の形態では高速記憶部１４５の行数が８、すなわち２の３乗なので下位３桁の値を評価する。たとえば２１行目の場合は、１０進数の「２１」を２進数で表すと「１０１０１」なので、下位３桁は「１０１」である。これを１０進数に変換すると、１ｘ２＾２＋０ｘ２＾１＋１ｘ２＾０＝５なので５行目であると特定される。
【００３７】
続くステップＳ３２４では、キャッシュ部１４１は、ステップＳ３２２およびステップＳ３２３において特定した座標の高速記憶部１４５の画素値を読み出す。続くステップＳ３２５では、キャッシュ部１４１はステップＳ３２４において読み出した画素値を歪補正部１４６に出力する。
【００３８】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）画像処理装置１は、列方向および行方向、すなわちＸ方向およびＹ方向に広がりを有する撮影画像が格納される低速記憶部１３と、低速記憶部１３よりも高速な読み出しが可能であり、撮影画像の列方向の全てと行方向の一部である８行に相当する領域を記憶する高速記憶部１４５と、高速記憶部１４５から撮影画像を列方向に連続して読み込む歪補正部１４６と、低速記憶部１３から撮影画像を読み込み高速記憶部１４５へ書き込む判定部１４３とを備える。
判定部１４３は、列方向を所定の画素ごとに分割した処理単位列ごとに、高速記憶部１４５に格納されている撮影画像の行方向の最大の行番号に基づき次に読み込む撮影画像の行番号を決定する。そのため画像処理装置１は、行番号の大小により撮影画像の一部が読み込み済みであるか否かを簡便に判断できる。
【００３９】
（２）画像処理装置１は、処理単位列ごとに、高速記憶部１４５に格納される行方向の最小または最大の行番号を格納する管理テーブルをさらに備える。判定部１４３は、管理テーブルを参照することで、低速記憶部１３から画像を読み込み高速記憶部１４５へ書き込むか否かを決定する。判定部１４３は、高速記憶部１４５へ画像を書き込む場合は、低速記憶部１３から読み込んだ画像の行番号を管理テーブル１４４に書き込む。そのため画像処理装置１は管理テーブル１４４を用いて撮影画像の読み込みの要否を簡便に判断できる。
【００４０】
（３）判定部１４３は、画像を書き込む高速記憶部１４５の行方向の位置を、画像の行番号の高速記憶部１４５の所定記憶行である「８」による剰余に基づき決定する。そのため判定部１４３は高速記憶部１４５における格納場所を簡便に特定することができる。さらにキャッシュ部１４１が歪補正部１４６から要求を受けて高速記憶部１４５から読み出す際にも、同様な処理により簡便に格納場所を特定することができる。
【００４１】
（４）本実施の形態では、所定記憶行は２の累乗である「８」とした。そのため撮影画像の行番号を２進数で表記すれば、下位３ビットがそのまま高速記憶部１４５において格納されている行番号を表す。すなわち所定記憶行を２の累乗に設定することにより、格納先の行番号を特定する処理の負荷を軽減することができる。
【００４２】
（５）判定部１４３は、画像を書き込む高速記憶部１４５の列方向の位置を、撮影画像における列方向の位置と一致させる。そのため画像処理装置１は、高速記憶部１４５への書き込み位置、および高速記憶部１４５からの読み込み位置を簡便に決定できる。
【００４３】
（６）処理単位列の幅は、低速記憶部１３から高速記憶部１４５へのデータ読み出し単位である。そのため画像処理装置１は低速記憶部１３から効率的に撮影画像を読み込むことができる。
【００４４】
（変形例１）
高速記憶部１４５に格納できる画素数が低速記憶部１３の読み出し単位であることは必須ではなく、その整数倍の画素数でもよい。さらにそれ以外の画素数でもよい。また上述したＸ方向とＹ方向、すなわち列方向および行方向はそれぞれ入れ替えてもよい。
【００４５】
（変形例２）
上述した実施の形態では、撮影画像の解像度を１９２０ｘ１０８０として説明したが、撮影画像の解像度はこれに限定されない。撮影画像の解像度が上述した実施の形態と異なる場合には、これにあわせて高速記憶部１４５のＸ方向のサイズを変更する。具体的には、Ｘ方向は撮影画像におけるＸ方向の全画素の情報が格納できるサイズとする。なおＹ方向のサイズは、撮影画像の解像度の影響を受けない。
【００４６】
（変形例３）
上述した実施の形態では、高速記憶部１４５のＹ方向の幅、すなわち所定記憶行は撮影画像の８画素に相当する幅を有していた。しかし所定記憶行は「８」に限定されない。所定記憶行は、少なくとも簡易アドレス生成部１４２が算出するアドレス領域の最大のＹ方向の幅を有すればよい。ただし上述した（４）の作用効果を得るために、簡易アドレス生成部１４２が算出するアドレス領域の最大のＹ方向の幅を超える、最小の２のべき乗のサイズであることが望ましい。具体的には、簡易アドレス生成部１４２が算出するアドレス領域の最大のＹ方向の幅が１７の場合は、２＾４＜１７＜２＾５なので、２＾５すなわち３２とすることが望ましい。
【００４７】
ここで、簡易アドレス生成部１４２が算出するアドレス領域について補足すると、算出されるアドレス領域は、歪補正に基づくものなので、一般に中心からずれた周辺部ほど歪みが大きく、算出されるアドレス領域が大きくなる。また、レンズの歪みはレンズの加工精度や設計値により想定可能なので、事前に高速記憶部１４５のサイズを決定することができる。
【００４８】
（変形例４）
上述した実施の形態では歪補正部１４６の要求に応じて高速記憶部１４５から撮影画像の情報を読み出す際にＹ座標の値を算出した。しかし高速記憶部１４５に撮影画像の情報を格納する際に、撮影画像のＹ座標値と高速記憶部１４５におけるＹ座標の値の対応表を作成し、高速記憶部１４５から撮影画像の情報を読み出す際にその対応表を参照してもよい。
【００４９】
（変形例５）
上述した実施の形態では、キャッシュ部１４１は、図８のステップＳ３１０で説明したように、歪補正部１４６が画像情報を要求することを条件として撮影画像を低速記憶部１３から読み込んだ。しかし、歪補正部１４６からの要求を確認することなく、一定時間の経過ごとに撮影画像を低速記憶部１３から読み込んでもよい。この場合は、図８のステップＳ３１０において前回の低速記憶部１３からの読み込みから所定の時間が経過したか否かを判断すればよい。
【００５０】
（変形例６）
図５に示した高速記憶部１４５の構成は概念であり、物理的に２次元に配列されたメモリ領域を確保しなくてもよい。たとえば、プログラム言語における２次元配列や１次元配列の組み合わせにより、図５に示した高速記憶部１４５の構成を実現してもよい。
【００５１】
（変形例７）
上述した実施の形態では、低速記憶部１３はＳＤ−ＲＡＭであり、高速記憶部１４５はＦＰＧＡ上に確保される記憶領域であった。しかし、低速記憶部１３がより低速な記憶領域、たとえばＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリ、ハードディスクドライブなどでもよく、高速記憶部１４５がＳＤ−ＲＡＭでもよい。すなわち、低速記憶部１３よりも高速記憶部１４５のほうが少なくとも読み出し速度が速ければよい。なお高速記憶部１４５がＦＰＧＡ上に確保される記憶領域でない場合は、簡易アドレス生成部１４２、判定部１４３、および歪補正部１４６の少なくとも１つはＣＰＵがプログラムを実行することにより実現されてもよい。
【００５２】
さらにこのプログラムは、画像処理装置１が備える不図示の入出力インタフェースを用いて、必要なときに利用可能な媒体を介して、他の装置から読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やＦＰＧＡにより実現されてもよい。
【００５３】
上述した変形例は、それぞれ組み合わせてもよい。上記では、実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００５４】
１…画像処理装置
１１…画像入力部
１２…前処理部
１３…低速記憶部
１４…後処理部
１５…画像出力部
１４１…キャッシュ部
１４２…簡易アドレス生成部
１４３…判定部
１４４…管理テーブル
１４５…高速記憶部
１４６…歪補正部
１４７…アドレス生成部
１４８…補正部
【図１】
2019008674.tif 000003
【図２】
2019008674.tif 000004
【図３】
2019008674.tif 000005
【図４】
2019008674.tif 000006
【図５】
2019008674.tif 000007
【図６】
2019008674.tif 000008
【図７】
2019008674.tif 000009
【図８】
2019008674.tif 000010
【図９】
2019008674.tif 000011