以下、図面を参照して本発明を実施するための形態について説明する。
(第1実施形態)
まず、本発明に係る第1実施形態に係る画像処理装置の概要構成および機能について、図1から図3を用いて説明する。
図1は、本本発明に係る第1実施形態に係る画像処理装置の概要構成例を示すブロック図である。
図1に示すように、画像処理装置1は、Y方向の加算処理をするY方向の1階加算処理部10と、X方向の加算処理をするX方向の1階加算処理部20と、を備える。ここで、Y方向の1階加算処理部10が第1加算処理部の一例であり、X方向の1階加算処理部20が第2加算処理部の一例である。
そして、画像処理装置1は、原画像の画素データfを入力する4つの入力端と、処理結果SUMy2x2を出力する出力端とを有する。前段の2つの加算処理部10に、後段の加算処理部10が接続され、Y方向の2階の加算処理部が構成される。図1に示すように、Y方向の2階の加算処理部は、3つの加算処理部10が2分木構造になるように接続されて構成されている。また、Y方向の2階の加算処理部の出力側に、Y方向の2階の加算処理部に2つの加算処理部20が直列に接続され、X方向の2階の加算処理部が構成される。
画像処理装置1は、画像処理の対象である原画像に対してX方向に走査してX方向の端に来ると、Y方向に順に走査を1画素移動させて、原画像を画素毎に順次ディジタル処理する。
なお、画像処理装置1は、画像処理用のシステムLSI(Large Scale Integration)の一部をなし、制御部(図示せず)により制御されている。
次に、Y方向の1階加算処理部10の概要構成および機能について、図に基づき説明する。
図2は、Y方向の1階加算処理部10の概要構成例を示すブロック図である。なお、1階加算処理部10に入力する画素データとして、図1の前段の1階加算処理部10の1つについて例示した。
図2に示すように、1階加算処理部10は、入力側からの入力画素データf(x+4,y-1)と、出力側からのフィードバックされた画素データSUMy1(x+4,y-4)とを加算する加算器11と、加算器11からの出力画素データから、入力側からの入力画素データf(x+4,y-6)を減算する減算器12と、減算器12からの出力画素データSUMy1(x+4,y-3)を原画像のX方向の画素数個分、順に記憶するラインメモリ13と、を有する。なお、画像データの座標は一例である。
加算器11は、例えば、半加算器や全加算器等から構成された複数ビット用の加算器であり、任意の桁数の2進数の加算を行う。
減算器12は、例えば、not回路や全加算器等から構成された複数ビット用の減算器であり、任意の桁数の2進数の減算を行う。
ラインメモリ13は、第1記憶器の一例であり、原画像のX方向のライン分の長さの画素データを記憶するメモリであり、減算器12からの出力画素データSUMy1(x+4,y-3)を記憶し、1ライン分遅れた画素データSUMy1(x+4,y-4)を加算器11に出力するシフトレジスタとして機能する。ここで、画像処理装置1は、X方向に1画素ずつ走査していき、1ライン分遅れた画素データを出力するので、記憶器13は、Y方向に1画素マイナスの画素データを出力する。なお、ラインメモリ13を、リード用およびライト用のポートを有するデュアルポートメモリ等から構成してもよい。制御部が、ライド用のポートから、減算器12からの出力画素データをラインメモリ13に記憶させる指令し、リード用のポートから、加算器11に出力する画素データを読み出して消去する指令をする。
1階加算処理部10の入力は、加算器11の一方の入力端および減算器12の一方の入力端により形成されている。加算器11の出力端は、減算器12の入力端に接続され、減算器12の出力端は、1階加算処理部10の外部に出力する出力端を形成し、この分岐がラインメモリ13の入力端に接続されている。そして、ラインメモリ13の出力端は、加算器11の入力端に接続されている。
ここで、前段である1段目の1階加算処理部10の1つは、
の演算を実現した回路である。この式(1)は、Box-Filtering方式に基づいた式である(M.J. McDonnell, Box-Filtering techniques, Comput. Graph.Image Process. 17 (1) (1981) pp65-70)。f(x,y)は、原画像の座標(x,y)における画素の画像データで、SUMy1は、次式(2)のように、f(x,y)の総和である。
ここで、総和の項数を、タップ数として、1階の加算処理の場合を、TAP1=2×K1+1とする。式(1)は、K1=2で、タップ数TAP1が5の場合である。
また、後段である2段目の1階加算処理部10は、
の演算を実現した回路である。SUMy2は、次式(4)のように、SUMy1の総和である。
ここで、総和の項数を、タップ数として、2段目の加算処理の場合を、TAP2=2×K2+1とする。式(3)は、K2=2で、タップ数TAP2が5の場合である。
これらのように、加算器11は、原画像に関連した第1入力画素データと、出力側からの画素データとを加算する第1加算器の一例として機能し、減算器12は、第1加算器からの画素データから、原画像に関連した第2入力画素データを減算して第1出力画素データを外部に出力する第1減算器としての一例機能し、ラインメモリ13は、原画像における走査方向の画素数個分の第1出力画素データを順に記憶し、第1加算器に順に出力する第1記憶器の一例として機能する。
次に、X方向の1階加算処理部20の概要構成および機能について、図に基づき説明する。
図3は、X方向の1階加算処理部20の概要構成例を示すブロック図である。なお、1階加算処理部20に入力する画素データとして、直接に接続された1階加算処理部20の前段の1階加算処理部20について例示した。
図3に示すように、X方向の1階加算処理部20は、入力側からの入力画素データSUMy2(x+4,y)と、出力側からのフィードバックされた画素データSUMy2x1(x+4,y)とを加算する加算器21と、加算器21からの画素データから、シフトレジストされた入力側からの入力画素データSUMy2(x-1,y)を減算して第2出力画素データSUMy2x1(x+2,y)を外部に出力する減算器22と、入力側からの入力画素データSUMy2(x+4,y)をシフトレジストするシフトレジスタ23と、減算器22の出力画像データSUMy2x1(x+2,y)を1画素分記憶して、画像データSUMy2x1(x+1,y)を加算器21に出力する記憶器24と、を有する。なお、画像データの座標は一例である。
加算器21は、加算器11と同様の構成および機能を有し、減算器22は、減算器12と同様の構成および機能を有する。
シフトレジスタ23は、第3記憶器の一例であり、タップ数分の画素データを記憶するシフトレジスタであり、入力側からの入力画素データSUMy2(x+4,y)を記憶し、タップ数分遅れた画素データSUMy2(x-1,y)を減算器22に出力するシフトレジスタとして機能する。ここで、画像処理装置1は、X方向に1画素ずつ走査していき、タップ数が5の場合、5画素分X方向に走査するので、シフトレジスタ23は、X方向に5画素分シフトした画素データを出力する。
記憶器24は、画素1個分を記憶する遅延素子である。
1階加算処理部20の入力は、加算器21およびシフトレジスタ23の入力端に接続されている。加算器21およびシフトレジスタ23の出力端は、減算器22の入力端に接続され、減算器22の出力端は、1階加算処理部20の外部に出力する出力端を形成し、この分岐が記憶器24の入力端に接続されている。そして、記憶器24の出力端は、加算器21の入力端に接続されている。
ここで、1階加算処理部20は、
の演算を実現した回路である。f(x,y)は、原画像の座標(x,y)における画素の画像データで、SUMy2x1は、次式(6)で示すように、SUMy2の総和である。
ここで、総和の項数を、タップ数として、1階の加算処理の場合を、TAP1=2×K1+1とする。式(5)は、K1=2で、タップ数TAP1が5の場合である。
また、2段目の1階加算処理部20は、
の演算を実現した回路である。SUMy2x2は、次式(8)のように、SUMy2x1の総和である。
ここで、総和の項数を、タップ数として、2段目の加算処理の場合を、TAP2=2×K2+1とする。式(8)は、K2=2で、タップ数TAP2が5の場合である。
これらのように、加算器21は、第1加算処理部を経由してきた第3入力画素データと、出力側からの画素データとを加算する第2加算器の一例として機能する。また、減算器22は、第2加算器からの画素データから、加算する画素数分の走査前の第3入力画素データを減算して第2出力画素データを外部に出力する第2減算器の一例として機能し、また、第2加算器からの画素データから、第3記憶器からの画素データを減算する第2減算器の一例として機能する。また、シフトレジスタ23は、加算する画素数(タップ数)分である記憶数個の第3入力画素データを順に記憶して出力する第3記憶器の一例として機能し、記憶器24は、第2出力画素データを1画素分記憶して、第2加算器に出力する第2記憶器の一例として機能する。
ここで、第1入力画素データおよび第2入力画素データは、1段目のY方向の1階加算処理部10(第1加算処理部)の場合、原画像の画素データfであり、2段目以降のY方向の1階加算処理部10の場合、前段の1階加算処理部10からの出力画素データ、すなわち、第1出力画素データである。第3入力画素データは、1段目のX方向の1階加算処理部20(第2加算処理部)の場合、1階加算処理部10からの出力画素データであり、2段目以降のX方向の1階加算処理部20場合、前段の1階加算処理部20からの出力画素データ、すなわち、第2出力画素データである。このように、第3入力画素データは、Y方向の1階加算処理部10側からきたデータであり、Y方向の1階加算処理部10を少なくとも経由してきた画素データである。出力側からの画素データとは、加算処理部の出力から分岐して、記憶器を経由して戻ってきた画素データであり、Y方向の1階加算処理部10(第1加算処理部)の場合、減算器12からの画素データであり、X方向の1階加算処理部20(第2加算処理部)の場合、減算器22からの画素データである。
次に、画像処理装置1の動作例について、図4〜図9に基づき説明する。
図4は、Y方向の1階加算処理部10の1段目における処理の様子の一例を示す模式図である。図5は、Y方向の1階加算処理部10の2段目における処理の様子の一例を示す模式図である。図6は、X方向の1階加算処理部20の1段目における処理の様子の一例を示す模式図である。図7は、X方向の1階加算処理部20の2段目における処理の様子の一例を示す模式図である。図8は、図4における処理の様子に対して次の画素の処理の様子の一例を示す模式図である。図9は、図8における処理の様子に対して、Y方向に1画素移動した場合の処理の様子の一例を示す模式図である。
まず、図4に示すように、塗りつぶされた円のマーク30が、ラインメモリ13が記憶している画像データSUMy1の座標の位置を示している。ひし形のマーク31が、演算に使用する原画像の画像データfの座標の位置を示している。太い丸のマーク32が、算出する画像データSUMy1の座標の位置を示している。ウインドウ空間35は、画像データSUMy1を算出するために必要な原画像の画像データfの範囲を示している。ウインドウ空間35のY方向の長さが、タップ数TAP1になる。なお、実際の演算では、タップ数TAP1の原画像の画像データfの総和を計算するのではなく、式(1)に従って計算される。また、最終的に座標(x,y)における処理結果を算出するように各処理の過程の座標を例示的に記載している。
一段目のY方向の2つの1階加算処理部10は、図4に示すように、座標(x+4,y-3)と座標(x+4,y+2)における画像データSUMy1(x+4,y-3)と画像データSUMy1(x+4,y+2)とを各々算出する。このとき、一方の1階加算処理部10は、式(1)に従い、マーク31で示す、タップ数TAP1分Y方向に離れた原画像の画像データf(x+4,y-6)および画像データf(x+4,y-1)と、マーク30で示す、ラインメモリ13(M1_SUMy1)に記憶された画像データSUMy1(x+4,y-4)とに基づき、マーク32で示す、画像データSUMy1(x+4,y-3)を算出する。他方の1階加算処理部10は、タップ数TAP1分Y方向に離れた原画像の画像データf(x+4, y-1)および画像データf(x+4,y+4)と、ラインメモリ13(M2_SUMy1)に記憶された画像データSUMy1(x+4,y+1)とに基づき画像データSUMy1(x+4,y+2)を算出する。なお、画像データSUMy1(x+4,y-3)と画像データSUMy1(x+4,y+2)とは、Y方向にタップ数TAP2分離れている。これらのように、タップ数TAP1,TAP2を考慮して、入力画像データのY方向の座標が決定される。なお、入力画像データのX方向もタップ数TAP1,TAP2が関係しているが後述する。
次に、図5に示すように、1段目のY方向の1階加算処理の後、2段目の1階加算処理部10は、式(3)に従い、マーク32に示す、タップ数TAP2分Y方向に離れた画像データSUMy1(x+4,y-3)および画像データSUMy1(x+4,y+2)と、マーク40に示す、ラインメモリ13(M_SUMy2)に記憶された画像データSUMy2(x+4,y-1)とに基づき、マーク42に示す画像データSUMy2(x+4,y)を算出する。
ここで、塗りつぶされた三角のマーク40が、2段目のY方向の1階加算処理部10のラインメモリ13に記憶された画像データSUMy2である。三角のマーク42が、算出する画像データSUMy2の座標の位置を示している。ウインドウ空間45は、画像データSUMy2を算出するために必要な画像データSUMy1の範囲を示している。ウインドウ空間45のY方向の長さが、タップ数TAP2になる。なお丸のマーク32は、1段目の1階加算処理部10により算出された画像データSUMy1である。
次に、図6に示すように、2段目のY方向の1階加算処理の後、1段目の1階加算処理部20は、式(5)に従い、マーク50に示す、シフトレジスタ23(M_SUMy2)に記憶された画像データSUMy2(x-1,y)と、マーク51に示す、2段目のY方向の1階加算処理部10により算出されたSUMy2(x+4,y)と、記憶器24に記憶されているSUMy2x1(x+1,y)とに基づき、画像データSUMy2x1(x+2,y)を算出する。
ここで、塗りつぶされた三角のマーク50が、1段目のX方向の1階加算処理部20のシフトレジスタ23(M_SUMy2)に記憶された画像データSUMy2である。三角のマーク51が、2段目のY方向の1階加算処理部10により算出され、入力された画像データSUMy2の座標の位置を示している。ウインドウ空間52は、画像データSUMy2x1を算出するために必要な画像データSUMy2の範囲を示している。ウインドウ空間52のX方向の長さが、タップ数TAP1になる。
次に、図7に示すように、1段目のX方向の1階加算処理の後、2段目の1階加算処理部20は、式(7)に従い、マーク55に示す、シフトレジスタ23(M_SUMy2x1)に記憶された画像データSUMy2x1(x-3,y)と、マーク56に示す、1段目のX方向の1階加算処理部20により算出されたSUMy2x1(x+2,y)と、記憶器24に記憶されているSUMy2x1(x-1,y)とに基づき、最終的に画像データSUMy2x2(x,y)を算出する。
ここで、塗りつぶされた逆三角のマーク55が、2段目のX方向の1階加算処理部20のシフトレジスタ23(M_SUMy2x1)に記憶された画像データSUMy2x1である。逆三角のマーク56が、1段目のX方向の1階加算処理部20により算出され、入力された画像データSUMy2x1の座標の位置を示している。ウインドウ空間57は、画像データSUMy2x2を算出するために必要な画像データSUMy2x1の範囲を示している。ウインドウ空間57のX方向の長さが、タップ数TAP2になる。
この画像データSUMy2x2(x,y)は、原画像の画素データfに対して、座標(x,y)を中心とした、ほぼ円錐形状の重みの分布によるフィルタ処理を施した画像データに相当する。タップ数と重み関数の形状との関係は後述する。
次に、画像データSUMy2x2(x,y)を算出したら、図8に示すように、X方向に1画素、走査して、画像処理を行う。ラインメモリ13(M1_SUMy1)の画像データSUMy1(x+4,y-4)は消去され、画像データSUMy1(x+5,y-3)のデータが新たに記憶される。また、ラインメモリ13(M2_SUMy1)の画像データSUMy1(x+4,y+1)は消去され、画像データSUMy1(x+5,y+2)のデータが新たに記憶される。そして、図9に示すように、X方向に走査が終わったら、Y方向に移動させてX方向に走査を始める。
このように本実施形態によれば、画像処理装置1は、原画像に関連した第1入力画素データと、出力側からの画素データとを加算する加算器11と、加算器11からの画素データから、原画像に関連した第2入力画素データを減算して第1出力画素データを外部に出力する減算器12と、原画像における走査方向のであるX方向の画素数個分の第1出力画素データを順に記憶し、加算器11に順に出力するラインメモリ13と、を有するY方向の加算処理部10と、加算処理部10を経由してきた第3入力画素データと、出力側からの画素データとを加算する加算器21と、第3入力画素データを、加算する画素数分の記憶数個、順に記憶して出力するシフトレジスタ23と、加算器21からの画素データから、シフトレジスタ23からの第3入力画素データを減算して第2出力画素データを外部に出力する減算器22と、第2出力画素データを1画素分記憶して、加算器21に出力する記憶器24と、を有するX方向の加算処理部20と、を備え、前段の2つの加算処理部10に後段の加算処理部10を接続し、後段の加算処理部10に2つの加算処理部20を直列に接続したことにより、ラインメモリ13やシフトレジスタ23や記憶器24のような少ないメモリサイズで、タップ数やウインドウサイズに依存せず、1画素走査するごとに少ない演算回数で高速に画像処理を行うことができる。
画像処理装置1は、回路化に際してもラインメモリ13とシフトレジスタ23とを採用することにより、より小さな回路規模で、画像に対する重み付けディジタル画像フィルタを実現できる。また、画像処理装置1は、重み処理の画像範囲のサイズに依存しない高速化手法を提供することができる。
(第2実施形態)
次に、本発明の第2実施形態に係る画像処理装置について説明する。
まず、第2実施形態に係る画像処理装置の概要構成について、図に基づき説明する。なお、前記第1実施形態と同一または対応する部分には、同一の符号を用いて異なる構成および作用のみを説明する。その他の実施形態および変形例も同様とする。
図10は、本発明に係る第2実施形態に係る画像処理装置の概要構成例を示すブロック図である。
図10に示すように、画像処理装置2は、Y方向の1階加算処理部10と、X方向の1階加算処理部20と、を備える。
画像処理装置2は、4つのY方向の1階加算処理部10により、1段目の1階加算処理を行い、2つのY方向の1階加算処理部10により、2段目の1階加算処理を行い、1つのY方向の1階加算処理部10により、3段目の1階加算処理を行う。1段目から2段目のY方向の1階加算処理部10により、Y方向の2階加算処理部を構成し、1段目から3段目のY方向の1階加算処理部10により、Y方向の3階加算処理部を構成する。図10に示すように、Y方向の3階加算処理部は、Y方向の1階加算処理部10の2分木構造になるように互いに接続され、1段目の1階加算処理部10が2分木のリーフに、2段目の1階加算処理部10が2分木のノードに、3段目の1階加算処理部10が2分木のルートに対応する。
また、画像処理装置2は、直列に接続された1段目と2段目のX方向の1階加算処理部20により、X方向の2階加算処理部を構成し、直列に接続された1段目から3段目のX方向の1階加算処理部10により、X方向の3階加算処理部を構成する。
このように、画像処理装置2は、図1の画像処理装置1において、前段の2つの第1加算処理部10の各々の前段に、更に2つの第1加算処理部10を接続し、2つの第2加算処理部に、更に第2加算処理部20を直列に接続した構成である。
次に、画像処理装置2の動作例について図に基づき説明する。
図11は、1段目のY方向の1階加算処理部による処理の様子の一例を示す模式図である。
図4に示した第1実施形態の画像処理装置1と異なり、画像処理装置2では、4つのY方向の1階加算処理部が並行して行われている。3段目のY方向の1階加算処理部10においてタップ数TAP3となるように、原画像の画像データfのY方向の間隔が設定されている。
画像処理装置2は、第1実施形態の画像処理装置1のように、各段階での加算処理を行い、X方向に走査しながら、原画像の画像データfの画像処理を行う。
このように本実施形態によれば、画像処理装置2は、2分木構造に接続されたY方向の3階の加算処理と、直列に接続されたX方向の3階の加算処理により、原画像に対して、ほぼ正規分布の重み付けをしたフィルタを実現でき、少ないメモリサイズで高速に処理できる。さらに、画像処理装置2は、Y方向の加算処理部10やX方向の加算処理部20における各階のタップ数を、変えることにより、重みの形状を変化させることができ、さまざまな重み形状を有するフィルタを実現できる。
また、画像処理装置2は、例えばガウシアンピラミッドの様に画像スケーリングを変えて、粗なスケールにする処理にも適用でき、1画素に対する処理が重くならず、リアルタイム処理できる。
また、画像処理装置2は、回路化に際してもラインメモリ13とシフトレジスタ23とを採用することにより、より小さな回路規模で、画像に対する重み付けディジタル画像フィルタを実現できる。また、画像処理装置2は、重み処理の画像範囲のサイズに依存しない高速化手法を提供することができる。
ここで、タップ数の決定の仕方について図12〜図27に基づき詳細に説明する。
原理を簡略化して1次元のモデルでまず説明する。1次元の座標を有するM個の画素データの集合Gを式(9)で示す。
G={g(0),g(1),g(2),・・・,g(x) ,・・・,g(M)}・・・(9)
集合Gのそれぞれの要素をg(x)とし、xは一次元の座標とする。
座標xに対して、x-K1から、x+K1の範囲に含まれる画素データの和をsum1と標記する。総和の項数であるタップ数tap1とK値(自然数)には、式(10)の関係がある。
tap1=2×K1+1 ・・・(10)
また、演算の結果、原画像に対する重みが含まれる空間を重み空間(重み空間のサイズ:a_wt1)とする。但し、x-K1もx+K1もGの範囲とする。sum1は、式(11)で表すことができる。
sum1では、単純に画素データを加算したので、各画素の重みは全て1となる。図12に示すように、K1が2の場合、演算対象である画素データにはg(x-2)からg(x+2)の5つの画素データが含まれる。なお、重み空間とは、原画像の画像データfに対する、重みをかける範囲である。
重み空間のサイズa_wt1とtap1の間には式(12)の関係がある。
a_wt1=tap1 ・・・(12)
また、重み空間に含まれる、重み値の合計wt1は式(13)により求められる。
wt1=tap1 ・・・(13)
次に、xをx-K2からx+K2とした場合の総和sum1に対する総和sum2を考える。総和sum2(x)は、式(14)と表す事ができる。
この場合のタップ数をtap2、重み空間のサイズをa_wt2とする。図13は、tap2=a_wt1とした場合の総和sum2(x)の様子を示す図である。図13に示すように、tap2=a_wt1とすることにより原画素に対する重みは、画素データg(x)が最も大きな重みになる三角形の形状になる。この場合、タップ数tap2とK2との間には式(15)の関係があり、重み空間のサイズa_wt2とa_wt1、タップ数tap2との間には式(16)の関係がある。
tap2=2×K2+1 ・・・(15)
a_wt2=a_wt1+tap2−1 ・・・(16)
また、重み空間に含まれる、重みの合計wt2は式(17)により求められる。
wt2=tap1×tap2 ・・・(17)
従って、図13に示すように、タップ数tap2が5で、K2が2で、a_wt2が9の場合、wt2は25となる。
次に、xをx-K3からx+K3とした場合の総和sum2の総和sum3を考える。総和sum3(x)は、式(18)のように表すことができる。
この場合のタップ数をtap3、重み空間をa_wt3とする。図14は、ap3=a_wt2とした場合の総和sum3(x)の様子を示す図である。図14に示すように、tap3=a_wt2とすることにより、原画素に対する重みは、画素データg(x)が最も大きな重みになるガウシアンの形状になる。この場合のタップ数tap3とk3との間には式(19)の関係があり、重み空間のサイズa_wt3とa_wt2、タップ数tap3には式(20)の関係がある。
tap3=2×K3+1 ・・・(19)
a_wt3=1_wt2+tap3−1 ・・・(20)
また、重み空間に含まれる、重みの合計wt3は式(21)により求められる。
wt3=tap1×tap2×tap3 ・・・(21)
従って、図14に示すように、タップ数tap3が9、K3は4、a_wt3は17、wt3は225となる。
画素に対する加算であるSUM1の処理は、1階加算処理に、SUM2は2階加算処理、SUM3は、3階加算処理に対応する。
また、本アルゴリズムは、N階加算処理として拡張することができる。その場合も前式同様に下記式が成立する。
tapN=2×KN+1 ・・・(22)
a_wtN=a_wt(N-1)+tapN ・・・(23)
原画像の画像データに対する重み形状は、3階加算処理でガウシアンと近似した形状となり、以降階数を増加するさらにガウシアンに近づくが、3階加算処理を有意な実現例の一つとし、3階加算処理で十分である。
今までは、tapN=a_wt(N-1)とした場合を議論してきたが、tapN≠a_wt(N-1)の場合も含めて考察し、タップ数に関する性質を述べる。2階加算処理の重み形状はtap2=a_wt1の場合、常に三角形になる。また、2階加算処理の重み形状は、図15に示すように、tap2≠a_wt1の場合は台形になる。図で示した重みは、a_wt1を3,5,7とした場合にtap2=a_wt1の条件でSUM2を求めた結果である。重みの値は、サイズa_wt2の重み空間に含まれる各画素の重みを、重みの合計値であるwt2で割った値である。
図15より、重みの形状がガウシアン形状となる条件の一例として、2階加算処理のタップ数がtap2=a_wt1の条件であることが分かる。
また、3階加算処理の重み形状はタップtap3に大きく依存する。tap3=a_wt2とした場合、タップ数tap3が大きくなるほど、擬似ガウシアンの分散σが大きくなる。
次に、図16は、3階加算処理で、tap3≠a_wt2とした場合の重み形状例を示した線図である。図16に示すように、重み値は、a_wt2が9である場合に、タップ数tap3を3から13まで変化させた時にSUM3を求めた結果である。この重みの値は、サイズa_wt3の重み空間に含まれる各画素の重み値を、重みの合計値であるwt3で割った値である。図16においてタップ数tap3=3の場合を、図17に示す。図17に示すように、重み形状に直線部分が生じる。
以上、3階加算処理には次の性質がある。
タップ数tap3が、
3≦tap3<a_wt2, 但し、tap3は常に奇数 ・・・(24)
を満たす時、重み形状に単調増加成分が生じ正規分布形状にはならない。
タップ数tap3が、
a_wt2≦tap3≦a_wt2−1, 但し、tap3は常に奇数 ・・・(25)
を満たす時、重み形状は正規分布に近い形状になる。
タップ数tap3が、
2×a_wt2−1<tap3, 但し、tap3は常に奇数 ・・・(26)
を満たす時、重み形状上部に増分の無い部分が生じ、正規分布形状にはならない。
このように、3階加算処理のタップ数tap3が、式(25)を満たす場合、ガウシアン形状を得るために有意と考える。特に、tap3=a_wt2の条件を基本と考える。tapN=a_wt(N-1)の条件下では、タップ数を変化させガウシアン形状と比較した例を図18に示す。図8に示すように、本実施形態による重み形状はガウシアン形状に近い形状となる。
次に、一般の画像データを想定した2次元に展開する場合を考える。2次元の座標を有する有限個の画素データの集合Fを式(27)で定義する。
F={f(0,0), f(0,1),・・・, f(x,y) ,・・・, f(X,Y))}・・・(27)
但し、x,yは、画像データの座標、f(x,y)は任意の座標の画像データである。
一般に、xの処理とyの処理を因子分離できる関数をテンソル積といわれる。本実施形態でもX方向の処理とY方向の処理を分離して実現する。本方式では、加算処理の順序に依存性は無いが、回路規模が小さい例として、本実施形態では、最初にY方向の処理である加算処理を行い、次にX方向の加算処理を行っている。
まず標記方法に関して、規定する。但し本実施形態では処理画素の範囲であるウインドウ空間を矩形空間とするので、X方向、Y方向それぞれのタップ数は、各階加算処理で等しいとする。
ここで、Y方向のsum1に相当する処理は、タップ数TAP1で、画素データf(x,y)に対するY方向の1階加算処理結果SUMy1(x,y)である。Y方向のsum2に相当する処理は、タップ数TAP2で、SUMy1に対するY方向の2階加算処理結果SUMy2(x,y)である。Y方向のsum3に相当する処理は、タップ数TAP3で、SUMy2に対するY方向の3階加算処理結果SUMy3(x,y)である。
また、X方向のsum1に相当する処理は、タップ数TAP1で、SUMy1に対するX方向の1階加算処理結果SUMy1x1(x,y)である。X方向のsum1に相当する処理は、タップ数TAP1で、SUMy2に対するX方向の1階加算処理結果SUMy2x1(x,y)である。X方向のsum2に相当する処理は、タップ数TAP2で、SUMy2x1に対するX方向の2階加算処理結果SUMy2x2(x,y)である。X方向のsum1に相当する処理は、タップ数TAP1で、SUMy3に対するX方向の1階加算処理結果SUMy3x1(x,y)である。X方向のsum2に相当する処理は、タップ数TAP2で、SUMy3x1に対するX方向の2階加算処理結果SUMy3x2(x,y)である。X方向のsum3に相当する処理は、タップ数TAP3で、SUMy3x2に対するX方向の3階加算処理結果SUMy3x3(x,y)である。
次に、X方向の処理の例として、SUMy1x1の例を説明する。この処理はX-Y方向共に1階加算処理を行うので、画素全体に対して1階加算処理を行うとみなすことができる。画素データf(x,y)を中心に、X方向x-K1からx+K1、Y方向y-K1からy+K1までの領域を考える。この領域がSUMy1x1のウインドウ空間であり、aWIN1と表記する。a_WIN1の一片の長さをa_WINL1と表記する。SUMy1x1(x,y)は、式(2)より、式(28)のように表すことができる。
ここで、a_WIN1に含まれる全ての重みの総計をWEIGHT1と称する。WEIGHT1は、式(13)より式(29)で定義される。
WEIGHT1=(TAP1)
2 ・・・(29)
総和SUMy1x1をWEIGHT1で割った値であるC1(x,y)は、一般的な、画素の重み付けの無い、通常の移動平均フィルタである。
ここで、SUMy1x1は、原画像の画像データfに対して、Y方向の1階加算処理部10により処理し、次に、X方向の1階加算処理部20に処理することにより算出できる。
次に、第1実施形態で算出したSUMy2x2の例を説明する。この処理はX-Y方向共に2階加算処理を行うので、画素全体に対して2階加算処理を行うとみなすことができる。SUMy2(x,y)や、SUMy2x1(x,y)や、SUMy2y2(X,Y)は、各々、式(4)、式(6)、式(8)により示すことができる。
具体的な例として、図13で示したTAP1=TAP2=5の場合の処理を以下に示す。
図19は、原画像範囲とウインドウ空間との関係の一例を示す模式図である。図19に示すように、原画像の画像データfを想定する。次に、図20は、Y方向の1階加算処理部10の1段目の処理に対応した処理の一例を示す模式図であり、SUMy1の処理結果イメージを示している。ギリシア文字で示した丸印が、Y方向における各SUMy1のを示している。
また、図21は、Y方向の1階加算処理部10の2段目の処理に対応した処理の一例を示す模式図であり、SUMy2の処理結果イメージを示している。
また、図22は、Y方向の1階加算処理部10の2段目の処理に対応する重みの一例を示す模式図であり、SUMy2の処理を必要な分だけ行ったイメージを示している。図22に、重みの値が示されている。図22に示すように、重みの形状は、座標yにおける重み5を中心に、座標yから離れるにつれ直線的に重み値が減少する形状である。
また、図23は、X方向の1階加算処理部20の1段目の処理に対応した処理の一例を示す模式図であり、SUMy2x1とSUMy2x2の処理イメージを示している。
図24は、第1実施形態の画像処理装置1による原画像に対する重みを示す模式図である。図24に示すように、SUMy2x2の処理の重みWEIGHT2は式(31)となる。
WEIGHT1=(TAP1×TAP2)
2 ・・・(31)
そして、SUMy2x2をWEIGHT2で割った値であるC2(x,y)は、同図で示す重み分布による平均値となる。
次に、図19に示したように、X-Y方向における一階加算処理のウインドウ空間をa_WIN1と、2階加算処理ウインドウ空間をa_WIN2とし、それぞれの一片の長さをa_WINL1,a_WINL2とする。TAP2=5より、a_WINL2は5となる。
長さa_WINL2は、2階加算処理で行う画素の加算の項数、すなわちタップ数に等しいので、式(33)のようになる。
a_WINL2=TAP2 ・・・(33)
図25は、タップ数とウインドウ空間との関係の一例を示す模式図である。
長さa_WINL1は、図25に示すように、
a_WINL1=a_WINL2+TAP1−1 ・・・(34)
となる。
次に、3階の加算処理の場合を図に基づき説明する。
和SUMy3(x,y)、SUMy3x1(x,y)、SUMy3y2(X,Y)、SUMy3x3(x,y)は、それぞれ、
となる。
具体的な例として、TAP1=TAP2=5、TAP3=9の場合の処理を示す。
図26は、3階の加算処理におけるウインドウ空間の一例を示す模式図であり、SUMy3の処理を必要な分だけ行ったイメージである。図中に示された重みの値の分布の形状は、ほぼ正規分布の形状である。
図27は、3階の加算処理における重みの分布の一例を示す線図である。すなわち、画像処理装置2による原画像に対する重みの形状である。
SUMy3x3の処理の重みWEIGHT3は、式(39)のようになる。
WEIGHT3=(TAP1×TAP2×TAP3)2 ・・・(39)
SUMy3x3をWEIGHT3で割った値であるC3(x,y)は、図27に示したようなガウシアン形状の重み分布による平均値となる。
また、3階加算処理におけるウインドウ空間の一片の長さ、a_WINL1、a_WINL2,a_WINL3は、それぞれ以下のようになる。
次に、N階に拡張すると、
TAP
n-1≦TAP
n≦2×TAP
n-1−1 (但し、TAP
nは常に奇数) ・・・(45)
Kn=(TAP
n−1)/2 ・・・(46)
a_WINL
n=TAP
n ・・・(47)
a_WINL
n-1=a_WINL
n+TAP
n-1−1 ・・・(48)
WEIGHT
n=TAP
1×TAP
2×・・・×TAP
n-1×TAP
n (n≧3) ・・・(49)
となる。
以上のように、各階のタップ数を適切に設定することにより、重み形状がガウシアンに近い形状にすることができる。
このように、1段目の前記第2加算処理部の第1記憶数(タップ数TAP1)と2段目の第2加算処理部の第2記憶数(タップ数TAP2)とが等しく、3段目の前記第2加算処理部の第3記憶数(タップ数TAP3)が、第2記憶数以上であり、かつ、2倍の第2記憶数から1を引いた値以下とすることにより、3階の加算処理でも、重み形状がガウシアンに近い形状にすることができる。
次に、本実施形態の変形例としてラプラシアン・フィルタを説明する。
本実施形態の3階加算処理のフィルタの擬似ガウシアン・フィルタは、ラプラシアン・フィルタに適用できる。タップ数の異なる2つの画像処理装置2に対して、出力の差分を求めることにより、ラプラシアン・フィルタを構成できる。
擬似ガウシアン差分(Differential of Gaussians:DoG)フィルタによる疑似ラプラシアン・ガウシアン(Laplacian of Gauusian:LoG)フィルタ(の実現方法を以下に説明する。
まず、LoGフィルタを概説する。LoGフィルタとは、ガウシアン・フィルタの重み関数を空間2次微分したものであり、微分ディジタル画像フィルタの一種である。重みは中心(対象画素)で大きな重みを持ち、中心からの距離が増すに従って急速に減少して負の値をとる。そして、負の値は0に近づいていく。空間微分は、急激な輝度変化を起こす領域に対し、大きな値をとる。そのため、この処理を対象画像の各画素に対して行う事により、画像から輪郭成分を抽出することができる。
LoGフィルタの重み関数は、式50に従う。
但し、σは標準偏差である。
LoGフィルタは、擬似ガウシアン差分フィルタで近似可能である。DoGフィルタの重み関数は、数式51に従う。
但し、σ
1、σ
2は標準偏差である。σ
1<σ
2、σ
2/σ
1=1.6の場合、最もLoGフィルタを近似できる。
また、図28は、本変形例と、ラプラシアン(DoG、LoG)・フィルタとの比較の一例を示す線図である。図28に示すように、本変形例は、よく近似している。
このように、画像処理装置2により、少ないメモリサイズで高速に処理できる擬似的なラプラシアン・フィルタを実現できる。
(第3実施形態)
次に、本発明の第3実施形態に係る画像処理装置について図に説明する。
まず、第3実施形態に係る画像処理装置の概要構成について、図に基づき説明する。
図29は、本発明に係る第3実施形態に係る画像処理装置の概要構成例を示すブロック図である。
図29に示すように、画像処理装置3は、原画像の画素データの値に応じて、画素データを分配する分配部5と、分配部5からの画素データを処理するY方向の加算処理部10と、Y方向の加算処理部10からの画素データを処理するX方向の加算処理部20とを備える。
分配部5は、ヒストグラムのビン数に応じて、分配数と輝度等の範囲が設定され、ビン数分の出力端を有する。分配部5の出力端の各々にY方向の加算処理部10が接続される。Y方向の加算処理部10の入力端には、2つの分配部5における画素データの値の範囲が同じ出力端が接続される。各Y方向の加算処理部10には、X方向の加算処理部20が各々接続される。
各分配部5に、Y方向にタップ数TAP1分離れた原画像の画像データfが入力され、画素データの値に応じて、分配部5は、値に対応した出力端に値1を出力する。
そして、画像処理装置3は、分配部5からの出力を、Y方向の加算処理部10およびX方向の加算処理部20により、タップ数TAP1の正方領域の局所的なヒストグラムを算出する。
このように、分配部5は、原画像の画素データの値に応じて、画素データを分配する分配部の一例として機能する。また、Y方向の加算処理部10の加算器は、分配部5からの第1入力画素データと、出力側からの画素データとを加算する第1加算器の一例として機能し、Y方向の加算処理部10の減算器は、第1加算器からの画素データから、分配部5からの第2入力画素データを減算して第1出力画素データを外部に出力する第1減算器の一例として機能し、Y方向の加算処理部20のラインメモリは、原画像における走査方向の画素数個分の第1出力画素データを順に記憶し、第1加算器に順に出力する第1記憶器の一例として機能する。
また、X方向の加算処理部20の加算器は、第1加算処理部10からの第3入力画素データと、出力側からの画素データとを加算する第2加算器の一例として機能し、X方向の加算処理部20のシフトレジスタは、第3入力画素データを、加算する画素数分の記憶数個、順に記憶して出力する第3記憶器の一例として機能し、X方向の加算処理部20の減算器は、第2加算器からの画素データから、加算する画素数分の走査前の第3入力画素データを減算して第2出力画素データを外部に出力する第2減算器の一例として機能し、X方向の加算処理部20の記憶器は、第2出力画素データを1画素分記憶して、第2加算器に出力する第2記憶器の一例として機能する。
次に、画像処理装置3の動作例を図に基づき説明する。
図30は、局所ヒストグラムを求める範囲の一例を示す模式図である。図31は、Y方向の1階加算処理部10の1段目における処理の様子の一例を示す模式図であり、Y方向にウインドウエリアを分割した例を示している。図32は、画像処理装置3の処理結果の一例を示すグラフである。
図30に示すように、ウインドウサイズを5画素×5画素とする。
ヒストグラムは、特定の輝度範囲にある画素の個数を数えるのだから、ウインドウエリアを任意のサイズに分けて、数えても結果は同じになる。図31に示すように、分割ウインドウの中の一つを考えてみる。ウインドウエリアが一画素、Y方向に移動した場合を考える。移動前のウインドウエリアのヒストグラムをh_SUMy1(x,y-1)、移動後のウインドウエリアのヒストグラムをh_SUMy1(x,y)とする。ここでは、例示的にY方向の1階加算処理部10による処理結果を示している。
そして、ヒストグラムは、特定の輝度範囲にある画素数の個数を数える処理である。従って、図32に示すように、画素データf(x,y-3)の輝度が192-255の範囲で、画素データf(x,y+2)の輝度が128-191の範囲であった場合、h_SUMy1(x,y)に含まれる輝度128-191範囲の画素数の合計数をh128SUMy1(x,y)、輝度192-255の範囲の画素数の合計数をh192_SUMy1(x,y)とすると、
となる。
ヒストグラム全体では、
と表せる。但しλ(x、y)は、座標(x,y)の画素の輝度が、ヒストグラムの輝度範囲内に属する個数で、常に1である。このように、ヒストグラムは常に+1、−1の数え上げ処理を行うので、図29に示した回路の組み合わせで構成することが可能となる。すなわち、1階加算処理のフィルタとヒストグラムとの違いは、前者が画素値を加算するのに対して、後者は対象画素が、設定した輝度範囲に属するかを判別することと、加算する数が画素データその物(白黒なら輝度値)から、輝度範囲に属する画素の数(1又は0)になるということである。ウインドウ内の画素の重みの総和は、ウインドウに属する画素の数になるので、両者とも同じになる。
なお、図30に示したウインドウエリアのヒストグラムを求める場合、上記Y方向の1階加算処理部10による処理結果に対して、図29に示すように、X方向の1階加算処理部20を行う。画像処理装置3は、ウインドウエリアをX方向に走査しながら、ウインドウエリアのヒストグラムを算出していく。
このように本実施形態によれば、原画像の画素データの値に応じて、画素データを分配する分配部5と、Y方向の1階加算処理部10と、X方向の1階加算処理部20とにより、少ないメモリサイズで高速に原画像に対する、局所的なヒストグラムを算出することができる。また、局所的なヒストグラムを求める局所のサイズに依存せず、高速に処理できる。また、2階や3階の加算処理を適応することにより、重み付け局所ヒストグラムの生成回路を実現することもできる。
(第4実施形態)
次に、本発明の第4実施形態に係る画像処理装置について図に説明する。
まず、第4実施形態に係る画像処理装置の概要構成について、図に基づき説明する。
図33は、本発明に係る第4実施形態に係る画像処理装置の概要構成例を示すブロック図である。
図33に示すように、画像処理装置4は、Y方向の加処理をするY方向の1階加算処理部10Bと、X方向の加算処理をするX方向の1階加算処理部20Bと、を備える。
Y方向の1階加算処理部10Bは、加算器11と、減算器12と、減算器12からの出力画素データを原画像のX方向の画素数個分、順に記憶するラインメモリ15と、を有する。
ラインメモリ15は、1画素分記憶する記憶素子15bを複数有したシフトレジスタであり、入力側からタップ数TAP1分のところの画素データを取り出せるようになっている。記憶素子15bの個数は、少なくとも原画像のX方向のライン分の長さの画素データの個数分である。なお、ラインメモリ15が、RAM等で構成されている場合は、入力側からタップ数TAP1分のところの画素データをリードする。また、高階の加算処理の場合、階数の対応したタップ数分のところの画素データを取り出す。ラインメモリ15の分岐出力は、外部に出力できる構成である。
X方向の1階加算処理部20Bは、加算器21と、減算器22と、記憶器24とを有する。X方向の1階加算処理部20とは異なり、シフトレジスタ23を有しないが、ラインメモリ15の分岐出力からの画素データを、減算器22に入力する入力端を有する。
本実施形態により、X方向の1階加算処理部20Bを少ない回路構成で実現できる。また、X方向の1階加算処理部20Bは、タップ数に依存しないので、コストを削減できる。
なお、第1から第4実施形態の画像処理をコンピュータのプログラム等で実行しても良い。例えば、原画像に対して走査しながら、前記原画像を画像処理する画像処理方法において、前記原画像に関連した第1入力画素データと、出力側からの画素データとを加算する第1加算ステップと、前記第1加算ステップからの画素データから、前記原画像に関連した第2入力画素データを減算して第1出力画素データを外部に出力する前記第1減算ステップと、前記原画像における前記走査方向の画素数個分の前記第1出力画素データを順に記憶し、前記第1加算ステップへの入力の画素データとして順に出力する第1記憶ステップと、を有する第1加算処理ステップと、前記第1加算処理ステップにより処理されてきた第3入力画素データと、出力側からの画素データとを加算する第2加算ステップと、前記第2加算ステップからの画素データから、加算する画素数分の走査前の前記第3入力画素データを減算して第2出力画素データを外部に出力する第2減算手ステップと、前記第2出力画素データを1画素分記憶して、前記第2加算ステップへの入力の画素データとして出力する第2記憶ステップと、を有する第2加算処理ステップと、を備え、前段の2つの前記第1加算処理ステップの各々の出力結果を入力として後段の前記第1加算処理ステップが処理を行い、後段の前記第1加算処理ステップの出力結果を、2つの第2加算処理ステップにより順に処理する画像処理方法である。
また、原画像に対して走査しながら、前記原画像を画像処理する画像処理方法において、前記原画像の画素データの値に応じて、前記画素データを分配する分配ステップと、前記分配ステップからの第1入力画素データと、出力側からの画素データとを加算する第1加算ステップと、前記第1加算ステップからの画素データから、前記分配ステップからの第2入力画素データを減算して第1出力画素データを外部に出力する前記第1減算ステップと、前記原画像における前記走査方向の画素数個分の前記第1出力画素データを順に記憶し、前記第1加算ステップへの入力の画像データとして順に出力する第1記憶ステップと、を有する第1加算処理ステップと、前記第1加算処理ステップからの第3入力画素データと、出力側からの画素データとを加算する第2加算ステップと、前記第2加算ステップからの画素データから、加算する画素数分の走査前の前記第3入力画素データを減算して第2出力画素データを外部に出力する第2減算ステップと、前記第2出力画素データを1画素分記憶して、前記第2加算ステップへの入力の画素データとして出力する第2記憶ステップと、を有する第2加算処理ステップと、を備えたこと特徴とする画像処理方法である。
また、前記第2加算処理ステップが、前記第3入力画素データを、加算する画素数分の記憶数個、順に記憶して出力する第3記憶ステップを有し、前記第2減算ステップが、前記第2加算ステップからの画素データから、前記第3記憶ステップからの画素データを減算してもよい。
さらに、各階におけるタップ数を、X方向およびY方向において、同じにすると、正方形のウインドウ空間となるが、X方向とY方向とで異なるタップ数にして、ウインドウ空間が矩形になるようにしてもよい。
さらに、本発明は、上記各実施形態に限定されるものではない。上記各実施形態は、例示であり、本発明の特許請求の範囲に記載された技術的思想と実質的に同一な構成を有し、同様な作用効果を奏するものは、いかなるものであっても本発明の技術的範囲に包含される。