JPWO2004068411A1 - 平均値フィルタ装置およびフィルタリング方法 - Google Patents
平均値フィルタ装置およびフィルタリング方法 Download PDFInfo
- Publication number
- JPWO2004068411A1 JPWO2004068411A1 JP2004567552A JP2004567552A JPWO2004068411A1 JP WO2004068411 A1 JPWO2004068411 A1 JP WO2004068411A1 JP 2004567552 A JP2004567552 A JP 2004567552A JP 2004567552 A JP2004567552 A JP 2004567552A JP WO2004068411 A1 JPWO2004068411 A1 JP WO2004068411A1
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- pixel data
- line
- data
- integration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 19
- 238000001914 filtration Methods 0.000 title claims description 13
- 230000010354 integration Effects 0.000 claims abstract description 63
- 230000015654 memory Effects 0.000 claims description 78
- 238000003384 imaging method Methods 0.000 claims description 8
- 238000007792 addition Methods 0.000 description 90
- 238000004364 calculation method Methods 0.000 description 18
- 230000003111 delayed effect Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910052739 hydrogen Inorganic materials 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Transforming Light Signals Into Electric Signals (AREA)
- Facsimile Image Signal Circuits (AREA)
Abstract
平均値フィルタ装置であって、2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して上記各画素の第1積算画素データを生成する第1積算手段1と、第2次元方向に各画素の近傍に位置する所定数の画素に対応する、上記第1積算画素データを積算して上記各画素の第2積算画素データを生成する第2積算手段2と、上記第1次元方向および第2次元方向に積算された画素数で上記第2積算画素データを除算する手段45とを備える。
Description
本発明は、データのフィルタ技術に関する。
画像処理等において、表示画像の視認性を大幅に向上するために、全画面の空間周波数を、低周波成分と、高周波成分に分離する場合がある。そして、例えば、低周波成分を抑圧して、高周波成分と合成することで、細部のコントラストを保存した上でダイナミックレンジを圧縮する、等の技術が知られている。
そのような場合の低周波成分の分離には、移動平均が一般的である。移動平均は、例えば、(2n+1)×(2n+1)マトリクスの平均を全画素Np×Npについて求める処理である。ここで、2n+1は、Np以下の奇数である。
FIG.1に平均値フィルタの処理例を示す。FIG.1に示すように、平均値フィルタは、注目している画素Mおよびその画素M近傍の画素濃度値の平均値を、注目している画素Mの新しい濃度値とする。例えば、n=2を選択した場合、画素Mの左右および上下方向の25個の画素データ(A、B、...、Y)を加算し、25で除算することでフィルタ処理された画素Mを求める。
FIG.2−5に、従来の平均値フィルタを構成する方法を示す。これらの平均値フィルタは、ソフトウェアまたは、ハードウェアにより構成される。
(1)ソフトウェアによる構成
FIG.2に、ソフトウェアにて平均値フィルタを構成する例を示す。この平均値フィルタは、入力画像データを保持するフレームメモリ302、ソフトウェアを実行し、入力画像データを処理するDSP(Digital Signal Processor)301、およびDSPの演算用として使用される演算用メモリ303を有している。
DSP301上のソフトウェアによって平均値フィルタを構成する場合、フレームメモリに格納された入力画像データデータから、FIG.1に示した5×5の画像A、B、...、Yを1画素ずつ順にDSP301に読込む。そして、演算メモリ303を用いてFIG.3のようなフローによって、マトリクスの平均値を算出する。
FIG.3では、1画素ずつ画素データを読み込み、総和(S)に順に加算する。この処理を画素A〜Yに対して繰り返し、25で割算している。この処理は、5×5のマトリクスの処理に、総和(S)の初期化(1ステップ)、画素A〜Yの加算(25ステップ)、総和(S)の25での除算(1ステップ)および演算メモリからの出力(1ステップ)の合計28ステップを要する。
今、不図示の表示装置の画素当たりのクロックを25MHzとすると、各画素に対してリアルタイムで処理するためには、上記各ステップを1クロックで処理したとしても、25MHz×28=700MHz以上で処理する必要がある。
(2)ハードウェアによる構成
(2−1)フィルタサイズ固定の場合
ハードウェアにて平均値フィルタを構成する場合、入力画像データ(例えば、640×480画素)の各画素に対して、各画素の近傍の5×5マトリクスを構成する必要がある。この5×5マトリクスの合計値を各画素ごとに算出するために、加算するタイミング(位相)を合わせる必要がる。
例えば、FIG.1に示すように、画素Mの近傍の5×5のマトリクスを加算する場合、予め、画素データA、B、...、Xの位相(加算のタイミング)を画素データYの位置に合わせる必要がある。
今、FIG.1のように、画像データ上で画面の横方向を画素方向と呼び、縦方向をライン方向と呼ぶことにする。画素方向とは、画素単位のクロックで移動する方向である。また、ライン方向とは、画素方向に垂直に、ライン(例えば、640個の画素からなる1行)を移動する方向である。なお、ラインを行とも呼ぶ。
まず、5ライン目(画素データU〜Y)について考える。5ライン目の各画素データは、画素データYと同一ラインにある。このため、5ライン目の各画素データを画素データYに対してライン遅延をさせる必要がない。このため、データUを4クロック、画素データVを3クロック、画素データWを2クロック、画素データXを1クロック遅延させる。この画素データの遅延のためには、例えば、FF(フリップフロップ)を用いればよい。これにより、各画素データの位相が画素データYの位置に合わせられる。こうして位相が合った画素データを加算して5ライン目の合計値を求める。
次に、ラインメモリで入力画像データを1ライン分(例えば、640画素分)遅延させ、画素データP〜Tのラインを5ライン目の位置に合わせる。そして、上記と同様様にFFを用いて、画素データP〜Tの位相をデータYの位置に合わせて、データP〜Tの合計値を算出する。
このように、順に入力画像データをラインメモリを用いて1ラインずつ遅延させ、各ラインを5ライン目まで遅延させる。そして、各画素データをFFにより画素Yの位置に合わせて加算する。このような処理により、各ラインごとの合計値を求める。そして、さらに各ラインごとの合計値を順に加算し、25画素の合計値を求める。さらに、その合計値を25で割算することにより、平均値フィルタを構成する。
FIG.4に、このような回路によるフィルタサイズ5×5平均値フィルタの構成を示す。この平均値フィルタ回路は、ライン方向の遅延を発生させるラインメモリ311〜314と、各ラインごとに5画素分の加算を実行する画素方向演算部320〜324と、各ラインの加算データを順次加算する加算器361〜365と、25による除算(1/25による乗算)を実行する乗算器365とを有する。
画素方向演算部320の内部は、FF331〜334および加算器341〜344で構成される。FF331〜334は、入力される画素データ、例えば、U,V,W,Xを順次、1クロック遅延させる。このようにして、例えば、FIG.に示した5番目のライン(U,V,W,X、Yを含むラインL5)について、5つの画素データU,V,W,X、Yの位相を揃えることができ、加算可能な状態となる。FIG.4の構成では、これらの画素データは、加算器341から344により加算される。
ラインメモリ311〜314には、1クロックで1画素のデータが順次入力され、1ライン分のデータが格納される。ここで、理解の容易のため、1ラインが、例えば、640画素であると仮定する。すると、最初の640クロックでラインメモリ311に1ライン分(ラインL1と呼ぶ)のデータが格納される。このとき、ラインL1の画素データは、画素方向演算部320により、5画素ずつ加算されるが、この加算は、位相が合っていないため、廃棄される。
また、次の640クロックで、次のライン(ラインL2と呼ぶ)の画素データがラインメモリ311に格納される。このとき、ラインL2のデータは、画素方向演算部320により、5画素ずつ加算されるが、この加算は、位相が合っていないため、廃棄される。また、ラインL1のデータは、ラインメモリ312に格納される。このとき、ラインL1のデータは、画素方向演算部321により、5画素ずつ加算されるが、この加算も、位相が合っていないため、廃棄される。
このような処理を繰り返すことで、ラインメモリ314に最初のラインL1の画素データが格納され、ラインメモリ313に次のラインL2の画素データが格納され、ラインメモリ312に、さらに次のラインL3の画素データが格納され、ラインメモリ311に、さらに次のラインL4の画素データが格納された状態になる。
この状態では、次のクロックから、入力画像として次のラインL5の画素データが画素方向演算部320に入力される。また、ラインL4〜L1の画素データは、各々画素方向演算部321〜324に入力される。
これにより、5ラインが同じ位相で画素方向演算部320〜324により、画素方向に5画素ずつ加算されることになる。さらに、画素方向演算部320〜324の出力(各画素が画素方向に5画素ずつ積算したデータで置き換えられた画素データ)は、加算器361〜364により、ライン方向に5ライン分積算される。これにより画素方向およびライン方向に5×5の画素データが積算され、乗算器365に入力される。乗算器365は、その積算結果を25で除算することにより、25画素の平均値を出力する。
このFIG.4より、5×5の平均値フィルタに対して、フリップフロップ20個、加算器24個および乗算器1個が必要である。
FIG.5に、N×Nの平均値フィルタに一般化された構成を示す。FIG.5に示しように、N×Nの平均値フィルタを実現するためのハードウェアは、画像データを1ラインずつ遅延させるラインメモリ[N−1]系統、FF[(N−1)×N]個、加算器[(N×N)−1]個、乗算器1個となる。
(2−2)フィルタサイズ可変の場合
FIG.6に、フィルタサイズ可変(3×3〜N×N)の平均値フィルタ回路を示す。FIG.6のように、フィルタサイズが3×3〜N×Nならば、回路構成(FF、ラインメモリ、加算器)としては常に最大のフィルタサイズN×Nの構成を準備しておく。
そして、各ラインの合計値から、指定されたフィルタサイズに相当する構成のFF出力を選択して、加算値を求めることにより、任意のサイズの平均値フィルタを構成できる。
このようなFF出力選択のため、FIG.6のフィルタ回路では、セレクタ370、371等を有している。例えば、セレクタ371は、画素方向演算部320内において、任意の個数(3〜N)の加算値を選択する回路である。何個の加算値を選択するかは、切替信号381により指定される。他の画素方向演算部321、322、...等も同様の構成である。
また、セレクタ370は、画素方向演算部320等の出力をさらに加算したライン方向の加算器に対して361、362、...等の内、任意のライン数分の加算結果を選択する回路である。ライン方向の加算数の選択は、切替信号380により、指定される。
そのような場合の低周波成分の分離には、移動平均が一般的である。移動平均は、例えば、(2n+1)×(2n+1)マトリクスの平均を全画素Np×Npについて求める処理である。ここで、2n+1は、Np以下の奇数である。
FIG.1に平均値フィルタの処理例を示す。FIG.1に示すように、平均値フィルタは、注目している画素Mおよびその画素M近傍の画素濃度値の平均値を、注目している画素Mの新しい濃度値とする。例えば、n=2を選択した場合、画素Mの左右および上下方向の25個の画素データ(A、B、...、Y)を加算し、25で除算することでフィルタ処理された画素Mを求める。
FIG.2−5に、従来の平均値フィルタを構成する方法を示す。これらの平均値フィルタは、ソフトウェアまたは、ハードウェアにより構成される。
(1)ソフトウェアによる構成
FIG.2に、ソフトウェアにて平均値フィルタを構成する例を示す。この平均値フィルタは、入力画像データを保持するフレームメモリ302、ソフトウェアを実行し、入力画像データを処理するDSP(Digital Signal Processor)301、およびDSPの演算用として使用される演算用メモリ303を有している。
DSP301上のソフトウェアによって平均値フィルタを構成する場合、フレームメモリに格納された入力画像データデータから、FIG.1に示した5×5の画像A、B、...、Yを1画素ずつ順にDSP301に読込む。そして、演算メモリ303を用いてFIG.3のようなフローによって、マトリクスの平均値を算出する。
FIG.3では、1画素ずつ画素データを読み込み、総和(S)に順に加算する。この処理を画素A〜Yに対して繰り返し、25で割算している。この処理は、5×5のマトリクスの処理に、総和(S)の初期化(1ステップ)、画素A〜Yの加算(25ステップ)、総和(S)の25での除算(1ステップ)および演算メモリからの出力(1ステップ)の合計28ステップを要する。
今、不図示の表示装置の画素当たりのクロックを25MHzとすると、各画素に対してリアルタイムで処理するためには、上記各ステップを1クロックで処理したとしても、25MHz×28=700MHz以上で処理する必要がある。
(2)ハードウェアによる構成
(2−1)フィルタサイズ固定の場合
ハードウェアにて平均値フィルタを構成する場合、入力画像データ(例えば、640×480画素)の各画素に対して、各画素の近傍の5×5マトリクスを構成する必要がある。この5×5マトリクスの合計値を各画素ごとに算出するために、加算するタイミング(位相)を合わせる必要がる。
例えば、FIG.1に示すように、画素Mの近傍の5×5のマトリクスを加算する場合、予め、画素データA、B、...、Xの位相(加算のタイミング)を画素データYの位置に合わせる必要がある。
今、FIG.1のように、画像データ上で画面の横方向を画素方向と呼び、縦方向をライン方向と呼ぶことにする。画素方向とは、画素単位のクロックで移動する方向である。また、ライン方向とは、画素方向に垂直に、ライン(例えば、640個の画素からなる1行)を移動する方向である。なお、ラインを行とも呼ぶ。
まず、5ライン目(画素データU〜Y)について考える。5ライン目の各画素データは、画素データYと同一ラインにある。このため、5ライン目の各画素データを画素データYに対してライン遅延をさせる必要がない。このため、データUを4クロック、画素データVを3クロック、画素データWを2クロック、画素データXを1クロック遅延させる。この画素データの遅延のためには、例えば、FF(フリップフロップ)を用いればよい。これにより、各画素データの位相が画素データYの位置に合わせられる。こうして位相が合った画素データを加算して5ライン目の合計値を求める。
次に、ラインメモリで入力画像データを1ライン分(例えば、640画素分)遅延させ、画素データP〜Tのラインを5ライン目の位置に合わせる。そして、上記と同様様にFFを用いて、画素データP〜Tの位相をデータYの位置に合わせて、データP〜Tの合計値を算出する。
このように、順に入力画像データをラインメモリを用いて1ラインずつ遅延させ、各ラインを5ライン目まで遅延させる。そして、各画素データをFFにより画素Yの位置に合わせて加算する。このような処理により、各ラインごとの合計値を求める。そして、さらに各ラインごとの合計値を順に加算し、25画素の合計値を求める。さらに、その合計値を25で割算することにより、平均値フィルタを構成する。
FIG.4に、このような回路によるフィルタサイズ5×5平均値フィルタの構成を示す。この平均値フィルタ回路は、ライン方向の遅延を発生させるラインメモリ311〜314と、各ラインごとに5画素分の加算を実行する画素方向演算部320〜324と、各ラインの加算データを順次加算する加算器361〜365と、25による除算(1/25による乗算)を実行する乗算器365とを有する。
画素方向演算部320の内部は、FF331〜334および加算器341〜344で構成される。FF331〜334は、入力される画素データ、例えば、U,V,W,Xを順次、1クロック遅延させる。このようにして、例えば、FIG.に示した5番目のライン(U,V,W,X、Yを含むラインL5)について、5つの画素データU,V,W,X、Yの位相を揃えることができ、加算可能な状態となる。FIG.4の構成では、これらの画素データは、加算器341から344により加算される。
ラインメモリ311〜314には、1クロックで1画素のデータが順次入力され、1ライン分のデータが格納される。ここで、理解の容易のため、1ラインが、例えば、640画素であると仮定する。すると、最初の640クロックでラインメモリ311に1ライン分(ラインL1と呼ぶ)のデータが格納される。このとき、ラインL1の画素データは、画素方向演算部320により、5画素ずつ加算されるが、この加算は、位相が合っていないため、廃棄される。
また、次の640クロックで、次のライン(ラインL2と呼ぶ)の画素データがラインメモリ311に格納される。このとき、ラインL2のデータは、画素方向演算部320により、5画素ずつ加算されるが、この加算は、位相が合っていないため、廃棄される。また、ラインL1のデータは、ラインメモリ312に格納される。このとき、ラインL1のデータは、画素方向演算部321により、5画素ずつ加算されるが、この加算も、位相が合っていないため、廃棄される。
このような処理を繰り返すことで、ラインメモリ314に最初のラインL1の画素データが格納され、ラインメモリ313に次のラインL2の画素データが格納され、ラインメモリ312に、さらに次のラインL3の画素データが格納され、ラインメモリ311に、さらに次のラインL4の画素データが格納された状態になる。
この状態では、次のクロックから、入力画像として次のラインL5の画素データが画素方向演算部320に入力される。また、ラインL4〜L1の画素データは、各々画素方向演算部321〜324に入力される。
これにより、5ラインが同じ位相で画素方向演算部320〜324により、画素方向に5画素ずつ加算されることになる。さらに、画素方向演算部320〜324の出力(各画素が画素方向に5画素ずつ積算したデータで置き換えられた画素データ)は、加算器361〜364により、ライン方向に5ライン分積算される。これにより画素方向およびライン方向に5×5の画素データが積算され、乗算器365に入力される。乗算器365は、その積算結果を25で除算することにより、25画素の平均値を出力する。
このFIG.4より、5×5の平均値フィルタに対して、フリップフロップ20個、加算器24個および乗算器1個が必要である。
FIG.5に、N×Nの平均値フィルタに一般化された構成を示す。FIG.5に示しように、N×Nの平均値フィルタを実現するためのハードウェアは、画像データを1ラインずつ遅延させるラインメモリ[N−1]系統、FF[(N−1)×N]個、加算器[(N×N)−1]個、乗算器1個となる。
(2−2)フィルタサイズ可変の場合
FIG.6に、フィルタサイズ可変(3×3〜N×N)の平均値フィルタ回路を示す。FIG.6のように、フィルタサイズが3×3〜N×Nならば、回路構成(FF、ラインメモリ、加算器)としては常に最大のフィルタサイズN×Nの構成を準備しておく。
そして、各ラインの合計値から、指定されたフィルタサイズに相当する構成のFF出力を選択して、加算値を求めることにより、任意のサイズの平均値フィルタを構成できる。
このようなFF出力選択のため、FIG.6のフィルタ回路では、セレクタ370、371等を有している。例えば、セレクタ371は、画素方向演算部320内において、任意の個数(3〜N)の加算値を選択する回路である。何個の加算値を選択するかは、切替信号381により指定される。他の画素方向演算部321、322、...等も同様の構成である。
また、セレクタ370は、画素方向演算部320等の出力をさらに加算したライン方向の加算器に対して361、362、...等の内、任意のライン数分の加算結果を選択する回路である。ライン方向の加算数の選択は、切替信号380により、指定される。
上記従来技術では、下記のような課題がある。
(1)演算遅延がライン単位でしか認められていないような画像処理装置の場合、FIG.2のようなソフトウェアによる従来技術での構成では、フレームメモリ、演算メモリを用いて1画素ずつDSPに読込み、演算する。このため、処理ステップ数が莫大になってしまい、フレーム遅延が発生する。この遅延は、例えば、1/30秒(1フレームの表示時間)以上となり、リアルタイム処理は非常に困難である。ここで、リアルタイム処理とは、ラインディレイ(数ライン程度の遅延)で画像を処理することをいう。
(2)FIG.5に示したハードウェアによる構成は、ローコスト並びに、装置の小型化を実現する必要がある画像処理装置には適用できない。すなわち、従来技術では、FIG.5のように、平均値フィルタを構成する際のハードウェア規模が大きくなる。N×Nの平均値フィルタを構成するためには、FF[(N−1)×N]個、加算器[(N×N)−1]個が必要になってしまう。
(3)可変平均値フィルタを構成する場合、フィルタの可変サイズが3×3〜N×Nフィルタでは、ハードウェア規模は必ずN×Nサイズのものを準備する必要がある。そして指定された任意のフィルタサイズに見合ったフィルタサイズの加算値を求めるので、小さいフィルタサイズのものを選択すればする程、必要のないFF、ラインメモリ、加算器等の莫大な冗長回路が発生してしまう。
例として、FIG.5を用いて計算すると、3×3フィルタの場合に、FF6個、加算器8個であるのに対して、21×21フィルタでは、FF420個、加算器440個が必要となる。したがって、3×3フィルタを選択した場合は、FF414個、加算器432個が不要となってしまう。
本発明はこのような従来の技術の問題点に鑑みてなされたものである。すなわち、本発明の課題は、ハードウェアの規模を増大させることなく、リアルタイムで画像データの処理が可能な平均値フィルタを提供することにある。ここで、リアルタイムとは、最大でもフレームの遅延が発生しない時間内で処理が完了することをいう。
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、平均値フィルタ装置であって、2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して上記各画素の第1積算画素データを生成する第1積算手段と、
第2次元方向に各画素の近傍に位置する所定数の画素に対応する、上記第1積算画素データを積算して上記各画素の第2積算画素データを生成する第2積算手段と、
上記第1次元方向および第2次元方向に積算された画素数で上記第2積算画素データを除算する手段とを備えるものである。
この平均値フィルタ装置は、2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して上記各画素の第1積算画素データを生成する。さらに、第2次元方向に各画素の近傍に位置する所定数の画素に対応する、上記第1積算画素データを積算して上記各画素の第2積算画素データを生成する。このように、この平均値フィルタは、2次元画像の各画素近傍の所定数の画素データを積算し、平均値フィルタを実現できる。
好ましくは、上記第1積算手段は、第1次元方向に画素データを順次積算する第1順次積算手段と、
順次積算される積算対象画素から第1次元方向に所定数以上離れた画素の画素データを、上記順次積算結果から減算する第1減算手段とを有するものでもよい。
すなわち、この平均値フィルタは、第1次元方向に画素データを順次積算し、その積算結果から所定数以上離れた画素の画素データを減算することで上記第1次元方向での各画素近傍の所定数の画素データの積算を実現する。
好ましくは、上記第1順次積算手段は、入力された入力画素データと上記入力画素データの入力前に積算済みの画素データとを加算する第1加算手段と、積算済みの画素データを保持する加算保持手段と含み、
上記第1減算手段は、上記入力画素データを所定数順次保持する入力保持手段と、現在入力されている画素データから所定数離れた入力画素データを上記第1加算手段の出力から減算し、上記加算保持手段に所定画素積算値として出力する第1減算手段とを含み、
上記加算保持手段は、上記所定画素積算値を次の加算のために上記第1加算手段に帰還出力するものでもよい。
すなわち、この平均値フィルタは、加算保持手段が保持する加算結果を上記第1加算手段に帰還出力することにより、第1次元方向への順次加算を実現する。また、この平均値フィルタは、入力画素データを所定数順次保持し、所定数離れた入力画素データを上記順次加算の結果から減算する。
好ましくは、上記入力保持手段は、各画素に対応するデータをシフトして記憶するシフトレジスタと、このシフトレジスタの各シフト位置に記憶された画素データのいずれかを選択的に出力するセレクタとを有するものでもよい。
このように、シフトレジスタの各シフト位置に記憶された画素データのいずれかを選択的に出力することで、減算すべきデータの位置を変更し、加算する画素の範囲を変更できる。
好ましくは、上記第2積算手段は、第2次元方向に画素データを順次積算する第2順次積算手段と、
順次積算される積算対象画素から第2次元方向に所定数以上離れた画素の画素データを、上記順次積算結果から減算する第2減算手段とを有するものでもよい。
すなわち、この平均値フィルタは、第2次元方向に画素データを順次積算し、その積算結果から所定数以上離れた画素の画素データを減算することで上記第2次元方向での各画素近傍の所定数の画素データの積算を実現する。
好ましくは、上記第2順次積算手段は、第1積算手段から入力された第1積算画素データと上記第1積算画素データの入力前に第2次元方向に積算済みの画素データとを加算する第2加算手段と、第2次元方向に積算済みの画素データを第1次元方向に1ライン保持するライン加算保持手段と含み、
上記第2減算手段は、第1積算手段から入力された第1積算画素データを所定ライン数順次保持する第1次元積算データ保持手段と、現在入力されている第1積算画素データから所定ライン数離れたラインの第1積算画素データを上記第2加算手段の出力から減算し、上記ライン加算保持手段に所定ライン積算値として出力する第2減算手段とを含み、
上記ライン加算保持手段は、上記所定ライン積算値を次の加算のために上記第2加算手段に帰還出力するものでもよい。
すなわち、この平均値フィルタは、ライン加算保持手段が保持する加算結果を上記第2加算手段に帰還出力することにより、第2次元方向への順次加算を実現する。また、この平均値フィルタは、第1積算画素データを所定ライン数順次保持し、所定ライン数離れた第1積算画素データを上記順次加算の結果から減算する。
好ましくは、上記第1次元積算データ保持手段は、2次元画像の第1次元方向の画素に対応する、そのようなラインデータを複数ラインに渡ってシフトさせて保持するラインメモリと、上記複数ラインのいずれかを選択的に出力するライン選択部とを有するものでもよい。
このように、複数ラインのラインメモリから選択的に出力することで、減算すべきデータの位置を変更し、ライン方向に加算する画素の範囲を変更できる。
また、本発明は、上記平均値フィルタ装置を含む撮像装置であってもよい。また、本発明は、上記平均値フィルタ処理を実行するフィルタリング方法であってもよい。
(1)演算遅延がライン単位でしか認められていないような画像処理装置の場合、FIG.2のようなソフトウェアによる従来技術での構成では、フレームメモリ、演算メモリを用いて1画素ずつDSPに読込み、演算する。このため、処理ステップ数が莫大になってしまい、フレーム遅延が発生する。この遅延は、例えば、1/30秒(1フレームの表示時間)以上となり、リアルタイム処理は非常に困難である。ここで、リアルタイム処理とは、ラインディレイ(数ライン程度の遅延)で画像を処理することをいう。
(2)FIG.5に示したハードウェアによる構成は、ローコスト並びに、装置の小型化を実現する必要がある画像処理装置には適用できない。すなわち、従来技術では、FIG.5のように、平均値フィルタを構成する際のハードウェア規模が大きくなる。N×Nの平均値フィルタを構成するためには、FF[(N−1)×N]個、加算器[(N×N)−1]個が必要になってしまう。
(3)可変平均値フィルタを構成する場合、フィルタの可変サイズが3×3〜N×Nフィルタでは、ハードウェア規模は必ずN×Nサイズのものを準備する必要がある。そして指定された任意のフィルタサイズに見合ったフィルタサイズの加算値を求めるので、小さいフィルタサイズのものを選択すればする程、必要のないFF、ラインメモリ、加算器等の莫大な冗長回路が発生してしまう。
例として、FIG.5を用いて計算すると、3×3フィルタの場合に、FF6個、加算器8個であるのに対して、21×21フィルタでは、FF420個、加算器440個が必要となる。したがって、3×3フィルタを選択した場合は、FF414個、加算器432個が不要となってしまう。
本発明はこのような従来の技術の問題点に鑑みてなされたものである。すなわち、本発明の課題は、ハードウェアの規模を増大させることなく、リアルタイムで画像データの処理が可能な平均値フィルタを提供することにある。ここで、リアルタイムとは、最大でもフレームの遅延が発生しない時間内で処理が完了することをいう。
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、平均値フィルタ装置であって、2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して上記各画素の第1積算画素データを生成する第1積算手段と、
第2次元方向に各画素の近傍に位置する所定数の画素に対応する、上記第1積算画素データを積算して上記各画素の第2積算画素データを生成する第2積算手段と、
上記第1次元方向および第2次元方向に積算された画素数で上記第2積算画素データを除算する手段とを備えるものである。
この平均値フィルタ装置は、2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して上記各画素の第1積算画素データを生成する。さらに、第2次元方向に各画素の近傍に位置する所定数の画素に対応する、上記第1積算画素データを積算して上記各画素の第2積算画素データを生成する。このように、この平均値フィルタは、2次元画像の各画素近傍の所定数の画素データを積算し、平均値フィルタを実現できる。
好ましくは、上記第1積算手段は、第1次元方向に画素データを順次積算する第1順次積算手段と、
順次積算される積算対象画素から第1次元方向に所定数以上離れた画素の画素データを、上記順次積算結果から減算する第1減算手段とを有するものでもよい。
すなわち、この平均値フィルタは、第1次元方向に画素データを順次積算し、その積算結果から所定数以上離れた画素の画素データを減算することで上記第1次元方向での各画素近傍の所定数の画素データの積算を実現する。
好ましくは、上記第1順次積算手段は、入力された入力画素データと上記入力画素データの入力前に積算済みの画素データとを加算する第1加算手段と、積算済みの画素データを保持する加算保持手段と含み、
上記第1減算手段は、上記入力画素データを所定数順次保持する入力保持手段と、現在入力されている画素データから所定数離れた入力画素データを上記第1加算手段の出力から減算し、上記加算保持手段に所定画素積算値として出力する第1減算手段とを含み、
上記加算保持手段は、上記所定画素積算値を次の加算のために上記第1加算手段に帰還出力するものでもよい。
すなわち、この平均値フィルタは、加算保持手段が保持する加算結果を上記第1加算手段に帰還出力することにより、第1次元方向への順次加算を実現する。また、この平均値フィルタは、入力画素データを所定数順次保持し、所定数離れた入力画素データを上記順次加算の結果から減算する。
好ましくは、上記入力保持手段は、各画素に対応するデータをシフトして記憶するシフトレジスタと、このシフトレジスタの各シフト位置に記憶された画素データのいずれかを選択的に出力するセレクタとを有するものでもよい。
このように、シフトレジスタの各シフト位置に記憶された画素データのいずれかを選択的に出力することで、減算すべきデータの位置を変更し、加算する画素の範囲を変更できる。
好ましくは、上記第2積算手段は、第2次元方向に画素データを順次積算する第2順次積算手段と、
順次積算される積算対象画素から第2次元方向に所定数以上離れた画素の画素データを、上記順次積算結果から減算する第2減算手段とを有するものでもよい。
すなわち、この平均値フィルタは、第2次元方向に画素データを順次積算し、その積算結果から所定数以上離れた画素の画素データを減算することで上記第2次元方向での各画素近傍の所定数の画素データの積算を実現する。
好ましくは、上記第2順次積算手段は、第1積算手段から入力された第1積算画素データと上記第1積算画素データの入力前に第2次元方向に積算済みの画素データとを加算する第2加算手段と、第2次元方向に積算済みの画素データを第1次元方向に1ライン保持するライン加算保持手段と含み、
上記第2減算手段は、第1積算手段から入力された第1積算画素データを所定ライン数順次保持する第1次元積算データ保持手段と、現在入力されている第1積算画素データから所定ライン数離れたラインの第1積算画素データを上記第2加算手段の出力から減算し、上記ライン加算保持手段に所定ライン積算値として出力する第2減算手段とを含み、
上記ライン加算保持手段は、上記所定ライン積算値を次の加算のために上記第2加算手段に帰還出力するものでもよい。
すなわち、この平均値フィルタは、ライン加算保持手段が保持する加算結果を上記第2加算手段に帰還出力することにより、第2次元方向への順次加算を実現する。また、この平均値フィルタは、第1積算画素データを所定ライン数順次保持し、所定ライン数離れた第1積算画素データを上記順次加算の結果から減算する。
好ましくは、上記第1次元積算データ保持手段は、2次元画像の第1次元方向の画素に対応する、そのようなラインデータを複数ラインに渡ってシフトさせて保持するラインメモリと、上記複数ラインのいずれかを選択的に出力するライン選択部とを有するものでもよい。
このように、複数ラインのラインメモリから選択的に出力することで、減算すべきデータの位置を変更し、ライン方向に加算する画素の範囲を変更できる。
また、本発明は、上記平均値フィルタ装置を含む撮像装置であってもよい。また、本発明は、上記平均値フィルタ処理を実行するフィルタリング方法であってもよい。
FIG.1は、平均値フィルタの概念を示す図であり、
FIG.2は、DSP上のソフトウェアによるフィルタの構成図であり、
FIG.3は、平均値フィルタ機能を提供するDSPの処理手順を示す図であり、
FIG.4は、従来のハードウェアによる5×5平均値フィルタの構成例であり、
FIG.5は、従来のハードウェアによるN×N平均値フィルタの構成例であり、
FIG.6は、従来のハードウェアによる可変平均値フィルタ(3×3〜N×N)の構成例であり、
FIG.7は、本発明の第1実施形態に係る5×5平均値フィルタの構成例であり、
FIG.8は、本発明の第1実施形態に係るN×N平均値フィルタの構成例であり、
FIG.9は、本発明の第1実施形態に係る可変平均値フィルタ(3×3〜N×N)の構成例であり、
FIG.10は、本発明の実施例における入力画像データの説明図であり、
FIG.11は、本発明の実施例における画素方向演算の説明図であり、
FIG.12は、本発明の実施例におけるライン方向演算の説明図であり、
FIG.13は、本発明の第2実施形態における撮像装置の系統図である。
FIG.2は、DSP上のソフトウェアによるフィルタの構成図であり、
FIG.3は、平均値フィルタ機能を提供するDSPの処理手順を示す図であり、
FIG.4は、従来のハードウェアによる5×5平均値フィルタの構成例であり、
FIG.5は、従来のハードウェアによるN×N平均値フィルタの構成例であり、
FIG.6は、従来のハードウェアによる可変平均値フィルタ(3×3〜N×N)の構成例であり、
FIG.7は、本発明の第1実施形態に係る5×5平均値フィルタの構成例であり、
FIG.8は、本発明の第1実施形態に係るN×N平均値フィルタの構成例であり、
FIG.9は、本発明の第1実施形態に係る可変平均値フィルタ(3×3〜N×N)の構成例であり、
FIG.10は、本発明の実施例における入力画像データの説明図であり、
FIG.11は、本発明の実施例における画素方向演算の説明図であり、
FIG.12は、本発明の実施例におけるライン方向演算の説明図であり、
FIG.13は、本発明の第2実施形態における撮像装置の系統図である。
以下、図面を参照して、本発明の好適な実施の形態を説明する。
《第1実施形態》
以下、本発明の第1実施形態に係る平均値フィルタをFIG.7からFIG.12の図面に基づいて説明する。
リアルタイム高速動画像処理においては、その処理時間の問題や、回路規模が現実的ではないという問題点があるが、高速処理ということにおいては、ソフトウェアよりもハードウェアの方が有利な面もある。
本実施形態では、このような特徴を踏まえ、リアルタイム高速動画像処理のための、ハードウェアの小型化、リアルタイム演算が実現可能な平均値フィルタ演算回路について説明する。
<構成>
FIG.7およびFIG.8に、本発明の第1実施形態に係る平均値フィルタの構成例を示す。この平均値フィルタは、画素方向演算回路1(第1積算手段に相当)、ライン方向演算回路2(第2積算手段に相当)、および、1/25倍の乗算を実行する乗算器45(除算する手段に相当)から構成される。以下、FIG.7の平均値フィルタ回路について説明する。
画素方向演算回路1は、入力画像データを1クロックごとに1画素ずつシフトして記憶するシフトレジスタ30(入力保持手段に相当)と、入力画像データとFF36に記憶された画素データを加算することでループ加算器として機能する加算器41(第1加算手段に相当)と、ループ加算器の加算結果からFF35の出力を減算する減算器42(第1減算器に相当)および減算器42の出力を1クロック遅延させて出力するFF36(加算保持手段に相当)を有している。また、シフトレジスタ30は、FF(フリップフロップ)31〜35を順次、接続して構成される。
ここで、まず、加算器41、FF36によるループ加算処理について説明する。今、例えば、640画素×480行の入力画像データが外部から入力された場合を想定する。ここで、外部とは、FIG.7に示した平均値フィルタの外部、例えば、映像を撮影する撮像装置等である。そして、現在処理中のラインが、例えば、FIG.1に示した画素データA−Eを先頭するラインであったとする。
画素データAは、加算器41、減算器42を経由してFF36に蓄積される。そして、画素データAは、1クロック遅延して加算器41において画素データBと加算される。加算された結果(A+B)は、FF36に蓄積される。このように、加算器41およびFF36は、積算器として機能する。
さらに、同様の処理を繰り返して、画素データC、D、Eが加算器41に入力された後、積算結果(A+B+C+D+E)が、FF36に蓄積される。このFF36の積算結果は、画素方向演算回路1の出力値としてライン方向演算回路2に出力される。
このとき、画素データE、D、C、BおよびAは、シフトレジスタ30において、各々FF31、32、33、34、および35に順次シフトして蓄積されている。したがって、次のクロックにおいて、加算器41がFF36の積算結果(A+B+C+D+E)と次の画素データ(画素データEの次に入力される画素データ、これを例えば画素データXとする)とを加算したとき、減算器42により、画素データAが減算される。その結果、FF36には、5個の画素データ(B+C+D+E+X)の積算結果が保持される。
このFF36の積算結果は、画素方向演算回路1の出力値としてライン方向演算回路2に出力される。以降の各クロックにおいて、FF31−35および減算器42による減算作用により、画素方向に5画素分の幅で積算が実行され、C+D+E+X+Y、D+E+X+Y+Z,...のように、画素方向演算回路1の出力値としてライン方向演算回路2に出力される(ここで、Y、Zは、画素データXの後に入力される画素データである)。
この場合、640画素×480ラインの入力画像データの内、最初の2列と最後の2列を除くデータ(1ライン中の最初の2画素および最後の2画素を除くデータ)、すなわち、3列目〜638列目までのデータに対しては、5画素分の加算を求めることができる。
一方、最初の2列と最後の2列に関しては、加算すべき画素が存在しない(1ライン中の最初の2画素より前に画素がなく、最後の2画素より後にも画素がない(640画素×480ラインの画像領域外の領域に相当))。
このため、最初の2列と最後の2列に関しては、完全な5画素分の加算を実行することはできない。すなわち、これらの画素データに関しては、完全な平均値フィルタを適用することはできない。そこで、これらの領域に関しては、元の入力データをそのまま5倍にして使用する。あるいは、3列目と478列目の画素に対応する加算値を各々、最初の2列と最後の2列の加算値として用いる等の手法が採られる。
次に、ライン方向演算回路2の構成および作用を説明する。ライン方向演算回路2は、画像データを1クロックごとに1ラインずつシフトして、5ライン分記憶するラインメモリ11(第1次元積算データ保持手段に相当)、ラインメモリ11のシフト動作を制御するラインメモリタイミング調整回路12、このライン方向演算回路2に入力される画像データとラインメモリ13に記憶された画素データとを加算することでライン方向のループ加算器として機能する加算器43(第2加算手段に相当)、ループ加算器の加算結果からラインメモリ11の出力を減算する減算器44(第2減算器に相当)、および減算器44の出力を1ライン遅延させて出力するラインメモリ13(ライン加算保持手段に相当)を有している。
ここで、加算器43、およびラインメモリ13によるライン方向のループ加算処理について説明する。ここでも、640画素×480ラインの入力画像データが入力された場合を想定する。上述のように、この画素データは、画素方向演算回路1により、画素方向に5画素ずつ積算した結果に置き換えられる。ただし、上述のように、最初の2列と最後の2列の画素に対応する加算値は、完全な加算値ではない。
今、現在処理中のラインが、例えば、FIG.1に示した画素データA−Eを先頭するライン(今、これをラインL1と呼ぶ)であったとする。
ラインL1の各画素データは、加算器43、減算器44を経由してラインメモリ13に順次蓄積される。これら各画素データは、ラインメモリ11にも順次蓄積される。
ラインL1の画素データがすべてラインメモリ13に格納されると、ライン方向演算回路2には、次のラインに対応する画素データが順次入力される。次のラインは、例えば、FIG.1において、画素データF−Jを先頭とするラインであり、これをラインL2と呼ぶ。
そして、このラインL2の各画素データは、加算器43に入力される。一方、ラインメモリ13の出力として、1ライン遅延したラインL1のデータも加算器43に入力される。
その結果、ラインL1の各画素データがラインL2の同一列の(同一の画素方向に位置する)画素データと加算される。加算された結果は、ラインメモリ13に順次蓄積される。例えば、FIG.1のデータ例では、ラインメモリ13には、画素AとF、BとG、CとH、DとI、EとJの各画素に対応するデータ(画素方向演算回路1で5画素加算済みのデータ)をさらに加算した結果が順次格納される。このように、加算器43およびラインメモリ13は、積算器として機能する。
このライン方向の積算時、ラインメモリ11において、ラインL1の画素に対応するデータは、1ライン分シフトされ、新たに、ラインL2の画素に対応するデータが順次入力される。したがって、ラインL1とラインL2の加算が完了したとき、ラインメモリ11には、ラインL1とL2の画素に対応するデータが蓄積される。
さらに、同様の処理を繰り返して、ラインL3(FIG.1の画素K、L、M、M、Oを含むライン)、ラインL4(FIG.1の画素P、Q、R、S、Tを含むライン)、ラインL5(FIG.1の画素U、V、W、X、Yを含むライン)の各画素に対応するデータが加算器43に入力された後、ライン方向の積算結果(L1+L2+L3+L4+L5の結果による1ライン分のデータ)が、ラインメモリ13に蓄積される。このラインメモリ13の積算結果は、ライン方向演算回路2の出力値として乗算器45に出力される。このL1+L2+L3+L4+L5の結果による各画素のデータは、画素方向演算回路1およびライン方向演算回路2の積算結果から、結局画素方向およびライン方向に5画素分積算した値となる。例えば、FIG.1の画素Mについては、A+B+...+Yの加算値が計算されることになる。
さらに、このとき、ラインL5、L4、L3、L2およびL1の各画素に対応するデータは、ラインメモリ11に順次シフトして蓄積されている。したがって、次のサイクル(例えば、次の640クロック)において、加算器43がラインメモリ13上の積算結果(L1+L2+L3+L4+L5)と次のライン(ラインL5の次に入力されるライン、これを例えばラインL6とする)とを加算していくとき、減算器42により、ラインL1の画素に対応するデータが順次減算される。その結果、減算器42からは、5ラインの画素データ(L2+L3+L4+L5+L6)の積算結果が1画素ずつ640画素分、順次出力される。そして、ラインメモリ13には、5ラインの画素データ(L2+L3+L4+L5+L6)の積算結果が蓄積されることになる。
このラインメモリ13に蓄積された各データは、ライン方向演算回路2の出力値として乗算器45に順次出力される。以降の各クロックにおいて、ラインメモリ11および減算器44による減算作用により、ライン方向に5ライン分の幅で積算が実行され、L3+L4+L5+L6+L7、L4+L5+L6+L7+L8,...のように、ライン方向演算回路2の出力値として乗算器45に出力される。
ただし、画素方向演算回路1においてすでに説明した場合と同様、ライン方向において、最初の2ライン分および最後の2ライン分の各画素に対しては、完全な25画素分の加算を実行することはできない。その対策としては、元の入力データを5倍して使用するか、あるいは、3ラインおよび478ラインを上記最初の2ライン分および最後の2ライン分のデータに代えて使用する等の対応を採ればよい。
このように、乗算器45には、640画素×480ラインの画素データに対して、各画素の周囲5×5画素の領域を積算した結果が順次入力される。乗算器45は、これらの各データを1/25倍するので、乗算器45からは、5×5の画素を平均した結果が出力されることになる。
FIG.8は、N×N平均値フィルタである。FIG.7は、5×5の平均値フィルタであった。一方、FIG.8に示す平均値フィルタは、フィルタ処理の範囲をN×Nに一般化したものである。FIG.8においては、シフトレジスタ30Aを構成するフリップフロップが、FF31、FF32,...FF30−NのようにN個使用される。また、ラインメモリ11AがNライン分のメモリを有している。ただし、その作用は、FIG.7の場合と同様であるので、その説明を省略する。
次に、ライン方向演算回路2あるいは2Aにおいて、画素方向加算値に対して順にライン方向にループ加算する。そして、ラインメモリ11あるいは11Aにて遅延させた画素方向加算値の内の最も古いデータをライン方向のループ加算値から引くことによってライン方向におけるNラインの加算値を求める。このため、入力画像データに対しての演算遅延はループ加算によって生じるフィルタサイズに依存した数のライン数しか発生しない。すなわち、この演算により、例えば、1フレームが640画素×480ラインの画像を処理する場合も、演算遅延を1フレーム以内に納めることができる。
FIG.7またはFIG.8のように、画素方向演算回路1または1Aにおいて、入力画像データに対して順に画素方向にループ加算しながら、シフトレジスタ30あるいは30Aによって遅延させた入力画像データを画素方向のループ加算値から減算することによって画素方向におけるN画素の加算値を求める。
次に、ライン方向演算回路2において、画素方向加算値に対して順にライン方向にループ加算しながら、ラインメモリ11あるいは11Aにて遅延させた画素方向加算値の内の最も古いデータをライン方向のループ加算値から減算する。これよって、ライン方向におけるNラインの加算値を求める。このような構成により、従来技術のように画素ごとに遅延させて位相を合わせるためのフリップフロップと加算器とを組み合わせる必要がない。そのため、ハードウェア規模を大幅に縮小できる。また、フィルタサイズの大きい平均値フィルタを構成してもFF、ラインメモリの小規模な追加だけで済み、加算器の個数はフィルタの大きさに依存しない。
FIG.9は、本発明の第1実施形態に係る可変平均値フィルタ(3×3〜N×N)である。この可変平均値フィルタは、FIG.8の平均値フィルタと比較して、セレクタ15およびセレクタ16が追加されている。また、ラインメモリ調整回路12Aは、フィルタサイズ3×3〜N×Nに応じて、指定されるライン位置からデータを読み出し、減算回路44に出力する。FIG.9の以上述べた構成要素以外の構成要素は、FIG.8と同様である。
セレクタ15は、3×3〜N×Nの切替信号を入力され、その入力に対応するシフトレジスタ30A上の位置(フリップフロップの出力)を選択する。例えば、3×3の切替信号が入力された場合、セレクタ15は、FF33の出力を選択する。このようにして、FF31〜FF−Nと、セレクタ15との組み合わせにより、3〜Nの範囲で、任意サイズのシフトレジスタを構成する。
したがって、加算器41およびFF36と、FF31〜FF30−N、セレクタ15、および減算器42とを組み合わせることにより、画素方向に3〜Nの範囲で可変サイズの積算を実行する積算器を構成する。
また、ラインメモリ11Aは、Nライン分(最大数のライン数分)の容量を有する。そして、ラインメモリタイミング調整部12Aは、3×3〜N×Nの切替信号を入力され、その入力に対応するラインメモリ11Aの位置から画素データ(画素方向加算回路1Bの加算結果)を読み出す。
したがって、加算器43およびラインメモリ13と、ラインメモリ11A、ラインメモリタイミング調整部12A、および減算器44とを組み合わせることにより、ライン方向に3〜Nの範囲で可変サイズの積算を実行する積算器を構成する。この積算結果は、FIG.7またはFIG.8に示した場合と同様、乗算器45に入力される。
乗算器45には、セレクタ16が接続されている。セレクタ16は、3×3〜N×Nの切替信号を入力され、その入力に対応する乗算値1/(3×3)〜1/(N×N)を乗算器45に設定する。したがって、乗算器45は、1/(3×3)〜1/(N×N)の範囲で、乗算値を自在に切り替えて乗算を実行する。
このように、画素方向演算回路部1B、ライン方向演算回路2Bのそれぞれのループ加算値から引く減算値(加算値を構成する内の最も古いデータ)をシフトレジスタ30A(FF33〜FF30−Nの範囲)、および、ラインメモリ11Aに格納する。さらに、上記減算値の遅延量を調整するセレクタ15およびラインメモリ調整部12Aを設ける。そして、指定されたフィルタサイズに応じたFF33〜FF30−Nおよびラインメモリ11Aの出力を選択することによって、3×3〜N×Nのフィルタサイズで可変平均値フィルタを構成できる。
《第1実施形態》
以下、本発明の第1実施形態に係る平均値フィルタをFIG.7からFIG.12の図面に基づいて説明する。
リアルタイム高速動画像処理においては、その処理時間の問題や、回路規模が現実的ではないという問題点があるが、高速処理ということにおいては、ソフトウェアよりもハードウェアの方が有利な面もある。
本実施形態では、このような特徴を踏まえ、リアルタイム高速動画像処理のための、ハードウェアの小型化、リアルタイム演算が実現可能な平均値フィルタ演算回路について説明する。
<構成>
FIG.7およびFIG.8に、本発明の第1実施形態に係る平均値フィルタの構成例を示す。この平均値フィルタは、画素方向演算回路1(第1積算手段に相当)、ライン方向演算回路2(第2積算手段に相当)、および、1/25倍の乗算を実行する乗算器45(除算する手段に相当)から構成される。以下、FIG.7の平均値フィルタ回路について説明する。
画素方向演算回路1は、入力画像データを1クロックごとに1画素ずつシフトして記憶するシフトレジスタ30(入力保持手段に相当)と、入力画像データとFF36に記憶された画素データを加算することでループ加算器として機能する加算器41(第1加算手段に相当)と、ループ加算器の加算結果からFF35の出力を減算する減算器42(第1減算器に相当)および減算器42の出力を1クロック遅延させて出力するFF36(加算保持手段に相当)を有している。また、シフトレジスタ30は、FF(フリップフロップ)31〜35を順次、接続して構成される。
ここで、まず、加算器41、FF36によるループ加算処理について説明する。今、例えば、640画素×480行の入力画像データが外部から入力された場合を想定する。ここで、外部とは、FIG.7に示した平均値フィルタの外部、例えば、映像を撮影する撮像装置等である。そして、現在処理中のラインが、例えば、FIG.1に示した画素データA−Eを先頭するラインであったとする。
画素データAは、加算器41、減算器42を経由してFF36に蓄積される。そして、画素データAは、1クロック遅延して加算器41において画素データBと加算される。加算された結果(A+B)は、FF36に蓄積される。このように、加算器41およびFF36は、積算器として機能する。
さらに、同様の処理を繰り返して、画素データC、D、Eが加算器41に入力された後、積算結果(A+B+C+D+E)が、FF36に蓄積される。このFF36の積算結果は、画素方向演算回路1の出力値としてライン方向演算回路2に出力される。
このとき、画素データE、D、C、BおよびAは、シフトレジスタ30において、各々FF31、32、33、34、および35に順次シフトして蓄積されている。したがって、次のクロックにおいて、加算器41がFF36の積算結果(A+B+C+D+E)と次の画素データ(画素データEの次に入力される画素データ、これを例えば画素データXとする)とを加算したとき、減算器42により、画素データAが減算される。その結果、FF36には、5個の画素データ(B+C+D+E+X)の積算結果が保持される。
このFF36の積算結果は、画素方向演算回路1の出力値としてライン方向演算回路2に出力される。以降の各クロックにおいて、FF31−35および減算器42による減算作用により、画素方向に5画素分の幅で積算が実行され、C+D+E+X+Y、D+E+X+Y+Z,...のように、画素方向演算回路1の出力値としてライン方向演算回路2に出力される(ここで、Y、Zは、画素データXの後に入力される画素データである)。
この場合、640画素×480ラインの入力画像データの内、最初の2列と最後の2列を除くデータ(1ライン中の最初の2画素および最後の2画素を除くデータ)、すなわち、3列目〜638列目までのデータに対しては、5画素分の加算を求めることができる。
一方、最初の2列と最後の2列に関しては、加算すべき画素が存在しない(1ライン中の最初の2画素より前に画素がなく、最後の2画素より後にも画素がない(640画素×480ラインの画像領域外の領域に相当))。
このため、最初の2列と最後の2列に関しては、完全な5画素分の加算を実行することはできない。すなわち、これらの画素データに関しては、完全な平均値フィルタを適用することはできない。そこで、これらの領域に関しては、元の入力データをそのまま5倍にして使用する。あるいは、3列目と478列目の画素に対応する加算値を各々、最初の2列と最後の2列の加算値として用いる等の手法が採られる。
次に、ライン方向演算回路2の構成および作用を説明する。ライン方向演算回路2は、画像データを1クロックごとに1ラインずつシフトして、5ライン分記憶するラインメモリ11(第1次元積算データ保持手段に相当)、ラインメモリ11のシフト動作を制御するラインメモリタイミング調整回路12、このライン方向演算回路2に入力される画像データとラインメモリ13に記憶された画素データとを加算することでライン方向のループ加算器として機能する加算器43(第2加算手段に相当)、ループ加算器の加算結果からラインメモリ11の出力を減算する減算器44(第2減算器に相当)、および減算器44の出力を1ライン遅延させて出力するラインメモリ13(ライン加算保持手段に相当)を有している。
ここで、加算器43、およびラインメモリ13によるライン方向のループ加算処理について説明する。ここでも、640画素×480ラインの入力画像データが入力された場合を想定する。上述のように、この画素データは、画素方向演算回路1により、画素方向に5画素ずつ積算した結果に置き換えられる。ただし、上述のように、最初の2列と最後の2列の画素に対応する加算値は、完全な加算値ではない。
今、現在処理中のラインが、例えば、FIG.1に示した画素データA−Eを先頭するライン(今、これをラインL1と呼ぶ)であったとする。
ラインL1の各画素データは、加算器43、減算器44を経由してラインメモリ13に順次蓄積される。これら各画素データは、ラインメモリ11にも順次蓄積される。
ラインL1の画素データがすべてラインメモリ13に格納されると、ライン方向演算回路2には、次のラインに対応する画素データが順次入力される。次のラインは、例えば、FIG.1において、画素データF−Jを先頭とするラインであり、これをラインL2と呼ぶ。
そして、このラインL2の各画素データは、加算器43に入力される。一方、ラインメモリ13の出力として、1ライン遅延したラインL1のデータも加算器43に入力される。
その結果、ラインL1の各画素データがラインL2の同一列の(同一の画素方向に位置する)画素データと加算される。加算された結果は、ラインメモリ13に順次蓄積される。例えば、FIG.1のデータ例では、ラインメモリ13には、画素AとF、BとG、CとH、DとI、EとJの各画素に対応するデータ(画素方向演算回路1で5画素加算済みのデータ)をさらに加算した結果が順次格納される。このように、加算器43およびラインメモリ13は、積算器として機能する。
このライン方向の積算時、ラインメモリ11において、ラインL1の画素に対応するデータは、1ライン分シフトされ、新たに、ラインL2の画素に対応するデータが順次入力される。したがって、ラインL1とラインL2の加算が完了したとき、ラインメモリ11には、ラインL1とL2の画素に対応するデータが蓄積される。
さらに、同様の処理を繰り返して、ラインL3(FIG.1の画素K、L、M、M、Oを含むライン)、ラインL4(FIG.1の画素P、Q、R、S、Tを含むライン)、ラインL5(FIG.1の画素U、V、W、X、Yを含むライン)の各画素に対応するデータが加算器43に入力された後、ライン方向の積算結果(L1+L2+L3+L4+L5の結果による1ライン分のデータ)が、ラインメモリ13に蓄積される。このラインメモリ13の積算結果は、ライン方向演算回路2の出力値として乗算器45に出力される。このL1+L2+L3+L4+L5の結果による各画素のデータは、画素方向演算回路1およびライン方向演算回路2の積算結果から、結局画素方向およびライン方向に5画素分積算した値となる。例えば、FIG.1の画素Mについては、A+B+...+Yの加算値が計算されることになる。
さらに、このとき、ラインL5、L4、L3、L2およびL1の各画素に対応するデータは、ラインメモリ11に順次シフトして蓄積されている。したがって、次のサイクル(例えば、次の640クロック)において、加算器43がラインメモリ13上の積算結果(L1+L2+L3+L4+L5)と次のライン(ラインL5の次に入力されるライン、これを例えばラインL6とする)とを加算していくとき、減算器42により、ラインL1の画素に対応するデータが順次減算される。その結果、減算器42からは、5ラインの画素データ(L2+L3+L4+L5+L6)の積算結果が1画素ずつ640画素分、順次出力される。そして、ラインメモリ13には、5ラインの画素データ(L2+L3+L4+L5+L6)の積算結果が蓄積されることになる。
このラインメモリ13に蓄積された各データは、ライン方向演算回路2の出力値として乗算器45に順次出力される。以降の各クロックにおいて、ラインメモリ11および減算器44による減算作用により、ライン方向に5ライン分の幅で積算が実行され、L3+L4+L5+L6+L7、L4+L5+L6+L7+L8,...のように、ライン方向演算回路2の出力値として乗算器45に出力される。
ただし、画素方向演算回路1においてすでに説明した場合と同様、ライン方向において、最初の2ライン分および最後の2ライン分の各画素に対しては、完全な25画素分の加算を実行することはできない。その対策としては、元の入力データを5倍して使用するか、あるいは、3ラインおよび478ラインを上記最初の2ライン分および最後の2ライン分のデータに代えて使用する等の対応を採ればよい。
このように、乗算器45には、640画素×480ラインの画素データに対して、各画素の周囲5×5画素の領域を積算した結果が順次入力される。乗算器45は、これらの各データを1/25倍するので、乗算器45からは、5×5の画素を平均した結果が出力されることになる。
FIG.8は、N×N平均値フィルタである。FIG.7は、5×5の平均値フィルタであった。一方、FIG.8に示す平均値フィルタは、フィルタ処理の範囲をN×Nに一般化したものである。FIG.8においては、シフトレジスタ30Aを構成するフリップフロップが、FF31、FF32,...FF30−NのようにN個使用される。また、ラインメモリ11AがNライン分のメモリを有している。ただし、その作用は、FIG.7の場合と同様であるので、その説明を省略する。
次に、ライン方向演算回路2あるいは2Aにおいて、画素方向加算値に対して順にライン方向にループ加算する。そして、ラインメモリ11あるいは11Aにて遅延させた画素方向加算値の内の最も古いデータをライン方向のループ加算値から引くことによってライン方向におけるNラインの加算値を求める。このため、入力画像データに対しての演算遅延はループ加算によって生じるフィルタサイズに依存した数のライン数しか発生しない。すなわち、この演算により、例えば、1フレームが640画素×480ラインの画像を処理する場合も、演算遅延を1フレーム以内に納めることができる。
FIG.7またはFIG.8のように、画素方向演算回路1または1Aにおいて、入力画像データに対して順に画素方向にループ加算しながら、シフトレジスタ30あるいは30Aによって遅延させた入力画像データを画素方向のループ加算値から減算することによって画素方向におけるN画素の加算値を求める。
次に、ライン方向演算回路2において、画素方向加算値に対して順にライン方向にループ加算しながら、ラインメモリ11あるいは11Aにて遅延させた画素方向加算値の内の最も古いデータをライン方向のループ加算値から減算する。これよって、ライン方向におけるNラインの加算値を求める。このような構成により、従来技術のように画素ごとに遅延させて位相を合わせるためのフリップフロップと加算器とを組み合わせる必要がない。そのため、ハードウェア規模を大幅に縮小できる。また、フィルタサイズの大きい平均値フィルタを構成してもFF、ラインメモリの小規模な追加だけで済み、加算器の個数はフィルタの大きさに依存しない。
FIG.9は、本発明の第1実施形態に係る可変平均値フィルタ(3×3〜N×N)である。この可変平均値フィルタは、FIG.8の平均値フィルタと比較して、セレクタ15およびセレクタ16が追加されている。また、ラインメモリ調整回路12Aは、フィルタサイズ3×3〜N×Nに応じて、指定されるライン位置からデータを読み出し、減算回路44に出力する。FIG.9の以上述べた構成要素以外の構成要素は、FIG.8と同様である。
セレクタ15は、3×3〜N×Nの切替信号を入力され、その入力に対応するシフトレジスタ30A上の位置(フリップフロップの出力)を選択する。例えば、3×3の切替信号が入力された場合、セレクタ15は、FF33の出力を選択する。このようにして、FF31〜FF−Nと、セレクタ15との組み合わせにより、3〜Nの範囲で、任意サイズのシフトレジスタを構成する。
したがって、加算器41およびFF36と、FF31〜FF30−N、セレクタ15、および減算器42とを組み合わせることにより、画素方向に3〜Nの範囲で可変サイズの積算を実行する積算器を構成する。
また、ラインメモリ11Aは、Nライン分(最大数のライン数分)の容量を有する。そして、ラインメモリタイミング調整部12Aは、3×3〜N×Nの切替信号を入力され、その入力に対応するラインメモリ11Aの位置から画素データ(画素方向加算回路1Bの加算結果)を読み出す。
したがって、加算器43およびラインメモリ13と、ラインメモリ11A、ラインメモリタイミング調整部12A、および減算器44とを組み合わせることにより、ライン方向に3〜Nの範囲で可変サイズの積算を実行する積算器を構成する。この積算結果は、FIG.7またはFIG.8に示した場合と同様、乗算器45に入力される。
乗算器45には、セレクタ16が接続されている。セレクタ16は、3×3〜N×Nの切替信号を入力され、その入力に対応する乗算値1/(3×3)〜1/(N×N)を乗算器45に設定する。したがって、乗算器45は、1/(3×3)〜1/(N×N)の範囲で、乗算値を自在に切り替えて乗算を実行する。
このように、画素方向演算回路部1B、ライン方向演算回路2Bのそれぞれのループ加算値から引く減算値(加算値を構成する内の最も古いデータ)をシフトレジスタ30A(FF33〜FF30−Nの範囲)、および、ラインメモリ11Aに格納する。さらに、上記減算値の遅延量を調整するセレクタ15およびラインメモリ調整部12Aを設ける。そして、指定されたフィルタサイズに応じたFF33〜FF30−Nおよびラインメモリ11Aの出力を選択することによって、3×3〜N×Nのフィルタサイズで可変平均値フィルタを構成できる。
以下、フィルタサイズ固定による平均値フィルタを適用した実施例を説明する。
FIG.10は、本発明の実施例における入力画像データの説明図である。ここでは、画素方向に640画素、ライン方向に480ラインを有する640×480の画像データを処理する。ここでは、理解を容易にするため、ライン間の無効データ期間はないと仮定する。また、画像データは、16ビット/画素とする。
FIG.7の様に、画素方向演算回路1は、加算器41、減算器42、シフトレジスタ30(5画素遅延:余剰データ減算用)、FF36(1画素分遅延:加算データの位相合わせ用)で構成される。今、この画素方向演算回路1に、FIG.10の様な640×480画素を画像データとして入力する。
FIG.11に画素方向演算の結果を示す。FIG.11には、画素クロック101、リセット信号102、入力画像データ103、ループ加算器出力104、シフトレジスタ出力105および画素方向加算データ106の各信号波形が示されている。
ここで、画素クロック101は、不図示の表示装置が画像データを1画素表示するときのクロックである。この画素クロックは、また、FIG.7〜9に示した平均値フィルタ回路において、1画素分のデータを入力するとき、1画素分のデータをフリップフロップで遅延させるとき、あるいは、平均値フィルタの結果を1画素分出力するとき等、1画素分のデータ処理に使用される。
リセット信号102は、FIG.7〜9に示した平均値フィルタ回路を初期化する信号である。このリセット信号によるリセットの後、FIG.10に示した640×480の画像データが処理される。
入力画像データ103は、FIG.10に示した640×480の各画素が順次入力されたものである。各画素との対応関係を例示するため、1、2、3等の番号が付されている。
ループ加算出力104は、FIG.7に示した加算器41の出力である。ここでは、加算結果と元の画素との対応関係を例示するため、例えば、画素1と画素2の加算結果は、出力値3で示されている。また、画素1、画素2、および画素3の加算結果は、出力値6で示されている。他の出力も同様である。
また、シフトレジスタ出力105は、FIG.7に示したシフトレジスタ30の出力である。FIG.11のように、シフトレジスタ出力105は、入力画像データ103から5画素クロック遅延した値となっている。
また、画素方向加算データ106は、FIG.7に示したFF36の出力である。このデータは、ループ加算出力104およびシフトレジスタ出力105との対応関係を明示するため、ループ加算出力104の各値からシフトレジスタ出力105の各値を減算した値が1クロック遅延した位置に示されている。
FIG.11に示すループ加算器出力104は、入力画像データを1画素ずつ順にデータの先頭からループ加算した結果である。すなわち、2画素目、3画素目、4画素目、5画素目を順に加算するため、次の画素との位相を合わせたFF36の出力を加算器41にフィードバックさせる。
平均値フィルタが5×5であれば、6画素分の加算値を求めた後、この6画素分の加算値を構成している内の最も古いデータを取り除く必要がある。そこで、FIG.11のシフトレジスタ出力105の様に、予めシフトレジスタ30によって入力画像データを5クロック分遅延させた入力画像データを引算する。これよって、5画素分の加算値を求め、FIG.11のシフトレジスタ出力106の様にFF36で位相を合わせてライン方向演算回路2に出力する。
この様に、FF36の出力(5画素分加算値)を加算器41にフィードバックさせて、新たに入力された画像データと加算して6画素分加算値を求める。さらに、この値とシフトレジスタ30の出力によって遅延させた5画素前のデータを引算するので、常に画素方向に5画素分の加算値を順に求めることができる。
FIG.7の様に、ライン方向演算回路2は、加算器43、減算器44、ラインメモリ11(5ライン遅延:余剰データ減算用)、ラインメモリ13(1ライン遅延:加算データの位相合わせ用)で構成され、上記で求めた5画素分の加算値(640×480画素,19Bit/画素)を順に画像データとして入力する。
FIG.12に画素方向演算の結果を示す。FIG.12には、フレームインデックス111、フレーム先頭パルス112、画素方向データ113、ラインメモリ11出力114、ライン方向合計値115、減算器出力116、ラインメモリ13出力117および5×5平均値フィルタ118の各信号波形が示されている。
フレームインデックス111は、フレームの同期をとるため、1フレーム内で1回、L出力からH出力に切り替わる信号である。また、フレーム先頭パルス112は、フレームの先頭を示すパルスである。
画素方向加算データ113は、FIG.11に示した画素方向加算データ106と同一の信号である。ただし、FIG.12では、例えば、P1、P2の各信号部分が各々640クロックに対応する1ライン分のデータに相当する。
ラインメモリ11出力114は、FIG.7に示したラインメモリ11の出力信号であり、減算器44への一方の入力信号である。
ライン方向合計値115は、FIG.7に示した加算器43の出力信号であり、減算器44への他方の入力信号である。
減算器出力116は、ライン方向合計値115からラインメモリ11出力114を減算した信号である。
ラインメモリ13出力117は、FIG.7に示したラインメモリ13の出力信号であり、加算器43に1ライン遅れて入力される信号である。
5×5平均値フィルタ118は、FIG.7に示した乗算器45から出力されるフィルタ処理された画像データである。
FIG.12のライン方向合計値115の様に、画素方向加算データをライン方向に1画素ずつ順にデータの先頭からループ加算を行う。すなわち、2ライン目、3ライン目、4ライン目、5ライン目の画素を順に加算するため、ラインメモリ13によって次のラインとの位相を合わせる。そして、1ライン遅延させて、加算器にフィードバックさせる。求める平均値フィルタが5×5であれば、ライン方向に6ライン分の加算値を求めた後、この6ライン分の加算値を構成している内の最も古いラインのデータを取り除く必要がある。
そこで、FIG.12のラインメモリ11出力114の様に、予めラインメモリ11によって入力画像データを5ライン分遅延させた画素方向加算データを用意する。そして、ライン方向合計値115からラインメモリ11出力114を引算することによって、25画素分の加算値を求めることができ、その値を乗算器45に出力する。
このように、ラインメモリ13の出力(25画素分加算値)を加算器43にフィードバックさせて、新たに入力されたライン(画素方向加算データ)と加算し、6ライン分加算値を求める。そして、この6ライン分の加算値とラインメモリ11の出力によって遅延させた5ライン前のデータを引算するので、常にリアルタイムで25画素分の加算値を順に求めることができる。
また、このときFIG.12のように、5×5の平均値フィルタを2ラインの演算遅延で構成できる。例えば、FIG.1のデータ例の場合、画素データYを含むラインL5の加算が完了した時点で、画素データK、L、M、O、Pを含むラインL3に対するフィルタ処理が完了する。これをN×Nの平均値フィルタに一般化した場合、N/2の整数部分ラインの演算遅延で平均値フィルタを実行できる。
<実施形態の効果>
本実施形態に係るフィルタ回路では、下記1〜3の様な効果がある。
(1)ソフトウェアで構成した場合(FIG.2および3)に対して、本フィルタ回路ではリアルタイム処理(フレーム遅延のない処理)にて平均値フィルタを構成できる。例えば、入力画像データに対して、N/2の整数部分ラインの遅延(N=3、5、7、...)で平均値フィルタを適用できる。
(2)例えば、従来技術であるFIG.5と、本提案であるFIG.8を比較すると、以下のハードウェア規模の大幅な縮小を見積もることができる。
従来技術(ハードウェア処理)の場合、ラインメモリ[N−1]系統、FF[(N−1)×N]個、加算器[(N×N)−1]個の構成となる(N=3、5、7、...)。
一方、本実施形態の場合、FF[N]個、加算器[4]個、ラインメモリN系統の構成となる(N=3、5、7、...)。
(3)従来技術であるFIG.6と、本提案であるFIG.7を比較して、フィルタサイズを変化させた際の冗長回路の大幅な縮小を見積もることができる。
例として、N=3として、冗長規模を比較すると、従来技術(ハードウェア処理)の場合、FF([(N−1)×N]−3)個、加算器[((N×N)−1−3)]個、ラインメモリN−3系統の冗長度である(N=3、5、7、...)。
一方、本提案の場合FF[N−3]個、加算器[4]個、およびラインメモリN−3系統の冗長度である(N=3、5、7、...)。
《第2実施形態》
FIG.13は、本発明の第2実施形態における撮像装置50の系統図である。この撮像装置は、カメラ部51、カメラ部51を制御するメカ制御部52、カメラ部51からの映像信号をデジタルデータに変換するA/D変換器53、A/D変換器53からの出力に対して、フィルタリング等の画像処理を実行する画像処理部54、画像処理部54の出力に基づき、表示装置57を制御する表示制御部55および表示制御部55の出力信号をアナログデータに変換して表示装置57に供給するD/A変換器55を有している。
カメラ部51は、メカ制御部52の制御にしたがい、被写体の映像を撮影した映像信号をA/D変換器53に引き渡す。A/D変換器53は、フレームごと映像信号から画素データを生成し、FIG.11に示した画素クロックで画像処理部54に入力する。
画像処理部54は、例えば、FIG.7〜9に示した平均値フィルタ回路を有しており、FIG.11に示した入力画像データに対する処理と同様に、A/D変換器53からの画像データに画像処理を実行する。この場合、すでに、上記第1実施形態で説明したように、フレーム遅延なく平均値フィルタ処理を実行できる。
このようにして平均値フィルタが適用された画像データは、リアルタイムで表示装置57に出力される。
FIG.10は、本発明の実施例における入力画像データの説明図である。ここでは、画素方向に640画素、ライン方向に480ラインを有する640×480の画像データを処理する。ここでは、理解を容易にするため、ライン間の無効データ期間はないと仮定する。また、画像データは、16ビット/画素とする。
FIG.7の様に、画素方向演算回路1は、加算器41、減算器42、シフトレジスタ30(5画素遅延:余剰データ減算用)、FF36(1画素分遅延:加算データの位相合わせ用)で構成される。今、この画素方向演算回路1に、FIG.10の様な640×480画素を画像データとして入力する。
FIG.11に画素方向演算の結果を示す。FIG.11には、画素クロック101、リセット信号102、入力画像データ103、ループ加算器出力104、シフトレジスタ出力105および画素方向加算データ106の各信号波形が示されている。
ここで、画素クロック101は、不図示の表示装置が画像データを1画素表示するときのクロックである。この画素クロックは、また、FIG.7〜9に示した平均値フィルタ回路において、1画素分のデータを入力するとき、1画素分のデータをフリップフロップで遅延させるとき、あるいは、平均値フィルタの結果を1画素分出力するとき等、1画素分のデータ処理に使用される。
リセット信号102は、FIG.7〜9に示した平均値フィルタ回路を初期化する信号である。このリセット信号によるリセットの後、FIG.10に示した640×480の画像データが処理される。
入力画像データ103は、FIG.10に示した640×480の各画素が順次入力されたものである。各画素との対応関係を例示するため、1、2、3等の番号が付されている。
ループ加算出力104は、FIG.7に示した加算器41の出力である。ここでは、加算結果と元の画素との対応関係を例示するため、例えば、画素1と画素2の加算結果は、出力値3で示されている。また、画素1、画素2、および画素3の加算結果は、出力値6で示されている。他の出力も同様である。
また、シフトレジスタ出力105は、FIG.7に示したシフトレジスタ30の出力である。FIG.11のように、シフトレジスタ出力105は、入力画像データ103から5画素クロック遅延した値となっている。
また、画素方向加算データ106は、FIG.7に示したFF36の出力である。このデータは、ループ加算出力104およびシフトレジスタ出力105との対応関係を明示するため、ループ加算出力104の各値からシフトレジスタ出力105の各値を減算した値が1クロック遅延した位置に示されている。
FIG.11に示すループ加算器出力104は、入力画像データを1画素ずつ順にデータの先頭からループ加算した結果である。すなわち、2画素目、3画素目、4画素目、5画素目を順に加算するため、次の画素との位相を合わせたFF36の出力を加算器41にフィードバックさせる。
平均値フィルタが5×5であれば、6画素分の加算値を求めた後、この6画素分の加算値を構成している内の最も古いデータを取り除く必要がある。そこで、FIG.11のシフトレジスタ出力105の様に、予めシフトレジスタ30によって入力画像データを5クロック分遅延させた入力画像データを引算する。これよって、5画素分の加算値を求め、FIG.11のシフトレジスタ出力106の様にFF36で位相を合わせてライン方向演算回路2に出力する。
この様に、FF36の出力(5画素分加算値)を加算器41にフィードバックさせて、新たに入力された画像データと加算して6画素分加算値を求める。さらに、この値とシフトレジスタ30の出力によって遅延させた5画素前のデータを引算するので、常に画素方向に5画素分の加算値を順に求めることができる。
FIG.7の様に、ライン方向演算回路2は、加算器43、減算器44、ラインメモリ11(5ライン遅延:余剰データ減算用)、ラインメモリ13(1ライン遅延:加算データの位相合わせ用)で構成され、上記で求めた5画素分の加算値(640×480画素,19Bit/画素)を順に画像データとして入力する。
FIG.12に画素方向演算の結果を示す。FIG.12には、フレームインデックス111、フレーム先頭パルス112、画素方向データ113、ラインメモリ11出力114、ライン方向合計値115、減算器出力116、ラインメモリ13出力117および5×5平均値フィルタ118の各信号波形が示されている。
フレームインデックス111は、フレームの同期をとるため、1フレーム内で1回、L出力からH出力に切り替わる信号である。また、フレーム先頭パルス112は、フレームの先頭を示すパルスである。
画素方向加算データ113は、FIG.11に示した画素方向加算データ106と同一の信号である。ただし、FIG.12では、例えば、P1、P2の各信号部分が各々640クロックに対応する1ライン分のデータに相当する。
ラインメモリ11出力114は、FIG.7に示したラインメモリ11の出力信号であり、減算器44への一方の入力信号である。
ライン方向合計値115は、FIG.7に示した加算器43の出力信号であり、減算器44への他方の入力信号である。
減算器出力116は、ライン方向合計値115からラインメモリ11出力114を減算した信号である。
ラインメモリ13出力117は、FIG.7に示したラインメモリ13の出力信号であり、加算器43に1ライン遅れて入力される信号である。
5×5平均値フィルタ118は、FIG.7に示した乗算器45から出力されるフィルタ処理された画像データである。
FIG.12のライン方向合計値115の様に、画素方向加算データをライン方向に1画素ずつ順にデータの先頭からループ加算を行う。すなわち、2ライン目、3ライン目、4ライン目、5ライン目の画素を順に加算するため、ラインメモリ13によって次のラインとの位相を合わせる。そして、1ライン遅延させて、加算器にフィードバックさせる。求める平均値フィルタが5×5であれば、ライン方向に6ライン分の加算値を求めた後、この6ライン分の加算値を構成している内の最も古いラインのデータを取り除く必要がある。
そこで、FIG.12のラインメモリ11出力114の様に、予めラインメモリ11によって入力画像データを5ライン分遅延させた画素方向加算データを用意する。そして、ライン方向合計値115からラインメモリ11出力114を引算することによって、25画素分の加算値を求めることができ、その値を乗算器45に出力する。
このように、ラインメモリ13の出力(25画素分加算値)を加算器43にフィードバックさせて、新たに入力されたライン(画素方向加算データ)と加算し、6ライン分加算値を求める。そして、この6ライン分の加算値とラインメモリ11の出力によって遅延させた5ライン前のデータを引算するので、常にリアルタイムで25画素分の加算値を順に求めることができる。
また、このときFIG.12のように、5×5の平均値フィルタを2ラインの演算遅延で構成できる。例えば、FIG.1のデータ例の場合、画素データYを含むラインL5の加算が完了した時点で、画素データK、L、M、O、Pを含むラインL3に対するフィルタ処理が完了する。これをN×Nの平均値フィルタに一般化した場合、N/2の整数部分ラインの演算遅延で平均値フィルタを実行できる。
<実施形態の効果>
本実施形態に係るフィルタ回路では、下記1〜3の様な効果がある。
(1)ソフトウェアで構成した場合(FIG.2および3)に対して、本フィルタ回路ではリアルタイム処理(フレーム遅延のない処理)にて平均値フィルタを構成できる。例えば、入力画像データに対して、N/2の整数部分ラインの遅延(N=3、5、7、...)で平均値フィルタを適用できる。
(2)例えば、従来技術であるFIG.5と、本提案であるFIG.8を比較すると、以下のハードウェア規模の大幅な縮小を見積もることができる。
従来技術(ハードウェア処理)の場合、ラインメモリ[N−1]系統、FF[(N−1)×N]個、加算器[(N×N)−1]個の構成となる(N=3、5、7、...)。
一方、本実施形態の場合、FF[N]個、加算器[4]個、ラインメモリN系統の構成となる(N=3、5、7、...)。
(3)従来技術であるFIG.6と、本提案であるFIG.7を比較して、フィルタサイズを変化させた際の冗長回路の大幅な縮小を見積もることができる。
例として、N=3として、冗長規模を比較すると、従来技術(ハードウェア処理)の場合、FF([(N−1)×N]−3)個、加算器[((N×N)−1−3)]個、ラインメモリN−3系統の冗長度である(N=3、5、7、...)。
一方、本提案の場合FF[N−3]個、加算器[4]個、およびラインメモリN−3系統の冗長度である(N=3、5、7、...)。
《第2実施形態》
FIG.13は、本発明の第2実施形態における撮像装置50の系統図である。この撮像装置は、カメラ部51、カメラ部51を制御するメカ制御部52、カメラ部51からの映像信号をデジタルデータに変換するA/D変換器53、A/D変換器53からの出力に対して、フィルタリング等の画像処理を実行する画像処理部54、画像処理部54の出力に基づき、表示装置57を制御する表示制御部55および表示制御部55の出力信号をアナログデータに変換して表示装置57に供給するD/A変換器55を有している。
カメラ部51は、メカ制御部52の制御にしたがい、被写体の映像を撮影した映像信号をA/D変換器53に引き渡す。A/D変換器53は、フレームごと映像信号から画素データを生成し、FIG.11に示した画素クロックで画像処理部54に入力する。
画像処理部54は、例えば、FIG.7〜9に示した平均値フィルタ回路を有しており、FIG.11に示した入力画像データに対する処理と同様に、A/D変換器53からの画像データに画像処理を実行する。この場合、すでに、上記第1実施形態で説明したように、フレーム遅延なく平均値フィルタ処理を実行できる。
このようにして平均値フィルタが適用された画像データは、リアルタイムで表示装置57に出力される。
本発明は、信号処理機能を提供する半導体デバイスの製造産業、信号処理を適用する情報機器、撮影機器、画像記録機器、放送機器等の製造産業およびこれらの装置を使用するサービス産業に適用できる。
Claims (15)
- 2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して前記各画素の第1積算画素データを生成する第1積算手段と、
第2次元方向に各画素の近傍に位置する所定数の画素に対応する、前記第1積算画素データを積算して前記各画素の第2積算画素データを生成する第2積算手段と、
前記第1次元方向および第2次元方向に積算された画素数で前記第2積算画素データを除算する手段とを備える平均値フィルタ装置。 - 前記第1積算手段は、第1次元方向に画素データを順次積算する第1順次積算手段と、
順次積算される積算対象画素から第1次元方向に所定数以上離れた画素の画素データを、前記順次積算結果から減算する第1減算手段とを有する請求項1に記載の平均値フィルタ装置。 - 前記第1順次積算手段は、入力された入力画素データと前記入力画素データの入力前に積算済みの画素データとを加算する第1加算手段と、積算済みの画素データを保持する加算保持手段と含み、
前記第1減算手段は、前記入力画素データを所定数順次保持する入力保持手段と、現在入力されている画素データから所定数離れた入力画素データを前記第1加算手段の出力から減算し、前記加算保持手段に所定画素積算値として出力する第1減算器とを含み、
前記加算保持手段は、前記所定画素積算値を次の加算のために前記第1加算手段に帰還出力する請求項2に記載の平均値フィルタ装置。 - 前記入力保持手段は、各画素に対応するデータをシフトして記憶するシフトレジスタと、
このシフトレジスタの各シフト位置に記憶された画素データのいずれかを選択的に出力するセレクタとを有する請求項3に記載の平均値フィルタ装置。 - 前記第2積算手段は、第2次元方向に画素データを順次積算する第2順次積算手段と、
順次積算される積算対象画素から第2次元方向に所定数以上離れた画素の画素データを、前記順次積算結果から減算する第2減算手段とを有する請求項1に記載の平均値フィルタ装置。 - 前記第2順次積算手段は、第1積算手段から入力された第1積算画素データと前記第1積算画素データの入力前に第2次元方向に積算済みの画素データとを加算する第2加算手段と、第2次元方向に積算済みの画素データを第1次元方向に1ライン保持するライン加算保持手段と含み、
前記第2減算手段は、第1積算手段から入力された第1積算画素データを所定ライン数順次保持する第1次元積算データ保持手段と、現在入力されている第1積算画素データから所定ライン数離れたラインの第1積算画素データを前記第2加算手段の出力から減算し、前記ライン加算保持手段に所定ライン積算値として出力する第2減算器とを含み、
前記ライン加算保持手段は、前記所定ライン積算値を次の加算のために前記第2加算手段に帰還出力する請求項5に記載の平均値フィルタ装置。 - 前記第1次元積算データ保持手段は、2次元画像の第1次元方向の画素に対応する、そのようなラインデータを複数ラインに渡ってシフトさせて保持するラインメモリと、前記複数ラインのいずれかを選択的に出力するライン選択部とを有する請求項6に記載の平均値フィルタ装置。
- 2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して前記各画素の第1積算画素データを生成する第1積算ステップと、
第2次元方向に各画素の近傍に位置する所定数の画素に対応する、前記第1積算画素データを積算して前記各画素の第2積算画素データを生成する第2積算ステップと、
前記第1次元方向および第2次元方向に積算された画素数で前記第2積算画素データを除算するステップとを備えるフィルタリング方法。 - 前記第1積算ステップは、第1次元方向に画素データを順次積算する第1順次積算ステップと、
順次積算される積算対象画素から第1次元方向に所定数以上離れた画素の画素データを、前記順次積算結果から減算する第1減算ステップとを有する請求項8に記載のフィルタリング方法。 - 前記第1順次積算ステップは、入力された入力画素データと前記入力画素データの入力前に積算済みの画素データとを加算する第1加算ステップと、積算済みの画素データを保持する加算保持ステップと含み、
前記第1減算ステップは、前記入力画素データを所定数順次保持する入力保持ステップと、現在入力されている画素データから所定数離れた入力画素データを前記第1加算手段の出力から減算するステップと、前記加算保持手段に所定画素積算値として出力するステップとを含み、
前記加算保持ステップは、前記所定画素積算値を次の加算のために前記第1加算手段に帰還出力するステップを含む請求項9に記載のフィルタリング方法。 - 前記入力保持ステップは、各画素に対応するデータをシフトして記憶するステップと、このシフトレジスタの各シフト位置に記憶された画素データのいずれかを選択的に出力するステップとを有する請求項10に記載のフィルタリング方法。
- 前記第2積算ステップは、第2次元方向に画素データを順次積算する第2順次積算ステップと、
順次積算される積算対象画素から第2次元方向に所定数以上離れた画素の画素データを、前記順次積算結果から減算する第2減算ステップとを有する請求項8に記載のフィルタリング方法。 - 前記第2順次積算ステップは、第1積算ステップにおいて生成された第1積算画素データと前記第1積算画素データの入力前に第2次元方向に積算済みの画素データとを加算する第2加算ステップと、第2次元方向に積算済みの画素データを第1次元方向に1ライン保持するライン加算保持ステップと含み、
前記第2減算ステップは、前記第1積算画素データを所定ライン数順次保持する第1次元積算データ保持ステップと、現在入力されている第1積算画素データから所定ライン数離れたラインの第1積算画素データを前記第2加算手段の出力から減算するステップと、前記ライン加算保持手段に所定ライン積算値として出力するステップとを含み、
前記ライン加算保持ステップは、前記所定ライン積算値を次の加算のために前記第2加算手段に帰還出力するステップを含む請求項12に記載のフィルタリング方法。 - 前記第1次元積算データ保持ステップは、2次元画像の第1次元方向の画素に対応する、そのようなラインデータを複数ラインに渡ってシフトさせて保持するステップと、前記複数ラインのいずれかを選択的に出力するステップとを有する請求項13に記載のフィルタリング方法。
- 平均値フィルタ装置を含む撮像装置であり、撮像部と、フィルタ部と、表示部とを備え、
前記フィルタ部は、
2次元画像を構成する画素データ配列に対して、第1次元方向に各画素の近傍に位置する所定数の画素データを積算して前記各画素の第1積算画素データを生成する第1積算手段と、
第2次元方向に各画素の近傍に位置する所定数の画素に対応する、前記第1積算画素データを積算して前記各画素の第2積算画素データを生成する第2積算手段と、
前記第1次元方向および第2次元方向に積算された画素数で前記第2積算画素データを除算する手段とを有する、撮像装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/001009 WO2004068411A1 (ja) | 2003-01-31 | 2003-01-31 | 平均値フィルタ装置およびフィルタリング方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2004068411A1 true JPWO2004068411A1 (ja) | 2006-05-25 |
Family
ID=32800845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004567552A Pending JPWO2004068411A1 (ja) | 2003-01-31 | 2003-01-31 | 平均値フィルタ装置およびフィルタリング方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7149364B2 (ja) |
JP (1) | JPWO2004068411A1 (ja) |
WO (1) | WO2004068411A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007046219A1 (ja) * | 2005-10-19 | 2007-04-26 | Konica Minolta Holdings, Inc. | 画像処理装置及び画像処理方法 |
GB2493396B (en) * | 2011-08-05 | 2018-08-08 | Snell Advanced Media Ltd | Multidimensional sampled-signal filter |
US8842939B2 (en) * | 2011-08-23 | 2014-09-23 | National Taiwan University | Direction-adaptive image upsampling system and method using double interpolation |
GB2502047B (en) * | 2012-04-04 | 2019-06-05 | Snell Advanced Media Ltd | Video sequence processing |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5951686A (ja) | 1982-09-02 | 1984-03-26 | Hitachi Medical Corp | デイジタルフイルタ法及びデイジタルフイルタ |
JPH03245278A (ja) * | 1990-02-23 | 1991-10-31 | Nec Corp | コントラスト抽出フィルタ |
DE69425346D1 (de) * | 1993-05-07 | 2000-08-31 | Lg Electronics Inc | Verfahren und Vorrichtung zum Umsetzen von Videoformaten |
JP2713196B2 (ja) | 1994-12-27 | 1998-02-16 | 日本電気株式会社 | 多素子撮像装置の信号処理方式 |
KR100200628B1 (ko) * | 1996-09-30 | 1999-06-15 | 윤종용 | 화질 개선 회로 및 그 방법 |
JP2000022958A (ja) * | 1998-07-06 | 2000-01-21 | Ricoh Co Ltd | 画像処理装置 |
-
2003
- 2003-01-31 WO PCT/JP2003/001009 patent/WO2004068411A1/ja active Application Filing
- 2003-01-31 JP JP2004567552A patent/JPWO2004068411A1/ja active Pending
-
2005
- 2005-03-07 US US11/074,992 patent/US7149364B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7149364B2 (en) | 2006-12-12 |
US20050147315A1 (en) | 2005-07-07 |
WO2004068411A1 (ja) | 2004-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5000737B2 (ja) | 多次元画像の画質向上のためのシステムおよび方法 | |
US5325449A (en) | Method for fusing images and apparatus therefor | |
EP0641508A1 (en) | Method and apparatus for enhancing sharpness of a sequence of images subject to continuous zoom | |
US6636629B1 (en) | Image processing apparatus | |
US6654492B1 (en) | Image processing apparatus | |
US6701024B1 (en) | Image processing apparatus | |
JP2008306298A (ja) | 画像処理装置、画像処理方法、及びプログラム | |
KR100298327B1 (ko) | 고속 컨벌루션 처리 방법 및 그 장치 | |
JPWO2004068411A1 (ja) | 平均値フィルタ装置およびフィルタリング方法 | |
KR100550676B1 (ko) | 2-차원 피라미드 필터 구조 | |
JP4323808B2 (ja) | 二次元ピラミッド・フィルタ・アーキテクチャ | |
US5386245A (en) | Apparatus and method for processing a digital video signal which prevents discontinuities and erosion of the picture area | |
JP2004530206A (ja) | 二次元ピラミッド・フィルタ・アーキテクチャ | |
JP2820222B2 (ja) | 画像信号処理装置 | |
US8019172B2 (en) | Method and apparatus for increasing the resolution of a data sequence | |
KR100656644B1 (ko) | 영상압축에서의 움직임 보상을 위한 화면간 보간장치 | |
JP2009290710A (ja) | 画像処理装置および表示装置 | |
KR20040028731A (ko) | 2-차원 피라미드 필터 구조 | |
JP2965624B2 (ja) | ビデオ信号をデイジタル形式で濾波するための方法および回路装置 | |
JP2004272657A (ja) | 画像処理装置 | |
JPH11155099A (ja) | 電子ズーム処理装置 | |
KR970006553B1 (ko) | 영상신호처리시스템에 있어서 화면원근이동(Zooming)장치 | |
JPH0223779A (ja) | 画像処理装置 | |
JP2006086812A (ja) | デジタルフィルタ | |
JPH06337934A (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080325 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080526 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080909 |