(57)【特許請求の範囲】
【請求項１】
ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成する、主生成手段と、
前記主生成手段により生成されるサンプリングパターンである主サンプリングパターンを出力する制御を行う出力制御手段と、
第１のサンプリングパターンと、前記第１のサンプリングパターンにさらにサンプリング点を追加することにより生成される第２のサンプリングパターンを生成する、副生成手段をさらに備え、
前記主生成手段は、前記第１のサンプリングパターンにおいてサンプリング点の数が前記基準値を下回る行を特定し、前記第１のサンプリングパターンに対して、当該行におけるサンプリング点の数が前記基準値に等しくなるように、前記第２のサンプリングパターンに含まれるサンプリング点を追加することにより、前記主サンプリングパターンを生成する、
パターン生成装置。
【請求項２】
前記副生成手段は、前記第１のサンプリングパターンに対して段階的にサンプリング点を追加することにより、前記第２のサンプリングパターンとして複数のサンプリングパターンを生成し、
前記主生成手段は、前記複数のサンプリングパターンに含まれるサンプリング点のうち、より早い段階において生成されたサンプリングパターンに含まれるサンプリング点から順に、サンプリング点を前記第１のサンプリングパターンに追加する、
請求項１に記載のパターン生成装置。
【請求項３】
前記副生成手段は、段階の進行に従って設定値を減少させ、前記複数のサンプリングパターンを、各サンプリング点が互いに前記設定値以上の距離にあるように生成する、
請求項２に記載のパターン生成装置。
【請求項４】
前記主生成手段は、前記第１のサンプリングパターンに基づき特定される前記ブロックのそれぞれの位置に基づき、前記第１のサンプリングパターンにおける位置のそれぞれについて当該位置を含む前記ブロックの数である冗長度を算出し、前記冗長度に基づいて、追加するサンプリング点を決定する、
請求項１から３のいずれか一項に記載のパターン生成装置。
【請求項５】
前記主生成手段は、前記第２のサンプリングパターンに含まれるサンプリング点から、前記画像処理が行われる画像における、当該サンプリング点に基づく所定の範囲の画素値の統計的な情報に基づき、追加するサンプリング点を決定する、
請求項１から４のいずれか一項に記載のパターン生成装置。
【請求項６】
前記主生成手段は、前記主サンプリングパターンを、全ての行においてサンプリング点の数が前記基準値に等しくなるように生成する、
請求項１に記載のパターン生成装置。
【請求項７】
前記出力制御手段は、前記主サンプリングパターンに基づき特定される前記ブロックのいずれにも含まれない画素が存在する場合はエラーを示す情報を出力する制御を行う、
請求項１から６のいずれか一項に記載のパターン生成装置。
【請求項８】
主生成処理として、ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成し、
前記生成したサンプリングパターンである主サンプリングパターンを出力する制御を行い、
副生成処理として、第１のサンプリングパターンと、前記第１のサンプリングパターンにさらにサンプリング点を追加することにより生成される第２のサンプリングパターンを、生成し、
前記副生成処理では、前記第１のサンプリングパターンにおいてサンプリング点の数が前記基準値を下回る行を特定し、前記第１のサンプリングパターンに対して、当該行におけるサンプリング点の数が前記基準値に等しくなるように、前記第２のサンプリングパターンに含まれるサンプリング点を追加することにより、前記主サンプリングパターンを生成する、
パターン生成方法。
【請求項９】
コンピュータに、
ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成する、主生成処理と、
前記主生成処理により生成されるサンプリングパターンである主サンプリングパターンを出力する制御を行う出力制御処理と、
第１のサンプリングパターンと、前記第１のサンプリングパターンにさらにサンプリング点を追加することにより生成される第２のサンプリングパターンを生成する副生成処理と、を実行させるプログラムであって、
前記副生成処理では、前記第１のサンプリングパターンにおいてサンプリング点の数が前記基準値を下回る行を特定し、前記第１のサンプリングパターンに対して、当該行におけるサンプリング点の数が前記基準値に等しくなるように、前記第２のサンプリングパターンに含まれるサンプリング点を追加することにより、前記主サンプリングパターンを生成する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理に関する。
【背景技術】
【０００２】
画像処理技術の中でも、画像に含まれるノイズを低減する技術は、撮影した画像をより鮮明に再現するためだけでなく、様々な画像強調の処理におけるノイズの強調を防ぐためにも、重要な技術である。【０００３】
画像に含まれるノイズの例としては、例えば加法性白色ガウシアンノイズ（Ａｄｄｉｔｉｖｅ  Ｗｈｉｔｅ  Ｇａｕｓｓｉａｎ  Ｎｏｉｓｅ）やポアソンノイズなどがある。【０００４】
ノイズを低減する手法としては、例えば、非特許文献１に示されるような、離散コサイン変換（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ；ＤＣＴ）を用いた冗長離散コサイン変換（Ｒｅｄｕｎｄａｎｔ  ＤＣＴ；ＲＤＣＴ）と呼ばれる手法がある。ＲＤＣＴは、ブロック単位のＤＣＴ（ブロックＤＣＴ）によって得られるＤＣＴ係数を補正し、さらに、補正されたＤＣＴ係数に対し逆ＤＣＴ（Ｉｎｖｅｒｓｅ  ＤＣＴ；ＩＤＣＴ）を行うことによって、ノイズが除去された画像を得る手法である。ＤＣＴ係数に対する補正は、例えば、ＤＣＴ係数に軟判定閾値処理（Ｓｏｆｔ  Ｓｈｒｉｎｋａｇｅ）、あるいは硬判定閾値処理（Ｈａｒｄ  Ｓｈｒｉｎｋａｇｅ）を適用することによって行われる。硬判定閾値処理では、たとえば、処理対象であるブロック内の画素の位置(i,j)におけるＤＣＴ係数をf(i,j)とすると、閾値処理パラメータτを用いて、補正されたＤＣＴ係数f’(i,j)が次のように導出される。【０００５】
【数１】
0006763442.tif 000002
【０００６】
なお、位置(0,0)におけるＤＣＴ係数は、直流成分であるため、補正されない。【０００７】
一般に、入力画像に含まれるノイズが白色ランダムガウシアンノイズ（ｗｈｉｔｅ  ｒａｎｄｏｍ  ｇａｕｓｓｉａｎ  ｎｏｉｓｅ）である場合、ノイズの成分は、ＤＣＴ後の全ての変換係数に拡散する。一方、ノイズフリーな画像信号（原信号）は、画像信号の疎表現理論によれば、ＤＣＴ後に特定の周波数成分にエネルギーが集中する傾向がある。すなわち、原信号は比較的少数の種類の変換係数で表現できる。式（１）の処理は、上記の性質を踏まえ、絶対値の小さなＤＣＴ係数を除去することでノイズを除去し、絶対値の大きなＤＣＴ係数を維持することで原信号成分を維持する処理である。【０００８】
ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）などにおけるブロックＤＣＴでは、例えば、画像全体を８画素×８画素のブロックに分割して、ブロック単位で処理が行われる。この時、ブロックは互いに重ならないように配置される。ＲＤＣＴでは、同様に画像はブロック単位で処理されるが、各ブロックはオーバーラップすることが許される。例えば、８画素×８画素のブロックの例では、特定の１つの画素が含まれるブロックのパターンは８×８＝６４パターンある。ＲＤＣＴは、各ブロックパターンで生成された画素値の平均値をとることによって、正規化された出力画素値を生成する。【０００９】
ＲＤＣＴは、特に、繰り返しのパターンが存在するテクスチャのような、特定の周波数成分にエネルギーが偏りやすい画像信号の表現に優れており、高品質なノイズ除去を実現できる手法である。【００１０】
なお、このようなノイズ除去の手法で用いられる周波数変換には、ＤＣＴ以外にも、アダマール変換やＷａｖｅｌｅｔ変換などの例がある。【００１１】
しかしながら、ＲＤＣＴは、１つの画素を異なるブロック分割パターンで最大の冗長度分だけ計算するため、計算コストが高い。なお、最大の冗長度とは、１つの画素が含まれるブロックのパターンの数をさす。ブロックのサイズが８画素×８画素である場合、最大の冗長度は６４である。【００１２】
計算コストを低減するための方法として、非特許文献２のＲａｎｄｏｍｉｚｅｄ  ＲＤＣＴ（ＲＲＤＣＴ）が提案されている。【００１３】
ＲＲＤＣＴは、全てのブロックのパターンを用いてＲＤＣＴを行うのではなく、全てのブロックのパターンからランダムにサンプリング（抽出）されたブロックを用いて、ＲＤＣＴを行う。ただし、ランダムにサンプリングすると、１回も処理されない画素が存在する可能性が生じるため、例えば、非特許文献３のＰｏｉｓｓｏｎ  Ｄｉｓｋ  Ｓａｍｐｌｉｎｇ（ＰＤＳ）を用いて、空間的に適度なばらつきをもったサンプリングが行われる。【００１４】
ＰＤＳは、サンプリングされるブロックの位置を示すブロック内の代表点（以下、「サンプリング点」と称す）の配置（パターン）を決定する方法の１つである。ＰＤＳのメソッドは、ランダムに決められたある画素位置について、当該画素位置から所定の半径内に他のサンプリング点がある場合は、当該画素をサンプリングしない。ＰＤＳのメソッドは、当該画素位置から所定の半径内に他のサンプリング点がない場合は、当該画素をサンプリングする。ＰＤＳのメソッドは、このような処理を、サンプリングが可能な点が存在しなくなるまで繰り返し、最終的なサンプリングパターンを算出する。【００１５】
ＰＤＳにおいて、上記所定の半径として、ＲＤＣＴのブロックサイズの一辺の長さの半分より小さな半径が設定されれば、全ての画素は必ずいずれかのブロックに含まれる。また、１画素あたりの冗長度は全ての画素で概ね等しくなるため、画素ごとのノイズ除去の性能は空間的に大きく変わらない。【００１６】
ＲＲＤＣＴによって、ＲＤＣＴの性能を維持しつつ、計算コストを削減できることが非特許文献２に記されている。なお、ＰＤＳは計算コストが高いが、実用上は、たとえば、ブロックのサンプリングパターンを複数用意しておき、パターンを適宜切り替えながら用いることで、計算の負担は軽減される。したがって、ＲＲＤＣＴにおいてＰＤＳを用いることの、計算量の観点での問題は、実用上はほとんどない。
【先行技術文献】
【非特許文献】
【００１７】
【非特許文献１】T. Komatsu, Y. Ueda, and T. Saito, "Super-resolution decoding of JPEG-compressed image data with the shrinkage in the redundant DCT domain," Picture Coding Symposium (PCS), Dec. 2010, pp. 114-117.
【非特許文献２】S. Fujita, N. Fukushima, M. Kimura, and Y. Ishibashi, "Randomized Redundant DCT: Efficient Denoising by Using Random Subsampling of DCT Patches," SIGGRAPH Asia 2015 Technical Briefs, Nov. 2015.
【非特許文献３】Robert L. Cook, "Stochastic Sampling in Computer Graphics," ACM Transactions on Graphics, Vol. 5, No. 1, Jan. 1986, pp. 51-72.
【発明の概要】
【発明が解決しようとする課題】
【００１８】
ＰＤＳでは、ブロックをサンプリングする位置がランダムに選ばれるため、１ライン（行）当たりの、サンプリング点の数（以下、「サンプル数」と称す）は、ラインごとに異なる。特に、ＰＤＳにおいて設定されている上記所定の半径（以下、「設定半径」と称す）が大きいとき、すなわち、最終的なサンプリング点の数が少ない場合に、ラインごとのサンプル数が不均等になりやすい。そうすると、ＲＲＤＣＴにおいて、１ラインあたりの処理量はラインごとに異なる。このことから、たとえば、ラインごとに並列に処理を行うＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）などのハードウェア実装をする際、ラインごとの処理の同期をとるために、処理量が最大となるラインに合わせて、それ以外のラインでは遅延を発生させる必要がある。そのため、ハードウェア実装が煩雑になり、また、処理の効率が悪くなるという問題がある。【００１９】
そこで、本発明は上記課題に鑑みて発明されたものであって、その目的の１つは、サンプリングされたブロックに対する処理を含む画像処理の効率を向上させ得るサンプリングパターンを生成する、パターン生成装置を提供することである。
【課題を解決するための手段】
【００２０】
本発明の一実施形態に係るパターン生成装置は、ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成する、主生成手段と、前記主生成手段により生成されるサンプリングパターンである主サンプリングパターンを出力する制御を行う出力制御手段と、を備える。【００２１】
本発明の一実施形態に係るパターン生成方法は、ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成し、前記生成したサンプリングパターンである主サンプリングパターンを出力する制御を行う。【００２２】
本発明の一実施形態に係るプログラムは、コンピュータに、ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成する、主生成処理と、前記主生成処理により生成されるサンプリングパターンである主サンプリングパターンを出力する制御を行う出力制御処理と、を実行させる。【００２３】
本発明の一実施形態に係る記憶媒体は、上記プログラムを記憶する。【００２４】
本発明の一実施形態に係る画像処理装置は、上記主サンプリングパターンに基づくブロックごとの画像処理を行うことにより新たな画像を生成する画像処理手段を備える。
【発明の効果】
【００２５】
本発明によれば、サンプリングされたブロックに対する処理を含む画像処理の効率を向上させ得るサンプリングパターンを得ることができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の第１の実施形態に係る画像処理装置の構成を示すブロック図である。
【図２】第１の実施形態のサンプリングパターン生成部の構成を示すブロック図である。
【図３】第１の実施形態のノイズ除去部の構成を示すブロック図である。
【図４】画素位置(x,y)を起点として生成されるＤＣＴブロックを説明する図である。
【図５】サンプリングパターンのパラメータと画像との関係を例示する概念図である。
【図６】画像の拡張を例示する概念図である。
【図７】第１の実施形態の画像処理装置による画像処理の動作の例を示すフローチャートである。
【図８】ＰＤＳ実行部の処理の流れを例示するフローチャートである。
【図９】エラー判定の処理の流れを例示するフローチャートである。
【図１０】決定パターンを生成する処理の流れを例示するフローチャートである。
【図１１】本発明の第２の実施形態の画像処理装置の構成を示すブロック図である。
【図１２】第２の実施形態のサンプリングパターン生成部の構成を示すブロック図である。
【図１３】第２の実施形態のノイズ除去部の構成を示すブロック図である。
【図１４】第２の実施形態の画像処理装置による画像処理の動作の例を示すフローチャートである。
【図１５】ベースパターンを生成する処理の流れを例示するフローチャートである。
【図１６】第１の実施形態の画像処理装置の構成の変更例を示すブロック図である。
【図１７】本発明の一実施形態に係るパターン生成装置の構成を示すブロック図である。
【図１８】本発明の一実施形態に係るパターン生成方法の流れを示すブロック図である。
【図１９】本発明の一実施形態に係るパターン生成装置の構成を示すブロック図である。
【図２０】本発明の各実施形態の各部を構成するハードウェアの例を示すブロック図である。発明を実施するための形態
【発明を実施するための形態】
【００２７】
以下、図面を参照しながら、本発明の実施形態を詳細に説明する。
【００２８】
＜＜第１の実施形態＞＞
まず、本発明の第１の実施形態について説明する。
【００２９】
＜構成＞
図１は、本発明の第１の実施形態に係る画像処理装置１の構成を示すブロック図である。画像処理装置１は、パラメータ取得部１１と、サンプリングパターン生成部１２と、出力制御部１３と、画像取得部２１と、ノイズ除去部２２と、画像出力制御部２３と、サンプリングパターン記憶部３０と、を備えている。
【００３０】
パラメータ取得部１１は、サンプリングパターンの生成に用いられるパラメータを取得し、取得したパラメータをサンプリングパターン生成部１２に出力する。パラメータ取得部１１は、たとえば、キーボードやボタン等の入力インタフェースを備え、ユーザからのパラメータの入力を受け付ける。パラメータ取得部１１は、入力機器に接続され、ユーザによる入力機器に対するパラメータの入力操作を、入力機器から受信することによって、パラメータを取得してもよい。あるいは、パラメータ取得部１１は、パラメータを保持しているファイルから、パラメータを取得してもよい。サンプリングパターンの生成に用いられるパラメータについては、後述する。
【００３１】
サンプリングパターン生成部１２は、パラメータ取得部１１が取得したパラメータに基づいて、後述するノイズ除去部２２が用いるＤＣＴブロックのサンプリングパターンを生成する。そして、サンプリングパターン生成部１２は、生成したサンプリングパターンをサンプリングパターン記憶部３０と出力制御部１３とに出力する。
【００３２】
出力制御部１３は、画像処理装置１による処理の結果や経過等のデータを出力する制御を行う。出力制御部１３は、例えば、ディスプレイやプリンタのような、画像を出力する出力装置（不図示）に接続され、その出力装置にデータを出力する。出力制御部１３は、画像処理装置１に接続された記憶媒体に画像データを出力してもよい。出力制御部１３は、ネットワークにより接続された他の装置に対してデータを送信してもよい。
【００３３】
画像取得部２１は、処理の対象となる画像データを取得する。画像取得部２１は、例えば、カメラやスキャナなどの撮像機能を有する装置から、画像データを無線または有線で受信することにより、画像データを取得する。画像取得部２１は、画像データを記憶する記憶媒体から画像データを読み出すことにより画像データを取得してもよい。画像取得部２１は、画像データが蓄積される画像データベースから、通信ネットワーク等を介して画像データを取得してもよい。画像取得部２１は、取得した画像データをノイズ除去部２２に出力する。以下、処理の対象となる画像として取得された画像を、「入力画像」とも称す。
【００３４】
ノイズ除去部２２は、入力画像に対してデノイズ処理を行い、ノイズが除去された画像を画像出力制御部２３に出力する。
【００３５】
画像出力制御部２３は、ノイズ除去部２２により生成された画像の出力の制御を行う。画像出力制御部２３は、例えば、ディスプレイやプリンタのような、画像を出力する出力装置（不図示）に接続され、その出力装置にデータを出力する。画像出力制御部２３は、画像処理装置１に接続された記憶媒体に画像データを出力してもよい。画像出力制御部２３は、ネットワークにより接続された他の装置に対してデータを送信してもよい。
【００３６】
＝＝＝サンプリングパターン生成部１２＝＝＝
図２は、サンプリングパターン生成部１２の構成を示すブロック図である。サンプリングパターン生成部１２は、ＰＤＳ実行部１２１と、差分パターン生成部１２２と、決定パターン生成部１２３と、暫定パターン記憶部１２４と、差分パターン記憶部１２５と、を含む。
【００３７】
ＰＤＳ実行部１２１は、パラメータ取得部１１により取得されたパラメータに基づき、ＰＤＳを、設定半径を変えながら、複数回、実行する。そして、ＰＤＳ実行部１２１は、各設定半径に基づくＰＤＳによって得られたサンプリングパターンを、それぞれ「暫定パターン」として、暫定パターン記憶部１２４に記憶させる。暫定パターンの詳細については、後述する。
【００３８】
暫定パターン記憶部１２４は、ＰＤＳ実行部１２１が生成した、各設定半径に基づく暫定パターンを記憶する。暫定パターン記憶部１２４は、差分パターン生成部１２２および決定パターン生成部１２３からの指示に従って暫定パターンを出力する。
【００３９】
差分パターン生成部１２２は、異なる設定半径に基づく暫定パターン間の差分を「差分パターン」として算出し、算出された差分パターンを差分パターン記憶部１２５に出力する。差分パターンの算出については、後述する。
【００４０】
差分パターン記憶部１２５は、差分パターン生成部１２２が生成した差分パターンを記憶する。差分パターン記憶部１２５は、決定パターン生成部１２３からの指示に従って差分パターンを出力する。
【００４１】
決定パターン生成部１２３は、パラメータ取得部１１が取得したパラメータと、暫定パターン記憶部１２４が記憶する、最大の設定半径に基づく暫定パターンと、差分パターン記憶部１２５が記憶する差分パターンと、から、サンプリングパターンを「決定パターン」として生成する。決定パターン生成部１２３は、生成されたサンプリングパターンを、サンプリングパターン記憶部３０と出力制御部１３とに出力する。また、決定パターン生成部１２３は、出力制御部１３に、正常終了またはエラー終了を示すメッセージや、サンプリングパターン生成部１２による処理の途中経過等の情報を出力してもよい。
【００４２】
＝＝＝ノイズ除去部２２＝＝＝
ノイズ除去部２２は、図３に示されるように、ブロック切出部２２１と、ＤＣＴ部２２２と、係数処理部２２３と、ＩＤＣＴ部２２４と、ブロック統合部２２５と、正規化部２２６と、を含む。
【００４３】
ブロック切出部２２１は、画像取得部２１が取得した画像から、サンプリングパターン記憶部３０が記憶するサンプリングパターンに基づいて特定される複数のブロックを切り出す。
【００４４】
たとえば、ブロック切出部２２１は、１つのサンプリング点から図４に示される範囲の画素をブロックとして切り出す。すなわち、ブロック切出部２２１は、サンプリング点(x,y)から、右方向（xの増加方向）にtDCT-1個分、下方向（yの増加方向）にtDCT-1個分、それぞれ離れた画素を端点とする、正方形の範囲を、ブロックの範囲として特定する。
【００４５】
なお、ブロックの切り出し方は図４で示される例に限定されない。ブロックの範囲は、サンプリング点がブロックの左上の角以外の位置に位置するような範囲でもよい。また、ブロックの形は必ずしも正方形でなくともよい。ブロックの範囲や形状が図４の例と異なる場合は、後述のパラメータpの範囲、および入力画像の拡張の範囲は適宜変更され得る。
【００４６】
そして、ブロック切出部２２１は、切り出したブロックをＤＣＴ部２２２に出力する。
【００４７】
ＤＣＴ部２２２は、ブロック切出部２２１から受け取ったブロックに対し、２次元のＤＣＴを適用し、その結果として、各ブロックのＤＣＴ係数を算出する。そして、ＤＣＴ部２２２は、算出されたＤＣＴ係数を係数処理部２２３に出力する。
【００４８】
係数処理部２２３は、ＤＣＴ部２２２から受け取ったＤＣＴ係数を縮退させる処理を行う。すなわち、係数処理部２２３は、ゼロでない値を持つＤＣＴ係数の個数を減らす処理を行う。係数処理部２２３は、例えば、受け取ったＤＣＴ係数f(i,j)に対して式（１）に示される変換を行う。すなわち、係数処理部２２３は、所定の閾値に満たないＤＣＴ係数をゼロに変更する補正を行うことで、新たな変換係数f’(i,j)を算出する。そして、係数処理部２２３は、変換後の係数f’(i,j)をＩＤＣＴ部２２４に出力する。
【００４９】
ＩＤＣＴ部２２４は、係数処理部２２３から受け取った縮退後のＤＣＴ係数に、２次元の逆ＤＣＴ（Ｉｎｖｅｒｓｅ  ＤＣＴ；ＩＤＣＴ）を行い、その結果としてノイズ抑圧後の画像ブロックを得る。ＩＤＣＴ部２２４は、得られたノイズ抑圧後の画像ブロックを、ブロック統合部２２５に出力する。
【００５０】
ブロック統合部２２５は、ＩＤＣＴ部２２４から受け取ったノイズ抑圧後の画像ブロックを統合する。具体的には、ブロック統合部２２５は、ノイズ抑圧後の画像ブロックをそれぞれ元の入力画像における位置と同じ位置に配置し、同じ位置の画素値を累積加算する。そして、ブロック統合部２２５は、上記のような統合によって生成した画像データを正規化部２２６に出力する。
【００５１】
正規化部２２６は、ブロック統合部２２５から受け取った統合後の画像データに対し、画素毎の冗長度（画素が加算された回数）に応じた正規化処理を行う。冗長度の算出例は後述する。正規化部２２６は、画像のダイナミックレンジを入力画像のダイナミックレンジに合わせる。正規化部２２６は、上記の処理により生成した画像を、出力画像として画像出力制御部２３に出力する。
【００５２】
以下、画像処理装置１の各部の処理の詳細について説明する。
【００５３】
［ＰＤＳ実行部１２１］
ＰＤＳ実行部１２１は、パラメータ取得部１１が取得したパラメータに基づき、異なる設定半径を用いてＰＤＳを実行する。ＰＤＳの実行に使用するパラメータは、たとえば、最大設定半径rmax、最小設定半径rmin、設定半径のステップ幅rstep、入力画像の高さH，幅Wを含む。パラメータ取得部１１は、さらに、ＤＣＴブロックの１辺の長さtDCTや画像拡張パラメータtext（後述）を取得してもよい。なお、上記パラメータの値は、例えば、１つの画素を１単位とする値である。
【００５４】
ＰＤＳの実行の処理の流れの例は、以下の通りである。
【００５５】
ＰＤＳ実行部１２１は、まず、サンプリングパターンのパラメータpを初期化する。パラメータpは、画素のそれぞれに対して、サンプリングされた画素であるか否かを示す情報の組み合わせを示すパラメータである。パラメータpは、たとえば、画素の位置（x,y）を変数として、「０」（サンプリングされた画素でないことを示す）または「１」（サンプリングされた画素であることを示す）の値（以下、「サンプル値」と称す）をとる関数である。パラメータpは、二次元の配列でもよい。以下、例として、位置が(x,y)で表される画素のサンプル値がp(x,y)で表されるとする。なお、上記のxは列を決める変数であり、上記のyは行（ライン）を決める変数であるとする。
【００５６】
パラメータpの設定時は、ＰＤＳ実行部１２１は、初期値として、全てのサンプル値を「０」として設定する。
【００５７】
パラメータpのサイズ（すなわち、xとyの定義域）は、たとえば、W’=W+text, H’=H+textとしたときのW’×H’である。textは、たとえば、tDCT＋１以下の値である。text＝０である場合は、パラメータｐのサイズは、画像と同じサイズW×Hである。以下の説明では、text＝tDCT＋１であるとする。
【００５８】
図５は、画像とパラメータpとの関係の例を示す図である。図５において、ドット模様で示されている矩形領域が入力画像の領域に相当する領域であり、その外側の点線で囲まれる領域が、パラメータpが定義された領域である。すなわち、画像の上端と左端がtext画素分、下端と右端が１画素分拡張された領域に、パラメータpが設定されている。パラメータpのサイズは、W’×H’（ただしtext＝tDCT＋１）である。このような設定は、ＲＤＣＴが、図４に示すように、p(x,y)=1である画素位置(x,y)を起点とするtDCT×tDCTサイズのブロックを対象にすることに基づく。無論、ＲＤＣＴにおけるブロックの切り出し方が上記と異なる場合は、その場合に応じてパラメータpの設定のされ方は変更されてよい。なお、図５の例において、ブロックの範囲のみを考慮すれば、パラメータpの範囲は、画像の上端および左端がtext-1画素分拡張された領域であれば十分であるが、ＰＤＳは端にサンプリング点が偏る傾向があるため、パラメータpにはそれぞれの端を１画素ずつ余分に拡張した領域が用いられる。
【００５９】
パラメータpが初期化されたら、ＰＤＳ実行部１２１は、設定半径に基づきＰＤＳを実行する。ＰＤＳ実行部１２１は、ＰＤＳの結果をパラメータpに反映させることで、サンプリングパターンを生成する。ＰＤＳの具体的な方法は、たとえば、次に示す通りである。
【００６０】
まず、ＰＤＳ実行部１２１は、入力画像の領域における点を一点、サンプリング点として確定する。なお、サンプリング点を確定するのに際しては、たとえば、ＰＤＳ実行部１２１は、確定リストを用意しておき、確定された点の情報（例えば位置）を確定リストに追加すればよい。ＰＤＳ実行部１２１は、サンプリング点を、たとえばランダムに選んで確定する。
【００６１】
次に、ＰＤＳ実行部１２１は、確定リストにある画素を１点選択し、選択された画素の周辺の点を所定数、サンプリング候補点として抽出する。具体的には、たとえば、ＰＤＳ実行部１２１は、選択した画素との間の距離がr以上2×r以下である点を、ランダムにｋ個抽出する。なお、rは設定半径である。設定半径rはrminからrmaxの間の範囲の変数であり、ＰＤＳ実行の初めにおいては、例えばr=rmaxである。ｋは、予め設定されている固定値でもよいし、パラメータ取得部１１によりユーザから取得される値でもよい。
【００６２】
たとえば、ＰＤＳ実行部１２１は、確定リストから選択された画素の位置を (x,y)とし、1≦i≦kなる整数iのそれぞれについて、0.0≦σi≦1.0である一様乱数値σiと、0.0≦θi≦360である一様乱数値θiとを設定する。そして、ＰＤＳ実行部１２１は、それらの数値を用いて、次の式のxiおよびyiによって示される位置ci=(xi,yi)を導出する。
【００６３】
【数２】
0006763442.tif 000003
【００６４】
ＰＤＳ実行部１２１は、上式によって導出される位置ci=(xi,yi)を、サンプリング候補点の位置として抽出する。なお、上記の算出式は一例である。特に、σiの範囲や、riの算出式は、変更されてもよい。
【００６５】
そして、ＰＤＳ実行部１２１は、各サンプリング候補点の位置ciについて、ciを中心とした半径rの円内に、確定リストに含まれる点が存在するかを確認し、存在しない場合には、当該候補点をサンプリング点として確定する（確定リストに追加する）。確定リストに含まれる点が存在した場合には、ＰＤＳ実行部１２１は、その候補点を候補から除外する（確定リストに追加しない）。ＰＤＳ実行部１２１は、以上の処理を、同じ設定半径rについて、確定リストに含まれている全てのサンプリング点に対して実行し、確定リストが変化しなくなるまで繰り返す。
【００６６】
確定リストの変化がなかった（すなわち、確定リストに含まれている全てのサンプリング点に対して上記の処理を実行したにも関わらず、新たに確定リストに追加される点がなかった）場合は、ＰＤＳ実行部１２１は、当該設定半径におけるサンプリングパターンを確定する。すなわち、ＰＤＳ実行部１２１は、確定リストに含まれている画素位置のサンプル値を「１」、それ以外の画素のサンプル値を「０」として当該設定半径におけるパラメータpの各値を確定する。
【００６７】
以上が、ＰＤＳを実行する方法の例である。ＰＤＳを実行する具体的手順は、上記の方法に限られない。たとえば、ＰＤＳ実行部１２１は、パラメータpと同様に各画素に値が関連づけられる配列を用いて、次のようにサンプリングパターンを生成してもよい。すなわち、ＰＤＳ実行部１２１は、上記配列の全ての値を「０」に初期化しておき、確定されたサンプリング点がある場合は、当該サンプリング点との距離が設定半径r以下である点の、上記配列の値を「１」に変更する。そして、ＰＤＳ実行部１２１は、確定パターンにおける全ての値が「１」になるまで、値が「０」である画素のうち、ランダムに選択した点をサンプリング点として確定していってもよい。
【００６８】
ＰＤＳ実行部１２１は、サンプリングパターンを、設定半径rごとに生成する。たとえば、ＰＤＳ実行部１２１は、設定半径rを、r ← r-rstepと更新しながら、サンプリングパターンの生成を、r ＜ rminとなるまで繰り返す。なお、ＰＤＳ実行部１２１は、rの値がrmaxでない時は、その設定半径rに基づくＰＤＳにおける初期の確定リストとして、直前に行ったＰＤＳにおける最終的な確定リストを用いる。
【００６９】
以上の処理によって、ＰＤＳ実行部１２１は、rmaxからrminまでrstepおきに変化した設定半径rごとの、サンプリングパターンを生成する。以下、ＰＤＳ実行部１２１によって生成されるサンプリングパターンのそれぞれを、「暫定パターン」と称す。任意の２つの暫定パターンにおいて、より小さい設定半径に基づくＰＤＳによる暫定パターンが含むサンプリング点は、より大きい設定半径に基づくＰＤＳによる暫定パターンが含むサンプリング点を含む。ＰＤＳ実行部１２１は、生成した暫定パターンを、それぞれ暫定パターン記憶部１２４に記憶させる。
【００７０】
なお、パラメータpのサイズが拡張されている場合には、ＰＤＳ実行部１２１は、全ての暫定パターンが確定したのちに、それぞれの暫定パターンの上下端の１ライン、および左右の１列のサンプル値を「０」に変更してもよい。これらのラインは、ＲＲＤＣＴの処理において、出力画素値を生成しない位置にあるブロックであるため、ノイズ除去処理の性能に影響しない。
【００７１】
［差分パターン生成部１２２］
ＰＤＳ実行部１２１により、暫定パターン記憶部１２４には、設定半径の大きな方から順に、各画素に「０」または「１」のサンプル値が与えられた、m個の暫定パターンp0, p1, … , pm-1が格納されているとする。差分パターン生成部１２２は、暫定パターンに基づき、差分パターンを生成する。差分パターンは、隣り合うサンプリングパターンの差分である。すなわち、差分パターン生成部１２２は、たとえば、0≦i≦m-2なるiについて、差分パターンdiを次式のように計算する。
【００７２】
【数３】
0006763442.tif 000004
【００７３】
なお、piが配列である場合、diはpiと同じ大きさの配列である。
【００７４】
差分パターン生成部１２２は、こうして算出されたm-1個の差分パターンを、差分パターン記憶部１２５に格納する。
【００７５】
なお、暫定パターン生成の過程から、pm-1 = p0 + Σi=0→m-2 diであることは明らかである。記号「Σ」の下付き文字「ｉ＝０→ｍ−２」は、「ｉが０からｍ−２までの１刻みの値をとる」ことを表す。
【００７６】
［決定パターン生成部１２３］
決定パターン生成部１２３は、最大設定半径に基づく暫定パターンp0と、m-1個の差分パターンd0, d1, … , dm-2と、ＤＣＴのブロックサイズtDCTと、１ライン当たりのサンプル数の基準値nmaxとから、サンプリングパターンを生成する。以下、決定パターン生成部１２３が生成するサンプリングパターンを、「決定パターン」と称す。なお、nmaxの値は、決定パターン生成部１２３に予め記憶されていてもよいし、ユーザからパラメータ取得部１１を介して取得されてもよい。
【００７７】
決定パターン生成部１２３が決定パターンを生成する方法の例は、次の通りである。
【００７８】
決定パターン生成部１２３は、まず、p0に基づいて、ラインごとのサンプル数を求める。すなわち、決定パターン生成部１２３は、ラインj（すなわち、ｊ行目）にある、サンプル値が「１」である画素の数np_0(j)を算出する。
【００７９】
【数４】
0006763442.tif 000005
【００８０】
なお、本開示においては、下付き文字をアンダーバー「＿」を用いて表すことがある。たとえば、「p0」は「p_0」と表されることがある。また、たとえば、「d_i」は、「di」と同じである。
【００８１】
また、決定パターン生成部１２３は、差分パターンdiに対しても、ラインごとのサンプル数nd_i(j)を次の通り算出する。
【００８２】
【数５】
0006763442.tif 000006
【００８３】
決定パターン生成部１２３は、決定パターンの生成に際し、決定パターンの生成が可能であるかをチェックするためのエラー判定を行う。エラー判定は次の２つの判定である。
判定（ｉ）：maxj np_0(j)≦nmaxであるか。すなわち、全てのjについてnp_0(j)がnmax以下であるか。
判定（ｉｉ）：minj{np_0(j) + Σi=0→m-2 nd_i(j)}≧nmaxであるか。すなわち、全てのjについてnp_0(j) + Σi=0→m-2 nd_i(j)がnmax以上であるか。
【００８４】
判定（ｉ）に関し、もしmaxj np_0(j)＞nmaxであれば、決定パターン生成部１２３は、出力制御部１３に、決定パターンが作れないことを示す第１のエラーコードを出力する。この場合、nmaxが小さすぎるか、最大設定半径rmaxが小さすぎることが考えられる。この場合、出力制御部１３は、ユーザにnmaxを大きくするか、rmaxをより大きく設定するようにメッセージを表示する制御を行ってもよい。
【００８５】
判定（ｉｉ）に関し、もしminj{np_0(j) + Σi=0→m-2 nd_i(j)}＜nmaxであれば、決定パターン生成部１２３は、出力制御部１３に決定パターンが作れないことを示す第２のエラーコードを出力する。この場合、nmaxが大きすぎるか、最小設定半径rminが大きすぎるか、設定半径のステップ幅rstepが大きすぎることが考えられる。この場合、出力制御部１３は、ユーザにnmax、rmin、rstepのいずれかをより小さく設定するようにメッセージを表示する制御を行ってもよい。
【００８６】
なお、np_0(j) + Σi=0→m-2 nd_i(j)は、暫定パターンpm-1のラインjにおけるサンプル数と同値である。したがって、決定パターン生成部１２３は、暫定パターンpm-1のラインjにおけるサンプル数np_(m-1)(j)を算出し、判定（ｉｉ）を、「minj np_(m-1)(j)≧nmaxであるか」という判定に置き換えて判定してもよい。すなわち、決定パターン生成部１２３は、全てのjについてnp_(m-1)(j)がnmax以上であるかを判定（ｉｉ）としてチェックしてもよい。
【００８７】
エラー判定においてエラーと判定されなかった場合、決定パターン生成部１２３は、決定パターンpfを生成する。具体的には、以下の通りである。
【００８８】
まず、決定パターン生成部１２３は、暫定パターンp0に基づいて設定されるＤＣＴブロックパターンを用いた場合の、各画素の冗長度nred(x,y)を計算する。
【００８９】
冗長度nred(x,y)の算出方法は、次の通りである。まず、決定パターン生成部１２３は、nred(x,y)を初期化する。nred(x,y)は、位置が(x,y)である画素の冗長度を表す関数である。nred(x,y)の初期値は、全てのxおよびyの組において「０」である。次に、決定パターン生成部１２３は、p0を参照して、p0(x,y)=1である画素を特定し、x≦x’≦x+tDCT-1, y≦y’≦y+tDCT-1の範囲のx’およびy’の組について、nred(x’,y’)の値に「１」を加算する。決定パターン生成部１２３は、この加算を、p0(x,y)=1である全ての(x,y)について繰り返すことで、冗長度nredを得る。なお、サンプリングパターンのサイズを拡張している場合には、決定パターン生成部１２３は、入力画像に対応する領域（図５においてドット模様で示される領域）における各位置の冗長度を算出すればよい。
【００９０】
次に、決定パターン生成部１２３は、ラインjにおいて、np_0(j) + Σind_i(j)≧nmaxを満たす最小のiを特定する。以下、特定されたiをitargetとする。
【００９１】
itargetがnp_0(j) + Σi=0→i_target nd_i(j) = nmaxを満たす場合、すなわち、np_(i_target+1)(j)がnmaxに等しい場合は、決定パターン生成部１２３は、全てのxについてpf(x,j) = p0(x,j) + Σi=0→i_target diとして（あるいは、pi_targetのj行目を抽出して）、ラインjにおけるサンプリングパターンpf(x,j)を確定する。また、決定パターン生成部１２３は、pf(x,j) =1を満たす(x,j)について、それぞれx≦x’≦x+tDCT-1, j≦y’≦j+tDCT-1の範囲について、nred(x’,y’)←nred(x’,y’)+1と累積加算する。
【００９２】
itargetがnp_0(j) + Σi=0→i_target nd_i(j) > nmaxを満たす場合、すなわち、np_(i_target+1)(j)がnmaxを超える場合は、決定パターン生成部１２３は、p0 + Σi=0→i_target-1 di（= pi_target）に対して、j行目のサンプリング点がnmaxになるようにサンプリング点を追加する。
【００９３】
具体的には、まず、決定パターン生成部１２３は、全てのxについてpf(x,j) = p0(x,j) + Σi=0→i_target-1 di(x,y)として（あるいは、pi_targetのj行目を抽出して）、ラインjにおけるnp_i_target(j)個のサンプリング点を確定する。これにより確定したサンプリング点のパターンは、決定パターンのベースである。また、決定パターン生成部１２３は、pf(x,j)=1を満たす(x,j)について、それぞれx≦x’≦x+tDCT-1, j≦y’≦j+tDCT-1の範囲について、nred(x’,y’)←nred(x’,y’)+1と累積加算する。
【００９４】
次に、決定パターン生成部１２３は、決定パターンのベースにサンプリング点を追加する。決定パターン生成部１２３は、たとえば、di_targetからサンプリング点を抽出する。決定パターン生成部１２３は、di_target(x,j)=1である画素位置(x,j)のそれぞれについて、冗長度の、「空間的な」累積加算値nred,sum(x,j)を、次の通り算出する。
【００９５】
【数６】
0006763442.tif 000007
【００９６】
nred,sum(x,j)は、x≦x’≦x+tDCT-1, j≦y’≦j+tDCT-1を満たす(x’,y’)の冗長度の総和である。本実施形態では、nred,sum(x,j)を「冗長密度」とも称す。
【００９７】
そして、決定パターン生成部１２３は、冗長密度に基づいて、サンプリング点を追加する。たとえば、決定パターン生成部１２３は、di_targetのj行目におけるサンプリング点のうち、nred,sum(x,j)がゼロである画素位置(x,j)を特定する。そして、決定パターン生成部１２３は、特定した画素位置(x,j)をサンプリングパターンに追加する（つまり、pf(x,j)=1とする）。nred,sum(x,j)がゼロである画素位置(x,j)が無い場合は、決定パターン生成部１２３は、di_targetのj行目からランダムにサンプリング点を抽出してサンプリングパターンに追加してもよい。あるいは、決定パターン生成部１２３は、nred,sum(x,j)が最小である画素位置(x,j)をサンプリングパターンに追加してもよい。nred,sum(x,j)が小さな画素位置を優先的にサンプリング点として決定することで、サンプリング点のばらつきは良くなる。決定パターン生成部１２３は、サンプリング点を追加したら、nredを更新する。決定パターン生成部１２３は、この一連の処理を、ラインjにおけるサンプル数がnmaxになるまで繰り返すことで、ラインjにおけるサンプリングパターンpf(x,j)を確定する。
【００９８】
全てのラインにおけるサンプリングパターンが確定したら、それにより生成するサンプリングパターンpf(x,y)が、決定パターンである。決定パターン生成部１２３は、決定パターンに対してエラーの有無の検査を行う。具体的には、決定パターン生成部１２３は、nred(x,y)=0である画素があるかを確認する。nred(x,y)=0である画素は、決定パターンに基づき切り出されるブロックのいずれにも含まれない画素である。nred(x,y)=0である画素がある場合は、出力制御部１３は、適切な決定パターンが作れなかったことを示すエラーを出力する制御を行う。この場合、nmaxが小さすぎるか、最小設定半径rminが大きすぎるか、設定半径のステップ幅rstepが大きすぎることが考えられる。したがって、出力制御部１３は、たとえば、ユーザにnmaxを大きくするか、rmin、rstepをより小さく設定するよう指示するメッセージを表示する制御を行ってもよい。
【００９９】
nred(x,y)=0である画素がない場合は、決定パターン生成部１２３は、決定パターンpf(x,y)を、サンプリングパターン記憶部３０と出力制御部１３とに出力する。
【０１００】
［画像取得部２１］
画像取得部２１は、入力画像を取得し、取得した入力画像をノイズ除去部２２に出力する。なお、画像取得部２１は、取得した入力画像を、拡張してもよい。たとえば、画像取得部２１は、ＰＤＳ実行部１２１によるＰＤＳにおいてサンプリングの対象となった範囲を入力画像が含むように、入力画像を拡張する。
【０１０１】
以下、図６を用いて画像の拡張の例を説明する。図６は、図５において点線で示される領域がＰＤＳの対象範囲である場合に、画像取得部２１により拡張される画像の概念図である。図６中、ドット模様で示されている矩形領域が入力画像に対応する領域であり、その外側の点線が、拡張後の画像の外郭である。図６の例では、画像は、上下左右にそれぞれtDCT画素分拡張されている。画像の上端と左端とがtDCT画素分拡張されるのは、拡張後の範囲がＰＤＳの対象範囲であるからである。ＰＤＳの対象範囲は、画像の右端と下端とには１画素分拡張されていたが、画像取得部２１は、サンプリング点に基づいてtDCT×tDCTサイズのＤＣＴブロックを切り出すことが可能であるように、さらにtDCT-1画素分外側まで、右端と下端とを拡張する。
【０１０２】
なお、拡張された領域の画素値は、たとえば、入力画像の上下左右端の画素値のコピーであってもよいし、あるいは入力画像の外郭線を基準に画素値が対称となるようにコピーされた画素値であってもよい。
【０１０３】
［ブロック切出部２２１］
ブロック切出部２２１は、サンプリングパターン記憶部３０から受け取るサンプリングパターン（決定パターンpf(x,y)）に基づき、入力画像からＤＣＴブロックを切り出す。たとえば、ブロック切出部２２１は、pf(x,y)=1である(x,y)のそれぞれについて、図４に示される範囲の画素からなる、tDCT×tDCTサイズのＤＣＴブロックをそれぞれ生成する。ブロック切出部２２１は、生成したＤＣＴブロックを、ＤＣＴ部２２２に出力する。
【０１０４】
［画像出力制御部２３］
画像出力制御部２３は、正規化部２２６から受け取るノイズ除去後の画像を出力する制御を行う。なお、画像取得部２１により画像が拡張されている場合には、画像出力制御部２３は、拡張された領域を取り除き、拡張された領域が取り除かれた画像を出力する制御を行ってもよい。
【０１０５】
＜動作＞
以下、画像処理装置１の動作を、図７を参照しながら説明する。図７は、画像処理装置１による画像処理の動作を示すフローチャートである。
【０１０６】
まず、パラメータ取得部１１は、所定のパラメータを取得する（ステップＳ７０１）。そして、サンプリングパターン生成部１２が、取得されたパラメータを受け取る。
【０１０７】
次に、サンプリングパターン生成部１２において、まず、ＰＤＳ実行部１２１が、サンプリングパターンのパラメータを初期化する（ステップＳ７０２）。
【０１０８】
次いで、サンプリングパターン生成部１２のＰＤＳ実行部１２１が、設定半径を変えながらＰＤＳを実行し、各設定半径に基づくサンプリングパターン（暫定パターン）を生成する（ステップＳ７０３）。このステップＳ７０３の処理が、エラーにより終了した場合は、（ステップＳ７０４においてＹＥＳ）、画像処理装置１はエラーとして処理を終える。
【０１０９】
ステップＳ７０３の処理が成功した場合は（ステップＳ７０４においてＮＯ）、差分パターン生成部１２２が、隣り合う暫定パターンの差分（差分パターン）を計算する（ステップＳ７０５）。
【０１１０】
次いで、決定パターン生成部１２３が、エラー判定（上述の判定（ｉ）および判定（ｉｉ））を行う（ステップＳ７０６）。エラーと判定された場合（ステップＳ７０７においてＹＥＳ）、画像処理装置１はエラーとして処理を終える。エラーと判定されなかった場合（ステップＳ７０７においてＮＯ）、決定パターン生成部１２３は、暫定パターンおよび差分パターンに基づいて、各行のサンプル数が基準値に等しいサンプリングパターン（決定パターン）を生成する（ステップＳ７０８）。
【０１１１】
次いで、決定パターン生成部１２３は、決定パターンに基づいてブロックの切り出しを行った場合の、各画素の冗長度を算出する（ステップＳ７０９）。そして、決定パターン生成部１２３は、冗長度が「０」である画素があるかを確認する。冗長度が「０」である画素がある場合は（ステップＳ７１０においてＹＥＳ）、決定パターン生成部１２３は、エラー処理を行って終了する。冗長度が「０」である画素がなければ（ステップＳ７１０においてＮＯ）、決定パターン生成部１２３は、決定パターンをサンプリングパターン記憶部３０に記憶させる。そして、処理はステップＳ７１１に進む。
【０１１２】
ステップＳ７１１において、画像取得部２１は、ノイズ除去処理の対象となる画像を取得する。
【０１１３】
次いで、ノイズ除去部２２は、ステップＳ７１１で取得された入力画像に対し、決定パターンに基づいて、ＲＲＤＣＴによるノイズ除去を実行する（ステップＳ７１２）。
【０１１４】
次いで、画像出力制御部２３は、ステップＳ７１２で生成されたノイズ除去後の画像を出力する制御を行う（ステップＳ７１３）。
【０１１５】
以上のような処理の流れにより、画像処理装置１は、各行のサンプル数が基準値に等しいサンプリングパターン（決定パターン）に基づくノイズ除去が行われた画像を出力する。
【０１１６】
なお、画像処理装置１が画像を連続して処理する場合には、画像処理装置１は、決定パターンを新たに生成せず、初めの画像に対して生成された決定パターンを、２つ目以降の画像に対する処理において再利用してもよい。すなわち、２つ目以降の画像に対する処理では、ステップＳ７０１からＳ７１０の処理はスキップされてもよい。
【０１１７】
［ＰＤＳを実行する処理］
ステップＳ７０３における、ＰＤＳ実行部１２１によるＰＤＳの実行処理の流れの例を、図８のフローチャートに沿って説明する。
【０１１８】
ＰＤＳ実行部１２１は、まず、最大設定半径を設定半径として設定する（ステップＳ８１）。そして、ＰＤＳ実行部１２１は、パラメータpにおける１つの点をサンプリング点として確定する（ステップＳ８２）。
【０１１９】
次に、ＰＤＳ実行部１２１は、設定半径に基づくＰＤＳを実行し、暫定パターンを生成する（ステップＳ８３）。
【０１２０】
次に、ＰＤＳ実行部１２１は、設定半径を所定の値（rstep）だけ小さくする（ステップＳ８４）。
【０１２１】
新たな設定半径が最小設定半径（rmin）を下回った場合（ステップＳ８５においてＹＥＳ）、処理はステップＳ８６に移る。新たな設定半径が最小設定半径を下回っていない場合（ステップＳ８５においてＮＯ）、ＰＤＳ実行部１２１は、新たな設定半径に基づき、暫定パターンを生成する（ステップＳ８３）。以下同様である。
【０１２２】
ステップＳ８６において、ＰＤＳ実行部１２１は、最後に生成された暫定パターン（すなわち、暫定パターンのうち設定半径が最小である暫定パターン）に基づいてＤＣＴブロックが切り出される場合にいずれのＤＣＴブロックにも含まれない画素があるかを判定する（ステップＳ８６）。すなわち、ＰＤＳ実行部１２１は、最後に生成された暫定パターンにおいて冗長度が「０」である画素があるかを判定する。判定の結果がＹＥＳであった場合、エラーであるとしてＰＤＳ実行部１２１は、処理を終了する。判定の結果がＮＯであった場合、ＰＤＳ実行部１２１は、暫定パターンの生成は成功したとして、処理を終了する。
【０１２３】
［エラー判定］
図９は、ステップＳ７０６におけるエラー判定の処理の流れの例を示すフローチャートである。エラー判定において、決定パターン生成部１２３は、まず、最大設定半径に基づく暫定パターンにおける各ラインのサンプル数を算出する（ステップＳ９１）。そして、算出されたサンプル数の最大値が基準値（nmax）以下であるかを判定する（ステップＳ９２）。最大値が基準値以下である場合（ステップＳ９２においてＹＥＳ）は、エラーであるとして処理を終了する。
【０１２４】
また、決定パターン生成部１２３は、最小の設定半径に基づく暫定パターンにおける各ラインのサンプル数を算出する（ステップＳ９３）。そして、算出されたサンプル数の最小値が基準値以上であるかを判定する（ステップＳ９４）。最小値が基準値以上である場合（ステップＳ９４においてＹＥＳ）は、エラーであるとして処理を終了する。
【０１２５】
ステップＳ９２の判定およびステップＳ９４の判定においていずれもＮＯであった場合は、エラーはないとしてエラー判定の処理を終了する。
【０１２６】
なお、エラー判定処理は、ステップＳ７０５の処理に先行してもよい。また、決定パターン生成部１２３の代わりに、ＰＤＳ実行部１２１がエラー判定を行ってもよい。
【０１２７】
［決定パターンを生成する処理］
ステップＳ７０７における、決定パターン生成部１２３による決定パターンを生成する処理の流れの例を、図１０のフローチャートに沿って説明する。
【０１２８】
決定パターン生成部１２３は、まず、最大設定半径に基づく暫定パターンにおける各画素の冗長度（nred(x,y)）を算出する（ステップＳ１０１）。
【０１２９】
次に、決定パターン生成部１２３は、決定パターンのサンプリング点として点が決定されていないラインを選択する（ステップＳ１０２）。
【０１３０】
次に、決定パターン生成部１２３は、選択されたラインにおけるサンプル数が基準値を超えない暫定パターンのうち、設定半径が最も小さい暫定パターン（pi_target）を特定する（ステップＳ１０３）。
【０１３１】
特定された暫定パターンの選択されたラインにおけるサンプル数が基準値に一致する場合（ステップＳ１０４においてＹＥＳ）、決定パターン生成部１２３は、特定された暫定パターンの選択されたラインのサンプリング点を決定パターンの当該ラインのサンプリング点として決定する（ステップＳ１０５）。そして、処理は後述のステップＳ１１０の判定に移る。
【０１３２】
特定された暫定パターンの選択されたラインにおけるサンプル数が基準値に一致しない場合（ステップＳ１０４においてＮＯ）は、決定パターン生成部１２３は、ステップＳ１０６からステップＳ１０９の処理により、基準値に一致する数のサンプリング点を決定する。
【０１３３】
まず、ステップＳ１０６において、決定パターン生成部１２３は、特定された暫定パターンの次に設定半径が小さい暫定パターンにおいて新たに確定された当該ライン上のサンプリング点を抽出する（ステップＳ１０６）。そして、決定パターン生成部１２３は、抽出されたサンプリング点のそれぞれの冗長密度を算出する（ステップＳ１０７）。
【０１３４】
そして、決定パターン生成部１２３は、冗長密度が最も小さいサンプリング点から順に、選択されたラインにおけるサンプル数と基準値との差の数のサンプリング点を選択する（ステップＳ１０８）。
【０１３５】
そして、決定パターン生成部１２３は、選択されたサンプリング点と、特定された暫定パターンの選択されたラインのサンプリング点とを、決定パターンの当該ラインのサンプリング点として決定する（ステップＳ１０９）。そして、処理はステップＳ１１０の判定に移る。
【０１３６】
ステップＳ１１０では、決定パターン生成部１２３は、全てのラインのサンプリング点が決定されたかを判定する。未だサンプリング点が決定されていないラインがある場合（ステップＳ１１０においてＮＯ）、決定パターン生成部１２３は再びステップＳ１０２からの処理を行う。全てのラインのサンプリング点が決定された場合（ステップＳ１１０においてＹＥＳ）、決定パターンは完成する。各ラインにおける決定されたサンプリング点が、決定パターンにおけるサンプリング点である。この場合、決定パターン生成部１２３は決定パターンの生成処理を終了する。
【０１３７】
＜効果＞
第１の実施形態の効果について説明する。画像処理装置１によれば、ノイズ除去部２２による画像のノイズ除去において、ラインごとのサンプル数が一定であるサンプリングパターンが用いられるため、ラインごとの処理量は同一となる。これにより、ノイズ除去の処理の効率が向上する。また、ハードウェア実装において設定される処理遅延を最小化することができる。すなわち、ハードウェアの実装が容易になる。
【０１３８】
ラインごとのサンプル数が一定であるサンプリングパターンが生成できる理由は、決定パターン生成部１２３が、ラインごとに、いずれかの暫定パターンを基準にして、サンプル数が基準値になるまでサンプリング点を追加するからである。追加されるサンプリング点は、既にＰＤＳの条件を満たすように確定されたサンプリング点から選ばれるため、各画素の冗長度のばらつき、すなわち、サンプリング点のばらつきは、悪くならないことが保証される。
【０１３９】
特に、冗長密度が小さいサンプリング点が追加されるサンプリング点として優先的に選ばれることにより、各画素の冗長度はより均質になる。これにより、ノイズ除去性能の低下を防ぐことができる。
【０１４０】
＜＜第２の実施形態＞＞
本発明の第２の実施形態を説明する。
【０１４１】
第２の実施形態は、第１の実施形態と同様に、ラインごとの処理量を同一にしつつ、サンプリングパターンを、ノイズ除去処理がなされる入力画像に適応させることで、より品質の良い画像を生成する形態である。
【０１４２】
＜構成＞
図１１は、第２の実施形態に係る画像処理装置２の構成を示すブロック図である。画像処理装置２は、第１の実施形態の画像処理装置１と同じく、パラメータ取得部１１と、出力制御部１３と、画像取得部２１と、画像出力制御部２３と、サンプリングパターン記憶部３０と、を備えている。しかし、画像処理装置２は、第１の実施形態の画像処理装置１と異なり、サンプリングパターン生成部１２とノイズ除去部２２との代わりに、サンプリングパターン生成部１４とノイズ除去部２４とを備えている。
【０１４３】
以下では、第１の実施形態の画像処理装置１と異なるサンプリングパターン生成部１４とノイズ除去部２４について詳細に説明する。
【０１４４】
図１２は、サンプリングパターン生成部１４の構成を示すブロック図である。サンプリングパターン生成部１４は、サンプリングパターン生成部１２と同様に、ＰＤＳ実行部１２１と、差分パターン生成部１２２と、暫定パターン記憶部１２４と、差分パターン記憶部１２５と、を含む。しかし、サンプリングパターン生成部１４は、第１の実施形態の決定パターン生成部１２３の代わりに、詳細パターン生成部１４１を含む。
【０１４５】
詳細パターン生成部１４１は、最大設定半径に基づく暫定パターンと差分パターンとに基づき、「ベースパターン」を作成する。ベースパターンは、後述するノイズ除去部２４のサンプリングパターン生成部２４１がサンプリングパターンを生成する際の基礎となるサンプリングパターンである。また、詳細パターン生成部１４１は、差分パターンとラインごとのサンプル数の基準値とに基づいて「詳細パターン」を生成する。詳細パターンは、サンプリングパターン生成部２４１がサンプリングパターンを生成する際に使用されるサンプリングパターンである。詳細パターン生成部１４１は、ベースパターンと詳細パターンとをサンプリングパターン記憶部３０に記憶させる。
【０１４６】
サンプリングパターン記憶部３０は、ベースパターンと詳細パターンとを記憶する。
【０１４７】
図１３は、ノイズ除去部２４の構成を示すブロック図である。ノイズ除去部２４は、ノイズ除去部２２と同様に、ブロック切出部２２１と、ＤＣＴ部２２２と、係数処理部２２３と、ＩＤＣＴ部２２４と、ブロック統合部２２５と、正規化部２２６と、を含む。ノイズ除去部２４は、さらに、サンプリングパターン生成部２４１を含む。
【０１４８】
サンプリングパターン生成部２４１は、サンプリングパターン記憶部３０から受け取るベースパターンと、詳細パターンと、入力画像における、サンプリング点に基づく所定の範囲の画素値の統計的な情報（後述）と、に基づいて、サンプリングパターンを生成する。そして、サンプリングパターン生成部２４１は、生成されたサンプリングパターンをブロック切出部２２１に出力する。
【０１４９】
以下、詳細パターン生成部１４１と、サンプリングパターン生成部２４１の処理の詳細について説明する。
【０１５０】
［詳細パターン生成部１４１］
詳細パターン生成部１４１は、第１の実施形態の決定パターン生成部１２３と同様に、最大設定半径に基づく暫定パターンp0における各ラインjにおけるサンプル数np_0(j)、および、各差分パターンdiの各ラインjにおけるサンプル数nd_i(j)を算出する。
【０１５１】
また、詳細パターン生成部１４１は、決定パターン生成部１２３と同様に、エラー判定を行う。
【０１５２】
また、詳細パターン生成部１４１は、決定パターン生成部１２３と同様に、暫定パターンp0に基づいて設定されるＤＣＴブロックパターンを用いた場合の、各画素の冗長度nred(x,y)を計算する。
【０１５３】
そして、詳細パターン生成部１４１は、最大設定半径に基づく暫定パターンp0と、差分パターン記憶部１２５から受け取るm-1個の差分パターンd0, d1, … , dm-2と、パラメータ取得部１１から受け取るＤＣＴのブロックサイズtDCTと、１ライン当たりのサンプル数の基準値nmaxとに基づき、ベースパターンb(x,y)と詳細パターンh(x,y)とを、以下の通り生成する。
【０１５４】
まず、詳細パターン生成部１４１は、ベースパターンb(x,y)の初期値として、b(x,y)=p0(x,y)を設定する。さらに、詳細パターン生成部１４１は、ベースパターンb(x,y)のラインごとのサンプル数nb(j)を、nb(j)=np_0(j)として初期化する。
【０１５５】
詳細パターン生成部１４１は、冗長度nredが「０」である画素が存在しなくなるまで、ベースパターンb(x,y)においてサンプリング点を追加することにより、ベースパターンb(x,y)を生成する。
【０１５６】
具体的には、まず、詳細パターン生成部１４１は、冗長度nredについて、nred(x,y)=0である画素があるかを確認する。nred(x,y)=0である画素があれば、詳細パターン生成部１４１は、全ての画素についてnred(x,y)>0となるようにb(x,y)を更新する。
【０１５７】
例えば、詳細パターン生成部１４１は、ラインごとのサンプル数が最も小さいラインjに着目し、nd_i(y)(j)>0であるようなi(y)における、di(y)(s,t)=1である画素位置(s,t)を、ベースパターンb(x,y)におけるサンプリング点として追加する。すなわち、詳細パターン生成部１４１は、b(s,t)の値を「１」に変更する。なお、詳細パターン生成部１４１は、i(y)を、たとえば、０を初期値として、nd_i(y)(y) > 0となるまでi(y)に１を加算していくことにより、特定すればよい。
【０１５８】
b(s,t)の追加に伴い、詳細パターン生成部１４１は、追加された点(s,t)に基づきnredと、ラインjのnb(j)とを、更新する。
【０１５９】
また、詳細パターン生成部１４１は、追加されたサンプリング点(s,t)を、di(y)(x,y)から除外する。すなわち、詳細パターン生成部１４１は、di(y)(s,t)=0とし、di(y)における当該ラインjのサンプル数nd_i(y)(j)の値を、追加されたサンプリング点の数だけ減ずる。
【０１６０】
詳細パターン生成部１４１は、以上のような、サンプリング点を追加する処理を、nred(x,y)=0である画素がなくなるまで繰り返す。
【０１６１】
もし、b(x,y)を更新する過程で、nred(x,y)=0である画素が残存しているにもかかわらず、nb(y)>nmaxとなるラインが出現した場合は、詳細パターン生成部１４１は、出力制御部１３にベースパターンが作れないことを示す第３のエラーコードを出力する。この場合、nmaxが小さすぎるか、最大設定半径rmaxが小さすぎるか、設定半径のステップ幅rstepが大きすぎることが考えられる。出力制御部１３は、ユーザにnmaxまたはrmaxをより大きく設定するか、rstepをより小さく設定するようにメッセージを表示する制御を行ってもよい。
【０１６２】
nred(x,y)=0である画素がなくなった時点で、詳細パターン生成部１４１は、ベースパターンb(x,y)の生成を完了する。
【０１６３】
また、詳細パターン生成部１４１は、詳細パターンh(x,y)の生成を行う。まず、詳細パターン生成部１４１は、h(x,y)を設定し、全てのh(x,y)のすべての値を「０」に設定（初期化）する。次に、詳細パターン生成部１４１は、ラインjにおいて、nb(j) + Σi ndi(j)≧nmaxを満たす最小のitargetを特定する。そして、詳細パターン生成部１４１は、以下の式によりラインjにおける詳細パターンh(x,j)を生成する。
【０１６４】
【数７】
0006763442.tif 000008
【０１６５】
詳細パターン生成部１４１は全てのラインについて上記処理を行う。全てのラインについて上記処理が行われると、詳細パターンh(x,y)が完成する。
【０１６６】
［サンプリングパターン生成部２４１］
サンプリングパターン生成部２４１は、サンプリングパターン記憶部３０から受け取るベースパターンb(x,y)を、詳細パターンh(x,y)と、入力画像の画素値u(x,y)とに基づいて更新し、その結果として入力画像の特徴に適応したサンプリングパターンp(x,y)を生成する。
【０１６７】
まず、サンプリングパターン生成部２４１は、ベースパターンb(x,y)のラインjにおけるサンプル数nb(j)を算出し、当該ラインにおいて詳細パターンから抽出すべきサンプル数ns(j)=nmax-nb(j)を求める。
【０１６８】
次に、サンプリングパターン生成部２４１は、サンプリングパターンp(x,y)を用意し、ベースパターンb(x,y)をp(x,y)の初期値として設定する（p(x,y)=b(x,y)）。
【０１６９】
次に、サンプリングパターン生成部２４１は、詳細パターンh(x,y)について、h(x,y)=1である点において、画素値の局所解析処理を行う。すなわち、サンプリングパターン生成部２４１は、入力画像における、サンプリング点に基づく所定の範囲の画素値の統計的な情報を算出する。例えば、サンプリングパターン生成部２４１は、以下の式で表される、画素値u(x,y)の局所分散v(x,y)を算出する。
【０１７０】
【数８】
0006763442.tif 000009
【０１７１】
なお、一般的には、画素値の局所分散は、対象の画素を中心とした所定の範囲に属する画素を用いて算出される。しかし、サンプリングパターン生成部２４１は、上記の式のように、ＲＤＣＴで処理される画像領域の範囲に属する画素を用いて分散を算出する。これにより、サンプリングパターン生成部２４１は、次に説明されるサンプリング点の抽出において、ＲＤＣＴで処理される画像領域の範囲の画素値の分散に基づいてサンプリング点を抽出できる。
【０１７２】
サンプリングパターン生成部２４１は、ラインjにおいて、局所分散値が大きな画素から順にns(j)個の画素を、詳細パターンh(x,y)から抽出し、抽出した画素をサンプリング点として追加する（p(x,y)を「１」に変更する）。
【０１７３】
サンプリングパターン生成部２４１がこの処理を全てのラインで実行することにより、全てのラインにおいてサンプル数が等しいサンプリングパターンp(x,y)が生成する。
【０１７４】
＜動作＞
第２の実施形態に係る画像処理方法について説明する。図１４は、画像処理装置２の処理の流れの例を示すフローチャートである。
【０１７５】
ステップＳ７０１からＳ７０７の処理は、第１の実施形態と同様であるため、説明を省略する。なお、ステップＳ７０７のエラー判定は、たとえば、詳細パターン生成部１４１により行われればよい。
【０１７６】
ステップＳ７０７に次いで、詳細パターン生成部１４１は、ベースパターンを生成する（ステップＳ１４１）。
【０１７７】
ステップＳ１４１のベースパターンの生成が、エラーで終了した場合は（ステップＳ１４２においてＹＥＳ）、画像処理装置２はエラーとして処理を終了する。
【０１７８】
ステップＳ１４１のベースパターンの生成が成功した場合は（ステップＳ１４２においてＮＯ）、詳細パターン生成部１４１は、詳細パターンを生成する（ステップＳ１４３）。
【０１７９】
次いで、画像取得部２１が、ノイズ除去処理の対象となる画像を取得する（ステップＳ１４４）。
【０１８０】
次いで、サンプリングパターン生成部２４１が、ベースパターンと詳細パターンと局所分散とに基づいてサンプリングパターンを生成する（ステップＳ１４５）。
【０１８１】
そして、ノイズ除去部２２は、ステップＳ１４４で取得された入力画像に対し、ステップＳ１４５で生成されたサンプリングパターンに基づいてＲＲＤＣＴによるノイズ除去を実行する（ステップＳ１４６）。
【０１８２】
次いで、画像出力制御部２３は、ステップＳ１４６で生成されたノイズ除去後の画像を出力する制御を行う（ステップＳ１４７）。
【０１８３】
以上のような処理の流れにより、画像処理装置２は、各行のサンプル数が基準値に等しいサンプリングパターン（決定パターン）に基づくノイズ除去が行われた画像を出力する。
【０１８４】
［ベースパターンの生成処理］
図１５は、詳細パターン生成部１４１によるベースパターンの生成処理の流れの例を示すフローチャートである。
【０１８５】
詳細パターン生成部１４１は、まず、最大設定半径に基づく暫定パターンを用いてベースパターンを初期化する（ステップＳ１５１）。
【０１８６】
次に、詳細パターン生成部１４１は、各画素の冗長度を確認する。冗長度が「０」である画素がある場合は（ステップＳ１５２においてＹＥＳ）、詳細パターン生成部１４１は、ステップＳ１５３からステップＳ１５６の処理を行う。冗長度が「０」である画素がなくなった時点で（ステップＳ１５２においてＮＯ）、詳細パターン生成部１４１はベースパターンの生成を完了する。
【０１８７】
ステップＳ１５３において、詳細パターン生成部１４１は、サンプル数が最も少ないラインに対し、サンプリング点を追加する。詳細パターン生成部１４１は、サンプリング点を、たとえば、当該ラインにおいてサンプリング点を有する差分パターンのうち、設定半径が最も大きな差分パターンから抽出する。そして、詳細パターン生成部１４１は、追加されたサンプリング点を、差分パターンから除外する（ステップＳ１５４）。また、詳細パターン生成部１４１は、サンプル数および冗長度を更新する（ステップＳ１５５）。
【０１８８】
そして、詳細パターン生成部１４１は、サンプル数が基準値を超えるラインがあるかを判定する（ステップＳ１５６）。サンプル数が基準値を超えるラインがある場合（ステップＳ１５６においてＹＥＳ）、詳細パターン生成部１４１は、エラーを出力して処理を終了する。サンプル数が基準値を超えるラインがない場合は（ステップＳ１５６においてＮＯ）、処理はステップＳ１５２の処理に戻り、詳細パターン生成部１４１は、冗長度が「０」である画素がなくなるまで、同様の処理を行う。
【０１８９】
＜効果＞
第２の実施形態に係る画像処理装置２の効果について説明する。画像処理装置２は、第１の実施形態と同様、ラインごとの処理量を同一にできるという効果がある。さらに、画像処理装置２のサンプリングパターン生成部２４１により生成されるサンプリングパターンは、入力画像に応じて、入力画像に適応するように生成されるため、ノイズ除去後の出力画像の画質をより良くなるという効果がある。一般に、ＲＤＣＴでは、エッジやテクスチャなどの局所分散が大きな領域について、多くのブロックの冗長加算によってモスキートノイズの発生を抑制しているため、ＲＲＤＣＴによってエッジやテクスチャ周囲のブロック数が減少すると、モスキートノイズが目立ちやすくなる問題がある。画像処理装置２によれば、局所分散が大きな領域にサンプリング点が割り当てられやすいため、入力画像の局所分散にサンプリングパターンが適応し、モスキートノイズの発生が抑制されやすくなる。
【０１９０】
［変形例１］
上記各実施形態の画像処理装置の機能は、１つの装置によって実現されていなくてもよい。たとえば、第１の実施形態の画像処理装置１の機能は、図１６に示されるように、パターン生成装置１００と、画像処理装置２００とによって実現されてもよい。
【０１９１】
図１６に示す例では、パターン生成装置１００は、パラメータ取得部１１と、サンプリングパターン生成部１２と、出力制御部１３とを備える。画像処理装置２００は、サンプリングパターン記憶部３０と、画像取得部２１と、ノイズ除去部２２と、画像出力制御部２３とを備える。
【０１９２】
サンプリングパターン生成部１２は、生成した暫定パターンおよび差分パターン等を、画像処理装置２００のサンプリングパターン記憶部３０に対して出力すればよい。出力制御部１３が暫定パターンおよび差分パターン等をサンプリングパターン記憶部３０に対して出力してもよい。パターン生成装置１００と画像処理装置２００とは、互いに通信可能に接続されていればよい。パターン生成装置１００と画像処理装置２００とは、無線ネットワーク、有線ネットワーク、および回路のいずれによって接続されていてもよい。
【０１９３】
第２の実施形態の画像処理装置２も、同様の構成に変更可能である。
【０１９４】
各実施形態の画像処理装置の機能は、さらに細かく役割が割り当てられた複数の装置の組み合わせによって実現されてもよい。
【０１９５】
［変形例２］
以上各実施形態で説明された画像処理装置は、所与のサンプリングパターンにサンプリング点を追加していくことにより、各ラインのサンプル数が基準値に等しいサンプリングパターンを生成する。変形例として、画像処理装置が、最終的なサンプリングパターンを、以上の例以外の方法によって生成する例を説明する。
【０１９６】
以下、変形例として、第１の実施形態に係る画像処理装置１のサンプリングパターン生成部１２が、以上で説明された方法以外の方法でサンプリングパターンを生成する例を、説明する。なお、本変形例において、サンプリングパターン生成部１２は、必ずしも図２に示されるような構成全てを含まなくてもよい。
【０１９７】
（方法１）
サンプリングパターン生成部１２は、暫定パターンpm-2から、各ラインのサンプリング点を削除することによって、各ラインのサンプル数が基準値になるようにサンプリングパターンを生成してもよい。
【０１９８】
サンプリングパターン生成部１２は、削除するサンプリング点を、より小さい設定半径に基づいたＰＤＳにより確定されたサンプリング点から順に決定してもよい。
【０１９９】
サンプリングパターン生成部１２は、冗長密度が大きいサンプリング点を優先的に削除してもよい。
【０２００】
上記の方法によると、第１の実施形態と同様、冗長度のばらつきが少なく、かつ各ラインのサンプル数が等しいサンプリングパターンが生成される。
【０２０１】
（方法２）
サンプリングパターン生成部１２は、pm-2に相当するサンプリングパターンのみを、暫定パターンとして生成してもよい。そして、サンプリングパターン生成部１２は、暫定パターンpm-2から、各ラインのサンプリング点を削除することによって、各ラインのサンプル数が基準値になるようにサンプリングパターンを生成してもよい。この場合、サンプリングパターン生成部１２は、削除するサンプリング点を、各サンプリング点の冗長密度に基づいて決定してもよい。すなわち、サンプリングパターン生成部１２は、冗長密度がより大きいサンプリング点から順に、サンプリング点を削除してもよい。
【０２０２】
（方法３）
サンプリングパターン生成部１２は、ＰＤＳを行わず、次のような手順でサンプリングパターンを生成してもよい。
ステップＳ１：各ラインにおいて、基準値に等しい数の点を、たとえばランダムに、仮のサンプリング点として選択する。
ステップＳ２：冗長度が「０」である画素が無くなるように、仮のサンプリング点をラインの方向に移動させる補正を行う。
【０２０３】
ステップＳ２の冗長度は、仮のサンプリング点に基づきブロックが生成される場合の、当該画素を含むブロックの個数、である。
【０２０４】
ステップＳ２において、サンプリングパターン生成部１２は、たとえば、冗長度が「０」である画素を特定する。そして、サンプリングパターン生成部１２は、その画素を含むライン、または、そのラインからtDCT行以内の距離にあるそのラインよりも上のラインに存在する、仮のサンプリング点のいずれか少なくとも一つを、ライン方向に、冗長度が「０」である点の近傍に移動させる。近傍とは、冗長度が「０」である点が含まれるようなブロックのサンプリング点となりうる点の位置である。
【０２０５】
サンプリングパターン生成部１２は、仮のサンプリング点のそれぞれの冗長密度を計算し、冗長密度が最も大きな仮のサンプリング点を移動させてもよい。
【０２０６】
また、サンプリングパターン生成部１２は、冗長度の範囲を設定し、冗長度がその範囲から外れる画素位置がなくなるように、仮のサンプリング点を移動させてもよい。
【０２０７】
以上のような方法によっても、サンプリングパターン生成部１２は、冗長度のばらつきが少なく、かつ各ラインのサンプル数が等しいサンプリングパターンを生成できる。
【０２０８】
上記で説明された方法は例である。当業者は、各ラインのサンプル数が等しいサンプリングパターンを生成する方法について、様々な変更をすることができる。
【０２０９】
＜＜主構成＞＞
本発明の一実施形態に係るパターン生成装置１０１について説明する。図１７は、パターン生成装置１０１の構成を示すブロック図である。パターン生成装置１０１は、主生成部１０５と出力制御部１０６とを備える。
【０２１０】
主生成部１０５は、サンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数が基準値に等しくなるように、生成する。サンプリングパターンとは、画像におけるサンプリング点の位置のパターンである。サンプリング点とは、ブロックごとの画像処理に用いられるブロックの位置を示す点である。
【０２１１】
上記各実施形態における、決定パターン生成部１２３、サンプリングパターン生成部２４１、および変形例のサンプリングパターン生成部１２は、主生成部１０５の一例である。
【０２１２】
以下、主生成部１０５により生成されるサンプリングパターンを、「主サンプリングパターン」とも称す。上記各実施形態の「決定パターン」、サンプリングパターン生成部２４１により生成されるサンプリングパターン、および、変形例のサンプリングパターン生成部１２により生成されるサンプリングパターンは、主サンプリングパターンの例である。
【０２１３】
出力制御部１０６は、主サンプリングパターンを出力する制御を行う。具体的には、たとえば、出力制御部１０６は、表示装置または画像処理装置に主サンプリングパターンのデータを送出し、通信ネットワークに主サンプリングパターンのデータを送出し、または記憶媒体に主サンプリングパターンのデータを書き込む。出力制御部１０６は、上記の出力制御のいずれか２つ以上を行ってもよい。
【０２１４】
上記各実施形態における、出力制御部１３、決定パターン生成部１２３、サンプリングパターン記憶部３０、およびサンプリングパターン生成部２４１は、出力制御部１０６の一例である。
【０２１５】
パターン生成装置１０１の動作の流れを、図１８のフローチャートを参照しながら説明する。まず、主生成部１０５が、主サンプリングパターンを、当該主サンプリングパターンにおける複数の行におけるサンプリング点の数が基準値に等しくなるように、生成する（ステップＳ１８１）。そして、出力制御部１０６が、主サンプリングパターンを出力する制御を行う（ステップＳ１８２）。
【０２１６】
パターン生成装置１０１によれば、サンプリングされたブロックに対する処理を含む画像処理の効率を向上させ得るサンプリングパターンを得ることができる。その理由は、主生成部１０５が、複数のラインにおけるサンプル数が等しいサンプリングパターンを生成し、出力制御部１０６がそのサンプリングパターンの出力制御を行うからである。特に、主生成部１０５が、全てのラインにおけるサンプル数が等しいサンプリングパターンを生成した場合、画像処理において、各ラインにおける処理の偏りが抑えられるため、画像処理の効率が向上する。
【０２１７】
なお、パターン生成装置は、図１９のように、副生成部１０４を備えていてもよい。図１９は、副生成部１０４を備えるパターン生成装置１０２の構成を示すブロック図である。
【０２１８】
副生成部１０４は、第１のサンプリングパターンと、第１のサンプリングパターンにさらにサンプリング点を追加することにより生成される第２のサンプリングパターンを生成する。上記各実施形態における、ＰＤＳ実行部１２１、および、詳細パターン生成部１４１は、副生成部１０４の一例である。暫定パターンp0, … , pm-2およびベースパターンは、第１のサンプリングパターンの例である。暫定パターンp1, … , pm-1は、第２のサンプリングパターンの例である。
【０２１９】
主生成部１０５は、第１のサンプリングパターンにおいてサンプリング点の数が基準値を下回る行を特定し、第１のサンプリングパターンに対して、当該行におけるサンプリング点の数が基準値に等しくなるように、第２のサンプリングパターンに含まれるサンプリング点を追加することにより、主サンプリングパターンを生成する。
【０２２０】
これにより、より冗長度のばらつきが小さい、すなわち、サンプリング点が偏らない、サンプリングパターンが生成されることが期待される。
【０２２１】
＜＜実施形態の各部を実現するハードウェアの構成＞＞
以上、説明した本発明の各実施形態において、各装置の各構成要素は、機能単位のブロックを示している。
【０２２２】
各構成要素の処理は、たとえば、コンピュータシステムが、コンピュータ読み取り可能な記憶媒体により記憶された、その処理をコンピュータシステムに実行させるプログラムを、読み込み、実行することによって、実現されてもよい。「コンピュータ読み取り可能な記憶媒体」は、たとえば、光ディスク、磁気ディスク、光磁気ディスク、および不揮発性半導体メモリ等の可搬媒体、ならびに、コンピュータシステムに内蔵されるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびハードディスク等の記憶装置である。「コンピュータ読み取り可能な記憶媒体」は、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントにあたるコンピュータシステム内部の揮発性メモリのように、プログラムを一時的に保持しているものも含む。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、更に前述した機能をコンピュータシステムにすでに記憶されているプログラムとの組み合わせで実現できるものであってもよい。
【０２２３】
「コンピュータシステム」とは、一例として、図２０に示されるようなコンピュータ９００を含むシステムである。コンピュータ９００は、以下のような構成を含む。
・ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１
・ＲＯＭ９０２
・ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３
・ＲＡＭ９０３へロードされるプログラム９０４Ａおよび記憶情報９０４Ｂ
・プログラム９０４Ａおよび記憶情報９０４Ｂを格納する記憶装置９０５
・記憶媒体９０６の読み書きを行うドライブ装置９０７
・通信ネットワーク９０９と接続する通信インタフェース９０８
・データの入出力を行う入出力インタフェース９１０
・各構成要素を接続するバス９１１
たとえば、各実施形態における各装置の各構成要素は、その構成要素の機能を実現するプログラム９０４ＡをＣＰＵ９０１がＲＡＭ９０３にロードして実行することで実現される。各装置の各構成要素の機能を実現するプログラム９０４Ａは、例えば、予め、記憶装置９０５やＲＯＭ９０２に格納される。そして、必要に応じてＣＰＵ９０１がプログラム９０４Ａを読み出す。記憶装置９０５は、たとえば、ハードディスクである。プログラム９０４Ａは、通信ネットワーク９０９を介してＣＰＵ９０１に供給されてもよいし、予め記憶媒体９０６に格納されており、ドライブ装置９０７に読み出され、ＣＰＵ９０１に供給されてもよい。なお、記憶媒体９０６は、たとえば、光ディスク、磁気ディスク、光磁気ディスク、および不揮発性半導体メモリ等の、可搬媒体である。
【０２２４】
各装置の実現方法には、様々な変形例がある。例えば、各装置は、構成要素毎にそれぞれ別個のコンピュータ９００とプログラムとの可能な組み合わせにより実現されてもよい。また、各装置が備える複数の構成要素が、一つのコンピュータ９００とプログラムとの可能な組み合わせにより実現されてもよい。
【０２２５】
また、各装置の各構成要素の一部または全部は、その他の汎用または専用の回路、コンピュータ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。
【０２２６】
各装置の各構成要素の一部または全部が複数のコンピュータや回路等により実現される場合には、複数のコンピュータや回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、コンピュータや回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０２２７】
本願発明は以上に説明した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２２８】
上記実施形態の一部または全部は以下の付記のようにも記載され得るが、以下には限られない。
【０２２９】
＜＜付記＞＞
［付記１］
ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成する、主生成手段と、
前記主生成手段により生成されるサンプリングパターンである主サンプリングパターンを出力する制御を行う出力制御手段と、
を備えるパターン生成装置。
［付記２］
前記主生成手段は、前記主サンプリングパターンを、全ての行においてサンプリング点の数が前記基準値に等しくなるように生成する、
付記１に記載のパターン生成装置。
［付記３］
第１のサンプリングパターンと、前記第１のサンプリングパターンにさらにサンプリング点を追加することにより生成される第２のサンプリングパターンを生成する、副生成手段をさらに備え、
前記主生成手段は、前記第１のサンプリングパターンにおいてサンプリング点の数が前記基準値を下回る行を特定し、前記第１のサンプリングパターンに対して、当該行におけるサンプリング点の数が前記基準値に等しくなるように、前記第２のサンプリングパターンに含まれるサンプリング点を追加することにより、前記主サンプリングパターンを生成する、
付記１または２に記載のパターン生成装置。
［付記４］
前記副生成手段は、前記第１のサンプリングパターンに対して段階的にサンプリング点を追加することにより、前記第２のサンプリングパターンとして複数のサンプリングパターンを生成し、
前記主生成手段は、前記複数のサンプリングパターンに含まれるサンプリング点のうち、より早い段階において生成されたサンプリングパターンに含まれるサンプリング点から順に、サンプリング点を前記第１のサンプリングパターンに追加する、
付記３に記載のパターン生成装置。
［付記５］
前記副生成手段は、段階の進行に従って設定値を減少させ、前記複数のサンプリングパターンを、各サンプリング点が互いに前記設定値以上の距離にあるように生成する、
付記４に記載のパターン生成装置。
［付記６］
前記主生成手段は、前記第１のサンプリングパターンに基づき特定される前記ブロックのそれぞれの位置に基づき、前記第１のサンプリングパターンにおける位置のそれぞれについて当該位置を含む前記ブロックの数である冗長度を算出し、前記冗長度に基づいて、追加するサンプリング点を決定する、
付記３から５のいずれか一つに記載のパターン生成装置。
［付記７］
前記主生成手段は、前記第２のサンプリングパターンに含まれるサンプリング点から、前記画像処理が行われる画像における、当該サンプリング点に基づく所定の範囲の画素値の統計的な情報に基づき、追加するサンプリング点を決定する、
付記３から６のいずれか一つに記載のパターン生成装置。
［付記８］
前記出力制御手段は、前記主サンプリングパターンに基づき特定される前記ブロックのいずれにも含まれない画素が存在する場合はエラーを示す情報を出力する制御を行う、
付記１から７のいずれか一つに記載のパターン生成装置。
［付記９］
付記１から８のいずれか一つに記載のパターン生成装置により生成された前記主サンプリングパターンを前記出力制御手段から受け取り、前記主サンプリングパターンに基づく前記ブロックごとの画像処理を行うことにより新たな画像を生成する画像処理手段を備える、画像処理装置。
［付記１０］
前記主サンプリングパターンに基づいて特定される前記ブロックごとに所定の周波数変換を適用することで変換係数を算出する周波数変換手段と、
所定の閾値に満たない前記変換係数をゼロに変更する補正を行うことで、新たな変換係数を算出する係数処理手段と、
前記新たな変換係数ごとに前記周波数変換の逆変換を適用することで、画像ブロックを生成する逆周波数変換手段と、
前記画像ブロックを統合することで画像を生成する統合手段と、
をさらに備える、
付記９に記載の画像処理装置。
［付記１１］
ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成し、
前記生成したサンプリングパターンである主サンプリングパターンを出力する制御を行う、
を備えるパターン生成方法。
［付記１２］
前記主サンプリングパターンを、全ての行においてサンプリング点の数が前記基準値に等しくなるように生成する、
付記１１に記載のパターン生成方法。
［付記１３］
第１のサンプリングパターンと、前記第１のサンプリングパターンにさらにサンプリング点を追加することにより生成される第２のサンプリングパターンを生成し、
前記第１のサンプリングパターンにおいてサンプリング点の数が前記基準値を下回る行を特定し、前記第１のサンプリングパターンに対して、当該行におけるサンプリング点の数が前記基準値に等しくなるように、前記第２のサンプリングパターンに含まれるサンプリング点を追加することにより、前記主サンプリングパターンを生成する、
付記１１または１２に記載のパターン生成方法。
［付記１４］
前記第１のサンプリングパターンに対して段階的にサンプリング点を追加することにより、前記第２のサンプリングパターンとして複数のサンプリングパターンを生成し、
前記主サンプリングパターンの生成において、前記複数のサンプリングパターンに含まれるサンプリング点のうち、より早い段階において生成されたサンプリングパターンに含まれるサンプリング点から順に、サンプリング点を前記第１のサンプリングパターンに追加する、
付記１３に記載のパターン生成方法。
［付記１５］
前記複数のサンプリングパターンの生成において、段階の進行に従って設定値を減少させ、前記複数のサンプリングパターンを、各サンプリング点が互いに前記設定値以上の距離にあるように生成する、
付記１４に記載のパターン生成方法。
［付記１６］
前記主サンプリングパターンの生成において、前記第１のサンプリングパターンに基づき特定される前記ブロックのそれぞれの位置に基づき、前記第１のサンプリングパターンにおける位置のそれぞれについて当該位置を含む前記ブロックの数である冗長度を算出し、前記冗長度に基づいて、追加するサンプリング点を決定する、
付記１３から１５のいずれか一つに記載のパターン生成方法。
［付記１７］
前記主サンプリングパターンの生成において、前記第２のサンプリングパターンに含まれるサンプリング点から、前記画像処理が行われる画像における、当該サンプリング点に基づく所定の範囲の画素値の統計的な情報に基づき、追加するサンプリング点を決定する、
付記１３から１６のいずれか一つに記載のパターン生成方法。
［付記１８］
前記主サンプリングパターンに基づき特定される前記ブロックのいずれにも含まれない画素が存在する場合はエラーを示す情報を出力する制御を行う、
付記１１から１７のいずれか一つに記載のパターン生成方法。
［付記１９］
付記１１から１８のいずれか一つに記載のパターン生成方法により生成された前記主サンプリングパターンを受け取り、前記主サンプリングパターンに基づく前記ブロックごとの画像処理を行うことにより新たな画像を生成する、画像処理方法。
［付記２０］
前記主サンプリングパターンに基づいて特定される前記ブロックごとに所定の周波数変換を適用することで変換係数を算出し、
所定の閾値に満たない前記変換係数をゼロに変更する補正を行うことで、新たな変換係数を算出し、
前記新たな変換係数ごとに前記周波数変換の逆変換を適用することで、画像ブロックを生成し、
前記画像ブロックを統合することで画像を生成する、
付記１９に記載の画像処理方法。
［付記２１］
コンピュータに、
ブロックごとの画像処理に用いられる前記ブロックを示すサンプリング点の、画像における位置のパターンであるサンプリングパターンを、当該サンプリングパターンにおける複数の行におけるサンプリング点の数がそれぞれ基準値に等しくなるように生成する、主生成処理と、
前記主生成処理により生成されるサンプリングパターンである主サンプリングパターンを出力する制御を行う出力制御処理と、
を実行させるプログラム。
［付記２２］
前記主生成処理は、前記主サンプリングパターンを、全ての行においてサンプリング点の数が前記基準値に等しくなるように生成する、
付記２１に記載のプログラム。
［付記２３］
コンピュータに、第１のサンプリングパターンと、前記第１のサンプリングパターンにさらにサンプリング点を追加することにより生成される第２のサンプリングパターンを生成する、副生成処理を実行させ、
前記主生成処理は、前記第１のサンプリングパターンにおいてサンプリング点の数が前記基準値を下回る行を特定し、前記第１のサンプリングパターンに対して、当該行におけるサンプリング点の数が前記基準値に等しくなるように、前記第２のサンプリングパターンに含まれるサンプリング点を追加することにより、前記主サンプリングパターンを生成する、
付記２１または２２に記載のプログラム。
［付記２４］
前記副生成処理は、前記第１のサンプリングパターンに対して段階的にサンプリング点を追加することにより、前記第２のサンプリングパターンとして複数のサンプリングパターンを生成し、
前記主生成処理は、前記複数のサンプリングパターンに含まれるサンプリング点のうち、より早い段階において生成されたサンプリングパターンに含まれるサンプリング点から順に、サンプリング点を前記第１のサンプリングパターンに追加する、
付記２３に記載のプログラム。
［付記２５］
前記副生成処理は、段階の進行に従って設定値を減少させ、前記複数のサンプリングパターンを、各サンプリング点が互いに前記設定値以上の距離にあるように生成する、
付記２４に記載のプログラム。
［付記２６］
前記主生成処理は、前記第１のサンプリングパターンに基づき特定される前記ブロックのそれぞれの位置に基づき、前記第１のサンプリングパターンにおける位置のそれぞれについて当該位置を含む前記ブロックの数である冗長度を算出し、前記冗長度に基づいて、追加するサンプリング点を決定する、
付記２３から２５のいずれか一つに記載のプログラム。
［付記２７］
前記主生成処理は、前記第２のサンプリングパターンに含まれるサンプリング点から、前記画像処理が行われる画像における、当該サンプリング点に基づく所定の範囲の画素値の統計的な情報に基づき、追加するサンプリング点を決定する、
付記２３から２６のいずれか一つに記載のプログラム。
［付記２８］
前記出力制御処理は、前記主サンプリングパターンに基づき特定される前記ブロックのいずれにも含まれない画素が存在する場合はエラーを示す情報を出力する制御を行う、
付記２１から２７のいずれか一つに記載のプログラム。
［付記２９］
コンピュータに、
付記１から８のいずれか一つに記載のパターン生成装置により生成された前記主サンプリングパターンを前記出力制御手段から受け取り、前記主サンプリングパターンに基づく前記ブロックごとの画像処理を行うことにより新たな画像を生成する画像加工処理を実行させる、プログラム。
［付記３０］
前記画像加工処理は、
前記主サンプリングパターンに基づいて特定される前記ブロックごとに所定の周波数変換を適用することで変換係数を算出する周波数変換処理と、
所定の閾値に満たない前記変換係数をゼロに変更する補正を行うことで、新たな変換係数を算出する係数処理と、
前記新たな変換係数ごとに前記周波数変換の逆変換を適用することで、画像ブロックを生成する逆周波数変換処理と、
前記画像ブロックを統合することで画像を生成する統合処理と、
を含む、
付記２９に記載のプログラム。
［付記３１］
付記２１から３０のいずれか一項に記載のプログラムを記憶した、コンピュータ読み取り可能な記憶媒体。
【符号の説明】
【０２３０】
１〜３    画像処理装置
１１    パラメータ取得部
１２、１４    サンプリングパターン生成部
１２１    ＰＤＳ実行部
１２２    差分パターン生成部
１２３    決定パターン生成部
１２４    暫定パターン記憶部
１２５    差分パターン記憶部
１３    出力制御部
１４１    詳細パターン生成部
２１    画像取得部
２２、２４    ノイズ除去部
２２１    ブロック切出部
２２２    ＤＣＴ部
２２３    係数処理部
２２４    ＩＤＣＴ部
２２５    ブロック統合部
２２６    正規化部
２３    画像出力制御部
２４１    サンプリングパターン生成部
３０    サンプリングパターン記憶部
１００〜１０２    パターン生成装置
１０４    副生成部
１０５    主生成部
１０６    出力制御部
２００    画像処理装置
９００    コンピュータ
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４Ａ    プログラム
９０４Ｂ    記憶情報
９０５    記憶装置
９０６    記憶媒体
９０７    ドライブ装置
９０８    通信インタフェース
９０９    通信ネットワーク
９１０    入出力インタフェース
９１１    バス
【図１】
0006763442.tif 000010
【図２】
0006763442.tif 000011
【図３】
0006763442.tif 000012
【図４】
0006763442.tif 000013
【図５】
0006763442.tif 000014
【図６】
0006763442.tif 000015
【図７】
0006763442.tif 000016
【図８】
0006763442.tif 000017
【図９】
0006763442.tif 000018
【図１０】
0006763442.tif 000019
【図１１】
0006763442.tif 000020
【図１２】
0006763442.tif 000021
【図１３】
0006763442.tif 000022
【図１４】
0006763442.tif 000023
【図１５】
0006763442.tif 000024
【図１６】
0006763442.tif 000025
【図１７】
0006763442.tif 000026
【図１８】
0006763442.tif 000027
【図１９】
0006763442.tif 000028
【図２０】
0006763442.tif 000029