説明

画像処理装置、画像処理方法及びプログラム

【課題】通常のフィルター演算処理を行うときも、サブサンプリングフィルター演算処理を行うときも、演算手段において無駄な演算処理が行われることを防止する。
【解決手段】データ供給部102において、画像メモリ101から読み出された複数の画素データをレジスタ120〜126に一時的に記憶すると共に一方向に順次シフトしながら出力し、各積和演算器(演算手段)160〜163において、データ供給部102から出力される複数の画素データとフィルターカーネル103aにおけるフィルター係数とを用いた演算処理を並列に行う。この際、データ供給部102では、セレクタ110及び111において、フィルター演算処理の種類に応じて、各レジスタ(121又は124、及び、123又は126)に記憶されている画素データを選択し、当該選択した画素データを各積和演算器(161及び163)に出力するようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させてフィルター演算処理を行う画像処理装置及び画像処理方法、並びに、当該画像処理方法をコンピュータに実行させるためのプログラムに関するものである。
【背景技術】
【0002】
従来から、特に画像処理の分野では、画素配列が2次元になっていることから、例えば2次元のフィルター処理に代表される2次元のデータ演算が頻繁に行われている。このような演算に対して、下記の特許文献1では、積和演算器に代表されるような演算器を複数用意し、演算器に供給される演算対象画像の画素データを、複数の演算器間で共有して並列処理させている。そのことで、演算処理の高速化、並びに演算対象画像の画素データの効率的な使用を達成しようとしている。
【0003】
例えば、特許文献1では、図8に示されるような構成の演算装置(画像処理装置)を用いている。
図8は、従来例を示し、画像データに対して2次元フィルターの演算を行う演算装置(画像処理装置)の構成の一例を示すブロック図である。図8に示す演算装置では、出力画像の複数画素(図8では4画素)のフィルター演算処理を並列に行うことができる。
【0004】
図8に示す演算装置(画像処理装置)は、演算対象画像の画素データを保持するメモリ500、パラレル入力・パラレル出力ができるシフトレジスタ501、及び、積和演算器560〜563から構成されている。
【0005】
積和演算器560〜563は、乗算器530〜533、加算器540〜543、及び、レジスタ550〜553から構成されている。このレジスタ550〜553には、それぞれ、乗算器530〜533及び加算器540〜543を用いて積和演算された結果が格納される。
【0006】
シフトレジスタ501は、データをパラレルロードするかシフトするかを選択するセレクタ510〜515、及び、レジスタ520〜525から構成されている。
【0007】
図9は、図8に示す演算装置を用いてフィルター演算処理を行う場合の入力画像(演算対象画像)、フィルターカーネル、及び、演算出力画像(演算結果画像)を示す模式図である。具体的に、図9(a)に入力画像(演算対象画像)を示し、図9(b)にフィルターカーネルを示し、図9(c)に演算出力画像(演算結果画像)を示す。また、図10は、図9に示す画像等を用いて、図8の演算装置を動作させたときのタイムチャートである。
【0008】
図8、図9及び図10を用いて、従来の画像処理装置の動作を説明する。
まず、図10の時間t0では、メモリ500から、図9(a)に示す演算対象画像の画素データD00、D10、…、D50が読み出される。このとき、セレクタ510〜515は、メモリ500からの入力を選択し、それぞれ、レジスタ520〜525へ出力する。
【0009】
続いて、図10の時間t1では、セレクタ510〜515から出力されているD00、D10、…、D50が、それぞれ、レジスタ520〜525にロードされると同時に、画素データD00、D10、D20、D30が積和演算器560〜563に出力される。同時に、図9(b)に示すフィルターカーネルにおけるフィルター係数W00が積和演算器560〜563に出力されることにより、積和演算が行われる。この際、セレクタの出力は、前段のレジスタの出力を選択するように切り替えられる。
【0010】
続いて、図10の時間t2では、セレクタ510〜514から出力されているD10、…、D50が、それぞれ、レジスタ520〜524にシフトされると同時に、画素データD10、D20、D30、D40が積和演算器560〜563に出力される。同時に、図9(b)に示すフィルターカーネルにおけるフィルター係数W10が積和演算器560〜563に出力されることにより、これまでの結果(レジスタ550〜553に保持されている結果)とあわせて積和演算される。この際、セレクタの出力は、前段のレジスタの出力を選択したまま変化しない。
【0011】
続いて、図10の時間t3では、セレクタ510〜513から出力されているD20、…、D50が、それぞれ、レジスタ520〜523にシフトされると同時に、画素データD20、D30、D40、D50が積和演算器560〜563に出力される。同時に、図9(b)に示すフィルターカーネルにおけるフィルター係数W20が積和演算器560〜563に出力されることにより、これまでの結果(レジスタ550〜553に保持されている結果)とあわせて積和演算される。この際、セレクタの出力は、メモリ500からの入力を選択するように切り替えられる。
【0012】
このような動作を繰り返すことで、時間t10において、レジスタ550〜553にフィルター演算結果R11〜R41が格納される。さらに、フィルターカーネルを演算対象画像上でスキャンさせながら、この動作を繰り返すことで、入力画像の全面にわたるフィルター演算処理が可能となっている。
【0013】
【特許文献1】特開2004−13873号公報
【発明の開示】
【発明が解決しようとする課題】
【0014】
しかしながら、特許文献1では、演算出力画像が並列に出力されるため、間引きフィルター演算処理(サブサンプリングフィルター演算処理)を効率よく行えないという問題がある。
【0015】
ここでいう、間引きフィルター演算処理(サブサンプリングフィルター演算処理)とは、演算対象画像を間引いてフィルター演算処理を行うことではなく、演算出力画像を間引く演算処理を意味する。通常のフィルター演算処理では、演算対象画像に対して、フィルターカーネルを1画素ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得る。これに対し、サブサンプリングフィルター演算処理では、フィルターカーネルを複数画素(例えば2画素)ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得ることになる。
【0016】
例えば、フィルターカーネルを2画素ずつずらすサブサンプリングフィルター演算処理(これを「2対1のサブサンプリングフィルター演算処理」と称する)は、通常のフィルター演算処理に比べて計算量が4分の1になり、高速に演算を行うことが可能になる。
【0017】
例えば、図9(a)に示す演算対象画像に対して、2対1のサブサンプリングフィルター演算処理を行うと、図11に示された演算出力画像になる(演算出力画像の縦横サイズは、演算対象画像の約半分となる)。
【0018】
しかしながら、このサブサンプリングフィルター演算処理を特許文献1の装置を用いて行うと、水平方向には4画素並列で演算出力画像が出力されるため(例えば、R11、R21、R31、R41が同時に出力されるため)、出力結果を間引くことになる。したがって、特許文献1の技術では、計算量を効率よく削減できない(ただし、垂直方向には、削減可能なので、計算量は、通常のフィルター演算処理に比べて2分の1にはなる)。この場合、積和演算器561及び563が演算した結果(R21、R41)は、結果的に間引かれてしまうので、無駄になっている。
【0019】
つまり、従来の技術では、フィルター演算処理の計算量の削減を目指して、通常のフィルター演算処理をサブサンプリングフィルター演算処理に置き換えたとしても、期待されるほど計算量の削減の効果が得られないという問題があった。例えば、計算量を4分の1に削減することを目的として、2対1のサブサンプリングフィルター演算処理を行ったとしても、実際の計算量は、2分の1にしか削減できないという問題があった。
【0020】
本発明は上述した問題点に鑑みてなされたものであり、通常のフィルター演算処理を行うときも、サブサンプリングフィルター演算処理を行うときも、演算手段において無駄な演算処理が行われることを防止することを目的とする。
【課題を解決するための手段】
【0021】
本発明の画像処理装置は、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理装置であって、前記画像メモリから読み出された複数の画素データを一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給手段と、前記フィルターカーネルにおけるフィルター係数と前記データ供給手段から出力される複数の画素データとを用いた演算処理を並列に行う複数の演算手段とを有し、前記データ供給手段は、前記画像メモリから読み出された複数の画素データを一時的に記憶する複数の記憶手段と、前記フィルター演算処理の種類に応じて、前記複数の演算手段の少なくとも1つの特定の演算手段に対して、前記複数の記憶手段の1つを選択し、当該選択した記憶手段に記憶された画素データを前記特定の演算手段に出力する選択手段とを含む。
【0022】
本発明の画像処理方法は、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法であって、前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとを有し、前記データ供給ステップは、前記フィルター演算処理の種類に応じて、前記複数の演算手段の少なくとも1つの特定の演算手段に対して、前記複数の記憶手段の1つを選択し、当該選択した記憶手段に記憶された画素データを前記特定の演算手段に出力する選択ステップを含む。
【0023】
本発明のプログラムは、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法をコンピュータに実行させるためのプログラムであって、前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとをコンピュータに実行させ、前記データ供給ステップは、前記フィルター演算処理の種類に応じて、前記複数の演算手段の少なくとも1つの特定の演算手段に対して、前記複数の記憶手段の1つを選択し、当該選択した記憶手段に記憶された画素データを前記特定の演算手段に出力する選択ステップを含む。
【発明の効果】
【0024】
本発明によれば、通常のフィルター演算処理を行うときも、サブサンプリングフィルター演算処理を行うときも、演算手段において無駄な演算処理が行われることを防止することが可能となる。
【発明を実施するための最良の形態】
【0025】
次に、本発明における諸実施形態について説明する。
【0026】
(第1の実施形態)
以下に、本発明の第1の実施形態について説明を行う。
図1は、本発明の第1の実施形態に係る画像処理装置の概略構成の一例を示すブロック図である。
【0027】
本実施形態における画像処理装置100は、後述する積和演算器(160〜163)を4個用いることにより、演算出力画像の4画素分を並列に得られるような構成になっている。ここで、この並列に得られる演算出力画像の画素数を「並列度」と称する。本実施形態では、並列度が4となる。
【0028】
また、本実施形態における画像処理装置100は、通常のフィルター演算処理と、2対1のサブサンプリングフィルター演算処理が行えるような構成になっている。また、このときのサブサンプリングする比(演算対象画像に対して何画素ずらしてフィルター演算処理を行うのかを示す値)をサブサンプリング比と称する。本実施形態では、サブサンプリング比が2の場合の例を示す。また、通常のフィルター演算処理を1対1のサブサンプリングフィルター演算処理と考えると、本実施形態の画像処理装置100では、サブサンプリング比が1と2の両方のフィルター演算処理が行えるということもできる。
【0029】
画像処理装置100は、画像メモリ101、データ供給部102、フィルター係数メモリ103、フィルター係数メモリ読出し制御部104、画像メモリ読出し制御部105、フィルター演算制御部106及び積和演算器160〜163を有して構成されている。
【0030】
本実施形態の画像処理装置100は、画像メモリ101に記憶されている画像の画素データに対してフィルターカーネル(103a)を走査させて、フィルター演算処理を行うものである。
【0031】
画像メモリ101は、外部装置から入力された入力画像、即ち、演算対象画像を格納しているメモリである。
【0032】
フィルター係数メモリ103は、複数のフィルター係数を具備するフィルターカーネル103aを記憶するメモリである。フィルター係数メモリ103からは、フィルターカーネル103aにおけるフィルター係数が順次出力される。
【0033】
積和演算器(演算手段)160〜163は、それぞれ、乗算器130〜133、加算器140〜143、及び、レジスタ150〜153を有して構成されている。積和演算器160〜163は、データ供給部102から出力(供給)される複数の画素データとフィルターカーネル103aにおけるフィルター係数とを用いた演算処理を並列に行う。より具体的に、積和演算器160〜163は、データ供給部102から供給される演算対象画像に係る画像データとフィルター係数との乗算結果を累積加算する処理を並列に行う。また説明の都合上、積和演算器160を先頭の積和演算器とし、積和演算器の順とは、160、161、162、163の順を意味するものとする。
【0034】
乗算器130〜133は、それぞれ、データ供給部102の出力と、フィルター係数メモリ103から入力されたフィルター係数とを掛け合わせて、その結果を出力する。加算器140〜143は、それぞれ、各乗算器130〜133からの出力と、レジスタ150〜153のデータとを加算する。レジスタ150〜153は、それぞれ、加算器140〜143からの出力データを蓄積する。
【0035】
データ供給部(データ供給手段)102は、パラレル出力可能なシフトレジスタ112(レジスタ120〜126で構成)と、セレクタ110及び111を有して構成されている。データ供給部102は、画像メモリ101から読み出された複数の画素データを一時的に記憶すると共に一方向(本実施形態では、水平方向)に順次シフトしながら出力する。より具体的に、データ供給部102は、画像メモリ101から入力される画素データDxyを、内蔵するレジスタ分(本実施形態では7画素分)蓄積し、積和演算器160〜163にパラレル出力する。したがって、シフトレジスタ112のビット幅(シフトレジスタ112を構成するレジスタ120〜126のビット幅)は、少なくとも演算対象画像(入力画像)の画素データDxyのビット幅と同じだけはある。
【0036】
図1では、画像メモリ101から読み出された複数の画素データを一時的に記憶するレジスタ(記憶手段)120〜126の出力は、以下の1〜3のいずれかとなるように接続されている。
1.積和演算器には入力されない(例えばレジスタ125)
2.直接、積和演算器に入力される(例えばレジスタ120)
3.セレクタを介して積和演算器に入力される(例えばレジスタ121)
この接続形態は、以下に示す規則によって決定されている。
【0037】
まず、以下に示す[レジスタのブロックへの分類]に従って、レジスタ120〜126は、複数あるブロックのいずれか、或いは複数に属するようになっている。また、どのブロックにも分類されないレジスタもある。以下に示す[レジスタのブロックへの分類]から明らかなように、ブロックの数は、サブサンプリング比の種類の数と等しくなる。本実施形態では、サブサンプリング比が1と2の2種類なので、ブロックの数も2(便宜上、第1のブロックと第2のブロックと称する)となる。
【0038】
[レジスタのブロックへの分類]
シフトレジスタ112の先頭のレジスタ120からサブサンプリング比1ごとに存在する、最初の並列度(本実施形態では4)数個のレジスタは、第1のブロックに属する。具体的に、本実施形態では、レジスタ120、121、122、123の4つのレジスタが第1のブロックに属する。
シフトレジスタ112の先頭のレジスタ120からサブサンプリング比2ごとに存在する、最初の並列度(本実施形態では4)数個のレジスタは、第2のブロックに属する。具体的に、本実施形態では、レジスタ120、122、124、126の4つのレジスタが第2のブロックに属する。
【0039】
通常のフィルター演算処理と、サブサンプリングフィルター演算処理の違いは、「フィルターカーネル103aを1画素ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得る」か、「フィルターカーネル103aを複数画素(例えば2画素)ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得る」かの違いである。
【0040】
したがって、上述した第1のブロックに属するレジスタは、フィルターカーネル103aを1画素ずつずらしながらフィルター演算処理を行う場合に必要な画素データが供給されるレジスタを意味する。また、第2のブロックに属するレジスタは、フィルターカーネル103aを2画素ずつずらしながらフィルター演算処理を行う場合に必要な画素データが供給されるレジスタを意味する。
【0041】
即ち、レジスタ120〜126は、フィルター演算処理の種類に応じて複数のブロックに分類される。
【0042】
そして、本実施形態の画像処理装置100では、どちらか一方のブロックに属しているレジスタの出力のうち、どちらのブロックに属しているレジスタの出力を積和演算器160〜163に入力させるのかをセレクタ110及び111で選択する。このようにして、本実施形態の画像処理装置100では、通常のフィルター演算処理とサブサンプリングフィルター演算処理との両方を同一の回路構成で行うことができるようにしている。
【0043】
以下の表1に、レジスタ120〜126に関して、[レジスタのブロックへの分類]を適用した結果を示す。
【0044】
【表1】

【0045】
ここで、第1のブロックに属するどのレジスタの出力と、第2のレジスタに属するどのレジスタの出力とを選択肢として組み合わせて、その選択結果をどの積和演算器に入力させるかを決定する必要がある。基本的には、第1のブロックに属するレジスタの出力と第2のブロックに属するレジスタの出力をどのように組み合わせてもよく、また、その選択結果をどの積和演算器に入力させてもよい。しかしながら、本実施形態では、なるべくセレクタを少なくすることを目的とした場合について、以下に説明する。
【0046】
セレクタは、第1のブロックに属するレジスタの出力と、第2のレジスタに属するレジスタの出力とを選択するために用いられるので、これを少なくするには、まず、両方のブロックに属しているレジスタ120及び122の出力には用いないように構成する。また、当然であるが、どのブロックにも属していないレジスタ125の出力は、積和演算器160〜163には入力されない。
【0047】
本実施形態では、上述したように、両方のブロックに属しているレジスタ120及び122の出力には、セレクタを用いないようにすることを優先している。さらに、積和演算器160〜163からのフィルター演算結果の出力順序が、通常のフィルター演算処理とサブサンプリングフィルター演算処理とでなるべく変化しないように、選択肢の組み合わせ及びその選択結果をどの積和演算器に入力するのかを決定している。
【0048】
具体的に、本実施形態では、レジスタ120〜126は、以下に示す[レジスタと積和演算器との対応付け1]に従って、積和演算器160〜163のいずれか、或いはそれ以外に対応付けられる。
【0049】
[レジスタと積和演算器との対応付け1]
シフトレジスタ112の最初の並列度(本実施形態では4)数個のレジスタは、先頭のレジスタ120から順(120、121、122、123の順)に、積和演算器の順(160、161、162、163の順)に対応付けられる。
続く、並列度(本実施形態では4)数個のレジスタは、順番が1つ後ろにずれた積和演算器から順に対応付けられる。つまり、続きのレジスタから順(124、125、126の順)に、順番が1つ後ろにずれた積和演算器の順(161、162、163の順)に対応付けられる。なお、順番が1つ後ろにずれた積和演算器が存在しなければ、対応付けられる演算器はないものとする。
【0050】
このようにして対応付けを行い、1つの積和演算器に対して複数のレジスタが対応付けられた場合は、各レジスタの出力にセレクタを接続し、その選択結果を積和演算器に入力するようにする。ただし、上述した[レジスタのブロックへの分類]において、どのブロックにも属していないと分類されたレジスタ125の出力を積和演算器160〜163に入力する必要はないので、このレジスタ125は接続対象から除いてよい。
【0051】
以下の表2に、レジスタ120〜126に関して、[レジスタと積和演算器との対応付け1]を行い、さらに、どのブロックにも分類されないレジスタ125を除いた結果を示す。
【0052】
【表2】

【0053】
この表2から、以下のようにレジスタ120〜126の出力の接続形態が決定される。
1.積和演算器に対して対応しているレジスタが1つしかなければ、そのレジスタの出力は対応する積和演算器に直接接続される(レジスタ120及び122)。
2.積和演算器に対応しているレジスタが複数あれば、それらのレジスタの出力は、対応する積和演算器に、セレクタを介して接続される(レジスタ121、124、123、126)。
【0054】
以上のような規則に基づいて、レジスタ120〜126と積和演算器160〜163の間の接続形態が決定される(図1参照)。具体的に、第1のブロックに属するレジスタ121の出力及び第2のブロックに属するレジスタ124の出力は、セレクタ110に入力され、セレクタ110で選択された出力が積和演算器161に入力される。また、第1のブロックに属するレジスタ123の出力及び第2のブロックに属するレジスタ126の出力は、セレクタ111に入力され、セレクタ111で選択された出力が積和演算器163に入力される。
【0055】
フィルター係数メモリ読出し制御部104は、フィルター係数メモリ103のフィルターカーネル103aから、予め定められた順序(例えば、本実施形態では水平スキャンする順序とする)でフィルター係数を乗算器130〜133に順次読み出す制御を行う。
【0056】
画像メモリ読出し制御部105は、画像メモリ101から、予め定められた順序(例えば、本実施形態では水平スキャンする順序とする)で画素データをシフトレジスタ112に順次読み出す制御を行う。
【0057】
フィルター演算制御部106は、例えば、外部の操作入力手段等から入力されたフィルター演算処理の種類に係るフィルター演算処理情報に基づいて、フィルター演算に係る処理を統括的に制御する。ここで、本実施形態では、フィルター演算処理の種類としては、通常のフィルター演算処理及び2対1のサブサンプリングフィルター演算処理が挙げられ、これは、具体的にフィルター演算処理の際の画素のずらし数の種類ともいえる。
【0058】
本実施形態では、フィルター演算制御部106は、フィルター演算処理情報に基づいて、フィルター係数メモリ読出し制御部104、画像メモリ読出し制御部105、セレクタ110及び111、並びに、積和演算器160〜163を制御する。具体的には、以下に示す制御を行う。
【0059】
まず、フィルター演算制御部106は、セレクタ110及び111に対して、以下に示すような制御信号を出力する。
1.通常のフィルター演算(サブサンプリング比1のフィルター演算)を行う場合は、セレクタ110及び111の出力として、第1のブロックに属するレジスタ(レジスタ121及び123)の出力が選択されるように制御信号を出力する。
2.2対1のサブサンプリングフィルター演算(サブサンプリング比2のフィルター演算)を行う場合は、セレクタ110及び111の出力として、第2のブロックに属するレジスタ(レジスタ124及び126)の出力が選択されるように制御信号を出力する。
【0060】
即ち、セレクタ(選択手段)110及び111は、フィルター演算処理情報に示されたフィルター演算処理の種類に応じて、複数の積和演算器160〜163の少なくとも1つの特定の積和演算器に対して、複数のレジスタ120〜126の1つを選択する。そして、セレクタ(選択手段)110及び111は、当該選択したレジスタに記憶された画素データを前記特定の積和演算器に出力する。より具体的には、セレクタ110及び111は、フィルター演算処理情報に示されたフィルター演算処理の種類に応じて、複数のブロックに分類されたレジスタのうちの1つのブロックに係るレジスタの画素データを選択し積和演算器に出力する。
【0061】
また、フィルター演算制御部106は、画像メモリ読み出し制御部105に対して、以下に示すような制御信号を出力する。
1.通常のフィルター演算(サブサンプリング比1のフィルター演算)を行う場合は、画像メモリ101から水平方向に、「並列度+フィルターカーネルの水平方向サイズ−1」個の演算対象画素を読み出し、次の行から再度「並列度+フィルターカーネルの水平方向サイズ−1」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部105に対して出力する。本実施形態では、水平方向に、4+3−1=6個の演算対象画素を読み出すことを3回繰り返すことになる。
2.2対1のサブサンプリングフィルター演算(サブサンプリング比2のフィルター演算)を行う場合は、画像メモリ101から水平方向に、「2×並列度+フィルターカーネルの水平方向サイズ−2」個の演算対象画素を読み出し、次の行から再度「2×並列度+フィルターカーネルの水平方向サイズ−2」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部105に対して出力する。本実施形態では、水平方向に、2×4+3−2=9個の演算対象画素を読み出すことを3回繰り返すことになる。
【0062】
また、フィルター演算制御部106は、フィルター係数メモリ103に対してフィルター係数メモリ読出し制御部104を介して読み出すタイミングを指示し、積和演算器160〜163に対して積和演算を行うタイミングの指示を行う。
【0063】
次に、図1に示す画像処理装置100における通常のフィルター演算処理とサブサンプリングフィルター演算処理を行った場合の動作説明を行う。
【0064】
まず、通常のフィルター演算処理を行った場合の動作説明を行う。
図2は、本発明の第1の実施形態に係る画像処理装置において、通常のフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。
【0065】
まず、フィルター演算制御部106は、セレクタ110及び111に対して、第1のブロックに属するレジスタ(レジスタ121及び123)の出力が選択されるように制御信号を出力する。
【0066】
続いて、フィルター演算制御部106は、画像メモリ101から、水平方向に、D00、D10、…、D50までの6個の演算対象画素を読み出して、シフトレジスタ112に供給するように、画像メモリ読み出し制御部105に指示をする。具体的にこの処理は、時間t0〜t5の間に行われる。
【0067】
そして、シフトレジスタ112では、画像メモリ101から入力された演算対象画素の画素データを順次シフトすると同時に、各積和演算器160〜163に画素データを出力する。
【0068】
そして、積和演算器160〜163では、時間t0〜t6の間(シフトによる1行目の演算対象画素の画素データのセットを行っている間)は、演算を停止する。また、積和演算器160〜163では、時間t7〜t9の間は、フィルターカーネル103aの水平方向の1行目(W00、W10、W20)との積和演算を行う。
【0069】
その間に、フィルター演算制御部106は、画像メモリ101から、水平方向に、D01、D11、…、51までの6個の演算対象画素を読み出して、シフトレジスタ112に供給するように、画像メモリ読み出し制御部105に指示をする。具体的にこの処理は、時間t6〜t11の間に行われる。
【0070】
そして、積和演算器160〜163では、時間t10〜t12の間(シフトによる2行目の演算対象画素の画素データのセットを行っている間)は、演算を停止する。また、積和演算器160〜163では、時間t13〜t15の間は、フィルターカーネル103aの水平方向の2行目(W01、W11、W21)との積和演算を行う。
【0071】
その間に、フィルター演算制御部106は、画像メモリ101から、水平方向に、D02、D12、…、52までの6個の演算対象画素を読み出して、シフトレジスタ112に供給するように、画像メモリ読み出し制御部105に指示をする。具体的にこの処理は、時間t12〜t17の間に行われる。
【0072】
そして、積和演算器160〜163では、時間t16〜t18の間(シフトによる3行目の演算対象画素の画素データのセットを行っている間)は、演算を停止する。また、積和演算器160〜163では、時間t19〜t21の間は、フィルターカーネル103aの水平方向の3行目(W02、W12、W22)との積和演算を行う。
【0073】
この時点で、積和演算器160からは、以下の(1)式に示すフィルター演算結果R11が出力される。また、積和演算器161からは、以下の(2)式に示すフィルター演算結果R21が出力される。また、積和演算器162からは、以下の(3)式に示すフィルター演算結果R31が出力される。また、積和演算器163からは、以下の(4)式に示すフィルター演算結果R41が出力される。
【0074】
【数1】

【0075】
そして、時間t22から、次のフィルター演算処理が行われる。ただし、図2に示す例では、画像メモリ101からの読み出し、及び、シフトレジスタ112のシフトは、パイプライン的に先行して行われている。
【0076】
次に、サブサンプリングフィルター演算処理を行った場合の動作説明を行う。
図3は、本発明の第1の実施形態に係る画像処理装置において、サブサンプリングフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。具体的に、図3には、2対1のサブサンプリングフィルター演算処理を行った場合の動作の一例が示されている。
【0077】
まず、フィルター演算制御部106は、セレクタ110及び111に対して、第2のブロックに属するレジスタ(レジスタ124及び126)の出力が選択されるように制御信号を出力する。
【0078】
続いて、フィルター演算制御部106は、画像メモリ101から、水平方向に、D00、D10、…、80までの9個の演算対象画素を読み出して、シフトレジスタ112に供給するように、画像メモリ読み出し制御部105に指示をする。具体的にこの処理は、時間t0〜t8の間に行われる。
【0079】
そして、シフトレジスタ112では、画像メモリ101から入力された演算対象画素の画素データを順次シフトすると同時に、各積和演算器160〜163に画素データを出力する。
【0080】
そして、積和演算器160〜163では、時間t0〜t6の間(シフトによる1行目の演算対象画素の画素データのセットを行っている間)は、演算を停止する。また、積和演算器160〜163では、時間t7〜t9の間は、フィルターカーネル103aの水平方向の1行目(W00、W10、W20)との積和演算を行う。
【0081】
その間に、フィルター演算制御部106は、画像メモリ101から、水平方向に、D01、D11、…、81までの9個の演算対象画素を読み出して、シフトレジスタ112に供給するように、画像メモリ読み出し制御部105に指示をする。具体的にこの処理は、時間t9〜t17の間に行われる。
【0082】
そして、積和演算器160〜163では、t10〜t15の間(シフトによる2行目の演算対象画素データのセットを行っている間)は、演算を停止する。また、積和演算器160〜163では、時間t16〜t18の間は、フィルターカーネル103aの水平方向の2行目(W01、W11、W21)との積和演算を行う。
【0083】
その間に、フィルター演算制御部106は、画像メモリ101から、水平方向に、D02、D12、…、82までの9個の演算対象画素を読み出して、シフトレジスタ112に供給するように、画像メモリ読み出し制御部105に指示をする。具体的にこの処理は、時間t18〜t26の間に行われる。
【0084】
そして、積和演算器160〜163では、時間t19〜t24の間(シフトによる3行目の演算対象画素データのセットを行っている間)は、演算を停止する。また、積和演算器160〜163では、時間t25〜t27の間は、フィルターカーネル103aの水平方向の3行目(W02、W12、W22)との積和演算を行う。
【0085】
この時点で、積和演算器160からは、以下の(5)式に示すフィルター演算結果R11が出力される。また、積和演算器161からは、以下の(6)式に示すフィルター演算結果R51が出力される。また、積和演算器162からは、以下の(7)式に示すフィルター演算結果R31が出力される。また、積和演算器163からは、以下の(8)式に示すフィルター演算結果R71が出力される。
【0086】
【数2】

そして、時間t28から、次のフィルター演算処理が行われる。ただし、この場合、画像メモリ101からの読み出し、及びシフトレジスタ112のシフトは、パイプライン的に先行して行われている。
【0087】
次に、画像処理装置100による画像処理方法の一連の処理手順について説明する。
図4は、本発明の第1の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【0088】
まず、ステップS1において、フィルター演算制御部106は、例えば、外部の操作入力手段等から入力されたフィルター演算処理の種類に係るフィルター演算処理情報を受信する。ここで、本実施形態では、このフィルター演算処理情報は、通常のフィルター演算処理(サブサンプリング比1のフィルター演算処理)に係る情報又は2対1のサブサンプリングフィルター演算処理(サブサンプリング比2のフィルター演算処理)に係る情報である。
【0089】
続いて、ステップS2において、フィルター演算制御部106は、ステップS1で受信したフィルター演算処理情報に基づいて、画像メモリ読み出し制御部105に対して、画像メモリ101から複数の画素データを読み出す制御を行う。これにより、画像メモリ読み出し制御部105は、画像メモリ101から所定の複数の画素データをデータ供給部102に読み出す制御を行う。
【0090】
続いて、ステップS3において、データ供給部102は、ステップS2で読み出された画素データを、各レジスタ120〜126に一時的に記憶する。
【0091】
続いて、ステップS4において、フィルター演算制御部106は、ステップS1で受信したフィルター演算処理情報に基づいて、当該フィルター演算処理の種類を判断する。
【0092】
ステップS4の判断の結果、フィルター演算処理の種類が通常のフィルター演算処理(サブサンプリング比1のフィルター演算処理)である場合には、ステップS5に進む。ステップS5に進むと、フィルター演算制御部106は、セレクタ110及び111に対して、第1のブロックに属するレジスタ(本実施形態では、レジスタ121及び123)の出力(画素データ)を選択する制御を行う。これにより、セレクタ110及び111は、それぞれ、第1のブロックに属するレジスタ121及び123の出力(画素データ)を選択する。
【0093】
続いて、ステップS6において、データ供給部102は、第1のブロックに属するレジスタ(本実施形態では、レジスタ120、121、122及び123)の出力(画素データ)を各積和演算器160〜163に出力する。具体的に、データ供給部102は、第1のブロックに属するレジスタ120、121、122及び123の出力(画素データ)を、それぞれ、積和演算器160、161、162及び163に出力する。
【0094】
一方、ステップS4の判断の結果、フィルター演算処理の種類が2対1のサブサンプリングフィルター演算処理(サブサンプリング比2のフィルター演算処理)である場合には、ステップS7に進む。ステップS7に進むと、フィルター演算制御部106は、セレクタ110及び111に対して、第2のブロックに属するレジスタ(本実施形態では、レジスタ124及び126)の出力(画素データ)を選択する制御を行う。これにより、セレクタ110及び111は、それぞれ、第1のブロックに属するレジスタ124及び126の出力(画素データ)を選択する。
【0095】
続いて、ステップS8において、データ供給部102は、第2のブロックに属するレジスタ(本実施形態では、レジスタ120、122、124及び126)の出力(画素データ)を各積和演算器160〜163に出力する。具体的に、データ供給部102は、第2のブロックに属するレジスタ120、122、124及び126の出力(画素データ)を、それぞれ、積和演算器160、161、162及び163に出力する。
【0096】
ステップS6又はステップS8の処理が終了すると、ステップS9に進む。ステップS9に進むと、まず、フィルター演算制御部106は、フィルター係数メモリ読出し制御部104に対して、フィルター係数メモリ103からフィルター演算処理の種類に応じたフィルター係数を読み出す制御を行う。これにより、フィルター係数メモリ読出し制御部104は、フィルター係数メモリ103からフィルター演算処理の種類に応じたフィルター係数を各積和演算器160〜163に読み出す制御を行う。次いで、フィルター演算制御部106は、各積和演算器160〜163に対して、読み出されたフィルター係数と、入力された画素データとを用いた演算処理を行わせる。
【0097】
続いて、ステップS10において、各積和演算器160〜163は、ステップS9による演算処理結果を外部装置に出力する。
【0098】
その後、必要に応じて、ステップS2〜S10の処理を繰り返すことにより、画像処理装置100による画像処理方法の一連の処理が終了する。
【0099】
以上詳細に説明したように、第1の実施形態の画像処理装置100では、フィルター演算制御部106により、セレクタ110及び111における選択を制御するようにしている。これにより、積和演算器160〜163とデータ供給部102内のレジスタ120〜126との間の接続関係を変更することができる。これにより、第1の実施形態では、通常のフィルター演算処理を行うときも、2対1のサブサンプリングフィルター演算処理を行うときも、積和演算器160〜163において無駄な演算を行わないようにしている。
【0100】
即ち、第1の実施形態の画像処理装置100では、従来では、サブサンプリングフィルター演算処理を行うときに無駄に使用されていた積和演算器を有効活用することによって、サブサンプリングフィルター演算処理を効率よく行えるように構成されている。具体的に、従来例では、サブサンプリングフィルター演算処理を行う際に、間引かれる演算結果を算出するための画素データが供給されてしまう演算手段(図8の積和演算器561及び563)が存在していた。
これに対し、第1の実施形態では、演算手段(積和演算器160〜163)と記憶手段(レジスタ120〜126)との間に選択手段(セレクタ110及び111)を設けるようにした。これにより、間引かれない演算結果(つまり必要とされる演算結果)を算出するための画素データだけを演算手段に供給することを可能にしている。その結果、間引かれる演算結果を算出する演算手段がなくなり、サブサンプリングフィルター演算処理が効率よく行うことができる。
【0101】
なお、本実施形態では、演算手段に相当する積和演算器を4個設け、また、フィルターカーネル103aを演算対象画像の画素データに対して1画素又は2画素ずらして走査させてフィルター演算処理を行う場合を示したが、これに限定されるわけではない。
以下に、演算手段に相当する積和演算器をN個設け、また、フィルターカーネル103aを演算対象画像の画素データに対してM画素ずらして走査させてフィルター演算処理を行う場合について記載する。
【0102】
この場合、複数設けられたレジスタ(記憶手段)のうち、順次シフトする際の先頭のレジスタからM個ごとに存在するN個のレジスタが、1つのブロックに分類されることになる。また、この際、先頭のレジスタからM個ごとに存在するN個のレジスタの画素データがセレクタ(選択手段)により選択されて、各積和演算器に出力されることになる。
【0103】
(第2の実施形態)
以下に、本発明の第2の実施形態について説明を行う。
第1の実施形態の画像処理装置100は、通常のフィルター演算処理と、2対1のサブサンプリングフィルター演算処理とが行えるものであった。第2の実施形態の画像処理装置200は、通常のフィルター演算処理と、2対1のサブサンプリングフィルター演算処理と、4対1のサブサンプリングフィルター演算処理が行えるような構成になっている。つまり、第2の実施形態の画像処理装置200では、サブサンプリング比が1、2及び4のフィルター演算処理を行えるものである。
【0104】
第2の実施形態における画像処理装置200は、図1に示す第1の実施形態における画像処理装置100の構成に対して、データ供給部102以外の構成は同じである。したがって、図5には、第2の実施形態のデータ供給部202を示し、このデータ供給部202以外の構成は、図1と同様であるため省略する。
【0105】
図5は、本発明の第2の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。なお、図5のフィルター演算制御部206は、データ供給部202に対する制御信号以外については、図1に示すフィルター演算制御部106と同様である。
【0106】
図5において、データ供給部202は、パラレル出力可能なシフトレジスタ213(レジスタ220〜232で構成)と、セレクタ210、211及び212を有して構成されている。データ供給部202は、画像メモリ101から入力される画素データDxyを、内蔵するレジスタ分(本実施形態では15画素分)蓄積し、積和演算器160〜163にパラレル出力する。
【0107】
ここで、図5に示されているレジスタ220〜232に対して、第1の実施形態で説明した[レジスタのブロックへの分類]を適用する。本実施形態では、サブサンプリング比が1、2及び4の3種類なので、ブロックの数も3(便宜上、第1のブロック、第2のブロック及び第3のブロックと称する)となる。
【0108】
以下の表3に、レジスタ220〜232に関して、第1の実施形態で説明した[レジスタのブロックへの分類]を適用した結果を示す。
【0109】
【表3】

【0110】
また、以下の表4に、レジスタ220〜232に関して、第1の実施形態で説明した[レジスタと積和演算器との対応付け1]を行い、さらに、どのブロックにも分類されないレジスタ225及び229を除いた結果を示す。
【0111】
【表4】

【0112】
この表4から、以下のようにレジスタ220〜232の出力の接続形態が決定される(図5参照)。
1.積和演算器に対して対応しているレジスタが1つしかなければ、そのレジスタの出力は対応する積和演算器に直接接続される(レジスタ220)。
2.積和演算器に対応しているレジスタが複数あれば、それらのレジスタの出力は、対応する積和演算器に、セレクタを介して接続される(レジスタ221、224、222、228、223、226及び232)。
【0113】
以上のような規則に基づいて、レジスタ220〜232と積和演算器160〜163の間の接続形態が決定される(図5参照)。具体的に、第1のブロックに属するレジスタ221の出力並びに第2及び第3のブロックに属するレジスタ224の出力は、セレクタ210に入力され、セレクタ110で選択された出力が積和演算器161に入力される。また、第1及び第2のブロックに属するレジスタ222の出力並びに第3のブロックに属するレジスタ228の出力は、セレクタ211に入力され、セレクタ211で選択された出力が積和演算器162に入力される。また、第1のブロックに属するレジスタ223の出力、第2のブロックに属するレジスタ226の出力及び第3のブロックに属するレジスタ232の出力は、セレクタ212に入力され、セレクタ212で選択された出力が積和演算器163に入力される。
【0114】
フィルター演算制御部206は、図1に示すフィルター係数メモリ読出し制御部104、画像メモリ読出し制御部105及び積和演算器160〜163、並びに、図5に示すセレクタ210〜212に制御信号を出力する。そして、フィルター演算制御部206は、第2の実施形態に係る画像処理装置200のフィルター演算に係る処理を統括的に制御する。具体的には、以下に示す制御を行う。
【0115】
まず、フィルター演算制御部206は、セレクタ210、211及び212に対して、以下に示すような制御信号を出力する。
1.通常のフィルター演算(サブサンプリング比1のフィルター演算)を行う場合は、セレクタ210〜212の出力として、第1のブロックに属するレジスタ(レジスタ221、222、223)の出力が選択されるように制御信号を出力する。
2.2対1のサブサンプリングフィルター演算(サブサンプリング比2のフィルター演算)を行う場合は、セレクタ210〜212の出力として、第2のブロックに属するレジスタ(レジスタ224、222、226)の出力が選択されるように制御信号を出力する。
3.4対1のサブサンプリングフィルター演算(サブサンプリング比4のフィルター演算)を行う場合は、セレクタ210〜212の出力として、第3のブロックに属するレジスタ(レジスタ224、228、232)の出力が選択されるように制御信号を出力する。
【0116】
また、フィルター演算制御部206は、画像メモリ読み出し制御部105に対して、以下に示すような制御信号を出力する。
1.通常のフィルター演算(サブサンプリング比1のフィルター演算)を行う場合は、画像メモリ101から水平方向に、「並列度+フィルターカーネルの水平方向サイズ−1」個の演算対象画素を読み出し、次の行から再度「並列度+フィルターカーネルの水平方向サイズ−1」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部105に対して出力する。本実施形態では、水平方向に、4+3−1=6個の演算対象画素を読み出すことを3回繰り返すことになる。
2.2対1のサブサンプリングフィルター演算(サブサンプリング比2のフィルター演算)を行う場合は、画像メモリ101から水平方向に、「2×並列度+フィルターカーネルの水平方向サイズ−2」個の演算対象画素を読み出し、次の行から再度「2×並列度+フィルターカーネルの水平方向サイズ−2」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部105に対して出力する。本実施形態では、水平方向に、2×4+3−2=9個の演算対象画素を読み出すことを3回繰り返すことになる。
3.4対1のサブサンプリングフィルター演算(サブサンプリング比4のフィルター演算)を行う場合は、画像メモリ101から水平方向に、「4×並列度+フィルターカーネルの水平方向サイズ−4」個の演算対象画素を読み出し、次の行から再度「4×並列度+フィルターカーネルの水平方向サイズ−4」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部105に対して出力する。本実施形態では、水平方向に、4×4+3−4=15個の演算対象画素を読み出すことを3回繰り返すことになる。
【0117】
また、フィルター演算制御部206は、フィルター係数メモリ103に対してフィルター係数メモリ読出し制御部104を介して読み出すタイミングを指示し、積和演算器160〜163に対して積和演算を行うタイミングの指示を行う。
【0118】
次に、画像処理装置200による画像処理方法の一連の処理手順について説明する。
図6は、本発明の第2の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【0119】
まず、ステップS21において、フィルター演算制御部206は、例えば、外部の操作入力手段等から入力されたフィルター演算処理の種類に係るフィルター演算処理情報を受信する。ここで、本実施形態では、このフィルター演算処理情報は、通常のフィルター演算処理に係る情報、2対1のサブサンプリングフィルター演算処理に係る情報又は4対1のサブサンプリングフィルター演算処理に係る情報である。
【0120】
続いて、ステップS22において、フィルター演算制御部206は、ステップS21で受信したフィルター演算処理情報に基づいて、画像メモリ読み出し制御部105に対して、画像メモリ101から複数の画素データを読み出す制御を行う。これにより、画像メモリ読み出し制御部105は、画像メモリ101から所定の複数の画素データをデータ供給部202に読み出す制御を行う。
【0121】
続いて、ステップS23において、データ供給部202は、ステップS22で読み出された画素データを、各レジスタ220〜232に一時的に記憶する。
【0122】
続いて、ステップS24において、フィルター演算制御部206は、ステップS21で受信したフィルター演算処理情報に基づいて、当該フィルター演算処理の種類を判断する。
【0123】
ステップS24の判断の結果、フィルター演算処理の種類が通常のフィルター演算処理(サブサンプリング比1のフィルター演算処理)である場合には、ステップS25に進む。ステップS25に進むと、フィルター演算制御部206は、セレクタ210〜212に対して、第1のブロックに属するレジスタ(本実施形態では、レジスタ221〜223)の出力(画素データ)を選択する制御を行う。これにより、セレクタ210〜212は、それぞれ、第1のブロックに属するレジスタ221〜223の出力(画素データ)を選択する。
【0124】
続いて、ステップS26において、データ供給部202は、第1のブロックに属するレジスタ(本実施形態では、レジスタ220〜223)の出力(画素データ)を各積和演算器160〜163に出力する。具体的に、データ供給部202は、第1のブロックに属するレジスタ220、221、222及び223の出力(画素データ)を、それぞれ、積和演算器160、161、162及び163に出力する。
【0125】
また、ステップS24の判断の結果、フィルター演算処理の種類が2対1のサブサンプリングフィルター演算処理(サブサンプリング比2のフィルター演算処理)である場合には、ステップS27に進む。ステップS27に進むと、フィルター演算制御部206は、セレクタ210〜212に対して、第2のブロックに属するレジスタ(本実施形態では、レジスタ224、222及び226)の出力(画素データ)を選択する制御を行う。これにより、セレクタ210〜212は、それぞれ、第1のブロックに属するレジスタ224、222及び226の出力(画素データ)を選択する。
【0126】
続いて、ステップS8において、データ供給部202は、第2のブロックに属するレジスタ(本実施形態では、レジスタ220、224、222及び226)の出力(画素データ)を各積和演算器160〜163に出力する。具体的に、データ供給部202は、第2のブロックに属するレジスタ220、224、222及び226の出力(画素データ)を、それぞれ、積和演算器160、161、162及び163に出力する。
【0127】
また、ステップS24の判断の結果、フィルター演算処理の種類が4対1のサブサンプリングフィルター演算処理(サブサンプリング比4のフィルター演算処理)である場合には、ステップS29に進む。ステップS29に進むと、フィルター演算制御部206は、セレクタ210〜212に対して、第3のブロックに属するレジスタ(本実施形態では、レジスタ224、228及び232)の出力(画素データ)を選択する制御を行う。これにより、セレクタ210〜212は、それぞれ、第1のブロックに属するレジスタ224、228及び232の出力(画素データ)を選択する。
【0128】
続いて、ステップS30において、データ供給部202は、第3のブロックに属するレジスタ(本実施形態では、レジスタ220、224、228及び232)の出力(画素データ)を各積和演算器160〜163に出力する。具体的に、データ供給部202は、第3のブロックに属するレジスタ220、224、228及び232の出力(画素データ)を、それぞれ、積和演算器160、161、162及び163に出力する。
【0129】
ステップS26、ステップS28又はステップS30の処理が終了すると、ステップS31に進む。ステップS31に進むと、まず、フィルター演算制御部206は、フィルター係数メモリ読出し制御部104に対して、フィルター係数メモリ103からフィルター演算処理の種類に応じたフィルター係数を読み出す制御を行う。これにより、フィルター係数メモリ読出し制御部104は、フィルター係数メモリ103からフィルター演算処理の種類に応じたフィルター係数を各積和演算器160〜163に読み出す制御を行う。次いで、フィルター演算制御部206は、各積和演算器160〜163に対して、読み出されたフィルター係数と、入力された画素データとを用いた演算処理を行わせる。
【0130】
続いて、ステップS32において、各積和演算器160〜163は、ステップS31による演算処理結果を外部装置に出力する。
【0131】
その後、必要に応じて、ステップS22〜S32の処理を繰り返すことにより、画像処理装置200による画像処理方法の一連の処理が終了する。
【0132】
以上詳細に説明したように、第2の実施形態の画像処理装置200では、フィルター演算制御部206により、セレクタ210〜212における選択を制御するようにしている。これにより、第2の実施形態では、通常のフィルター演算処理、2対1のサブサンプリングフィルター演算処理及び4対1のサブサンプリングフィルター演算処理が同一の回路で行え、かつ、積和演算器160〜163において無駄な演算を行わないようにしている。
【0133】
(第3の実施形態)
以下に、本発明の第3の実施形態について説明を行う。
第1の実施形態の画像処理装置100では、積和演算器160〜163からのフィルター演算結果の出力順序が、通常のフィルター演算処理の場合とサブサンプリングフィルター演算処理とで変化する(異なる)ものであった。具体的に、通常のフィルター演算処理の場合には、各積和演算器160、161、162、163から、R11、R21、R31、R41の順でフィルター演算結果が出力される。一方、2対1のサブサンプリングフィルター演算処理の場合には、各積和演算器160、161、162、163から、R11、R51、R31、R71の順でフィルター演算結果が出力される。
【0134】
第3の実施形態では、通常のフィルター演算処理と、2対1のサブサンプリングフィルター演算処理を行うのに際して、積和演算器からのフィルター演算結果の出力順序が、これらの演算処理において変化しない(同じとなる)ことを実現する形態である。その上で、セレクタによる選択肢の組み合わせと選択結果をどの積和演算器に入力するのかを決定する際の処理について説明する。
【0135】
第3の実施形態における画像処理装置300は、図1に示す第1の実施形態における画像処理装置100の構成に対して、データ供給部302以外の構成は同じである。したがって、図7には、第3の実施形態のデータ供給部302を示し、このデータ供給部302以外の構成は、図1と同様であるため省略する。
【0136】
図7は、本発明の第3の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。なお、図7のフィルター演算制御部306は、データ供給部302に対する制御信号以外については、図1に示すフィルター演算制御部106と同様である。
【0137】
図7において、データ供給部302は、パラレル出力可能なシフトレジスタ313(レジスタ320〜326で構成)と、セレクタ310、311及び312を有して構成されている。データ供給部302は、画像メモリ101から入力される画素Dxyを、内蔵するレジスタ分(本実施形態では7画素分)蓄積し、積和演算器160〜163にパラレル出力する。
【0138】
ここで、図7に示されているレジスタ320〜326に対して、第1の実施形態で説明した[レジスタのブロックへの分類]を適用する。本実施形態では、第1の実施形態と同様に、サブサンプリング比が1及び2の2種類なので、ブロックの数も2(便宜上、第1のブロックと第2のブロックと称する)となる。
【0139】
以下の表5に、レジスタ320〜326に関して、第1の実施形態で説明した[レジスタのブロックへの分類]を適用した結果を示す(基本的には、表1と同じ形態となる)。
【0140】
【表5】

【0141】
また、第3の実施形態では、積和演算器160〜163からのフィルター演算結果の出力順序が、通常のフィルター演算処理の場合とサブサンプリングフィルター演算処理とで変化しないことを優先するため、以下に示す対応付けを行う。具体的には、以下に示す[レジスタと積和演算器との対応付け2]に従って、積和演算器160〜163のいずれか、或いはそれ以外に対応付けられる。
【0142】
[レジスタと積和演算器との対応付け2]
シフトレジスタ313のレジスタのうち、第1ブロックに属する最初の並列度(本実施形態では4)数個のレジスタは、順(320、321、322、323の順)に、積和演算器の順(160、161、162、163の順)に対応付けられる。
シフトレジスタ313のレジスタのうち、第2ブロックに属する最初の並列度(本実施形態では4)数個のレジスタは、順(320、322、324、326の順)に、積和演算器の順(160、161、162、163の順)に対応付けられる。
【0143】
以下の表6に、レジスタ320〜326に関して、[レジスタと積和演算器との対応付け2]を行い、さらに、どのブロックにも分類されないレジスタ325を除いた結果を示す。
【0144】
【表6】

【0145】
この表6から、以下のようにレジスタ320〜326の出力の接続形態が決定される。
1.和演算器に対して対応しているレジスタが1つしかなければ、そのレジスタの出力は対応する積和演算器に直接接続される(レジスタ320)。
2.積和演算器に対応しているレジスタが複数あれば、それらのレジスタの出力は、対応する積和演算器に、セレクタを介して接続される(レジスタ321、322、324、323、326)。
【0146】
以上のような規則に基づいて、レジスタ320〜326と積和演算器160〜163の間の接続形態が決定される(図7参照)。具体的に、第1のブロックに属するレジスタ321の出力及び第2のブロックに属するレジスタ322の出力は、セレクタ310に入力され、セレクタ310で選択された出力が積和演算器161に入力される。また、第1のブロックに属するレジスタ322の出力及び第2のブロックに属するレジスタ324の出力は、セレクタ311に入力され、セレクタ311で選択された出力が積和演算器162に入力される。また、第1のブロックに属するレジスタ323の出力及び第2のブロックに属するレジスタ326の出力は、セレクタ312に入力され、セレクタ312で選択された出力が積和演算器163に入力される。
【0147】
フィルター演算制御部306は、セレクタ310、311及び312に対して、以下に示すような制御信号を出力する。
1.通常のフィルター演算(サブサンプリング比1のフィルター演算)を行う場合は、セレクタ310〜312の出力として、第1のブロックに属するレジスタ(レジスタ321、322、323)の出力が選択されるように制御信号を出力する。
2.2対1のサブサンプリングフィルター演算(サブサンプリング比2のフィルター演算)を行う場合は、セレクタ310〜312の出力として、第2のブロックに属するレジスタ(レジスタ322、324、326)の出力が選択されるように制御信号を出力する。
【0148】
本実施形態で通常のフィルター演算を行う場合は、第1の実施形態と同じく、積和演算器160からフィルター演算結果R11が出力される。同様に、積和演算器161からフィルター演算結果R21が出力され、積和演算器162からフィルター演算結果R31が出力され、積和演算器163からフィルター演算結果R41が出力される。
【0149】
また、サブサンプリングフィルター演算を行う場合は、まず、積和演算器160からフィルター演算結果R11が出力される。さらに、積和演算器161からフィルター演算結果R31が出力され、積和演算器162からフィルター演算結果R51が出力され、積和演算器163からフィルター演算結果R71が出力される。
【0150】
なお、第3の実施形態の画像処理装置300による画像処理方法の一連の処理手順については、図4に示す第1の実施形態の画像処理装置100による画像処理方法の一連の処理手順と同様である。
【0151】
以上詳細に説明したように、第3の実施形態の画像処理装置300では、積和演算器からのフィルター演算結果の出力順序が、通常のフィルター演算処理の場合とサブサンプリングフィルター演算処理とで変化しない(同じとなる)ようになっている。これにより、第3の実施形態では、第1の実施形態における効果に加えて、積和演算器の後続の制御において、扱いが容易になる利点がある。
【0152】
前述した各実施形態に係る画像処理装置を構成する図1、図5及び図7の各構成部、並びに画像処理方法を示す図4及び図6の各ステップは、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び当該プログラムを記録したコンピュータ読み取り可能な記憶媒体は本発明に含まれる。
【0153】
具体的に、前記プログラムは、例えばCD−ROMのような記憶媒体に記録し、或いは各種伝送媒体を介し、コンピュータに提供される。前記プログラムを記録する記憶媒体としては、CD−ROM以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。他方、前記プログラムの伝送媒体としては、プログラム情報を搬送波として伝搬させて供給するためのコンピュータネットワーク(LAN、インターネットの等のWAN、無線通信ネットワーク等)システムにおける通信媒体を用いることができる。また、この際の通信媒体としては、光ファイバ等の有線回線や無線回線などが挙げられる。
【0154】
また、本発明は、コンピュータが供給されたプログラムを実行することにより各実施形態に係る画像処理装置の機能が実現される態様に限られない。そのプログラムがコンピュータにおいて稼働しているOS(オペレーティングシステム)或いは他のアプリケーションソフト等と共同して各実施形態に係る画像処理装置の機能が実現される場合も、かかるプログラムは本発明に含まれる。また、供給されたプログラムの処理の全て、或いは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて各実施形態に係る画像処理装置の機能が実現される場合も、かかるプログラムは本発明に含まれる。
【0155】
また、前述した本実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【0156】
【図1】本発明の第1の実施形態に係る画像処理装置の概略構成の一例を示すブロック図である。
【図2】本発明の第1の実施形態に係る画像処理装置において、通常のフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。
【図3】本発明の第1の実施形態に係る画像処理装置において、サブサンプリングフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。
【図4】本発明の第1の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【図5】本発明の第2の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。
【図6】本発明の第2の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【図7】本発明の第3の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。
【図8】従来例を示し、画像データに対して2次元フィルターの演算を行う演算装置(画像処理装置)の構成の一例を示すブロック図である。
【図9】図8に示す演算装置を用いてフィルター演算処理を行う場合の入力画像(演算対象画像)、フィルターカーネル、及び、演算出力画像(演算結果画像)を示す模式図である。
【図10】図9に示す画像等を用いて、図8の演算装置を動作させたときのタイムチャートである。
【図11】従来例を示し、2対1のサブサンプリングフィルター演算出力画像の一例を示す模式図である。
【符号の説明】
【0157】
100 画像処理装置
101 画像メモリ
102 データ供給部(データ供給手段)
103 フィルター係数メモリ
103a フィルターカーネル
104 フィルター係数メモリ読出し制御部
105 画像メモリ読出し制御部
106 フィルター演算制御部
110、111 セレクタ(選択手段)
112 シフトレジスタ
120〜126 レジスタ(記憶手段)
130〜133 乗算器
140〜143 加算器
150〜153 レジスタ
160〜163 積和演算器(演算手段)

【特許請求の範囲】
【請求項1】
画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理装置であって、
前記画像メモリから読み出された複数の画素データを一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給手段と、
前記フィルターカーネルにおけるフィルター係数と前記データ供給手段から出力される複数の画素データとを用いた演算処理を並列に行う複数の演算手段とを有し、
前記データ供給手段は、
前記画像メモリから読み出された複数の画素データを一時的に記憶する複数の記憶手段と、
前記フィルター演算処理の種類に応じて、前記複数の演算手段の少なくとも1つの特定の演算手段に対して、前記複数の記憶手段の1つを選択し、当該選択した記憶手段に記憶された画素データを前記特定の演算手段に出力する選択手段と
を含むことを特徴とする画像処理装置。
【請求項2】
前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、
前記選択手段は、前記複数のブロックのうちの1つのブロックに係る前記記憶手段を選択することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記フィルター演算処理の種類とは、前記フィルターカーネルを前記画像の画素データに対して走査させる際の画素のずらし数の種類であることを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記複数の演算手段がN個設けられており、前記フィルターカーネルを前記画像の画素データに対してM画素ずらして走査させて前記フィルター演算処理を行う場合において、
前記複数の記憶手段のうち、前記順次シフトする際の先頭の記憶手段からM個ごとに存在するN個の記憶手段が、前記1つのブロックに分類されることを特徴とする請求項2に記載の画像処理装置。
【請求項5】
前記フィルターカーネルを前記画像の画素データに対してM画素ずらして走査させて前記フィルター演算処理を行う場合には、前記先頭の記憶手段からM個ごとに存在する前記N個の記憶手段の画素データが前記選択手段により選択されて前記演算手段に出力されることを特徴とする請求項4に記載の画像処理装置。
【請求項6】
画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法であって、
前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、
前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとを有し、
前記データ供給ステップは、前記フィルター演算処理の種類に応じて、前記複数の演算手段の少なくとも1つの特定の演算手段に対して、前記複数の記憶手段の1つを選択し、当該選択した記憶手段に記憶された画素データを前記特定の演算手段に出力する選択ステップを含むことを特徴とする画像処理方法。
【請求項7】
前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、
前記選択ステップでは、前記複数のブロックのうちの1つのブロックに係る前記記憶手段を選択することを特徴とする請求項6に記載の画像処理方法。
【請求項8】
前記フィルター演算処理の種類とは、前記フィルターカーネルを前記画像の画素データに対して走査させる際の画素のずらし数の種類であることを特徴とする請求項6又は7に記載の画像処理方法。
【請求項9】
前記複数の演算手段がN個設けられており、前記フィルターカーネルを前記画像の画素データに対してM画素ずらして走査させて前記フィルター演算処理を行う場合において、
前記複数の記憶手段のうち、前記順次シフトする際の先頭の記憶手段からM個ごとに存在するN個の記憶手段が、前記1つのブロックに分類されることを特徴とする請求項7に記載の画像処理方法。
【請求項10】
前記フィルターカーネルを前記画像の画素データに対してM画素ずらして走査させて前記フィルター演算処理を行う場合には、前記先頭の記憶手段からM個ごとに存在する前記N個の記憶手段の画素データが前記選択ステップにおいて選択されて前記演算手段に出力されることを特徴とする請求項9に記載の画像処理方法。
【請求項11】
画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法をコンピュータに実行させるためのプログラムであって、
前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、
前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとをコンピュータに実行させ、
前記データ供給ステップは、前記フィルター演算処理の種類に応じて、前記複数の演算手段の少なくとも1つの特定の演算手段に対して、前記複数の記憶手段の1つを選択し、当該選択した記憶手段に記憶された画素データを前記特定の演算手段に出力する選択ステップを含むことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2009−87252(P2009−87252A)
【公開日】平成21年4月23日(2009.4.23)
【国際特許分類】
【出願番号】特願2007−259060(P2007−259060)
【出願日】平成19年10月2日(2007.10.2)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】