(57)【特許請求の範囲】
【請求項１】
フィルタを予め決められたタップ数の分割フィルタに分割する分割手段と、
前記分割手段によって分割された分割フィルタを用いて、入力画像に対して分割フィルタごとにフィルタ処理を行うフィルタ処理手段と、
前記フィルタ処理手段による分割フィルタごとの処理結果を積算する積算手段とを有し、
前記積算手段は、前記分割フィルタのフィルタ係数の値に応じた順序により、前記分割フィルタごとの処理結果を積算することを特徴とする画像処理装置。
【請求項２】
前記積算手段は、フィルタ係数の和が小さい分割フィルタの処理結果から順に積算することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記積算手段は、フィルタ係数の和が所定範囲内である分割フィルタの処理結果から優先して積算することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記フィルタ処理手段は、前記分割フィルタのフィルタ係数の値に応じてフィルタ処理を行う分割フィルタを選択し、
前記積算手段は、前記フィルタ処理手段により選択された順に処理結果を積算することを特徴とする請求項１〜３の何れか１項に記載の画像処理装置。
【請求項５】
前記フィルタ処理手段は、前記分割フィルタのフィルタ係数の値に応じて、処理結果の小数点位置を変更することを特徴とする請求項１〜４の何れか１項に記載の画像処理装置。
【請求項６】
フィルタを予め決められたタップ数の分割フィルタに分割する分割工程と、
前記分割工程において分割された分割フィルタを用いて、入力画像に対して分割フィルタごとにフィルタ処理を行うフィルタ処理工程と、
前記フィルタ処理工程における分割フィルタごとの処理結果を積算する積算工程とを有し、
前記積算工程においては、前記分割フィルタのフィルタ係数の値に応じた順序により、前記分割フィルタごとの処理結果を積算することを特徴とする画像処理方法。
【請求項７】
フィルタを予め決められたタップ数の分割フィルタに分割する分割工程と、
前記分割工程において分割された分割フィルタを用いて、入力画像に対して分割フィルタごとにフィルタ処理を行うフィルタ処理工程と、
前記フィルタ処理工程における分割フィルタごとの処理結果を積算する積算工程とをコンピュータに実行させ、
前記積算工程においては、前記分割フィルタのフィルタ係数の値に応じた順序により、前記分割フィルタごとの処理結果を積算することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、小規模の回路でフィルタ処理を行うために用いて好適な画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、多タップのフィルタ処理をより小規模の演算器で実現する方法として、多タップのフィルタをよりタップ数の小さい複数のフィルタに分割し、フィルタ処理する方法が提案されている。例えば、特許文献１には、所定のフィルタ係数が割り当てられたフィルタ範囲を所定範囲以下のサブフィルタに分割し、サブフィルタ毎にフィルタ処理を行う方法が開示されている。この方法によれば、サブフィルタ毎のフィルタ処理結果を画素単位で加算することにより、所定のフィルタ係数でフィルタ処理を行った結果と同様の結果を取得するようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１４５６１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の特許文献１に開示された従来技術では、分割前の多タップフィルタのフィルタ係数の分布やフィルタの分割方法によっては、フィルタ処理結果の積算時に発生する丸め誤差が発生する場合がある。したがってこの影響により、多タップフィルタのフィルタ処理結果との間に差異が発生する場合がある。
【０００５】
本発明は前述の問題点に鑑み、フィルタを分割して積算することによって生じる丸め誤差の影響を小さくして、より高精度なフィルタ結果を得ることができるようにすることを目的としている。
【課題を解決するための手段】
【０００６】
本発明に係る画像処理装置は、フィルタを予め決められたタップ数の分割フィルタに分割する分割手段と、前記分割手段によって分割された分割フィルタを用いて、入力画像に対して分割フィルタごとにフィルタ処理を行うフィルタ処理手段と、前記フィルタ処理手段による分割フィルタごとの処理結果を積算する積算手段とを有し、前記積算手段は、前記分割フィルタのフィルタ係数の値に応じた順序により、前記分割フィルタごとの処理結果を積算することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、フィルタを分割して積算することによって生じる丸め誤差の影響を小さくして、より高精度なフィルタ結果を得ることができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る画像処理装置の構成例を示すブロック図である。
【図２】画像信号処理部の詳細な構成例を示すブロック図である。
【図３】撮影画像に適用するフィルタ係数を説明するための図である。
【図４】２次元フィルタを撮影画像に適用する様子を説明するための図である。
【図５】積算順による積算結果の違いを説明するための図である。
【発明を実施するための形態】
【０００９】
以下、本発明の好ましい実施形態について、添付の図面に基づいて詳細に説明する。
図１は、本実施形態に係る画像処理装置１００の構成例を示すブロック図である。以下、図１を参照しながら、本実施形態によるフィルタ処理について説明する。
【００１０】
本実施形態では、多タップのフィルタを所定のフィルタサイズ毎に複数のより小さなフィルタに分割する。そして、入力画像に対し、分割したフィルタ毎にフィルタ処理を施し、得られた中間画像を積算することにより、積算の丸め誤差を抑えたより高精度なフィルタ処理結果を得ることができる。
【００１１】
図１において、撮像レンズ１０２は、撮影像を光学的に撮像素子１０４上に結像させる。撮像素子１０４は、その撮影像をアナログの電気信号に変換する。また、撮像素子１０４は複数の色フィルタを有する。Ａ／Ｄ変換器１０６は、この撮像素子１０４から出力されるアナログ信号をデジタル信号に変換する。
【００１２】
制御部１０８は、画像処理装置１００全体を制御し、Ａ／Ｄ変換器１０６、ＲＯＭ１１０、ＲＡＭ１１２、画像信号処理部１１４、及びフィルタ係数分割部１１６の間のデータの流れを制御する。ＲＯＭ１１０は、フィルタ係数等が記憶されている不揮発性のメモリである。ＲＡＭ１１２は、撮影画像やフィルタ処理を施した中間画像を一時的に格納するためのメモリである。フィルタ係数分割部１１６は、ＲＯＭ１１０に記憶されている多タップのフィルタをより小さいタップ数の複数のフィルタに分割する。
【００１３】
図３は、撮影画像に適用するフィルタ係数を説明するための図である。図３に示すように、本実施形態の多タップのフィルタは円柱形のフィルタ形状となっている。また、フィルタサイズは、円柱部分が（４７タップ）×（４７タップ）である。ｆ１、ｆ２、・・・ｆ３６は、サイズが（９タップ）×（９タップ）の２次元のフィルタであり、縦６ブロック横６ブロックで最大（５４タップ）×（５４タップ）の２次元のフィルタ係数を表現することができる。本実施形態では、多タップのフィルタ周辺部のフィルタ係数を０、フィルタ中央部のフィルタ係数をａとし、１６ビットの固定小数点形式でＲＯＭ１１０に保持される。なお、フィルタの形状は円柱型に限定されるわけではなく、任意の形状のフィルタ係数を適用してよい。
【００１４】
図４は、図３に示す２次元フィルタを撮影画像に適用する様子を説明するための図である。図４において、領域４０１は撮影された入力画像の領域である。また、領域４０２は（５４タップ）×（５４タップ）の２次元フィルタを適用した後の出力画像の領域である。
【００１５】
図２は、画像信号処理部１１４の詳細な構成例を説明するための図である。図２（ａ）〜図２（ｃ）に示すように、画像信号処理部１１４は、フィルタ回路２０１、画像加算回路２０６、及び画像除算回路２１０を備えている。
【００１６】
図２（ａ）に示すフィルタ回路２０１は、（９タップ）×（９タップ）のフィルタ処理を施す回路であり、フィルタ係数２０３及び入力画像２０４を入力し、フィルタ処理結果２０５を出力する。本実施形態では、フィルタ係数２０３は１２ビットの固定小数点形式で値を表現し、同様にフィルタ処理結果２０５は１６ビットの固定小数点形式で値を表現する。また、入力画像２０４は１２ビットの整数で値を保持しているものとする。なお、フィルタ係数２０３、入力画像２０４、及びフィルタ処理結果２０５のデータ幅は上記に限定されるわけではなく、回路構成によって変更される。
【００１７】
フィルタ回路２０１は、入力画像の所望の領域を読み出し、フィルタ処理を施す。まずフィルタ回路２０１は、図３に示すフィルタｆ１〜ｆ３６のフィルタ係数の中から１つを選択してフィルタ係数ｈ１とし、フィルタ係数ｈ１を入力画像に適用する。このとき、フィルタｆ１〜ｆ３６の中からフィルタ係数の和（分割フィルタ内の各画素のフィルタ係数の和）が小さいフィルタ係数をフィルタ係数ｈ１として選択する。本実施形態では、フィルタ係数の和がゼロであるフィルタｆ１、ｆ６、ｆ３１、ｆ３６を除いてフィルタ係数の和が最小であるフィルタｆ３０のフィルタ係数をフィルタ係数ｈ１として選択する。また、フィルタ係数の和の大小の順序に並べ替える処理の計算負荷が許容できない場合には、フィルタ係数の和が所定範囲内であるフィルタの中から優先して１つ選択してもよい。
【００１８】
次に、位置ずらし回路２５１は、例えば図４に示す入力画像の一部の領域４０３を部分的に読み出す。そして、領域４０３に対してフィルタ処理を適用することにより、第１の中間画像を生成する。フィルタ回路２０１の中のコンボリューション回路２５２は、フィルタ処理結果が桁あふれしないように計算精度を確保している。つまり、本実施形態ではフィルタ係数２０３を１６ビットとし、入力画像２０４を１２ビットとしているため、フィルタ処理結果２０５は２８ビットを有する構成とする。また、フィルタ回路２０１は、フィルタ処理結果を出力する直前に設けた小数点位置シフト回路２５３により、固定小数点形式のフィルタ処理結果の小数点位置をシフトして、第１の中間画像を生成する。本実施形態では、中間画像の１画素あたりのデータ幅を１２ビットとしているため、右へ１６ビットシフトしてから出力する。
【００１９】
小数点位置は、フィルタ係数の和からフィルタ処理結果の最大値を算出し、その最大値を表現できる範囲を考慮して決定する。例えば、フィルタ係数の和が２-8であれば、フィルタ処理結果の最大値は、（２12−１）・２-8＝２4−２-8であるため、整数部として４ビット、小数部として８ビットとなるように小数点位置を設定する。
【００２０】
続いて、フィルタ係数の和が同じであるフィルタｆ３５のフィルタ係数をフィルタ係数ｈ２として同様に選択し、図４に示す領域４０４をフィルタ処理することによって第２の中間画像を生成する。第２の中間画像の小数点位置についても第１の中間画像と同様にして決定する。
【００２１】
図２（ｂ）に示す画像加算回路２０６は、第１の入力画像２０７及び第２の入力画像２０８として第１の中間画像及び第２の中間画像を入力し、第１の積算画像を生成し、出力結果２０９として出力する。ここで、第１の中間画像と第２の中間画像とで小数点位置が一致しない場合には、小数点位置合わせ回路２５４において小数点位置を合わせてから加算器２５５で積算する。第１の積算画像は、画像加算回路２０６の出力直前で小数点位置シフト回路２５６により小数点位置がシフトされてから出力される。小数点位置のシフト量は、フィルタ回路２０１と同様に第１の中間画像と第２の中間画像との積算結果の最大値を表現できる範囲を考慮して決定する。
【００２２】
一方、フィルタ回路２０１では、次にフィルタ係数の和が小さいフィルタｆ１２のフィルタ係数をフィルタ係数ｈ３として選択し、同様に入力画像の領域をずらしてフィルタ処理を行い、第３の中間画像を生成する。そして、画像加算回路２０６では、前述の第１の積算画像と第３の中間画像とを加算することによって第２の積算画像を生成する。以下同様に、図３のフィルタｆ１〜ｆ３６（ｆ１、ｆ６、ｆ３１、ｆ３６は除く）の中でまだ選択されていないフィルタの中から、フィルタ係数の和が小さいものから順にフィルタ係数ｈ４〜ｈ３２として選択して同様の処理を行う。なお、フィルタｆ１、ｆ６、ｆ３１、ｆ３６はすべてフィルタ係数の和がゼロであるため、処理の対象外とする。そして、最終的に第３１の積算画像を生成する。
【００２３】
以上のように本実施形態では、フィルタ係数の和が小さいものから順に積算するようにしている。フィルタ係数の和が小さい場合は、フィルタ処理結果の最大値が小さいので、小数部のビット幅を広くすることができる。このことから、フィルタ係数の和が小さいものから順に選択することによって小数部の積算結果を大きく反映させることができる。そして、フィルタ係数の和が大きくなるに従ってフィルタ処理結果の最大値が大きくなるので、小数点位置をシフトさせ、整数部のビット幅を広くしていく。このように、フィルタ係数の和が小さいフィルタ係数の処理結果から順に積算することによって、計算誤差を小さくすることができる。
【００２４】
ここで、本実施形態の処理によって生じる効果について、図５を用いて説明する。ここでは説明を簡略化するため、分割フィルタによる処理結果を３つまで積算した状態で違いを基に効果を説明する。また、３つの分割フィルタをｇ１、ｇ２、ｇ３とし、分割フィルタｇ１、ｇ２、ｇ３のフィルタ係数の和の大小関係は、ｇ１＝ｇ３＜ｇ２とする。また、分割フィルタｇ１、ｇ２、ｇ３によるフィルタ処理結果、つまり中間画像の所定の画素位置の値をＦ１、Ｆ２、Ｆ３とする。
【００２５】
図５（ａ）は、３つの分割フィルタのフィルタ処理結果である中間画像を生成することなく積算した結果を示しており、中間画像を出力して積算する際に発生する丸め誤差は発生していない。この場合は、出力される積算結果Ｓ１３の小数部は"１"が出力される。
【００２６】
図５（ｂ）は、３つの分割フィルタのフィルタ結果である中間画像の積算順を考慮せずに積算した結果を示している。まず、１回目の積算処理で中間画像Ｆ１と中間画像Ｆ２とを積算し、積算画像Ｓ２２を出力する。その際、小数部第３桁が'１'であるが、整数部が１１ビットであることから小数部は１ビットしか確保できず、四捨五入により小数部が'０'と出力される。次に、積算画像Ｓ２２と中間画像Ｆ３とを積算し、積算画像Ｓ２３を出力する。その際、小数部第３桁が'１'であり、同様に小数部が'０'と出力される。その結果、積算画像Ｓ２３の小数部は'０'であり、図５（ａ）に示す結果と比較して、丸めによる計算誤差が発生してしまう。
【００２７】
図５（ｃ）は、本実施形態の処理結果を示しており、３つの分割フィルタのフィルタ結果である中間画像の積算順を考慮して積算した結果を示している。まず、１回目の積算処理で中間画像Ｆ１と中間画像Ｆ３とを積算し、積算画像Ｓ３２を出力する。次に、積算画像Ｓ３２と中間画像Ｆ２とを積算し、積算画像Ｓ３３を出力する。積算画像Ｓ３２で小数部が反映されているため、積算画像Ｓ３３の小数部は"１"であり、図５（ａ）の結果と一致し、丸めによる計算誤差が発生していない。図５（ａ）〜図５（ｃ）に示す結果から、本実施形態のようにフィルタ係数の和が小さい順に積算順を考慮することによって、丸めによる計算誤差を抑えることができる。
【００２８】
なお、本実施形態において、図３に示すフィルタｆ１〜ｆ３６のフィルタ係数は、それぞれＲＯＭ１１０に予め記憶されており、図１のＲＡＭ１１２上に展開されてから図２（ａ）のフィルタ回路２０１に入力される。一方、制御部１０８が、図３に示す（５４タップ）×（５４タップ）の２次元フィルタをＲＡＭ１１２上に生成し、３６個のフィルタｆ１〜ｆ３６に分割し、それぞれのフィルタ係数を算出するようにしてもよい。このように、ＲＯＭ１１０に記憶するデータ量を削減するようにしてもよい。
【００２９】
以上のような手順により第３１の積算画像が生成されると、画像除算回路２１０は、ＲＯＭ１１０に格納されている正規化係数２１３を入力するとともに、第３１の積算画像２１１を入力する。そして、第３１の積算画像２１１を正規化係数２１３で除算し、最終的なフィルタ処理結果の画像２１２を出力する。
【００３０】
以上のように本実施形態の画像処理装置１００によれば、９タップのような小さいサイズの２次元フィルタ処理で、５４タップの２次元フィルタ処理で得られるようなフィルタ処理結果を計算する際に、積算順を考慮するようにした。これにより、積算による丸め誤差の影響を抑え、より高精度のフィルタ処理結果を取得することができる。
【００３１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００３２】
１１４  画像信号処理部
１１６  フィルタ係数分割部
【図１】
0006381344.tif 000002
【図２】
0006381344.tif 000003
【図３】
0006381344.tif 000004
【図４】
0006381344.tif 000005
【図５】
0006381344.tif 000006