説明

画像処理装置および画像処理方法

【課題】画像メモリのアクセス回数を削減することができる画像処理装置および画像処理方法を提供する。
【解決手段】
画像処理部10に搭載されていた画像データ処理部33を画像メモリコントローラ30に搭載させ、併せてアドレス変換部32、制御部31を搭載する構成とする。また、画像メモリ20の仮想読み出しアドレスエリアを定義することによって、メモリ使用量を減らし、メモリアクセス回数を減らすことができ、通信速度の向上を図る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
画像処理装置の入力画像の高解像度化に伴い、画像メモリの容量不足および画像メモリと演算処理部間の画像転送速度が遅いことなどが問題となっている。
【0003】
目的の画像処理結果を得る過程では、画像の拡大や縮小、畳み込み演算によるフィルタ等の変換処理を行うことが多い。その処理時には、変換を行う拡大縮小フィルタ処理部とメモリとの間で、大量のデータ転送が必要となる。更に具体的に述べると、画像処理部は画像処理を行う際に、
(1)原画像のデータを画像メモリからから読み出し、
(2)拡大縮小フィルタ部でデータ変換処理を行った後、その変換後のデータを画像メモリに書き込み、
(3)さらに画像メモリから変換後のデータを読み出して、後続する画像演算処理を実行する
という処理工程を経なければならないため、画像メモリの容量、アクセス回数が必然的に増えてしまう。
【0004】
上記問題を解決する従来技術として、アドレス変換による間引きにより、画像データ量を削減する方法がある。画像データ量が少なければ、画像メモリの容量も減少し、画像転送するデータ量も減ることを利用したものである(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平4−166992号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1の発明では、画像データを単純に間引くため、例えば、画像データを縮小表示する際には、フィルタ処理等を行った画像と比較して画質を劣化させることになる。また、この方式によると画像データの拡大に対応できない。
【0007】
本発明は、上記問題点を解決するためになされたもので、画像メモリのアクセス回数を削減することができる画像処理装置および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明の画像処理装置は、画像データが記憶される画像メモリと、前記画像メモリに書き込まれた前記画像データを読み出す時に、前記画像メモリの実アドレスエリアとは別に設けた仮想的な読み出しアドレスを用いて前記画像メモリをアクセスする手段と、前記仮想的な読み出しアドレスを原画像データアドレスに変換するアドレス変換手段と、前記原画像データアドレスによって前記画像メモリから読み出された原画像データに対し所定の演算を実行して、前記画像データとは異なる画像データを生成して出力する画像データ処理手段と、を有することを特徴とする。
【発明の効果】
【0009】
本発明の画像処理装置によれば、従来に比べ少ない回数の画像メモリへのアクセスによって処理後の画像データを読み出すことができる。仮想読み出しアドレスエリアを、画像処理部に定義することにより、画像メモリの使用容量を減らし、画像転送の高速化が図れる。
【図面の簡単な説明】
【0010】
【図1】本発明の第1の実施形態に係る画像処理装置の構成要素を示すブロック図。
【図2】上記実施形態に係るメモリコントローラ内に定義される仮想読み出しアドレスエリアの動作を示すアドレスマップ。
【図3】上記実施形態に係る領域外画素拡張を示す図。
【図4】上記実施形態に係るブロック単位でデータを読み出す動作を示す図。
【図5】上記実施形態に係るブロック単位でデータを読み出す具体例を示す図。
【発明を実施するための形態】
【0011】
以下、本発明の実施態様について図面を参照しながら説明する。
【0012】
図1は、本発明の第1の実施形態に係る画像処理装置の構成を示すブロック図である。
【0013】
図1に示すように、この画像処理装置は、画像処理部10と、画像データを保存する画像メモリ20と、画像処理部(CPU)10と画像メモリ20とを接続する画像メモリコントローラ30から構成される。
【0014】
さらに、画像処理部10は、画像データ処理を行った後の画像データを格納する内部記憶部11(キャッシュメモリ)を持っている。また、画像メモリコントローラ30は、制御部31とアドレス変換部32と画像データ処理部33とを搭載して構成される。なお、内部記憶部11の代わりに、外付けの記憶装置を取り付けても良い。また、制御部31とアドレス変換部32と画像データ処理部33は、別々に構成しても良い。
【0015】
画像処理部10は、画像処理プロセッサで構成される。画像処理部10は、例えば、背景差分方式による物体抽出、ステレオ方式による3次元計測、画像圧縮などの処理を行う。それらの処理を実行するために、画像メモリコントローラ30に対し各種の指令を出して、画像メモリ20をアクセスする。この時、画像処理部10は、画像処理後の仮想アドレスを内部記憶部11に出力し、画像処理された画像データの読み出しができなければ、直ちに画像メモリコントローラ30へ当該仮想アドレスを出力する。
【0016】
制御部31は、画像処理部10からの読み出し指令に応答して、画像処理後の仮想アドレスをアドレス変換部32に出力する。また、制御部31は、画像データ処理部33へ画像処理の指令を通知する。
【0017】
アドレス変換部32は、制御部31から入力された仮想アドレスを実アドレスに変換して制御部31に出力する。制御部31は、実アドレスを用いて画像メモリ20から実画像データを読み出す。
【0018】
画像データ処理部33は、拡大縮小処理部、フィルタ処理部、周辺画素拡張処理部などで構成されている。画像データ処理部33は、制御部31からの画像処理指令を受けて、画像メモリ20から読み出された実画像データに対して拡大縮小処理、又はフィルタ処理、又は周辺画素拡張処理などを実行して、その結果を画像処理部10に出力する。
【0019】
図2は、画像メモリ20のアドレスマッピングを示している。即ち、画像メモリ20は、実装されているメモリ領域であり、実画像データが記憶される通常読み出し/書き込みエリア20aを持っている。また、画像メモリ20は、仮想的な空間として、1/2倍縮小画像読み出しエリア20b、2倍拡大画像読み出しエリア20c、フィルタ処理画像読み出しエリア20d、ブロック単位読み出しエリア20e、および領域外画像拡張読み出しエリア20fなどを恰も持つように構成される。これらの1/2倍縮小画像読み出しエリア20b、2倍拡大画像読み出しエリア20c、フィルタ処理画像読み出しエリア20d、ブロック単位読み出しエリア20e、および領域外画像拡張読み出しエリア20fは、内部記憶部11に形成される記憶領域(キャッシュ対象領域)であるが、画像処理部10による仮想アドレスの読み出しエリアとなる。
【0020】
次に、本実施形態の動作について説明する。
【0021】
カメラ入力部など(図示しない)はDMA(Direct Memory Access)方式で画像データを取り込み、通常の動作にて、画像メモリコントローラ30を介して画像メモリ20の通常読み出し/書き込みエリア20aに対して画像データの書き込み行う。
【0022】
ここで例えば、画像処理部10は、1/2倍の画像データを読み出したい場合は、画像メモリ20の1/2倍縮小画像読み出しエリア20bを示す仮想アドレス(例えば、FF1000)を生成して、画像メモリコントローラ30に対して読み出し指令を行う(1)。なお、内部記憶部11から当該仮想アドレスの読み出しが実行される場合、画像メモリコントローラ30への読み出し動作は禁止される。この場合、仮想アドレスから実アドレスの変換は、プログラム的に自動マッピングを行なうものでも、アドレス変換テーブルで変換するものでも任意である。
【0023】
画像メモリコントローラ30内の制御部31は、画像処理部10からの1/2縮小画像処理指令を解析して、画像データ処理部33に対して当該指令を出力する(2.1)。また、制御部31は、画像処理部10から受信した仮想アドレス(例えば、FF1000)をアドレス変換部32に出力する(2.2)。
【0024】
アドレス変換部32は、1/2倍縮小画像読み出しエリア20bに対する仮想アドレスを、通常読み出し/書き込みエリア20aの実アドレスへ変換する(2.3)。例えば、図示しないアドレス変換テーブルを用いて、仮想アドレスから実アドレスへ変換するが、これに限定されるものではない。そして、制御部31はアドレス変換部32で変換した実アドレスを画像メモリ20に出力する(2.4)。これにより、画像メモリ20の通常読み出し/書き込みエリア20aから原画像データが読み出される。読み出された原画像データは、画像データ処理部33に送られる(3)。
【0025】
画像データ処理部33の拡大縮小処理部(図示せず)は、原画像データから1/2縮小画像データを作成する。そして、1/2倍縮小された画像データは、画像データ処理部33から画像処理部10へ送られる(4)。画像処理部10は、1/2倍縮小された画像データを内部記憶部11の上記仮想アドレスに対応する実アドレスに記憶し、以降の画像処理に利用する。なお、2倍拡張画像処理の場合は、仮想アドレスとしてFF2000が用いられる以外は、上記と同じ原理で2倍拡張画像データが得ることができる。
【0026】
このとき、画像メモリ20内の原画像データは変更されないため、原画像データを必要とする場合は、通常読み出し/書き込みエリア20aから読み出せば良い。なお、1/2倍縮小画像読み出しエリア20bは1つに限定することはなく、画像メモリ20内に複数の縮小(拡大)画像読み出しエリアを設けても良い。画像の拡大縮小処理では、複数の縮小(拡大)画像読み出しエリアを、直近サンプル補間、リニア補間、キュービックコンボリューション補間等の方式毎に割り当てることができる。また、拡大処理では、超解像による画像復元の方式が使えるようになる。
【0027】
次に、フィルタ処理の画像読み出しについて説明する。図3は、フィルタ処理のための矩形領域を示した図である。
【0028】
フィルタ処理では、画像領域G1内の矩形領域G2に対して、フィルタの特性をもった行列式によって畳み込み演算処理を行うものである。画像領域G1の縁の部分(以下、画像領域外G3と称する)に対してフィルタ処理を行う場合は、例えば、図3のように画像領域外G31の画素を使用することとなる。この場合、拡張する画素値は、縁の値を使うか、フィルタ処理に適した定数を使うかを選択できるようにすれば良い。
【0029】
画像処理部10は、フィルタ処理の画像データを読み出したい場合は、画像メモリ20のフィルタ処理画像読み出しエリア20dを示す仮想アドレス(例えば、FF6000)を生成して、画像メモリコントローラ30に対して読み出し指令を行う(1)。同様に、内部記憶部11から当該仮想アドレスの読み出しが実行される場合、画像メモリコントローラ30への読み出し動作は禁止される。
【0030】
画像メモリコントローラ30内の制御部31は、画像処理部10からのフィルタ処理指令を解析して、画像データ処理部33に対して当該指令を出力する(2.1)。また、制御部31は、画像処理部10から受信した仮想アドレス(例えば、FF6000)をアドレス変換部32に出力する(2.2)。
【0031】
アドレス変換部32は、フィルタ処理画像読み出しエリア20dに対する仮想アドレスを、通常読み出し/書き込みエリア20aの実アドレスへ変換する(2.3)。そして、制御部31はアドレス変換部32で変換した実アドレスを画像メモリ20に出力する(2.4)。これにより、画像メモリ20の通常読み出し/書き込みエリア20aから原画像データが読み出される。読み出された原画像データは、画像データ処理部33に送られる(3)。
【0032】
画像データ処理部33のフィルタ処理部(図示せず)は、原画像データからフィルタ処理画像データを作成する。図4のように、画像領域外G31への拡張を行う場合、周辺画素拡張処理部(図示せず)が併せて動作することになる。そして、フィルタ処理された画像データは、画像データ処理部33から画像処理部10へ送られる(4)。画像処理部10は、フィルタ処理された画像データを内部記憶部11の上記仮想アドレスに対応する実アドレスに記憶し、以降の画像処理に利用する。
【0033】
次に、ブロック単位の画像読み出し処理について説明する。図4は、ブロック単位の画像読み出しを示した図である。
【0034】
指定したブロック領域毎の画像データが必要な場合、例えば図4に示すように画像データは、矢印方向のアドレスで画像メモリ20上に格納されている。このため、通常読み込み/書き込みエリア20aをアクセスして、ブロック領域のデータを読み込む場合には、読み出しアドレスが不連続となり、内部記憶部11に不要なデータが読み出されて、キャッシュ機能が効果的に動作しない。画像処理部10は、上記不要なデータを取り込んだ場合当該データを削除したのち、次の処理に必要なブロックのデータを画像メモリ20から読み出し、これを繰り返すことになる。本実施形態では、これを防ぐために、ブロック領域に対して連続したアドレスでアクセスするエリアを提供する。同様に、画像メモリコントローラ30の制御部31は、アドレス変換部32を設定して画像処理部10からのブロック単位読み出し要求に対して、連続したアドレスで画像メモリ20の内容が読み込めるようにする。
【0035】
即ち、画像処理部10は、ブロック単位の画像データを読み出したい場合は、画像メモリ20のブロック単位読み出しエリア20eを示す仮想アドレス(例えば、FF8000)を生成して、画像メモリコントローラ30に対して読み出し指令を行う(1)。同様に、内部記憶部11から当該仮想アドレスの読み出しが実行される場合、画像メモリコントローラ30への読み出し動作は禁止される。
【0036】
画像メモリコントローラ30内の制御部31は、画像処理部10からのブロック単位読出指令を解析して、画像データ処理部33に対して当該指令を出力する(2.1)。また、制御部31は、画像処理部10から受信した仮想アドレス(例えば、FF8000)をアドレス変換部32に出力する(2.2)。
【0037】
アドレス変換部32は、ブロック単位読み出しエリア20eに対する仮想アドレスを、通常読み出し/書き込みエリア20aの実画像データ中のブロック領域を示すアドレスへ変換する(2.3)。この場合、ブロック領域の大きさ(ブロック長)に応じてアドレスが生成されることになる。そして、制御部31はアドレス変換部32で変換されたブロック領域を示すアドレスを画像メモリ20に供給して(2.4)、画像メモリ20の通常読み出し/書き込みエリア20aからブロック領域の原画像データを読み出す(3)。読み出されたブロック領域の原画像データは、画像データ処理部33を介して画像処理部10へ送られる(4)。画像処理部10は、ブロック領域の画像データを内部記憶部11の上記仮想アドレスに対応する実アドレスに記憶し、以降の画像処理に利用する。
【0038】
図5を用いて、ブロック単位読み出しのアドレス変換について具体的に説明する。
【0039】
図5のWは実画像全体の幅、Hは実画像全体の高さ、aは読み出すブロック51の高さ、bは読み出すブロック51の幅、(X,Y)は読み出すブロック51の左上端の座標、dxは読み出すブロック51内のX座標、dyは読み出すブロック51内のY座標、それぞれを示す。
【0040】
ここで、read_addressを画像処理部10からの読み出しアドレス(アドレス変換の入力)、mem_addressをアドレス変換部32から得られるアドレス(アドレス変換の出力)、block_addressを左上から順番に振られるブロックのアドレスとする。このとき、アドレス変換後の出力アドレスmem_addressを入力アドレスread_addressから求める。
【0041】
まず、読み出すブロック内のアドレスの座標は
dx=read_address%b………(1)
dy=(read_address%(a*b)/b………(2)
で現される。読みだされるブロックが何個目であるかは、
block_address=read_address/(a*b)………(3)
で現され、それぞれの左上端のアドレスは
X=(block_address%(W/b))*b………(4)
Y=(block_address/(W/b))*a………(5)
となる。上記(1)乃至(5)式を介することにより、出力アドレスが入力アドレス求められる。
【0042】
mem_address=(Y+dy)*W+X+dx………(6)
具体的な数値を代入して例示する。この際、W=32、H=24、a=8、b=8と設定する。これらの画像パラメータの数値は、制御部31内の設定レジスタに記憶される。ここで、読み出しアドレスread_address=339とすると、上記(1)乃至(5)に代入すると、
dx=339%8=3
dy=(339%(8*8))/8=2
block_address=339/(8*8)=5
X=(5%(32/8))*8=8
Y=(5/(32/8))*8=8
これらの値を、(6)に代入して
mem_address=(8+2)*32+8+3=331
と変換される。
【0043】
以上、詳述した本実施形態によれば、画像メモリと画像処理部(CPU)間で、1回の読み出しで拡大又は縮小された画像が得られる。同様に、1回の読み出しで畳み込みフィルタ演算を行った画像が得られる。また、画像の矩形領域が連続アドレスで読み出せることにより画像処理部10の内部記憶部11のキャッシュ利用率が向上する。さらに、リファレンス画像とテンプレート画像の類似度を計算するテンプレートマッチングを行うときのリファレンス画像の領域外拡張処理が不要となる。よって、原画像メモリの容量を、必要以上大きくすることはない。
【0044】
なお、仮想的に定義されるアドレスエリアの種類や倍率などは、求められるデータ処理によって任意に組み合わせることができる。
【0045】
なお本発明は、発明の要旨を逸脱しない範囲において、上述した実施形態を適宜設計変更することが可能であり、必要に応じて実施形態を適宜組み合わせても良い。
【符号の説明】
【0046】
10…画像処理部
11…内部記憶部(画像処理部のキャッシュメモリ)
20…画像メモリ
30…画像メモリコントローラ
31…制御部
32…アドレス変換部
33…画像データ処理部
50…ブロック
51…読み出すブロック

【特許請求の範囲】
【請求項1】
画像データが記憶される画像メモリと、
前記画像メモリに書き込まれた前記画像データを読み出す時に、前記画像メモリの実アドレスエリアとは別に設けた仮想的な読み出しアドレスを用いて前記画像メモリをアクセスする手段と、
前記仮想的な読み出しアドレスを原画像データアドレスに変換するアドレス変換手段と、
前記原画像データアドレスによって前記画像メモリから読み出された原画像データに対し所定の演算を実行して、前記画像データとは異なる画像データを生成して出力する画像データ処理手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記画像データ処理手段は、拡大又は縮小するデータ処理であることを特徴とする請求項1に記載する画像処理装置。
【請求項3】
前記画像データ処理手段は、畳み込みフィルタ演算処理であることを特徴とする請求項1に記載する画像処理装置。
【請求項4】
前記画像データ処理手段は、画素拡張を行う画像処理であることを特徴とする請求項1に記載する画像処理装置。
【請求項5】
前記画像データ処理手段は、請求項2乃至請求項4に記載する2以上の処理手段を備えていることを特徴とする請求項1に記載する画像処理装置。
【請求項6】
前記アドレス変換手段は、矩形領域を連続したアドレスで読み出せるように変換することを特徴とする画像処理装置。
【請求項7】
画像メモリに記憶された画像データを読み出す時に、前記画像メモリの実アドレスエリアとは別に設けた仮想的な読み出しアドレスを用いて前記画像メモリをアクセスし、
前記仮想的な読み出しアドレスを原画像データアドレスに変換し、
前記変換後の原画像データアドレスによって前記画像メモリから読み出された原画像データに対し所定の演算を実行して、前記画像データとは異なる画像データを生成して出力すること、
を特徴とする画像処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−61603(P2011−61603A)
【公開日】平成23年3月24日(2011.3.24)
【国際特許分類】
【出願番号】特願2009−210554(P2009−210554)
【出願日】平成21年9月11日(2009.9.11)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】