(57)【要約】  記載の例では、イメージングのためノイズをフィルタリングする方法（４００）が、位置及びレンジデータを有する画像フレームを受け取ること（４０１）を含む。フィルタサイズがフィルタウィンドウの各々を処理するためのフィルタウィンドウにフレームを分ける（４０２）。第１の画素に対し、中央画素に対する空間及びこの画素と中央画素との間のレンジ差が判定され（４０３）、選択された重みが、空間及びレンジ差に対する重み付けを含む２Ｄ重みＬＵＴにおける重みから選ぶ（４０４）ために用いられ、選択された２Ｄ重みを画素に適用することにより、フィルタされたレンジ値が計算され（４０５）、レンジ、フィルタされたレンジ値、及び選択された２Ｄ重みが合計される（４０６）。少なくとも第２の画素に対し、判定、選択、計算、及び加算が反復される（４０７）。中央画素に対する最終的なフィルタされたレンジ値を生成するため、第１及び第２の画素からの寄与の総和が、選択された２Ｄ重みの和で除算される（４０８）。
2019507453.tif 000002
【特許請求の範囲】
【請求項１】
イメージングのためノイズをフィルタリングする方法であって、
プロセッサによりアクセスされ得るメモリにストアされるバイラテラル（ＢＬ）フィルタアルゴリズムを実装する前記プロセッサを用いること、又は、複数の画素からの位置及びレンジを含む画像データを含む画像フレームに対して前記方法を実施するように構成されるＢＬフィルタハードウェアを用いることを含み、前記画像フレームが複数のフィルタウィンドウを含み、前記複数のフィルタウィンドウの各々が、中央画素と、第１の画素及び第２の画素を含む複数の他の画素とを含み、
前記複数のフィルタウィンドウの各々を処理することが、
前記第１の画素に対して、前記中央画素に対するその距離である空間、及びそのレンジと前記中央画素のレンジとの間のレンジ差を判定すること、前記空間及び前記レンジ差を用いること、複数の組み合わされた２Ｄ重みからの選択された組み合わされた２Ｄ重みを選ぶことであって、前記複数の組み合わされた２Ｄ重みの各々が、少なくとも一つの組み合わされた事前演算された２Ｄ重みルックアップテーブル（２Ｄ重みＬＵＴ）からの前記空間及び前記レンジ差両方に対して重み付けすることを含む、前記選ぶこと、前記選択された組み合わされた２Ｄ重みを前記第１の画素に適用することによって、フィルタされたレンジ値を計算すること、及び、前記第１の画素の寄与を判定するため、前記レンジと、前記フィルタされたレンジ値と、前記選択された２Ｄ重みとを加算すること、
少なくとも前記第２の画素に対して、前記判定すること、前記選ぶこと、前記計算すること、及び前記加算することを反復すること、及び
前記中央画素に対する最終的なフィルタされたレンジ値を出力画素として生成するため、前記第１の画素及び少なくとも前記第２の画素からの前記寄与の総和を、前記第１の画素及び前記第２の画素からの前記選択された組み合わされた２Ｄ重みの和で除算すること、
を含む、方法。
【請求項２】
請求項１に記載の方法であって、前記２Ｄ重みＬＵＴが複数の２Ｄ重みサブＬＵＴを含み、前記複数の２Ｄ重みサブＬＵＴの各々が、少なくとも前記レンジに対して複数の異なるシグマ（σ）値を提供する複数の前記組み合わされた２Ｄ重みを有し、
前記方法が、前記選ぶ前に、更に、
画素画像属性に基づいて、前記複数の２Ｄ重みサブＬＵＴからの前記複数の２Ｄ重みサブＬＵＴ（選択された２Ｄ重みサブＬＵＴ）のうち選択された一つを適合的に選び出すことを含み、
前記選択された２Ｄ重みを前記選ぶことが、前記選択された２Ｄ重みサブＬＵＴからである、方法。
【請求項３】
請求項１に記載の方法であって、前記２Ｄ重みＬＵＴが、前記空間及び前記レンジの少なくとも一方において量子化される、方法。
【請求項４】
請求項３に記載の方法であって、前記２Ｄ重みＬＵＴが、前記空間及び前記レンジの両方において量子化される、方法。
【請求項５】
請求項３に記載の方法であって、前記レンジに対する一層高い値での一層大きなステップサイズに比して、前記レンジに対する一層低い値での一層細かいステップサイズを含む前記２Ｄ重みＬＵＴに対して非線形（ＮＬ）ＬＵＴを用いることによって前記レンジを量子化するために、非線形補間が用いられる、方法。
【請求項６】
請求項１に記載の方法であって、前記メモリが、フリップフロップ又はレジスタを含む、方法。
【請求項７】
請求項１に記載の方法であって、
前記２Ｄ重みＬＵＴが複数の２Ｄ重みサブＬＵＴを含み、前記複数の２Ｄ重みサブＬＵＴの各々が、前記レンジに対して及び前記空間に対して複数の異なるシグマ（σ）値を提供する複数の前記組み合わされた２Ｄ重みを有し、更に、
サブテーブルインデックスを計算すること及び前記複数の２Ｄ重みサブＬＵＴ（選択された２Ｄ重みサブＬＵＴ）の一つを選択するため前記サブテーブルインデックスを用いること、及び前記画像フレームにおける前記複数のフィルタウィンドウの全てにわたる前記処理のために前記選択された２Ｄ重みサブＬＵＴを用いること、
を含む、方法。
【請求項８】
請求項１に記載の方法であって、
前記２Ｄ重みＬＵＴが複数の２Ｄ重みサブＬＵＴを含み、前記複数の２Ｄ重みサブＬＵＴの各々が、前記レンジに対して複数の異なるシグマ（σ）値を提供する複数の前記組み合わされた２Ｄ重みを有し、更に、
平均レンジを判定するため前記複数のフィルタウィンドウの各々において局所平均すること、及び前記複数のフィルタウィンドウの前記処理に対して個々に前記複数の２Ｄ重みサブＬＵＴの一つを選択するため前記平均レンジを用いること
を含む、方法。
【請求項９】
請求項８に記載の方法であって、前記複数の他の画素の一部のみが、前記平均レンジを判定するために用いられる、方法。
【請求項１０】
請求項１に記載の方法であって、更に、先進運転支援システム（ＡＤＡＳ）のために用いられるノイズフィルタされた画像を生成するため、前記複数のフィルタウィンドウを前記処理することからの前記出力画素を用いることを含む、方法。
【請求項１１】
画像を処理するためのシステムであって、
プロセッサ及び関連するメモリ、
前記メモリにストアされ、前記プロセッサ又はＢＬフィルタハードウェアにより実行可能なバイラテラル（ＢＬ）フィルタプログラムであって、前記ＢＬフィルタプログラム又は前記ＢＬフィルタハードウェアが、複数の画素からの位置及びレンジを含む画像データを含む画像フレームに対して方法を実装し、前記画像フレームが複数のフィルタウィンドウを含み、前記複数のフィルタウィンドウの各々が、中央画素と、第１の画素及び第２の画素を含む複数の他の画素とを含み、
前記複数のフィルタウィンドウの各々を処理することが、
前記第１の画素に対して、前記中央画素に対するその距離である空間、及びそのレンジと前記中央画素のレンジとの間のレンジ差を判定すること、前記空間及び前記レンジ差を用いること、複数の前記組み合わされた２Ｄ重みから選択された組み合わされた２Ｄ重みを選ぶことであって、前記組み合わされた２Ｄ重みの各々が、少なくとも一つの組み合わされた事前演算された２Ｄ重みＬＵＴ（２Ｄ重みＬＵＴ）から前記空間及び前記レンジ差の両方に対して重み付けすることを含む、前記選ぶこと、前記選択された組み合わされた２Ｄ重みを前記第１の画素に適用することにより、フィルタされたレンジ値を計算すること、及び、前記第１の画素の寄与を判定するため、前記レンジ、前記フィルタされたレンジ値、及び前記選択された２Ｄ重みを加算すること、
少なくとも前記第２の画素に対して、前記判定すること、前記選ぶこと、前記計算すること、及び前記加算することを反復すること、及び
前記中央画素に対する最終的なフィルタされたレンジ値を出力画素として生成するため、前記第１の画素及び少なくとも前記第２の画素からの前記寄与の総和を、前記第１の画素及び前記第２の画素からの前記選択された組み合わされた２Ｄ重みの和で除算すること、
を含む、システム。
【請求項１２】
請求項１１に記載のシステムであって、前記２Ｄ重みＬＵＴが複数の２Ｄ重みサブＬＵＴを含み、前記複数の２Ｄ重みサブＬＵＴの各々が、少なくとも前記レンジに対して複数の異なる分散（σ）値を提供する複数の前記組み合わされた２Ｄ重みを有し、前記方法が、前記選ぶ前に、
画素画像属性に基づいて、前記複数の２Ｄ重みサブＬＵＴから前記複数の２Ｄ重みサブＬＵＴ（選択された２Ｄ重みサブＬＵＴ）のうち選択された一つを適合的に選び出すことを更に含み、
前記選択された２Ｄ重みを前記選ぶことが、前記選択された２Ｄ重みサブＬＵＴからである、システム。
【請求項１３】
請求項１１に記載のシステムであって、前記２Ｄ重みＬＵＴが、前記空間及び前記レンジの少なくとも一方において量子化される、システム。
【請求項１４】
請求項１３に記載のシステムであって、前記２Ｄ重みＬＵＴが、前記空間及び前記レンジ両方において量子化される、システム。
【請求項１５】
請求項１３に記載のシステムであって、前記レンジに対して一層高い値での一層大きなステップサイズに比して、前記レンジに対して一層低い値での一層細かいステップサイズを含む前記２Ｄ重みＬＵＴに対して非線形（ＮＬ）ＬＵＴを用いることにより前記レンジを量子化するために、非線形補間が用いられる、システム。
【請求項１６】
請求項１１に記載のシステムであって、前記メモリが、フリップフロップ又はレジスタを含む、システム。
【請求項１７】
請求項１１に記載のシステムであって、
前記２Ｄ重みＬＵＴが複数の２Ｄ重みサブＬＵＴを含み、前記複数の２Ｄ重みサブＬＵＴの各々が、前記レンジに対して及び前記空間に対して複数の異なるシグマ（σ）値を提供する複数の前記組み合わされた２Ｄ重みを有し、更に、
サブテーブルインデックスを計算すること、及び前記複数の２Ｄ重みサブＬＵＴ（選択された２Ｄ重みサブＬＵＴ）の一つを選択するために前記サブテーブルインデックスを用いること、及び、前記画像フレームにおける前記複数のフィルタウィンドウの全てにわたる前記処理に対して前記選択された２Ｄ重みサブＬＵＴを用いること、
を含む、システム。
【請求項１８】
請求項１１に記載のシステムであって、
前記２Ｄ重みＬＵＴが複数の２Ｄ重みサブＬＵＴを含み、前記複数の２Ｄ重みサブＬＵＴの各々が、少なくとも前記レンジに対して複数の異なるシグマ（σ）値を提供する複数の前記組み合わされた２Ｄ重みを有し、更に、
平均レンジを判定するため前記複数のフィルタウィンドウの各々において局地平均すること、及び、前記複数のフィルタウィンドウの前記処理に対して個々に前記複数の２Ｄ重みサブＬＵＴの一つを選択するため前記平均レンジを用いること、
を含む、システム。
【請求項１９】
請求項１８に記載のシステムであって、前記複数の他の画素の一部のみが、前記平均レンジを判定するために用いられる、システム。
【請求項２０】
請求項１１に記載のシステムであって、更に、先進運転支援システム（ＡＤＡＳ）のために用いられるノイズフィルタされた画像を生成するため、前記複数のフィルタウィンドウを前記処理することからの前記出力画素を用いることを含む、システム。
【請求項２１】
請求項１１に記載のシステムであって、前記システムが、前記ＢＬフィルタハードウェアを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、バイラテラルフィルタリングを用いるデジタル画像の処理に関連する。
【背景技術】
【０００２】
画像処理のための一般的な手法は、バイラテラル（ＢＬ）フィルタを画像に適用することである。ＢＬフィルタは、画像における近隣画素の空間的近接及び測光類似性に基づいて、その画像における画素のための新しい値を演算するフィルタである。
【０００３】
ＢＬフィルタリングは、そのエッジ保存性に起因して、先進運転支援システム（ＡＤＡＳ）のためなど、コンピュータビジョンシステムのための事実上のノイズフィルタリングとなってきている。ＡＤＡＳは、イメージングソースからのデジタル情報を処理するオートモーティブビジョン制御システムにより実装され、イメージングソースには、デジタルカメラ、レーザー、レーダー、並びに、車線逸脱警告、眠気センサ、及び駐車支援などのタスクを実施するためのその他のセンサが含まれる。このようなビジョン制御システムにおいて、ビジョンセンサは、デジタルシグナルプロセッサ（ＤＳＰ）又はその他のプロセッサなどのプロセッサに結合されるノイズフィルタリングのためのＢＬフィルタを含む、システムオンチップ（ＳｏＣ）として具体化され得る。
【０００４】
従来のＢＬフィルタリングは、本願においてこれ以降に示されている既知の標準のＢＬフィルタ式を用いて本質的にリアルタイム（オンザフライ）のダイレクトフォーミュラ（direct formula）実装を用い、ここで、ｐは中央画素であり、ｑは近隣画素である。
2019507453.tif 000003
ここで、ＢＦ［Ｉ］ｐは、フィルタされた出力であり、１／Ｗｐは、正規化係数であり、Ｇσｓ（｜｜ｐ−ｑ｜｜）は、空間（即ち、距離）重みであり、Ｇσｒ（｜Ｉｐ−Ｉｑ｜）は、レンジ（即ち、強度）重みであり、Ｉｑは、フィルタリングされている入力画素である。それぞれの重みは、各々、２つのガウス関数の積として計算される。２次元（ｘ，ｙ）では、等方性（即ち、環状に対称的な）ガウス関数が、下記形式を有する。
2019507453.tif 000004
ここで、σは分布の標準偏差（又は分散）である。
【０００５】
複数のレンジ及び距離をサポートするため、上記ダイレクトフォーミュラ毎にシグマ（σ）計算が実施され、ここで、σはボケの量を規定する分散である。適応ＢＬフィルタリングを用いるため、局地σを用いる複合コンテンツ適応（complex content adaption）が概して用いられる。
【発明の概要】
【０００６】
記載される例において、イメージングのためノイズをフィルタリングするための方法が、複数のウィンドウ画素を含む位置及びレンジ（強度）値を有する複数の画素からの画像データを含む画像フレームを受け取ることを含む。中央画素と第１の画素及び少なくとも第２の画素を含む複数の他の画素（近隣画素）とを含む複数のフィルタウィンドウに画像フレームを分ける、選択されたフィルタウィンドウサイズに基づいて、複数のフィルタウィンドウが処理される。第１の画素に対し、中央画素に対するその距離である空間、及び第１の画素と中央画素との間のレンジ差が判定される。空間／レンジ差は、空間及びレンジ差の両方に対して重み付けすることを含む、２Ｄ重みルックアップテーブル（ＬＵＴ）にストアされた事前演算された組み合わされた２Ｄ重みから、組み合わされた２Ｄ重みを選ぶために用いられる。選択された組み合わされた２Ｄ重みを第１の画素に適用することにより、フィルタされたレンジ値が計算され、その後、第１の画素の寄与を判定するために、レンジ、フィルタされたレンジ値、及び選択された２Ｄ重みが加算される。
【０００７】
判定すること、選ぶこと、計算すること、及び加算することは、通常、フィルタウィンドウにおける全ての他の（近隣）画素に対してこれらの工程を完了するために、その後、第２の画素に対して反復される。中央画素に対する最終的なフィルタされたレンジ値を、フィルタされた出力画素として生成するため、第１及び第２の画素（及び通常、フィルタウィンドウにおける全ての他の画素）からの寄与の総和が、これらの画素からの選択された組み合わされた２Ｄ重みの和で除算される。この方法は、概して、先進運転支援システム（ＡＤＡＳ）のために用いられ得るノイズフィルタされた画像を生成するため、画像フレームにおける全てのフィルタウィンドウに対して反復される。
【図面の簡単な説明】
【０００８】
【図１】例示の一実施例に従った、組み合わされた２Ｄ重みを有する少なくとも一つの組み合わされた２Ｄ重みＬＵＴを含む、例示のＢＬフィルタのためのパイプラインのブロック図表現である。
【０００９】
【図２Ａ】例示の実施例に従った、例示の２Ｄ重み演算の詳細を示す。
【図２Ｂ】例示の実施例に従った、例示の２Ｄ重み演算の詳細を示す。
【００１０】
【図３Ａ】例示の実施例に従った、記載される２Ｄ重みサブテーブルの例示の仕組みを示す。
【図３Ｂ】例示の実施例に従った、記載される２Ｄ重みサブテーブルの例示の仕組みを示す。
【図３Ｃ】例示の実施例に従った、記載される２Ｄ重みサブテーブルの例示の仕組みを示す。
【００１１】
【図４】例示の一実施例に従った、少なくとも一つの記載される組み合わされた２Ｄ重みＬＵＴを用いて画像をＢＬフィルタリングするための例示の方法における工程を示すフローチャートである。
【発明を実施するための形態】
【００１２】
図面において、同様の参照番号は、同様の又は同等の要素を指すために用いられる。幾つかの例示の動作又は事象は、異なる順で、及び／又は、他の動作又は事象と同時に生じ得る。また、幾つかの例示の動作又は事象は、本記載に従った方法論を実装するために必要とされない場合がある。
【００１３】
また、本明細書において用いられる「に結合される」又は「と結合する」という用語（及びそれらに類するもの）は、更なる限定がない場合、間接的又は直接的な電気的接続のいずれかを述べている。そのため、第１のデバイスが第２のデバイスに「結合する」場合、その接続は、その経路に寄生成分のみ存在する直接的電気的接続を介し得、又は他のデバイス又は接続を含む介在要素を介する間接的電気的接続を介し得る。間接的結合では、介在要素は、概して、信号の情報を変更しないが、その電流レベル、電圧レベル、及び／又はパワーレベルを調整し得る。
【００１４】
既知のバイラテラル（ＢＬ）フィルタリング実装は高い演算複雑性を有し、その結果、回路ハードウェア（ＨＷ）フィルタ実装のための大きな半導体（例えば、シリコン）面積、又は、ソフトウェア（アルゴリズム）フィルタ実装のための高い中央処理（ＣＰＵ）ローディングが必要となる。この非効率性は、それぞれの重みをオンザフライで生成するための複雑な式の結果である。これは、上述のように、重みを生成する式が２つのガウス関数の積に関与する演算を必要とするためである。
【００１５】
アルゴリズム又はハードウェア構成の詳細が、少なくとも一つの組み合わされた２Ｄ重みＬＵＴ（２Ｄ重みＬＵＴ）を用いるＢＬフィルタについて本明細書に記載される。ダイレクトＢＦフィルタ数式（以下に再度記載する）では、
2019507453.tif 000005
となる。
【００１６】
ＢＦはＢＬフィルタを表し、そのため、ＢＦ［Ｉ］は、ＢＬフィルタによって出力されるＢＦフィルタされた画像である。空間は、中央画素までの距離を指し、レンジは、光の振幅／強度を指し、ｐは中央画素であり、ｑは近隣画素である。加算の前の第１項１／Ｗｐは、正規化（又は重み付け）因子である。加算されるという用語は、フィルタリングされている入力画素であるＩｑで乗算されたレンジ（即ち、強度）重み（Ｇσｒ（｜Ｉｐ−Ｉｑ｜））で乗算された空間（即ち、距離）重み（Ｇσｒ（｜Ｉｐ−Ｉｑ｜）項）を含む。空間重みはＧσｒを含み、これは、フィルタウィンドウにより定義される、考慮されている近隣画素のサイズであるカーネルの空間的広がりであり、レンジ重みはＧσｓを含み、これは、エッジの「最小」振幅である。
【００１７】
記載される実施例は、空間重み及びレンジ重みを共に組み合わせて、一つ又は複数の２Ｄ重みＬＵＴにストアされた、事前演算された組み合わされた２Ｄ重み（Ｗ（ｉ，ｊ））（ｉは空間に対応し、ｊはレンジに対応する）を提供する。これ以降に更に詳細に記載されるように、２Ｄ重みＬＵＴにおける２Ｄ重み値は、ＬＵＴのサイズ（エントリの数）を低減するために任意選択で量子化され得る。記載される２Ｄ重みＬＵＴに対する組み合わされた２Ｄ重みを生成することに関し、組み合わされた２Ｄ重みは、入力（ガイド）画像に基づいて画像における各中央画素に対して下記の例示の式を用いて演算され得る。
2019507453.tif 000006
ここで、ｉは中央画素インデックスであり、ｊは近隣画素インデックスであり、Ｉｉは中央画素入力画像レンジであり、Ｉｊは近隣画素入力画像レンジである。
【００１８】
例示の実装の詳細がこれ以降に示されている。（ｉ−ｊ）は、５×５（５×５フィルタに対して近隣の画素）に対する３ビットであり、（Ｉｉ−Ｉｊ）は８ビットに量子化された１３ビットであり、各２Ｄ重みＷｉ，ｊが、組み合わされた２Ｄ重みＬＵＴに入れられる正規化を含む８ビット値として事前演算され、ＬＵＴ［ｉ］［ｊ］:ｉは、３ビット画素インデックスであり、ｊは８ビット画像レンジ差である。ルックアップ値は、８ビット、及び、フリップフロップベースの設計などにおいてストアされ得る、総計２Ｄ  ＬＵＴストレージ５×２５６×８ビット＝１２８０バイトであり得る。これ以降に記載するように、２Ｄ  ＬＵＴサイズは、空間及び／又はレンジデータの対称的性質に基づいて更に低減され得る。この例は、サイズ５×５の近隣の画素を用いるが、記載される実施例は、４×４、７×７、９×９、１１×１１など、任意のフィルタウィンドウサイズに拡張され得る。
【００１９】
上記の式における１／Ｋｉ除算では、図１において１／ｘ  ＬＵＴ１２５としてこれ以降に記載されるＬＵＴを用いることができ、ここで、１／Ｋｉ計算は、反復テーブル（reciprocal table）を用いて実施され得る。下記は、反復テーブルのための特定の例示の詳細である。反復テーブルは、読み出し専用メモリ（ＲＯＭ）に置かれ得（即ち、全ての値がハードワイヤードである）、２４ビットがエントリ毎に存在し得る。最初の５１２エントリは量子化されない可能性があり、残りのエントリが、２つの近隣値のルックアップの間のバイラテラル補間を備える１６で量子化され、トータルで９９３ＬＵＴエントリが存在し得る。
【００２０】
図１は、例示の一実施例に従った、組み合わされた２Ｄ重み（Ｗ（ｉ，ｊ）を有する一つ又は複数の記載される２Ｄ重みＬＵＴ１２０を含んで示される例示のＢＬフィルタ１００のためのパイプラインのブロック図表現である。上記のように、ＢＬフィルタ１００は、ハードウェア（ＨＷ）フィルタブロックとして、又は、プロセッサ（例えば、記載されるソフトウェアを実装する中央処理（ＣＰＵ））により実装され得る。ＢＬフィルタ１００は、概してメモリ（例えば、ダブルデータレート同期ダイナミックランダムアクセスメモリ（ＤＤＲ  ＳＤＲＡＭ又はオンチップ）から共有メモリ（ＳＬ２）に提供されるシーン（入力画像（又はフレーム）を有する複数の画素）から発生される画像データを読み、フィルタウィンドウにおける各中央画素のため最終的なフィルタされたレンジ値を、ノイズが低減されたＢＬフィルタ出力画素として生成するため、記載されるバイラテラル（２Ｄ）フィルタリングを各フィルタウィンドウ（サイズＮ×Ｍ、５×５など）に対して実施する。
【００２１】
選択されたフィルタウィンドウサイズにより定義されるＮ×Ｍウィンドウ画素が、画素フェッチブロック１０５により受け取られるように示されている。受信されたＮ×Ｍウィンドウ画素は、中央画素と、Ｎ×Ｍ−１又は図２Ａにおいて中央画素２１５として示される中央画素の周りのその他の画素（又は近隣画素）を定義する。図２Ａに示す特定の例において、フィルタウィンドウサイズは５×５であり、そのため、中央画素２１５のほかの他の（近隣）画素を総計すると２４となる。
【００２２】
ブロック１１０として示されるブロックは、画素寄与計算ブロックであり、これは概して、組み合わされた２Ｄ重みＬＵＴ１２０から、組み合わされた２Ｄ重みを選択するため、それぞれの画素の空間（位置）及びレンジ（強度）データを用いることにより、Ｎ×Ｍフィルタウィンドウにおける各画素に対する画素寄与を計算する。重みルックアップブロック１１１は、Ｎ×Ｍ画素を受け取る。重みルックアップブロック１１１により用いられる２Ｄ重みルックアップインデックスストラテジーは、中央画素に対するフィルタウィンドウにおけるそれぞれの画素の空間（位置）、及び中央画素のレンジに比べたその画素のレンジ差に依存する。
【００２３】
２Ｄ  ＬＵＴ１２０のサイズは、空間ルックアップ、及び画素ビット幅の任意選択の量子化（ある場合）の量を用いるためのストラテジーに依存する。２Ｄ重みＬＵＴ１２０が複数のサブＬＵＴテーブルを含むとき、図１に示すような２つの異なる相互に排他的なサブテーブル選択手法を説明する。各サブＬＵＴテーブルは、レンジσ及び空間σを、単一の（分離可能でない）テーブルに組み合わせることから導出された値を有する。各サブＬＵＴテーブルを生成するときレンジσ（レンジ及び空間σ両方の代わりに）のみを変える場合でも、テーブルは、各サブテーブルに対する空間σを含んでいる。その結果、サブテーブルにおける各パラメータは、空間及びレンジσ両方を含む。
【００２４】
本願において適応モード制御と称する第１のサブテーブル選択手法が、画素毎ベースで特定のサブＬＵＴテーブルを選択するための重みルックアップブロック１１１に適用されるプロセッサ（図示せず）により概して提供される「モード」信号により制御されるように示される。この実施例において、重みルックアップブロック１１１は、特定のサブＬＵＴを選択するためのインデックスを選ぶために局地平均レンジを計算するため、各フィルタウィンドウにおける他の画素のレンジを平均化する。
【００２５】
テーブルＩＤに対するダイレクトマッピングと称される第２のサブテーブル選択手法が、全フレームにわたる画素処理のため特定のサブＬＵＴを選択するための重みルックアップブロック１１１に適用されるプロセッサにより概して提供される、図示されている「サブテーブル選択」信号により制御されるように示されている。この実施例では、重みルックアップブロック１１１は、「サブテーブル選択」信号により特定されるサブＬＵＴにインデックスする。この実施例により、異なる平面（即ち、輝度対クロミナンス）に構成されるべき複数のサブＬＵＴ、又は異なるビデオストリーム（異なるカメラソース）が、一度にメモリにロードされ得、各フレームに対してＬＵＴを再ロードする必要なくフレーム毎ベースでサブテーブル選択信号を用いて選択され得る。
【００２６】
サブテーブル選択は、処理されている特定のフレームのためにユーザーが用いようとするサブテーブルに対応する。この特徴を下記の特定の例示の状況により説明する。
【００２７】
１．  ２平面（輝度平面及び彩度平面）を含むビデオを処理する場合、一つの平面のみが、概してノイズフィルタを一度に通過し得る。輝度及び彩度平面は、異なるサブサンプリング及びノイズ特性を有し、そのため、それらは概して異なる２Ｄ  ＬＵＴ構成を要する。記載されるサブテーブル選択信号が無い場合、各平面からのデータの処理の合間に２Ｄ  ＬＵＴを再プログラムすることが必要となる。ビデオフィードでは、これはカメラからのフレーム毎に２倍を意味する。２Ｄ  ＬＵＴを再プログラムするには著しい時間量がかかるので、両方の２Ｄ  ＬＵＴを２つのサブＬＵＴテーブルとしてプログラムする構成を用いる方がよい。このようにして、輝度平面を処理するとき、サブテーブル選択信号を単に、サブテーブル＝０に対応する「０」にプログラムし、彩度平面を処理するとき、サブテーブル選択信号を「１」に設定し得る。
【００２８】
２．  並列の４輝度オンリーカメラ入力に関与するアルゴリズムを処理する場合、一つのカメラ入力のみが、概してノイズフィルタ一度に通過し得る。これらのカメラ入力の各々は異なるノイズ特性を有し得、そのため、それらは異なる２Ｄ  ＬＵＴ構成を必要とする。記載されるサブテーブル選択信号が無い場合、各画像の合間で２Ｄ  ＬＵＴを再プログラムすることが必要となる。ビデオフィードでは、これはカメラからのタイムスタンプ毎に４倍（各カメラに対して１つ）を意味する。２Ｄ  ＬＵＴを再プログラムするには著しい時間量がかかるので、両方の２Ｄ  ＬＵＴを４つのサブテーブルとしてプログラムする、記載される構成を用いる方がよい。このようにして、第１のカメラ入力を処理し、サブテーブル選択信号を単に、サブテーブル＝０に対応する「０」にプログラムし、次のカメラ入力を処理するとき、サブテーブル選択信号を「１」に、．．．など、サブテーブル３及びサブテーブル４に対して、設定する。
【００２９】
乗算／累積ブロック１１２は、近隣の各画素を、重みルックアップブロック１１１により選択された対応する２Ｄフィルタ重みで乗算すること、及び全ての結果を共に加算することによって、デジタルフィルタリングを実施する。累積ブロック１１３は、正規化のための効率的なＬＵＴベースの除算のために１／ｘ  ＬＵＴ１２５として示される反復ルックアップテーブルのインデックスとして用いられるべき、選択された２Ｄ重みの和を計算する。
【００３０】
除算ブロック１１５は入力を有して示され、これらの入力は、乗算累積ブロック１１２の出力、累積ブロック１１３の出力に、及び１／ｘ  ＬＵＴ１２５に結合される。除算ブロック１１５は、１／ｘ  ＬＵＴルックアップブロック１１６及び乗算ブロック１１７を含んで示されており、乗算ブロック１１７は、フィルタされた出力画素１２１を生成するように示され、フィルタされた出力画素１２１は、中央画素値のための正規化されたノイズフィルタされたレンジ値を反映する。１／ｘ  ＬＵＴルックアップブロック１１６は、反復値ルックアップであり、ルックアップは、正規化を実装するための除算のため１／ｘ  ＬＵＴ１２５から値を選択するインデックスとして全ての重みの総和に基づく。その後、乗算ブロック１１７は、１／ｘ  ＬＵＴルックアップブロック１１６が、フィルタの出力を、１／ｘ  ＬＵＴルックアップブロック１１６により選択された１／ｘ  ＬＵＴ１２５の結果で乗算した後、（フィルタ出力）／（重みの和）除算に効率的な方式を実装する。
【００３１】
図２Ａ及び図２Ｂは、ＬＵＴエントリの数、及びそのため必要とされる２Ｄ重みＬＵＴサイズを低減する、量子化を用いる例示の重み演算の詳細を示す。図２Ａは、５の係数による例示の空間（即ち、距離）量子化を示す。５×５フィルタウィンドウ、及びそのため２４の他の（近隣）画素が用いられているが、５つの異なる画素位置（距離）のみが中央画素２１５に関連して示されている。この例では、距離０の画素の数＝４、距離１の画素の数＝４、距離２の画素の数＝４、距離３の画素の数＝８、及び距離４の画素の数＝４である。
【００３２】
図２Ａに関連して記載される空間量子化に類似して、レンジ（即ち、強度）値を量子化するために線形補間を用いることができる。例えば、この例では１２ビット画素レンジ（強度）値（０〜４０９５）が、線形補間などより、２５６（８ビット）まで、そのため１６分の１に、低減され得る。代替として、非線形（ＮL）ＬＵＴを用いることによりレンジを量子化するために非線形補間を用いることができる。ＮＬ  ＬＵＴは、一層高いレンジ／強度でのステップサイズに比して、一層低いレンジ／強度で一層細かいステップサイズを有する。一層細かいステップサイズは、一層高い強度でのステップサイズ（ＬＵＴにおける一層近接しているデータに対応する）に比して、一層低い強度でのＬＵＴにおける一層近接しているデータに対応する。例えば、ＮＬ  ＬＵＴは、一層高い（より感度が低い）強度インタバルで、概してより重要な一層低い強度インタバル及び一層高いステップサイズ、例えば２ｋ、で一層高い精度（例えば、ステップサイズ＝３２）を維持し得る。
【００３３】
図２Ｂは、外側のフル解像度２Ｄ  ＬＵＴのサイズに比して示される破線の交差内に画定される、例示の量子化された２Ｄ重みＬＵＴの寸法を示し、ここで、ｉは空間（距離）に対し、ｊはレンジ（強度）に対する。（ｉ−ｊ）は、例示の５×５フィルタウィンドウでは３ビットである。（Ｉｉ−Ｉｊ）は１３ビットであり、これは８ビットに量子化される。Ｗｉ，ｊ（組み合わされた２Ｄ重み）は、図１に示す２Ｄ  ＬＵＴ１２０など、少なくとも一つの２Ｄ  ＬＵＴにストアされた正規化を含む８ビット値として事前演算される。ＬＵＴ［ｉ］［ｊ］：ｉは、３ビット画素インデックスであり、ｊは、８ビット画像レンジ（強度）であり、ｄｉｆｆルックアップ値は８ビットである。トータルのストレージは、メモリ要素としてフリップフロップを用いるなどの、５×２５６×８ビット＝１２８０バイトである。そのため、この例で提供されるのは、２Ｄ重みＬＵＴサイズにおける（２５×４０９６=１０２，４００バイトであるフル解像度に対して）約８０分の一の低減である一方、生成されるシミュレーション画像から評価される画質において明らかにされている同様のフィルタされた画質が得られる。
【００３４】
ノイズ及びそのためシグマ（σ）は、レンジ（即ち、強度）及び空間（中央画素からの距離）の本質的に線形な関数である。この課題に対処するため、各々が所与のテーブル内の異なるレベルの少なくともレンジ（強度）をカバーする、複数のサブテーブルが提供され、所与の２Ｄ  ＬＵＴサブテーブルが、平均レンジに基づいて動的に選択される。
【００３５】
図３Ａ〜図３Ｃは、記載される４つの２Ｄ重みＬＵＴサブテーブルを用いる例を説明することによって、記載されるサブテーブルの仕組みを示し、ここで、それぞれのＬＵＴサブテーブルは各々、異なるレベルのレンジ（及びそのため、異なるσ値）をカバーする。図３Ａは、量子化を用いてパラメータ１、２、３、及び４に対する個々の２Ｄ  ＬＵＴの、図示される圧縮された２Ｄ  ＬＵＴサブテーブルへの圧縮を示す。この例では量子化は、サイズｘの一つのテーブルを、サイズｘ／４を有する４つのテーブルで置き換える。これは、所与のシグマ（σ）値に対してサイズｘの一層大きなテーブルから４番目毎の値を選び出すことを意味する。図３Ａに示すようにここで用いられるような各パラメータは、レンジσ及び空間σを反映する。量子化後のパラメータ１、２、３、及び４に対する個々の２Ｄ  ＬＵＴは、図３Ａにおいて２Ｄ−ＬＵＴ１、２Ｄ−ＬＵＴ２、２Ｄ−ＬＵＴ３、及び２Ｄ−ＬＵＴ４として示される２Ｄ  ＬＵＴサブテーブルを含む単一の２Ｄ重みＬＵＴに圧縮されてこれ以降に示されている。
【００３６】
図３Ｂは、バイラテラルモード、ｎｕｍ＿サブテーブル＝２、及びバイラテラルモード、ｎｕｍ＿サブテーブル＝４を示し、これらは各々、異なるオフセットアドレスレンジに対応する距離０〜４として示される、複数の空間（即ち、距離）エントリを有する。図３Ｂは、本質的に、種々のσ値に対する複数のサブテーブル除算（例えば、図の左側の２サブテーブル構成、及び図の右側の４サブテーブル構成）を示す。この例は、各ローが２５６エントリを受け取り、サブテーブルが、インターリーブ様式に（例えば、テーブル０［０］、テーブルｌ［０］、テーブル０［ｌ］、テーブルｌ［ｌ］など、）インデックスされることを示す。
【００３７】
図３Ｃは、ＬＵＴサブテーブル選択のために用いられ得る局地４×４平均化を用いる適応を示す。一例として、図３Ｃは、中央画素を囲む５×５近隣画素からの頂部左４×４画素を示す。バイラテラルフィルタ近隣画素のサイズ内にある近隣画素を用いることは、局地メモリ内で既に利用可能であるという利点を有する。また、２のべき乗となるように画素の数を選ぶことは、画素の和を単に演算すること、及び除算の代わりに右シフトすることによって、平均を得ることができる（例えば、１６画素の平均が、和を４右シフトすることにより与えられ得る）ことを意味する。選ばれた近隣画素の数、及び中央画素からのそれらの距離は、与えられた例に限定されない（即ち、近隣画素は、フル５×５フィルタウィンドウであり得、又は一層小さな又は一層大きなサイズであり得る）。
【００３８】
図４は、例示の一実施例に従った、プロセッサによりアクセスされ得るメモリにストアされるＢＬフィルタアルゴリズムを実装するプロセッサを用いる、又は、少なくとも一つの記載される組み合わされた２Ｄ重みＬＵＴを用いる方法を実施するように構成されるＢＬフィルタハードウェアを用いる、画像ＢＬフィルタリングするための例示の方法４００における工程を示すフローチャートである。工程４０１が、位置及びレンジを含む複数の画素からの画像データを含む画像フレームを受け取ることを含む。
【００３９】
工程４０２が、選択されたフィルタウィンドウサイズに基づいて、フレームをフィルタウィンドウに分けることを含み、フィルタウィンドウの各々が、中央画素と、第１の画素及び第２の画素を含む複数の他の画素（又は近隣画素）とを含む。工程４０３〜４０７が、第１の画素のための工程４０３〜４０６を含む複数のフィルタウィンドウの各々を処理することを含み、工程４０３は、中央画素に対する第１の画素距離である空間、及び、そのレンジと中央画素のレンジとの間のレンジ差を判定する。
【００４０】
工程４０４は、空間及びレンジ差を用いること、及び、複数の組み合わされた２Ｄ重みから、選択された組み合わされた２Ｄ重み（選択された２Ｄ重み）を選ぶことを含み、これは各々、少なくとも一つの組み合わされた事前演算された２Ｄ重みルックアップテーブル（２Ｄ重みＬＵＴ１２０）からの空間及びレンジ差の両方に対して重み付けすることを含み、そのため、如何なるランタイム重み計算もない。工程４０５は、選択された２Ｄ重みを第１の画素に適用することにより、フィルタされたレンジ値を計算することを含む。工程４０６は、第１の画素の寄与を判定するため、レンジ、フィルタされたレンジ値、及び選択された２Ｄ重みを加算することを含む。工程４０７は、少なくとも第２の画素に対して、判定すること、選ぶこと、計算すること、及び加算することを反復することを含む。工程４０８は、中央画素に対する最終的なフィルタされたレンジ値をＢＬフィルタからの出力画素１２１として生成するため、第１の画素及び少なくとも第２の画素からの寄与の総和を、第１の画素及び少なくとも第２の画素からの選択された２Ｄ重みの和で除算すること（図１の除算ブロック１１５などを用いて）を含む。複数のフィルタウィンドウの全てに対して処理を反復することからの出力画素は、ＡＤＡＳのためのノイズフィルタされた画像を生成するために用いられ得る。
【００４１】
上記したように、２Ｄ重みがレンジに対して異なるシグマ（σ）値を提供する２Ｄ重みサブＬＵＴ実施例では、２Ｄ重みを選ぶ前に、この方法は更に、画素毎ベースで特定のサブＬＵＴテーブルを選択するための重みルックアップブロック１１１に適用されるモード信号により制御される適応モード制御をし得る。この実施例において、重みルックアップブロック１１１は、サブＬＵＴを選択するためのインデックスを選ぶための局地平均レンジを計算するため、各フィルタウィンドウにおける他の画素のレンジを平均化する。代替として、テーブルＩＤに対するダイレクトマッピングが、全フレームにわたる画素処理のための特定のサブＬＵＴを選択するための重みルックアップブロック１１１に印加される「サブテーブル選択」信号によって制御され得る。この実施例では、重みルックアップブロック１１１は、「サブテーブル選択」信号により特定されるサブＬＵＴにインデックスする。
【００４２】
例えば、記載されるアルゴリズム又はＨＷブロックは更に、画像ピラミッド生成のためのオクターブスケーラとして、一般的な２Ｄ  ＦＩＲフィルタとして、又は畳み込みエンジンとして機能し得る。オクターブフィルタとして用いられる場合、オクターブフィルタは、画素ロードの間（水平方向に）２つスキップすること、（ガウスフィルタ係数で）一般的なフィルタリングをすること、及び、画素ストアのため２つスキップすること（全ライン）などにより実現され得る。
【００４３】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。
【図１】
2019507453.tif 000007
【図２Ａ】
2019507453.tif 000008
【図２Ｂ】
2019507453.tif 000009
【図３Ａ】
2019507453.tif 000010
【図３Ｂ】
2019507453.tif 000011
【図３Ｃ】
2019507453.tif 000012
【図４】
2019507453.tif 000013
【国際調査報告】
2019507453.tif 000014