(57)【要約】【課題】画像メモリのアクセス回数を削減することができる画像処理装置および画像処理方法を提供する。【解決手段】  画像処理部１０に搭載されていた画像データ処理部３３を画像メモリコントローラ３０に搭載させ、併せてアドレス変換部３２、制御部３１を搭載する構成とする。また、画像メモリ２０の仮想読み出しアドレスエリアを定義することによって、メモリ使用量を減らし、メモリアクセス回数を減らすことができ、通信速度の向上を図る。【選択図】図１
2011061603.tif 000002
【特許請求の範囲】
【請求項１】
画像データが記憶される画像メモリと、
前記画像メモリに書き込まれた前記画像データを読み出す時に、前記画像メモリの実アドレスエリアとは別に設けた仮想的な読み出しアドレスを用いて前記画像メモリをアクセスする手段と、
前記仮想的な読み出しアドレスを原画像データアドレスに変換するアドレス変換手段と、
前記原画像データアドレスによって前記画像メモリから読み出された原画像データに対し所定の演算を実行して、前記画像データとは異なる画像データを生成して出力する画像データ処理手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記画像データ処理手段は、拡大又は縮小するデータ処理であることを特徴とする請求項１に記載する画像処理装置。
【請求項３】
前記画像データ処理手段は、畳み込みフィルタ演算処理であることを特徴とする請求項1に記載する画像処理装置。
【請求項４】
前記画像データ処理手段は、画素拡張を行う画像処理であることを特徴とする請求項１に記載する画像処理装置。
【請求項５】
前記画像データ処理手段は、請求項２乃至請求項４に記載する２以上の処理手段を備えていることを特徴とする請求項１に記載する画像処理装置。
【請求項６】
前記アドレス変換手段は、矩形領域を連続したアドレスで読み出せるように変換することを特徴とする画像処理装置。
【請求項７】
画像メモリに記憶された画像データを読み出す時に、前記画像メモリの実アドレスエリアとは別に設けた仮想的な読み出しアドレスを用いて前記画像メモリをアクセスし、
前記仮想的な読み出しアドレスを原画像データアドレスに変換し、
前記変換後の原画像データアドレスによって前記画像メモリから読み出された原画像データに対し所定の演算を実行して、前記画像データとは異なる画像データを生成して出力すること、
を特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
画像処理装置の入力画像の高解像度化に伴い、画像メモリの容量不足および画像メモリと演算処理部間の画像転送速度が遅いことなどが問題となっている。
【０００３】
目的の画像処理結果を得る過程では、画像の拡大や縮小、畳み込み演算によるフィルタ等の変換処理を行うことが多い。その処理時には、変換を行う拡大縮小フィルタ処理部とメモリとの間で、大量のデータ転送が必要となる。更に具体的に述べると、画像処理部は画像処理を行う際に、
（１）原画像のデータを画像メモリからから読み出し、
（２）拡大縮小フィルタ部でデータ変換処理を行った後、その変換後のデータを画像メモリに書き込み、
（３）さらに画像メモリから変換後のデータを読み出して、後続する画像演算処理を実行する
という処理工程を経なければならないため、画像メモリの容量、アクセス回数が必然的に増えてしまう。
【０００４】
上記問題を解決する従来技術として、アドレス変換による間引きにより、画像データ量を削減する方法がある。画像データ量が少なければ、画像メモリの容量も減少し、画像転送するデータ量も減ることを利用したものである（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−１６６９９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の発明では、画像データを単純に間引くため、例えば、画像データを縮小表示する際には、フィルタ処理等を行った画像と比較して画質を劣化させることになる。また、この方式によると画像データの拡大に対応できない。
【０００７】
本発明は、上記問題点を解決するためになされたもので、画像メモリのアクセス回数を削減することができる画像処理装置および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の画像処理装置は、画像データが記憶される画像メモリと、前記画像メモリに書き込まれた前記画像データを読み出す時に、前記画像メモリの実アドレスエリアとは別に設けた仮想的な読み出しアドレスを用いて前記画像メモリをアクセスする手段と、前記仮想的な読み出しアドレスを原画像データアドレスに変換するアドレス変換手段と、前記原画像データアドレスによって前記画像メモリから読み出された原画像データに対し所定の演算を実行して、前記画像データとは異なる画像データを生成して出力する画像データ処理手段と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明の画像処理装置によれば、従来に比べ少ない回数の画像メモリへのアクセスによって処理後の画像データを読み出すことができる。仮想読み出しアドレスエリアを、画像処理部に定義することにより、画像メモリの使用容量を減らし、画像転送の高速化が図れる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係る画像処理装置の構成要素を示すブロック図。
【図２】上記実施形態に係るメモリコントローラ内に定義される仮想読み出しアドレスエリアの動作を示すアドレスマップ。
【図３】上記実施形態に係る領域外画素拡張を示す図。
【図４】上記実施形態に係るブロック単位でデータを読み出す動作を示す図。
【図５】上記実施形態に係るブロック単位でデータを読み出す具体例を示す図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施態様について図面を参照しながら説明する。
【００１２】
図１は、本発明の第１の実施形態に係る画像処理装置の構成を示すブロック図である。
【００１３】
図１に示すように、この画像処理装置は、画像処理部１０と、画像データを保存する画像メモリ２０と、画像処理部（ＣＰＵ）１０と画像メモリ２０とを接続する画像メモリコントローラ３０から構成される。
【００１４】
さらに、画像処理部１０は、画像データ処理を行った後の画像データを格納する内部記憶部１１（キャッシュメモリ）を持っている。また、画像メモリコントローラ３０は、制御部３１とアドレス変換部３２と画像データ処理部３３とを搭載して構成される。なお、内部記憶部１１の代わりに、外付けの記憶装置を取り付けても良い。また、制御部３１とアドレス変換部３２と画像データ処理部３３は、別々に構成しても良い。
【００１５】
画像処理部１０は、画像処理プロセッサで構成される。画像処理部１０は、例えば、背景差分方式による物体抽出、ステレオ方式による３次元計測、画像圧縮などの処理を行う。それらの処理を実行するために、画像メモリコントローラ３０に対し各種の指令を出して、画像メモリ２０をアクセスする。この時、画像処理部１０は、画像処理後の仮想アドレスを内部記憶部１１に出力し、画像処理された画像データの読み出しができなければ、直ちに画像メモリコントローラ３０へ当該仮想アドレスを出力する。
【００１６】
制御部３１は、画像処理部１０からの読み出し指令に応答して、画像処理後の仮想アドレスをアドレス変換部３２に出力する。また、制御部３１は、画像データ処理部３３へ画像処理の指令を通知する。
【００１７】
アドレス変換部３２は、制御部３１から入力された仮想アドレスを実アドレスに変換して制御部３１に出力する。制御部３１は、実アドレスを用いて画像メモリ２０から実画像データを読み出す。
【００１８】
画像データ処理部３３は、拡大縮小処理部、フィルタ処理部、周辺画素拡張処理部などで構成されている。画像データ処理部３３は、制御部３１からの画像処理指令を受けて、画像メモリ２０から読み出された実画像データに対して拡大縮小処理、又はフィルタ処理、又は周辺画素拡張処理などを実行して、その結果を画像処理部１０に出力する。
【００１９】
図２は、画像メモリ２０のアドレスマッピングを示している。即ち、画像メモリ２０は、実装されているメモリ領域であり、実画像データが記憶される通常読み出し／書き込みエリア２０ａを持っている。また、画像メモリ２０は、仮想的な空間として、１／２倍縮小画像読み出しエリア２０ｂ、２倍拡大画像読み出しエリア２０ｃ、フィルタ処理画像読み出しエリア２０ｄ、ブロック単位読み出しエリア２０ｅ、および領域外画像拡張読み出しエリア２０ｆなどを恰も持つように構成される。これらの１／２倍縮小画像読み出しエリア２０ｂ、２倍拡大画像読み出しエリア２０ｃ、フィルタ処理画像読み出しエリア２０ｄ、ブロック単位読み出しエリア２０ｅ、および領域外画像拡張読み出しエリア２０ｆは、内部記憶部１１に形成される記憶領域（キャッシュ対象領域）であるが、画像処理部１０による仮想アドレスの読み出しエリアとなる。
【００２０】
次に、本実施形態の動作について説明する。
【００２１】
カメラ入力部など（図示しない）はＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）方式で画像データを取り込み、通常の動作にて、画像メモリコントローラ３０を介して画像メモリ２０の通常読み出し／書き込みエリア２０ａに対して画像データの書き込み行う。
【００２２】
ここで例えば、画像処理部１０は、１／２倍の画像データを読み出したい場合は、画像メモリ２０の１／２倍縮小画像読み出しエリア２０ｂを示す仮想アドレス（例えば、ＦＦ１０００）を生成して、画像メモリコントローラ３０に対して読み出し指令を行う（１）。なお、内部記憶部１１から当該仮想アドレスの読み出しが実行される場合、画像メモリコントローラ３０への読み出し動作は禁止される。この場合、仮想アドレスから実アドレスの変換は、プログラム的に自動マッピングを行なうものでも、アドレス変換テーブルで変換するものでも任意である。
【００２３】
画像メモリコントローラ３０内の制御部３１は、画像処理部１０からの１／２縮小画像処理指令を解析して、画像データ処理部３３に対して当該指令を出力する（２．１）。また、制御部３１は、画像処理部１０から受信した仮想アドレス（例えば、ＦＦ１０００）をアドレス変換部３２に出力する（２．２）。
【００２４】
アドレス変換部３２は、１／２倍縮小画像読み出しエリア２０ｂに対する仮想アドレスを、通常読み出し／書き込みエリア２０ａの実アドレスへ変換する（２．３）。例えば、図示しないアドレス変換テーブルを用いて、仮想アドレスから実アドレスへ変換するが、これに限定されるものではない。そして、制御部３１はアドレス変換部３２で変換した実アドレスを画像メモリ２０に出力する（２．４）。これにより、画像メモリ２０の通常読み出し／書き込みエリア２０ａから原画像データが読み出される。読み出された原画像データは、画像データ処理部３３に送られる（３）。
【００２５】
画像データ処理部３３の拡大縮小処理部（図示せず）は、原画像データから１／２縮小画像データを作成する。そして、１／２倍縮小された画像データは、画像データ処理部３３から画像処理部１０へ送られる（４）。画像処理部１０は、１／２倍縮小された画像データを内部記憶部１１の上記仮想アドレスに対応する実アドレスに記憶し、以降の画像処理に利用する。なお、２倍拡張画像処理の場合は、仮想アドレスとしてＦＦ２０００が用いられる以外は、上記と同じ原理で２倍拡張画像データが得ることができる。
【００２６】
このとき、画像メモリ２０内の原画像データは変更されないため、原画像データを必要とする場合は、通常読み出し／書き込みエリア２０ａから読み出せば良い。なお、１／２倍縮小画像読み出しエリア２０ｂは１つに限定することはなく、画像メモリ２０内に複数の縮小（拡大）画像読み出しエリアを設けても良い。画像の拡大縮小処理では、複数の縮小（拡大）画像読み出しエリアを、直近サンプル補間、リニア補間、キュービックコンボリューション補間等の方式毎に割り当てることができる。また、拡大処理では、超解像による画像復元の方式が使えるようになる。
【００２７】
次に、フィルタ処理の画像読み出しについて説明する。図３は、フィルタ処理のための矩形領域を示した図である。
【００２８】
フィルタ処理では、画像領域Ｇ１内の矩形領域Ｇ２に対して、フィルタの特性をもった行列式によって畳み込み演算処理を行うものである。画像領域Ｇ１の縁の部分（以下、画像領域外Ｇ３と称する）に対してフィルタ処理を行う場合は、例えば、図３のように画像領域外Ｇ３１の画素を使用することとなる。この場合、拡張する画素値は、縁の値を使うか、フィルタ処理に適した定数を使うかを選択できるようにすれば良い。
【００２９】
画像処理部１０は、フィルタ処理の画像データを読み出したい場合は、画像メモリ２０のフィルタ処理画像読み出しエリア２０ｄを示す仮想アドレス（例えば、ＦＦ６０００）を生成して、画像メモリコントローラ３０に対して読み出し指令を行う（１）。同様に、内部記憶部１１から当該仮想アドレスの読み出しが実行される場合、画像メモリコントローラ３０への読み出し動作は禁止される。
【００３０】
画像メモリコントローラ３０内の制御部３１は、画像処理部１０からのフィルタ処理指令を解析して、画像データ処理部３３に対して当該指令を出力する（２．１）。また、制御部３１は、画像処理部１０から受信した仮想アドレス（例えば、ＦＦ６０００）をアドレス変換部３２に出力する（２．２）。
【００３１】
アドレス変換部３２は、フィルタ処理画像読み出しエリア２０ｄに対する仮想アドレスを、通常読み出し／書き込みエリア２０ａの実アドレスへ変換する（２．３）。そして、制御部３１はアドレス変換部３２で変換した実アドレスを画像メモリ２０に出力する（２．４）。これにより、画像メモリ２０の通常読み出し／書き込みエリア２０ａから原画像データが読み出される。読み出された原画像データは、画像データ処理部３３に送られる（３）。
【００３２】
画像データ処理部３３のフィルタ処理部（図示せず）は、原画像データからフィルタ処理画像データを作成する。図４のように、画像領域外Ｇ３１への拡張を行う場合、周辺画素拡張処理部（図示せず）が併せて動作することになる。そして、フィルタ処理された画像データは、画像データ処理部３３から画像処理部１０へ送られる（４）。画像処理部１０は、フィルタ処理された画像データを内部記憶部１１の上記仮想アドレスに対応する実アドレスに記憶し、以降の画像処理に利用する。
【００３３】
次に、ブロック単位の画像読み出し処理について説明する。図４は、ブロック単位の画像読み出しを示した図である。
【００３４】
指定したブロック領域毎の画像データが必要な場合、例えば図４に示すように画像データは、矢印方向のアドレスで画像メモリ２０上に格納されている。このため、通常読み込み／書き込みエリア２０ａをアクセスして、ブロック領域のデータを読み込む場合には、読み出しアドレスが不連続となり、内部記憶部１１に不要なデータが読み出されて、キャッシュ機能が効果的に動作しない。画像処理部１０は、上記不要なデータを取り込んだ場合当該データを削除したのち、次の処理に必要なブロックのデータを画像メモリ２０から読み出し、これを繰り返すことになる。本実施形態では、これを防ぐために、ブロック領域に対して連続したアドレスでアクセスするエリアを提供する。同様に、画像メモリコントローラ３０の制御部３１は、アドレス変換部３２を設定して画像処理部１０からのブロック単位読み出し要求に対して、連続したアドレスで画像メモリ２０の内容が読み込めるようにする。
【００３５】
即ち、画像処理部１０は、ブロック単位の画像データを読み出したい場合は、画像メモリ２０のブロック単位読み出しエリア２０ｅを示す仮想アドレス（例えば、ＦＦ８０００）を生成して、画像メモリコントローラ３０に対して読み出し指令を行う（１）。同様に、内部記憶部１１から当該仮想アドレスの読み出しが実行される場合、画像メモリコントローラ３０への読み出し動作は禁止される。
【００３６】
画像メモリコントローラ３０内の制御部３１は、画像処理部１０からのブロック単位読出指令を解析して、画像データ処理部３３に対して当該指令を出力する（２．１）。また、制御部３１は、画像処理部１０から受信した仮想アドレス（例えば、ＦＦ８０００）をアドレス変換部３２に出力する（２．２）。
【００３７】
アドレス変換部３２は、ブロック単位読み出しエリア２０ｅに対する仮想アドレスを、通常読み出し／書き込みエリア２０ａの実画像データ中のブロック領域を示すアドレスへ変換する（２．３）。この場合、ブロック領域の大きさ（ブロック長）に応じてアドレスが生成されることになる。そして、制御部３１はアドレス変換部３２で変換されたブロック領域を示すアドレスを画像メモリ２０に供給して（２．４）、画像メモリ２０の通常読み出し／書き込みエリア２０ａからブロック領域の原画像データを読み出す（３）。読み出されたブロック領域の原画像データは、画像データ処理部３３を介して画像処理部１０へ送られる（４）。画像処理部１０は、ブロック領域の画像データを内部記憶部１１の上記仮想アドレスに対応する実アドレスに記憶し、以降の画像処理に利用する。
【００３８】
図５を用いて、ブロック単位読み出しのアドレス変換について具体的に説明する。
【００３９】
図５のＷは実画像全体の幅、Ｈは実画像全体の高さ、ａは読み出すブロック５１の高さ、ｂは読み出すブロック５１の幅、（Ｘ，Ｙ）は読み出すブロック５１の左上端の座標、ｄｘは読み出すブロック５１内のＸ座標、ｄｙは読み出すブロック５１内のＹ座標、それぞれを示す。
【００４０】
ここで、ｒｅａｄ＿ａｄｄｒｅｓｓを画像処理部１０からの読み出しアドレス（アドレス変換の入力）、ｍｅｍ＿ａｄｄｒｅｓｓをアドレス変換部３２から得られるアドレス（アドレス変換の出力）、ｂｌｏｃｋ＿ａｄｄｒｅｓｓを左上から順番に振られるブロックのアドレスとする。このとき、アドレス変換後の出力アドレスｍｅｍ＿ａｄｄｒｅｓｓを入力アドレスｒｅａｄ＿ａｄｄｒｅｓｓから求める。
【００４１】
まず、読み出すブロック内のアドレスの座標は
ｄｘ＝ｒｅａｄ＿ａｄｄｒｅｓｓ％ｂ………（１）
ｄｙ＝（ｒｅａｄ＿ａｄｄｒｅｓｓ％（ａ＊ｂ）／ｂ………（２）
で現される。読みだされるブロックが何個目であるかは、
ｂｌｏｃｋ＿ａｄｄｒｅｓｓ＝ｒｅａｄ＿ａｄｄｒｅｓｓ／（ａ＊ｂ）………（３）
で現され、それぞれの左上端のアドレスは
Ｘ＝（ｂｌｏｃｋ＿ａｄｄｒｅｓｓ％（Ｗ／ｂ））＊ｂ………（４）
Ｙ＝（ｂｌｏｃｋ＿ａｄｄｒｅｓｓ／（Ｗ／ｂ））＊ａ………（５）
となる。上記（１）乃至（５）式を介することにより、出力アドレスが入力アドレス求められる。
【００４２】
ｍｅｍ＿ａｄｄｒｅｓｓ＝（Ｙ＋ｄｙ）＊Ｗ＋Ｘ＋ｄｘ………（６）
具体的な数値を代入して例示する。この際、Ｗ＝３２、Ｈ＝２４、ａ＝８、ｂ＝８と設定する。これらの画像パラメータの数値は、制御部３１内の設定レジスタに記憶される。ここで、読み出しアドレスｒｅａｄ＿ａｄｄｒｅｓｓ＝３３９とすると、上記（１）乃至（５）に代入すると、
ｄｘ＝３３９％８＝３
ｄｙ＝（３３９％（８＊８））／８＝２
ｂｌｏｃｋ＿ａｄｄｒｅｓｓ＝３３９／（８＊８）＝５
Ｘ＝（５％（３２／８））＊８＝８
Ｙ＝（５／（３２／８））＊８＝８
これらの値を、（６）に代入して
ｍｅｍ＿ａｄｄｒｅｓｓ＝（８＋２）＊３２＋８＋３＝３３１
と変換される。
【００４３】
以上、詳述した本実施形態によれば、画像メモリと画像処理部（ＣＰＵ）間で、１回の読み出しで拡大又は縮小された画像が得られる。同様に、１回の読み出しで畳み込みフィルタ演算を行った画像が得られる。また、画像の矩形領域が連続アドレスで読み出せることにより画像処理部１０の内部記憶部１１のキャッシュ利用率が向上する。さらに、リファレンス画像とテンプレート画像の類似度を計算するテンプレートマッチングを行うときのリファレンス画像の領域外拡張処理が不要となる。よって、原画像メモリの容量を、必要以上大きくすることはない。
【００４４】
なお、仮想的に定義されるアドレスエリアの種類や倍率などは、求められるデータ処理によって任意に組み合わせることができる。
【００４５】
なお本発明は、発明の要旨を逸脱しない範囲において、上述した実施形態を適宜設計変更することが可能であり、必要に応じて実施形態を適宜組み合わせても良い。
【符号の説明】
【００４６】
１０…画像処理部
１１…内部記憶部（画像処理部のキャッシュメモリ）
２０…画像メモリ
３０…画像メモリコントローラ
３１…制御部
３２…アドレス変換部
３３…画像データ処理部
５０…ブロック
５１…読み出すブロック
【図１】
2011061603.tif 000003
【図２】
2011061603.tif 000004
【図３】
2011061603.tif 000005
【図４】
2011061603.tif 000006
【図５】
2011061603.tif 000007