次に、この発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.第1実施例:
B.平滑化処理の実施例:
C.変形例:
A.第1実施例:
図1は、本発明の一実施例としてのプリンタを示す説明図である。図1(A)は、プリンタ100の外観を示し、図1(B)は、プリンタ100の構成の概略を示している。図1(A)に示すように、このプリンタ100は、ディスプレイ40と、操作パネル50と、メモリカードインターフェース70と、を備えている。さらに、図1(B)に示すように、このプリンタ100は、制御部200と、印刷エンジン300と、を備えている。
制御部200は、CPU210と、ROM220と、RAM230と、を備えるコンピュータである。この制御部200は、プリンタ100の各構成要素を制御する。印刷エンジン300は、与えられた印刷データに応じて印刷を実行する印刷機構である。印刷機構としては、インク滴を印刷媒体に吐出して画像を形成する印刷機構や、トナーを印刷媒体上に転写・定着させて画像を形成する印刷機構等の種々の印刷機構を採用可能である。ディスプレイ40は、画像を含む種々の情報を表示する。ディスプレイ40としては、液晶ディスプレイや有機ELディスプレイ等の種々のディスプレイを採用可能である。操作パネル50は、停止ボタン52と、選択ボタン54と、再生ボタン56と、送りボタン58と、戻しボタン59と、を含む複数のボタンを有している。いずれかのボタンが押下された場合には、そのボタンが押下されたことを示す信号が、制御部200に供給される。操作パネル50は、ユーザの指示を受ける入力部として機能する。このような入力部としては、操作パネル50に限らず、タッチパネル等のユーザの指示を受ける種々の入力装置を採用可能である。メモリカードインターフェース70は、メモリカードMCを挿入するスロットMSを含んでいる。メモリカードMCに格納されたデータは、メモリカードインターフェース70を介して、制御部200によって読み出される。
図2は、ROM220(図1)に格納されたモジュールを示す説明図である。第1実施例では、選択モジュール400と、フィルタモジュール420と、出力モジュール430と、がROM220に格納されている。これらのモジュールは、CPU210によって実行されるプログラムである。また、各モジュールは、RAM230(図1(B))を介して種々のデータをやりとりすることが可能である。
図3は、フィルタモジュール420を示す説明図である。フィルタモジュール420は、色成分変換モジュール421と、平滑化モジュール424と、を含んでいる。なお、図2、図3に示す各モジュールの機能については、後述する。
図4は、動画像処理の手順を示すフローチャートである。この動画像処理は、制御部200(図1)によって実行される。この動画像処理では、動画像に含まれる複数の静止画像の中からユーザによって対象画像が指定され、そして、対象画像が印刷される。制御部200は、スロットMS(図1)に動画像データを格納するメモリカードMCが挿入されたことに応じて、自動的に動画像処理を開始する。あるいは、制御部200は、ユーザの指示に従って、動画像処理を開始してもよい。
最初のステップS100では、選択モジュール400(図2)が、メモリカードMCから動画像データを取得し、動画像の再生を開始する。動画像データのフォーマットとしては、MPEG(Moving Picture Experts Group)やMotionJPEG等の種々のフォーマットがある。また、スキャン方式としては、プログレッシブとインタレースとがある。第1実施例では、動画像データのフォーマットが、プログレッシブスキャンのMPEGフォーマットであることとしている。このような動画像データは、複数のピクチャを含んでいる。このようなピクチャには、いわゆるIピクチャ、Pピクチャ、Bピクチャが含まれ得る(図示省略)。第1実施例では、1枚のピクチャが、ある時点における1枚のフレーム画像(静止画像)を表している。
選択モジュール400は、各ピクチャをデコードすることによって、時系列に沿って並ぶ複数の静止画像を表す静止画像データ(フレーム画像データ)を取得し、取得した静止画像データが表す静止画像(フレーム画像)をディスプレイ40に表示させる。そして、選択モジュール400は、表示されるフレーム画像を時系列に沿った順番に切り換えることによって、動画像を再生する。
よく知られているように、MPEGフォーマットのピクチャは、画素ブロック毎に符号化されている。選択モジュール400は、画素ブロック毎にデータを復号(デコード)することによって、フレーム画像データを復元する。
また、図4のステップS100では、ユーザによって対象画像が指定される。第1実施例では、選択ボタン54(図1(B))が押下された時点に表示されているフレーム画像が対象画像として利用される。ユーザは、ディスプレイ40に表示される動画像を見て、好みのショットが表示された時点で選択ボタン54を押下すればよい。選択ボタン54が押下されたことを示す信号は、操作パネル50から制御部200に供給される。以下、この信号を「指定信号」とも呼ぶ。
選択モジュール400は、指定信号の受信に応じて、その時点に表示されていたフレーム画像が対象画像として指定されていることを、認識する。選択モジュール400は、指定信号の受信に応じて、動画像の再生を停止する。そして、選択モジュール400は、対象画像を表す対象画像データ(デコードによって生成された画像データ)を、フィルタモジュール420に供給する。
図4の次のステップS110では、フィルタモジュール420によって、対象画像データに対するフィルタ処理が実行される。このフィルタ処理は、画像データに含まれるノイズを低減する処理である。この処理の詳細については後述する。フィルタ処理が完了したことに応答して、フィルタモジュール420は、処理済みの対象画像データを出力モジュール430に供給する。
次のステップS130では、出力モジュール430は、対象画像データを利用した印刷を開始する。出力モジュール430は、対象画像データを利用して印刷データを生成し、生成した印刷データを印刷エンジン300に供給する。印刷エンジン300は、受信した印刷データを利用して印刷を実行する。印刷が完了したことに応じて、図4の動画像処理は終了する。
図5は、フィルタ処理の手順を示すフローチャートである。最初のステップS500では、色成分変換モジュール421(図3)が、対象画像データを解析することによって、画像データの色成分を変換する。次のステップS510では、平滑化モジュール424は、変換後の各色成分に対して平滑化処理を実行する。以下、最初に色成分変換について説明し、続けて、平滑化処理について説明する。
色成分変換:
図6は、主成分分析の概略を示す説明図である。本実施例では、色成分変換に主成分分析の手法が利用される。主成分分析では、複数種類の成分を総合して新しい成分が算出される。
図中には、2つの成分x1、x2で表されるグラフが示されている。多数の黒ドットは、2つの成分x1、x2で表される測定点MPを示している。このような2成分で表されるデータとしては、種々のデータが挙げられる。例えば、振動する振り子の上から見た位置が挙げられる。この場合、第1成分x1は、第1方向D1の位置を示し、第2成分x2は、第1方向D1とは垂直な第2方向D2の位置を示している。また、測定点MPは、一定時間毎に測定された振り子の位置を示している。
図6のグラフでは、測定点MPの分布形状は、第1方向D1と第2方向D2とのいずれとも斜めに交わる第3方向D3に沿って延びる直線形状である。このような分布は、上から見て、振り子が第3方向D3と平行な直線上を往復運動している場合に得られる。なお、各成分x1、x2にはノイズ(例えば、測定誤差)が含まれているので、測定点MPは、各方向D1、D2に広がっている。
図中には、別の2成分y1、y2も示されている。第1成分y1は、第3方向D3の位置を示し、第2成分y2は、第3方向D3と垂直な方向の位置を示している(すなわち、y1軸はy2軸と直交している)。振り子の運動は、元の2成分x1、x2の代わりに、新たな2成分y1、y2によって表され得る。ここで、振り子は、第3方向D3と平行に運動している。従って、第1成分y1を利用することによって、元の2成分x1、x2の一方のみを利用する場合と比べて、振り子の運動の特徴を詳細に把握することができる。また、これらの新たな2成分y1、y2は、元の2つの成分x1、x2の線形変換によって表される。このように、元の2つの成分x1、x2を総合して得られる新たな第1成分y1は、元の2成分x1、x2のそれぞれと比べて、データの特徴を強く反映している。一方、第2成分y2は、ノイズによる変動を主に表している。
このように、主成分分析では、複数の成分を総合することによって、データの特徴を強く反映した成分が算出される。このような成分は、分散が最大となるような成分を算出することによって、得られる。例えば、図6の例では、測定点MPの分布の分散を種々の方向に沿って見たときに、第1成分y1の第1分散σy12が最大である。また、第2成分y2の第2分散σy22は、第1分散σy12よりも小さい。このように、分散が大きい成分は、データの特徴を強く反映しているということができる。
以上、成分数が2の場合について説明したが、成分数が3以上の場合にも同様に、データの特徴を強く反映した成分が算出される。一般に、主成分分析では、N種類(Nは2以上の整数)の元の成分の線形結合によって、N種類の主成分が表される。各元成分に割り当てられる係数の2乗和は「1」に維持される。また、各主成分の軸は互いに直交する。このような条件下で、分散が最大となるような主成分が算出される(「第1主成分」とも呼ばれる)。また、分散が2番目に大きな成分も算出される(「第2主成分」とも呼ばれる)。このように、分散がL番目(Lは1以上N以下の整数)に大きな主成分(「第L主成分」とも呼ばれる)が、それぞれ、算出される。このような主成分は、元の成分の共分散行列の固有ベクトルを算出することによって、得られることが知られている。1つの固有ベクトルの各要素は、1つの主成分に関する各元成分に割り当てられる係数を、それぞれ表している。
本実施例では、色成分変換モジュール421(図3)は、各画素の色を表すN種類(Nは2以上の整数)の成分から、N種類の主成分を算出する。画像データにおいては、図6に示すグラフのように主成分間の分散の差が極端に大きくなることは少ないが、上述したように、分散が大きい主成分は、画像データの特徴を強く反映している。そこで、本実施例では、各主成分に対して、分散が小さいほど強い平滑化処理が実行される。これにより、画像が過剰にぼやけることを抑制し、そして、ノイズを低減することができる。以下、主成分とノイズとの関係について詳細に説明する。
本実施例では、対象画像データの総画素数がP(Pは2以上の整数)であり、各画素の色がRGBの3成分で表されていることとする。すなわち、対象画像データは、赤成分R(k)と、緑成分G(k)と、青成分B(k)とを含んでいる(kは画素識別番号を示す。k=1〜P)。ここで、以下の数式1で表されるベクトルVxm(k)を考える。
このベクトルVxm(k)の各成分xmR(k)、xmG(k)、xmB(k)は、R、G、Bの各成分を、平均値が「0」になるようにシフトさせた値である(各成分R(k)、G(k)、B(k)の期待値は、平均値と同じである)。また、このベクトルVxm(k)は、k番目の画素の画素値を表している。
ここで、各成分xmR(k)、xmG(k)、xmB(k)には、種々のノイズが含まれている。そこで、各成分xmR(k)、xmG(k)、xmB(k)が、本来の値xoR(k)、xoG(k)、xoB(k)と、ノイズnR(k)、nG(k)、nB(k)との和で表されていると仮定する(本来の値xoR、xoG、xoBと、ノイズnR、nG、nBとは、現実には区別できない)。すると、観測信号を表すベクトルVxm(k)は、本来の値(「真の値」とも呼ぶ)を表すベクトルVxo(k)とノイズを表すベクトルVn(k)とを用いた数式2で表される。
ここで、3つのノイズnR(k)、nG(k)、nB(k)のそれぞれの平均値が「0」であり、3つのノイズnR(k)、nG(k)、nB(k)が、自身以外と相関が無く、そして、各ノイズnR(k)、nG(k)、nB(k)の分散が等しいと仮定する。このような仮定は、種々のノイズに対して、近似的に成立する。特に、色成分に依存せずに生じるノイズに関しては、この仮定は良い近似である。このような仮定の下では、以下の数式3が成立する。
nj(k)はxoi(k)と相関が無いので、「xoi(k)nj(k)」の期待値はゼロである(i、j=R、G、B)。また、「ni(k)nj(k)」の期待値は、「i=j」の場合には、ni(k)の分散σni 2と同じである。なお、上述の仮定の下では、分散σni 2(i=R、G、B)は、同じ値(σn 2)である。
次に、真の値xoR、xoG、xoBの共分散行列Cxoを考える。この行列Cxoは、以下の数式4で表される。
行列Cxoの非対角要素は、異なる色成分間におけるxoi(i=R、G、B)の共分散である。次に、ノイズnR、nG、nBの共分散行列Cnを考える。この行列Cnは、上述の数式3から、以下の数式5で表される。
以上の表記を利用すれば、観測信号xmi(i=R、G、B)のSN比は、以下の数式6で表される。
次に観測信号xmR、xmG、xmBの共分散行列Cxmを考える。この行列Cxmは、以下の数式7で表される
色成分変換モジュール421(図3)は、3つの成分xmi(i=R、G、B)から3つの主成分を算出するために、行列Cxmの固有ベクトルを算出する。固有ベクトルとの算出方法としては、周知の種々の方法を採用可能である。以下の数式8は、固有値λiと固有ベクトルVwiとを示している(i=1、2、3)。
主成分分析において知られているように、各固有値λi(i=1、2、3)は正値である。また、各固有値λiは、各固有ベクトルVwiを用いて得られる主成分の分散と等しい。従って、最も大きな第1固有値λ1に対応する第1固有ベクトルVw1を利用すれば、第1主成分が得られる。そして、2番目に大きな第2固有値λ2に対応する第2固有ベクトルVw2を利用すれば、第2主成分が得られる。そして、3番目に大きな第3固有値λ3に対応する第3固有ベクトルVw3を利用すれば、第3主成分が得られる。
色成分変換モジュール421(図3)は、算出された固有ベクトルVwiを用いて3つの主成分ymi(k)を算出する(i=1、2、3)。主成分を表すベクトルVym(k)は、以下の数式9によって表される。
第1主成分ym1(k)は、3つの観測信号xmR、xmG、xmBの線形結合で表される信号の内で、分散が最大となる信号(成分)を表している。逆に、第3主成分ym3(k)は、3つの観測信号xmR、xmG、xmBの線形結合で表される信号の内で、分散が最小となる信号(成分)を表している。なお、行列Mwは、固有ベクトルVwi(i=1、2、3)を並べて得られる行列を示している。
次に、主成分ym1、ym2、ym3の共分散行列Cymを考える。この行列Cymは、数式7、数式9から、以下の数式10で表される。
ここで、数式10の最後の行に示す行列演算「MwTCxoMw」は、対角行列となる。この理由は以下の通りである。上述の数式7から理解できるように、行列Cxmの固有ベクトルは、行列Cxoの固有ベクトルと同じである(固有値は異なる)。すなわち、行列Cxmの固有ベクトルVwi(i=1、2、3)は、行列Cxoの固有ベクトルでもある。そして、行列Mwは、これらの固有ベクトルVwiを並べて得られる行列である。従って、「MwTCxoMw」の非対角要素は「ゼロ」になる。ここで、行列演算「MwTCxoMw」の3つの対角要素を、以下の数式11に示すように、σyoi 2とおく(i=1、2、3)。
さらに、数式10に示す行列Cymの対角要素は、主成分ymiの分散を示している。そして、数式10の最後の行に示す行列演算「σn 2I」は、ノイズの分散を示している。従って、残りの値σyoi 2(i=1、2、3)は、各主成分ym1、ym2、ym3の分散からノイズの分散を除いた値、すなわち、本来の値の分散を示している。以下、各主成分ym1(k)、ym2(k)、ym3(k)の本来の値を、それぞれ、値yo1(k)、yo2(k)、yo3(k)と呼ぶ。
ここで、以上の表記を利用すれば、主成分ymiの分散σymi 2は、以下の数式12によって表される。
また、主成分ymi(i=1、2、3)のSN比は、以下の数式13で表される。
ここで、上述の数式11において、行列Mwは、固有ベクトルVwiを並べて得られる行列であるので、各値σyoi 2(i=1、2、3)は、行列Cxoの固有値を示している。また、主成分分析の性質から、第1固有値σyo1 2を、共分散行列Cxoの基の成分xoiの分散σxoi 2(i=R、G、B)と比較したときに、以下の数式14が成立する。
従って、第1主成分ym1のSN比を、元の成分xmR、xmG、xmBのSN比よりも向上させることが可能となる(数式6、数式13)。このことは、以下のように言い換えることもできる。上述したように、第1主成分ym1の分散σym1 2は、元成分xmiの分散σxmi 2(i=R、G、B)以上の値に設定される。一方、ノイズの分散は、第1主成分ym1と元成分xmi(i=R、G、B)との間で同じである。その結果、第1主成分ym1のSN比を向上させることができる。
また、主成分分析で知られているように、以下の数式15が成立する。すなわち、分散の和が維持される。
従って、第1主成分ym1に関する分散σyo1 2の最大化によって、他の主成分ym2、ym3に関する分散σyo2 2、σyo3 2は比較的小さな値に設定される。
以上をまとめると、第1主成分ym1の真の値yo1の分散は最も大きく、第1主成分ym1のSN比は最も大きい。このように、第1主成分ym1は、画像データの特徴を最も強く反映している重要な成分であり、ノイズの影響が最も小さい綺麗な成分である。一方、第2主成分ym2と第3主成分ym3とに関しては、第1主成分ym1と比べて、重要性が低く、ノイズの影響も大きい。特に、第3主成分ym3の真の値yo3の分散は最も小さく、第3主成分ym3のSN比は最も小さい。このように、第3主成分ym3は、ノイズの影響を最も強く受けている成分である。このように、色成分変換モジュール421(図3)は、主成分分析の手法を用いることによって、SN比が高く重要性の高い主成分と、SN比が低く重要性の低い主成分と、を算出する。
図7、図8は、主成分算出の一例を示す説明図である。図7は、サンプル画像SSIを示している。サンプル画像SSIは、512*512画素の画像データによって表されている。各画素の色は、RGBの3成分によって表されている。各色成分は0〜255の整数値で表されている。図8は、サンプル画像SSIにノイズを付加することによって得られるノイズ付加画像NSIを示している。ノイズ付加画像NSIでは、RGBのそれぞれの成分に、ノイズが付加されている。ノイズとしては、平均値が「0」であるガウス分布のランダム値が採用されている。ここで、ノイズ付加画像NSIにおいて、RGB各成分のSN比(数式6)が、それぞれ、約10dBとなるように、ノイズが調整されている。このSN比の算出では、サンプル画像SSIの画素値が真の値として利用されている。
図8の下部には、算出された主成分ym1、ym2、ym3と元のRGB成分xmR、xmG、xmBとの関係が示されている。色成分変換モジュール421は、上述のように主成分分析によって、元の成分xmR、xmG、xmBと主成分ym1、ym2、ym3との関係を決定し、そして、対象画像データの各画素の画素値を主成分ym1、ym2、ym3に変換する。平滑化モジュール424(図3)は、各主成分に対する平滑化処理を実行する。
平滑化処理:
平滑化モジュール424(図3)は、3つの主成分ym1、ym2、ym3のそれぞれに対して平滑化処理を実行する。平滑化モジュール424は、強度の異なる3つの平滑化フィルタを利用する。図9(A)〜9(C)は、3つの平滑化フィルタF1、F2、F3を示す説明図である。本実施例では、対象画素の画素値が、対象画素と対象画素の周囲の画素とのそれぞれの画素値に重みを付して得られる重み付き合計値に設定される。各平滑化フィルタF1、F2、F3の要素は重みを表している。中央要素CELを中心とする要素配置は、対象画素を中心とする画素配置と同じである。例えば、中央要素CELは、対象画素の重みを示し、中央要素CELの上の要素UELは、対象画素の上の画素の重みを示している。
平滑化処理の強度(「平滑化強度」とも呼ぶ)の強い順番は、第3成分フィルタF3、第2成分フィルタF2、第1成分フィルタF1の順番である。平滑化強度が強いほど、対象画素と対象画素に隣接する画素との間の画素値の差が小さくなる。また、第1成分フィルタF1は、第1主成分ym1の平滑化に利用され、第2成分フィルタF2は、第2主成分ym2の平滑化に利用され、第3成分フィルタF3は、第3主成分ym3の平滑化に利用される。このように、平滑化モジュール424は、分散が小さいほど強い平滑化処理を実行する。これらの結果、分散の大きい重要な主成分が過剰に平滑化されて画像がぼやけることを抑制することができる。そして、分散の小さな主成分を強く平滑化することによってノイズを低減することができる。すなわち、ノイズ低減と画像ぼやけと色成分との関係を考慮してノイズを低減することができる。
図10は、処理画像EIを示している。この処理画像EIは、図9のフィルタF1、F2、F3を、主成分ym1、ym2、ym3に、それぞれ適用することによって得られる画像である。なお、図5のステップS510では、平滑化モジュール424(図3)は、各主成分ym1、ym2、ym3のそれぞれに対して平滑化処理を実行する。そして、色成分変換モジュール421は、平滑化処理の完了に応答して、処理済みの主成分ym1、ym2、ym3を、RGBに逆変換する。この逆変換には、上述の元成分xmR、xmG、xmBと主成分ym1、ym2、ym3との関係がそのまま利用される。また、この逆変換によって、処理済みの対象画像データが生成される。
図11、図12は比較例における処理画像CI1、CI2を示している。これらの比較例の処理画像CI1、CI2は、ノイズ付加画像NSI(図8)のRGBの各色成分に対して同じ平滑化処理を実行することによって得られる画像である。図13(A)、13(B)は、比較例で利用された平滑化フィルタF11、F12を示している。第1比較フィルタF11は、比較例1の処理画像CI1の生成に利用されたフィルタである。第2比較フィルタF12は、比較例2の処理画像CI2の生成に利用されたフィルタである。第1比較フィルタF11によって、比較的強い平滑化が行われる。第2比較フィルタF12によって、比較的弱い平滑化が行われる。
図10、図11、図12に示すように、実施例では、画像が過剰にぼやけることが抑制され、そして、ノイズが低減されている。一方、比較例1、比較例2では、ノイズが低減されているが、画像が過剰にぼやけている。比較例においても、平滑化強度を低減すれば、画像のぼやけが緩和され得る。ただし、ノイズの低減が不十分になる。
以上の図10、図11、図12の説明は、統計的にも示される。図14は、SN比と分散とを示す表である。図14には、RGBの各色成分毎のSN比と分散とが示されている。SN比の算出では、サンプル画像SSIの画素値が真の値として利用されている。また、SN比の平均値と分散の平均値も示されている。これらの値は、5枚の画像SSI、NSI、EI,CI1、CI2のそれぞれについて示されている。
図14に示すように、実施例(処理画像EI)では、各色成分の分散の過剰な減少が防止されている。すなわち、画像の過剰なぼやけが防止されている。そして、SN比がノイズ付加画像NSIと比べて向上している。すなわち、ノイズが低減されている。
一方、比較例(処理画像CI1、CI2)では、各色成分の分散が過剰に減少している。すなわち、画像が過剰にぼやけている。ここで、平滑化強度を低減すれば、分散の過剰な現象を防止できるが、その代わりに、ノイズの低減が不十分になる。
以上のように、本実施例では、画像が過剰にぼやけることを抑制し、そして、ノイズを低減することができる。
B.平滑化処理の実施例:
上述の実施例において、平滑化処理としては、所定の平滑化フィルタを利用する処理に限らず、種々の処理を採用可能である。例えば、ブロックノイズ強度に応じた平滑化処理を実行してもよい。ブロックノイズは、以下に説明する画像で生じ得るノイズである。すなわち、画像を複数のブロックに分割して符号化する技術が知られている(例えば、JPEG方式やMPEG方式)。このように符号化されたデータからは、ブロック毎の復号によって、画像データが復元される。このような符号−復号処理としては、非可逆性の処理が知られている(例えば、非可逆性圧縮−伸長)。また、このような非可逆性の処理に起因して、復号後の画像データにブロックノイズ(「ブロック歪み」とも呼ばれる)が生じる場合がある。そこで、このようなブロックノイズを効果的に低減するために、ブロックノイズの強度を算出し、その強度が強いほど強い平滑化処理を実行してもよい。以下、ブロックノイズ強度を利用した平滑化処理の実施例について説明する。
B1.ブロックノイズ強度を利用した平滑化処理の第1実施例:
図15は、ピクチャの概要図である。本実施例では、1枚のピクチャPCTは矩形画像を表している。また、1枚のピクチャPCTは、複数の矩形状の画素ブロックBLKに分割され、画素ブロックBLK毎にデータが符号化されている。これらの画素ブロックBLKは、横方向hrと縦方向vtのそれぞれに沿って並んで配置されている。本実施例では、この画素ブロックBLKは、8*8画素のブロックである。選択モジュール400は、画素ブロックBLK毎にデータを復号(デコード)することによって、フレーム画像データを復元する。
なお、ピクチャPCTの横方向hrの画素数と縦方向vtの画素数としては、種々の値が採用され得る。ピクチャPCTによって表される画像(被写体)が同一の場合には、ピクチャPCTの画素数が多いほど、1つの画素ブロックBLKは、被写体のより細かい一部分を表す。また、1つの画素ブロックBLKの画素数としても、種々の値を採用可能である。
データ符号化としては、フレーム間予測、動き補償、DCT(離散コサイン変換)、ハフマン符号化等を組み合わせた種々の符号化を採用可能である。そして、このような符号化によってデータが圧縮され得る。本実施例では、このような符号化として、非可逆性の処理が採用されている(例えば、DCTによって得られる複数の周波数成分の内の一部の高周波数成分が省略される)。その結果、データの復号(デコード)によって、ブロックノイズが生じ得る。例えば、画素ブロックBLKの境界線に沿った色(画素値)の段差が生じる。
なお、フレーム間予測は、ピクチャの種類毎に異なっている。Iピクチャは予測無しの符号化を用いたデータであり、Pピクチャは順方向予測符号化を用いたデータであり、Bピクチャは双方向予測符号化を用いたデータである。Iピクチャに関しては、原画像に対してDCTが実行される。PピクチャとBピクチャとに関しては、フレーム間予測によって生成された予測誤差画像に対してDCTが実行される。
図16は、フィルタモジュール420bを示す説明図である。図3に示すフィルタモジュール420との差違は、ノイズ強度算出モジュール422が追加されている点だけである。
図17は、色成分毎の平滑化処理の詳細な手順を示すフローチャートである。フィルタモジュール420b(図16)は、図17の手順に従って、図5のステップS510の処理を実行する。最初のステップS200では、ノイズ強度算出モジュール422は、第3主成分ym3を利用してブロックノイズ強度を算出する。次のステップS210では、平滑化モジュール424は、ブロックノイズ強度が強いほど強い平滑化処理を実行する。このような平滑化処理によってブロックノイズが低減される(「デブロッキング処理」とも呼ばれる)。以下、最初にブロックノイズ強度について説明し、続けて、平滑化処理について説明する。
ブロックノイズ強度:
図18、図19は、ブロックノイズ強度の算出に利用される画素値を示す説明図である。本実施例では、ノイズ強度算出モジュール422(図16)は、色成分変換モジュール421(図16)によって算出された第3主成分ym3に関するブロックノイズ強度を算出する。すなわち、ブロックノイズ強度の算出に、第3主成分ym3の画素値が利用される。この第3主成分ym3は、3種類の主成分ym1、ym2、ym3のうちで分散が最も小さい主成分である。
図18には、対象画像SIが示されている。以下、対象画像SIに含まれる複数の画素ブロックBLKの内の1つの画素ブロックFに注目して説明を行う(以下、この画素ブロックFを「対象ブロックF」とも呼ぶ)。図中には、対象ブロックFを中心とする3*3の画素ブロックのグループBGが拡大して示されている。この対象ブロックFの上右下左には、上ブロックNと、右ブロックEと、下ブロックSと、左ブロックWとが、配置されている。また、対象ブロックFと、これらの4つの画素ブロックN、E、S、Wと間には、境界線Bn、Be、Bs、Bwが、それぞれ形成されている。以下、横方向hrに延びる境界線Bn、Bsのことを「横境界線Bn、Bs」とも呼ぶ。また、縦方向vtに延びる境界線Bw、Beのことを「縦境界線Bw、Be」とも呼ぶ。
図18には、対象ブロックFの8*8の画素値f11〜f88が示されている。画素値を表す符号は、アルファベットと2つの数字とで構成されている。アルファベットは、画素ブロックを表すアルファベット符号の小文字を示している。最初の数字は、画素ブロック内の縦方向vtの画素位置を示している。最上位置から下に向かって順番に1〜8が割り当てられている。以下、この縦方向vtの画素位置を縦画素位置vtpと呼ぶ。また、最後の数字は、画素ブロック内の横方向hrの画素位置を示している。最左位置から右に向かって順番に1〜8が割り当てられている。以下、この横方向hrの画素位置を横画素位置hrpと呼ぶ。
また、対象ブロックF内の64の画素値f11〜f88は、横方向hrに沿って並ぶ8つの画素列Vf1〜Vf8に分けられる。各画素列Vf1〜Vf8は、縦方向vtに沿って並ぶ8つの画素値で構成される。画素列を表す符号は、「V」に続くアルファベットと数字とで構成されている。アルファベットは、画素ブロックを表すアルファベット符号の小文字を示している。数字は、横画素位置hrpを示している。
以下、対象ブロックFとは異なる他の画素ブロックの画素値に関しても、同じ表記法に基づく符号を用いる。
図19は、左境界線Bwの周辺の画素値を示している。図示された画素値は、この左境界線Bwにおけるブロックノイズ強度の算出に利用される。この左境界線Bwは、左ブロックWの第8列Vw8と対象ブロックFの第1列Vf1とに挟まれている。第8列Vw8の左には第7列Vw7が配置され、第1列Vf1の右には第2列Vf2が配置されている。
ノイズ強度算出モジュール422(図16)は、まず、これらの画素列Vw7、Vw8、Vf1、Vf2を利用することによってMSDS(Mean Square Difference of Slopes)を算出する。このMSDSは、以下に示す数式16によって表されている。
2つの画素列の和は、行列の和と同様に、算出される。また、2つの画素列の差は、行列の差と同様に算出される。換言すれば、各画素列は、8次元の列ベクトルとして演算に利用される。例えば、演算「Vf1−Vw8」によって、i行目の値が「fi1−wi8」であるような8次元の列ベクトルが算出される。また、L2ノルムは、2次のノルムとも呼ばれ、いわゆるユークリッド距離を算出する演算である。一般に、p次(pは1以上の整数)のノルムは以下の数式17によって表されている。
MSDSの算出に利用される境界差分列Vdbは、左境界線Bwを挟んで隣接する2本の画素列Vf1、Vw8の間の差分を表している。このような境界差分列Vdbは、左境界線Bw上における左境界線Bwと垂直な方向の画素値の変化率を表している。画素値の変化率は、単位長さ当たりの画素値の変化量を意味している。本実施例では、1画素当たりの画素値の変化量が、画素値の変化率として利用される。
第1内部差分列Vdfは、対象ブロックFの内部の2本の画素列Vf1、Vf2の間の画素値の差分を表している。これらの画素列Vf1、Vf2は、左境界線Bwに最も近い2本の画素列である(左境界線Bwに隣接する第1画素列Vf1と、この第1画素列Vf1に隣接する第2画素列Vf2)。このような第1内部差分列Vdfは、対象ブロックFの内部における左境界線Bwと垂直な方向の画素値の変化率を表している。
第2内部差分列Vdwは、第1内部差分列Vdfと同様の差分列を、左ブロックWに関して算出したものである。第2内部差分列Vdwの算出には、左ブロックWの内部の、左境界線Bwに最も近い2本の画素列Vw8、Vw7が、利用される。
MSDSは、境界差分列Vdbと、2つの内部差分列Vdf、Vdwの平均との差分を利用して算出される。この差分は、左境界線Bwと垂直な方向に沿ってみたときの、画素値変化率の2次微分を表している。このような差分(2次微分)は、左境界線Bw上での変化率が、その両側の変化率と比べて大きく外れている場合に大きくなる。すなわち、このような差分(2次微分)は、左境界線Bwに沿ってブロックノイズが生じている場合に、大きくなる。
図20は、左境界線Bwと垂直な方向に沿ってみたときの画素値の変化の一例を示すグラフである。横軸は、横方向hrの画素位置を示している。横軸に添えられた数値は、横画素位置hrpを示している。縦軸は画素値を示している。本実施例では、画素値は、0〜255の範囲内の整数値に設定される。グラフには、左境界線Bwを垂直に横切る代表的な1つの行が示されている。このグラフには、左境界線Bwに近い6つの画素列の画素値が示されている(Vw6〜Vw8、Vf1〜Vf3)。図20のグラフでは、画素位置が左ブロックWから対象ブロックFに向かって変化したときに、画素値がゆっくりと低減している。このような緩やかな画素値の変化は、例えば、画素ブロックW、Fが、緩やかなグラデーションを表している場合に、生じる。
図20では、各画素ブロックF、Wの内部での画素値の変化は小さく、内部差分列Vdf、Vdwが示す差分は「3」である。一方、境界差分列Vdbが示す差分は、画素ブロック内部の差分よりも大きな「6」である。このように、左境界線Bw上で画素値がステップ状に変化している。ここで、左境界線Bwを横切る他の7つの行についても、画素値が同様に変化していることとする。すなわち、左境界線Bwと垂直な方向のステップ状の画素値変化が、左境界線Bwに沿って並んで形成されている。
このような左境界線Bwに沿ったステップ状の画素値変化は、原画像には無い場合であっても、非可逆性符号化と復号とによって生じ得る(ブロックノイズ)。また、このような左境界線Bwに沿って並ぶステップ状の画素値変化は、図20に示すように画素値がゆっくり変化する領域においては、特に目立ちやすい(見た目のブロックノイズ強度が強い)。また、図19に示すように、MSDSの算出に利用される差分列Vdb、Vdf、Vdwは、いずれも、左境界線Bwと平行な複数の画素列の間の画素値差分を表している。従って、MSDSは、左境界線Bwに沿ってブロックノイズが生じた場合に、大きくなる。
図21は、画素値の変化の別の例を示すグラフである。縦軸と横軸とは、図20の例と同じである。図21の例では、図20の例とは異なり、画素位置が左ブロックWから対象ブロックFに向かって変化したときに、画素値が急激に低減している。特に、画素ブロックW、Fの内部においても画素値が大きく変化している。このような急な画素値の変化は、例えば、画素ブロックW、Fが、被写体の左境界線Bwと平行に延びるエッジを表している場合に、生じる。特に、画素ブロックW、Fが、エッジの多い被写体(例えば、芝生)を表す場合には、ブロック内部での画素値の変化が大きくなる。
図21では、内部差分列Vdf、Vdwが示す差分は「10」である。また、境界差分列Vdbが示す差分は「16」である。左境界線Bwを横切る他の7つの行についても、画素値が同様に変化していることとする。すなわち、比較的大きな画素値変化が、左境界線Bwに沿って並んで形成されている。ところが、左境界線Bwの周辺での変化(10)に対する左境界線Bw上の変化(16)の割合(16/10)は、図20の例(6/3)と比べて大幅に小さい。このように、変化の割合が小さい場合には、ブロックノイズは目立ちにくい(見た目のブロックノイズ強度が弱い)。ところが、上述のMSDSは、大きくなってしまう。
このようなMSDSの特性は、数学的にも示される。以下に示す数式18は、MSDSを表す数式16に三角不等式を適用して得られる関係式を示している。
ブロック内部エッジ強度BES(以下「エッジ強度BES」とも呼ぶ)は、各ブロックF、Wの内部における、左境界線Bwと垂直な方向の画素値の変化率の大きさを表している。図21に示すように各画素ブロックF、Wが画像中の被写体のエッジを表している場合に、このエッジ強度BESは大きくなる。従って、エッジ強度BESは、画素ブロック内部のエッジ強度を表していると考えることができる。また、数式18に示すように、このエッジ強度BESが大きい場合には、MSDSの平方根の上限値が大きくなる。すなわち、エッジ強度BESが大きい場合には、ブロックノイズが目立たない場合であっても、MSDSが大きくなり得る。
そこで、本実施例では、以下に示す数式19で表される値をブロックノイズ強度BNSとして利用する。
数式19によって示されるように、ブロックノイズ強度BNSは、MSDSの平方根をエッジ強度BESで割って得られる値である。その結果、画素ブロック内部での画素値の変化率(Vdw、Vdf)が大きいほど、ブロックノイズ強度BNSは小さくなる。例えば、図20に示すように画素値の変化が小さい領域中の左境界線Bwに関しては、大きなブロックノイズ強度BNSが算出される。また、図21に示すように画素値の変化が大きい領域中の左境界線Bwに関しては、小さなブロックノイズ強度BNSが算出される。これらの結果、ブロックノイズ強度BNSは、見た目のブロックノイズ強度を適切に反映可能である。
なお、エッジ強度BESは「0」になり得る。この場合には、「MSDS>0」が成立する場合には、BNSが所定の最大値に設定される。この所定の最大値は、エッジ強度BESが「0」ではない場合のブロックノイズ強度BNSの定義上の最大値である。この定義上の最大値は、例えば、エッジ強度BESが0より大きな最小値「1」であり、Vdbの8つの要素の全てが最大値「255」である場合に得られる仮想的なBNSと同じである。エッジ強度BESが「1」である場合としては、例えば、第1内部差分列Vdfの8つの要素の内の、1つの要素が「1」であり、他の7つの要素が「0」であり、さらに、第2内部差分列Vdwの8つの要素の全てが「0」である場合がある。なお、エッジ強度BESが「0」であっても、「MSDS>0」が成立しない場合には、BNSは「0」に設定される。
以上、左境界線Bwのブロックノイズ強度BNSについて説明したが、他の境界線Bn、Be、Bs(図18)についても、同様に、ブロックノイズ強度BNSが算出される。ここで、横境界線Bn、Bsに関しては、画素列の代わりに、画素行が、8次元ベクトルとして演算に利用される。
平滑化処理:
次に平滑化処理について説明する。図22は、平滑化フィルタを示す説明図である。平滑化モジュール424(図16)は、この平滑化フィルタSF1を利用して、対象画像に含まれる複数の画素のそれぞれに対して平滑化処理を実行する。この平滑化フィルタSF1は、3*3のマトリックスである。本実施例では、対象画素の画素値が、対象画素と対象画素の周囲の8つの画素との9つの画素の画素値の重み付き合計値に設定される。中央要素CELを中心とする9つの要素の配置は、対象画素を中心とする9つの画素の配置と同じである。例えば、中央要素CELは、対象画素の重みを示し、中央要素CELの上の要素UELは、対象画素の上の画素の重みを示している。
平滑化フィルタSF1の各要素は、正規化強度αを利用して表されている。この正規化強度αは、上述のブロックノイズ強度BNSを、0〜1の範囲に正規化した値である。このような正規化は、ブロックノイズ強度BNSを、その最大値(MAX(BNS))で割ることによって、行われる。また、図22に示す「1/Σ(各要素)」は、図示されたマトリックスの各要素(例えば、α、α2、α4)を、9つの要素の合計値で割ることを意味している。これにより、平滑化フィルタSF1の各要素は、9つの要素の合計値が「1」となるように設定される。その結果、平滑化処理後の画素値が、過剰に大きな値や、過剰に小さな値に設定されることが防止される。なお、αが「ゼロ」である場合には、平滑化モジュール424は、平滑化処理を実行しない。
また、平滑化フィルタSF1の各要素は、正規化強度αのべき乗で表されている。その指数は、中央要素CEL(対象画素)からの距離が遠いほど大きい値に設定されている。具体的には、中央要素CELの指数は「1」であり、上下左右の要素の指数は「2」であり、4隅の要素の指数は「4」である。その結果、各要素は、中央要素CEL(対象画素)から遠いほど小さくなる。
図23は、平滑化フィルタSF1の要素と、中央要素CEL(対象画素)からの距離との関係を示すグラフである。横軸は距離を示し、縦軸は要素を示している。正規化強度αが大きい場合には、距離の変化に対する要素の変化が小さくなる。すなわち、対象画素の重みと、周辺の画素の重みとの差が小さい。その結果、平滑化の強度が強くなる、すなわち、対象画素と周辺画素との間の画素値の差分が大幅に小さくなる。一方、正規化強度αが小さい場合には、距離の変化に対する要素の変化が大きくなる。すなわち、周辺の画素の重みは、対象画素の重みと比べて、大幅に小さい。その結果、平滑化の強度が弱くなる、すなわち、対象画素と周辺画素との間の画素値の差分の減少量は小さい。
図24は、平滑化処理の概要を示す説明図である。図中には対象画像SIが示されている。また、図中には、対象画像SIに含まれる複数の画素ブロックBLKの内の第1画素ブロックBLK1と第2画素ブロックBLK2との平滑化処理の概要が示されている。
上述したように1つの画素ブロックは4つの境界線Bn、Be、Bs、Bwに囲まれており、ノイズ強度算出モジュール422(図16)は、各境界線毎にブロックノイズ強度BNSを算出する。その結果、1つの画素ブロックに関連して4つの正規化強度αが利用可能である。そこで、本実施例では、平滑化モジュール424は、4つの正規化強度から算出される代表値を利用して、1つの画素ブロックの平滑化処理を実行する。代表値としては、4つの正規化強度の関数で表される種々の値を採用可能である(例えば、平均値、最大値、中央値(メディアン)、最小値)。本実施例では、最大値が採用される。最大値を採用すれば、ブロックノイズが残ることを抑制できる。
例えば、第1画素ブロックBLK1の4つの境界線Bn1、Be1、Bs1、Bw1に対して、4つ正規化強度αn1、αe1、αs1、αw1が、それぞれ算出される。平滑化モジュール424は、これらの正規化強度αn1、αe1、αs1、αw1の代表値αf1を用いて平滑化フィルタSF1(図22)の各要素を決定する。本実施例では、代表値αfとして最大値が利用される。そして、決定された平滑化フィルタSF1を用いて、第1画素ブロックBLK1内の全ての画素の平滑化処理を実行する。
同様に、第2画素ブロックBLK2の4つの境界線Bn2、Be2、Bs2、Bw2に対して、4つ正規化強度αn2、αe2、αs2、αw2が、それぞれ算出される。平滑化モジュール424は、これらの正規化強度の代表値αf2を用いて、平滑化フィルタSF1の各要素を決定する。そして、決定された平滑化フィルタSF1を用いて、第2画素ブロックBLK2内の全ての画素の平滑化処理を実行する。
ここで、第1代表強度αf1が第2代表強度αf2よりも大きいと仮定する。この場合には、第1画素ブロックBLK1の画素には強い平滑化処理が実行され、第2画素ブロックBLK2には弱い平滑化処理が実行される。
他の画素ブロックの画素についても、同様に、平滑化処理が実行される。このように、ノイズ強度算出モジュール422(図16)は、対象画像SIに含まれる複数の境界線のそれぞれに関するブロックノイズ強度BNSを算出する(図17:S200)。そして、平滑化モジュール424は、画素ブロック毎に、平滑化フィルタSF1を決定して、画素ブロック内の各画素の平滑化処理を実行する(図17:S210)。なお、1つの画素ブロックに関連するブロックノイズ強度BNSの算出と平滑化処理とが、画素ブロックを切り替えつつ繰り返し実行されてもよい。また、対象画像SIの縁の画素ブロックに関しては、他の画素ブロックと接する一部の境界線の正規化強度α(ブロックノイズ強度BNS)を利用すればよい。例えば、左上隅の画素ブロックBLK3に関しては、右境界線Be3の正規化強度αe3と、下境界線Bs3と正規化強度αs3とから算出される代表値を利用すればよい。
以上のように、本実施例では、正規化強度αが大きいほど、すなわち、ブロックノイズ強度BNSが大きいほど、平滑化の強度は強くなる。その結果、ブロックノイズ強度BNSが小さい領域では、過剰な平滑化が抑制されるので、画像がぼやけることを抑制できる。そして、ブロックノイズ強度BNSが大きい領域では、強い平滑化によって、ブロックノイズを低減することができる。
以上、第3主成分ym3の平滑化について説明した。他の主成分ym1、ym2に関しても、第3主成分ym3と同様に、平滑化モジュール424は、代表値αfに応じた強度で平滑化処理を実行する。ただし、各画素位置における平滑化の強度は、主成分の分散が小さいほど強い。
図25は、ノイズ強度と平滑化強度との関係を示すグラフである。横軸はブロックノイズ強度αfを示し、縦軸は平滑化の強度αを示している。ブロックノイズ強度αfは、ブロック毎に算出された正規化強度の代表値を示している(図24)。平滑化の強度は、図22に示すフィルタの要素の決定に利用される値αを示している。また、第1平滑化強度α1は、第1主成分ym1に適用され、第2平滑化強度α2は、第2主成分ym2に適用され、第3平滑化強度α3は、第3主成分ym3に適用される。
各平滑化強度α1、α2、α3のそれぞれは、ブロックノイズ強度αfが強いほど強くなるように予め設定されている。なお、上述したように、第3主成分ym3の強度α3としては、代表値αfが、そのまま、利用される。さらに、ブロックノイズ強度αfが同じ場合に、第2平滑化強度α2は、第3平滑化強度α3よりも小さくなるように設定され、第1平滑化強度α1は、第2平滑化強度α2よりも小さくなるように設定されている。これらの結果、個々の画素位置において、分散が最小の第3主成分ym3には、最強の平滑化処理が実行される。そして、個々の画素位置において、各主成分ym1、ym2、ym3に対する平滑化処理の強度は、分散が小さいほど強い。これらの結果、画像が過剰にぼやけることを抑制し、そして、ノイズを低減することができる。
なお、強度α1、α2の決定方法としては、種々の方法を採用可能である。例えば、第3平滑化強度α3に、1より小さな所定係数を乗じて得られる値を、強度α1、α2として利用してもよい。また、第3平滑化強度α3から正の所定値を引いて得られる値を、強度α1、α2として利用してもよい。
B2.ブロックノイズ強度を利用した平滑化処理の第2実施例:
図26は、平滑化処理の別の実施例の概要を示す説明図である。図24に示す実施例との差違は、画素ブロック内の画素位置が境界線に近いほど、平滑化の強度を強くしている点だけである。装置構成と処理手順とは、図1、図2、図16、図17に示す実施例と同じである。
図中には、平滑レベルマトリクスSLの一例が示されている。この8*8のマトリクスSLは、画素ブロック内の各画素位置における平滑化のレベルを示している。図26の例では、レベルは1〜4のいずれかに設定されている。大きいレベルは、強い平滑化を意味している。また、レベルは、画素ブロックの境界線Bn、Be、Bs、Bwに近いほど大きな値に設定されている。
また、図中には、図18と同様の対象画像SIと画素ブロックグループBGとが示されている。平滑化モジュール424(図16)は、4つの境界線Bn、Be、Bs、Bwのそれぞれに対応する4つの正規化強度αn、αe、αs、αwから代表正規化強度αfを決定する。そして、平滑化モジュール424は、代表正規化強度αfに、係数「SLe/4」を乗じて得られる値αfpに基づいて、各画素位置における平滑化フィルタSF1(図22)を決定する。ここで、代表正規化強度αfとしては、図24に示す実施例で説明した種々の代表値(例えば、最大値)を採用可能である。また、要素SLeは、平滑レベルマトリクスSLの要素(レベル)である。
図中には、下境界線Bsに接する第1画素PXaの第1平滑化フィルタSFaと、画素ブロックの中央部の第2画素PXbの第2平滑化フィルタSFbと、が示されている。第1平滑化フィルタSFaの決定に利用される要素SLeは「4」である。その結果、値αfpが代表正規化強度αfと同じになるので、平滑化の強度が強くなる。一方、第2平滑化フィルタSFbの決定に利用される要素SLeは「1」である。その結果、値αfpが代表正規化強度αfの1/4となるので、平滑化の強度が弱くなる。
以上のように、第2実施例では、境界線に接している画素に対しては、画素ブロックの中央の画素と比べて強い平滑化処理が実行されるので、境界線の近傍に生じたブロックノイズを低減し、そして、画素ブロックの中央部分の画像がぼやけることを抑制できる。また、第2実施例では、画素ブロック内の画素位置が境界線に近いほど平滑化の強度が強くなるように、複数の段階に分けて平滑化の強度が変化する。従って、画素ブロック内で平滑化強度がステップ状に大きく変化することが抑制される。その結果、画素ブロック内に、このような強度の大きな変化に起因するノイズが生じることを抑制できる。
なお、平滑化のレベルとしては、図26に示す実施例に限らず、種々のレベルを採用可能である。一般には、平滑化モジュール424(図16)は、画素ブロックの境界線に近いほど強くなるように平滑化の強度を設定することが好ましい。
また、平滑化モジュール424(図16)は、図25に示す実施例と同様に、第3主成分ym3の平滑化強度から、他の主成分ym1、ym2の平滑化強度を決定すればよい。
B3.ブロックノイズ強度を利用した平滑化処理の第3実施例:
図27は、平滑化処理の別の実施例の概要を示す説明図である。図24に示す実施例との差違は、代表正規化強度αfの代わりに、画素ブロック内の画素位置に応じた補間によって算出された正規化強度を利用する点だけである。装置構成と処理手順とは、図1、図2、図16、図17に示す実施例と同じである。
図27には、ある対象画素PXxの平滑化処理の概要が示されている。本実施例では、平滑化モジュール424(図16)は、横方向hrの線形補間によって横正規化強度αph1を算出し、縦方向vtの線形補間によって縦正規化強度αpv1を算出する。
横正規化強度αph1は、左境界線Bwの左正規化強度αwと、右境界線Beの右正規化強度αeとから算出される。左境界線Bwに接する画素位置(hrp=1)では、横正規化強度αph1は左正規化強度αwに設定される。右境界線Beに接する画素位置(hrp=8)では、横正規化強度αph1は右正規化強度αeに設定される。間の画素位置(hrp=2〜7)では、横正規化強度αph1は線形補間によって決定される。その結果、対象画素PXxが左境界線Bwに近いほど、横正規化強度αph1は左正規化強度αwに近くなる。そして、対象画素PXxが右境界線Beに近いほど、横正規化強度αph1は右正規化強度αeに近くなる。
縦正規化強度αpv1は、上境界線Bnの上正規化強度αnと、下境界線Bsの下正規化強度αsとから算出される。上境界線Bnに接する画素位置(vtp=1)では、縦正規化強度αpv1は上正規化強度αnに設定される。下境界線Bsに接する画素位置(vtp=8)では、縦正規化強度αpv1は下正規化強度αsに設定される。間の画素位置(vtp=2〜7)では、縦正規化強度αpv1は線形補間によって決定される。その結果、対象画素PXxが上境界線Bnに近いほど、縦正規化強度αpv1は上正規化強度αnに近くなる。そして、対象画素PXxが下境界線Bsに近いほど、縦正規化強度αpv1は下正規化強度αsに近くなる。
平滑化モジュール424(図16)は、横正規化強度αph1から平滑化フィルタSF1を決定し、この平滑化フィルタSF1を利用して横平滑画素値SPVh1を算出する。そして、平滑化モジュール424は、縦正規化強度αpv1から平滑化フィルタSF1を決定し、この平滑化フィルタSF1を利用して縦平滑画素値SPVv1を算出する。そして、平滑化モジュール424は、これらの平滑画素値SPVh1、SPVv1の平均値SPV1を、対象画素PXxの最終的な画素値として採用する。
以上説明した第3実施例の平滑化処理は、以下のように言い換えることができる。すなわち、平滑化モジュール424(図16)は、4つの正規化強度αn、αe、αs、αwに、対象画素PXxに近いほど大きくなる重みを付すことによって、各正規化強度αn、αe、αs、αwを平滑化処理に利用している。その結果、ブロックノイズ強度BNS(正規化強度α)が大きい境界線に近い画素に対しては、強い平滑化処理が実行されるので、ブロックノイズを低減することができる。そして、ブロックノイズ強度BNSの強い境界線から遠い画素に対して強い平滑化処理が実行されることが抑制されるので、過剰に画像がぼやけることを抑制できる。
なお、平滑化モジュール424(図16)は、図25に示す実施例と同様に、第3主成分ym3の平滑化強度(正規化強度αph1、αpv1)から、他の主成分ym1、ym2の平滑化強度を決定すればよい。
B4.ブロックノイズ強度を利用した平滑化処理の第4実施例:
図28は、平滑化処理の別の実施例の概要を示す説明図である。図24に示す実施例との差違は、各正規化強度αn、αe、αs、αwを平滑化処理に利用するために、画素ブロック内の画素位置に応じて決まる重みを各正規化強度αn、αe、αs、αwに付す点である。装置構成と処理手順とは、図1、図2、図16、図17に示す実施例と同じである。
本実施例では、平滑化モジュール424(図16)は、横正規化強度αph2と縦正規化強度αpv2とを算出する。横正規化強度αph2は、左境界線Bwの左正規化強度αwと、右境界線Beの右正規化強度αeとの重み付き合計値である。図28の中段のグラフは、各正規化強度αw、αeの重み(縦軸)と、横画素位置hrp(横軸)との関係を示している。黒丸は左正規化強度αwの重みを示し、白丸は右正規化強度αeの重みを示している。左正規化強度αwの重みは左境界線Bwに近いほど大きく、右正規化強度αeの重みは右境界線Beに近いほど大きい。また、横画素位置hrpが左境界線Bwよりも右境界線Beに近い範囲では(5〜8)、左正規化強度αwの重みはゼロに設定されている。横画素位置hrpが右境界線Beよりも左境界線Bwに近い範囲では(1〜4)、右正規化強度αeの重みはゼロに設定されている。これらの結果、横画素位置hrpが右境界線Beよりも左境界線Bwに近い範囲では(1〜4)、左正規化強度αwに重みを乗じた値が横正規化強度αph2として利用される。横画素位置hrpが左境界線Bwよりも右境界線Beに近い範囲では(5〜8)、右正規化強度αeに重みを乗じた値が横正規化強度αph2として利用される。
縦正規化強度αpv2は、上境界線Bnの上正規化強度αnと、下境界線Bsの下正規化強度αsとの重み付き合計値である。図28の下段のグラフは、各正規化強度αn、αsの重み(縦軸)と、縦画素位置vtp(横軸)との関係を示している。黒丸は上正規化強度αnの重みを示し、白丸は下正規化強度αsの重みを示している。上正規化強度αnの重みは上境界線Bnに近いほど大きく、下正規化強度αsの重みは下境界線Bsに近いほど大きい。また、縦画素位置vtpが上境界線Bnよりも下境界線Bsに近い範囲では(5〜8)、上正規化強度αnの重みはゼロに設定されている。縦画素位置vtpが下境界線Bsよりも上境界線Bnに近い範囲では(1〜4)、下正規化強度αsの重みがゼロに設定されている。これらの結果、縦画素位置vtpが下境界線Bsよりも上境界線Bnに近い範囲では(1〜4)、上正規化強度αnに重みを乗じた値が縦正規化強度αpv2として利用される。縦画素位置vtpが上境界線Bnよりも下境界線Bsに近い範囲では(5〜8)、下正規化強度αsに重みを乗じた値が縦正規化強度αpv2として利用される。
平滑化モジュール424(図16)は、横正規化強度αph2から平滑化フィルタSF1を決定し、この平滑化フィルタSF1を利用して横平滑画素値SPVh2を算出する。そして、平滑化モジュール424は、縦正規化強度αpv2から平滑化フィルタSF1を決定し、この平滑化フィルタSF1を利用して縦平滑画素値SPVv2を算出する。そして、平滑化モジュール424は、これらの平滑画素値SPVh2、SPVv2の平均値SPV2を、最終的な画素値として採用する。
以上のように、第4実施例では、平滑化モジュール424(図16)は、4つの正規化強度αn、αe、αs、αwに、対象画素に近いほど大きくなる重みを付すことによって、各正規化強度αn、αe、αs、αwを平滑化処理に利用している。その結果、ブロックノイズ強度BNSが(正規化強度α)が大きい境界線に近い画素に対しては、強い平滑化処理が実行されるので、ブロックノイズを低減することができる。そして、ブロックノイズ強度BNSが小さい境界線に近い画素に対しては、弱い平滑化処理が実行されるので、過剰に画像がぼやけることを抑制できる。
また、図28に示す実施例では、境界線に接している画素に対しては、画素ブロックの中央の画素と比べて強い平滑化処理が実行されるので、境界線の近傍に生じたブロックノイズを低減し、そして、画素ブロックの中央部分の画像がぼやけることを抑制できる。
なお、図28では、横画素位置hrpが「1」の場合と「8」の場合とで重みが同じ「4/4」である。一方、左正規化強度αwは、右正規化強度αeと異なり得る。従って、実際の平滑化の強度は、横画素位置hrpが「1」の場合と「8」の場合との間で、異なり得る。これは、縦方向vtについても同様である。このように、本実施例では、最寄りの境界線までの距離が同じ場合であっても、実際の平滑化の強度は、最寄りの境界線毎に異なり得る。換言すれば、最寄りの境界線が同じである画素のグループ内において、画素が境界線に近いほど平滑化の強度が強い。
なお、平滑化モジュール424(図16)は、図25に示す実施例と同様に、第3主成分ym3の平滑化強度(正規化強度αph2、αpv2)から、他の主成分ym1、ym2の平滑化強度を決定すればよい。
B5.ブロックノイズ強度を利用した平滑化処理の第5実施例:
図29は、平滑化処理の別の実施例の概要を示す説明図である。上述の各実施例との差違は、異方性の平滑化フィルタが利用される点である。図29には、横平滑化フィルタSFhと縦平滑化フィルタSFvとが示されている。装置構成と処理手順とは、図1、図2、図16、図17に示す実施例と同じである。
横平滑化フィルタSFhは、図22に示す平滑化フィルタSF1において、中央要素CELと中央要素CELの左右の要素とをそのまま維持し、他の要素をゼロに設定したものと同じである。この横平滑化フィルタSFhを利用すれば、横方向hrに沿って画素を辿ったときの画素値の変化を小さくすることができる(以下「横方向hrに沿った平滑化」あるいは「横平滑化」とも呼ぶ)。
横平滑化フィルタSFhの要素の決定には、図22で説明した正規化強度αの代わりに横正規化強度αph3が利用される。本実施例では、横正規化強度αph3として、左正規化強度αwと右正規化強度αeとの平均値が利用される(これらの正規化強度αw、αeは、縦境界線Bw、Beでの強度である(図26))。この横正規化強度αph3は、1つの画素ブロック内の全ての画素に対して共通に利用される。
縦平滑化フィルタSFvは、図22に示す平滑化フィルタSF1において、中央要素CELと中央要素CELの上下の要素とをそのまま維持し、他の要素をゼロに設定したものと同じである。この縦平滑化フィルタSFvを利用すれば、縦方向vtに沿って画素を辿ったときの画素値の変化を小さくすることができる(以下「縦方向vtに沿った平滑化」あるいは「縦平滑化」とも呼ぶ)。
縦平滑化フィルタSFvの要素の決定には、図22で説明した正規化強度αの代わりに縦正規化強度αpv3が利用される。本実施例では、縦正規化強度αpv3として、上正規化強度αnと下正規化強度αsとの平均値が利用される(これらの正規化強度αn、αsは、横境界線Bn、Bsでの強度である(図26))。この縦正規化強度αpv3は、1つの画素ブロック内の全ての画素に対して共通に利用される。
平滑化モジュール424(図16)は、横正規化強度αph3と縦正規化強度αpv3とを算出する。そして、平滑化モジュール424は、横平滑化フィルタSFhを利用して横平滑画素値SPVh3を算出し、縦平滑化フィルタSFvを利用して縦平滑画素値SPVv3を算出し、これらの平滑画素値SPVh3、SPVv3の平均値SPV3を対象画素の最終的な画素値として採用する。
図29の下段に示す平滑化フィルタSF3は、2つの平滑化フィルタSFh、SFvを総合して1つのフィルタにまとめたものである。図示するように、フィルタSF3の要素は、横方向hrと縦方向vtとの間で非対称である。このように、本実施例では、平滑化モジュール424(図16)は、横方向hrと縦方向vtとで強度が異なる異方性の平滑化処理を実行する。その結果、一方向の画素値変化を示すブロックノイズの強度が強いことに起因して、その方向と垂直な方向の平滑化の強度が過剰に強くなることを抑制できる。
特に、本実施例では、横平滑化の強度は、横正規化強度αph3が大きいほど、強い。この結果、横平滑化の強度を、横方向hrの画素値変化を示すブロックノイズ強度に応じて適切に調整することができる。同様に、縦平滑化の強度は、縦正規化強度αpv3が大きいほど、強い。この結果、縦平滑化の強度を、縦方向vtの画素値変化を示すブロックノイズの強度に応じて適切に調整することができる。
なお、横正規化強度αph3としては、横方向hrに沿って画素を辿ったときの画素値の変化の大きさ(すなわち、縦方向vtに沿って延びるブロックノイズの強度)を示すような種々の値を採用可能である。例えば、図27の横正規化強度αph1や、図28の横正規化強度αph2を、そのまま採用してもよい。この場合には、画素ブロック内の画素位置に応じて横正規化強度αph3は変わり得る。一般には、横正規化強度αph3は、縦境界線Bw、Beの正規化強度αw、αeの内の少なくとも一方を利用して決定されることが好ましい。こうすれば、強いブロックノイズの延びる方向に適合した平滑化処理が実行されるので、画像がぼやける等の不具合の発生を抑制しつつブロックノイズを低減することができる。
同様に、縦正規化強度αpv3としては、縦方向vtに沿って画素を辿ったときの画素値の変化の大きさ(すなわち、横方向hrに沿って延びるブロックノイズの強度)を示すような種々の値を採用可能である。例えば、図27の縦正規化強度αpv1や、図28の縦正規化強度αpv2を、そのまま採用してもよい。この場合には、画素ブロック内の画素位置に応じて縦正規化強度αpv3は変わり得る。一般には、縦正規化強度αpv3は、横境界線Bn、Bsの正規化強度αn、αsの内の少なくとも一方を利用して決定されることが好ましい。
なお、平滑化モジュール424(図16)は、図25に示す実施例と同様に、第3主成分ym3の平滑化強度(正規化強度αph3、αpv3)から、他の主成分ym1、ym2の平滑化強度を決定すればよい。
B6.ブロックノイズ強度を利用した平滑化処理の第6実施例:
図30は、平滑化処理の別の実施例の概要を示す説明図である。本実施例では、平滑化モジュール424(図16)は、横平滑画素値SPVh4と縦平滑画素値SPVv4との重み付き平均値SPV4を、最終的な平滑画素値として利用する。装置構成と処理手順とは、図1、図2、図16、図17に示す実施例と同じである。
横平滑画素値SPVh4としては、図29に示す横平滑画素値SPVh3が利用される。この横平滑画素値SPVh4(SPVh3)は、横平滑化によって算出された平滑画素値である。また、縦平滑画素値SPVv4としては、図29に示す縦平滑画素値SPVv3が利用される。この縦平滑画素値SPVv4(SPVv3)は、縦平滑化によって算出された平滑画素値である。
図30には、横重みマトリクスHWが示されている。この8*8のマトリクスHWは、画素ブロック内の各画素位置における横平滑画素値SPVh4の重みを示している(「横重みHWe」とも呼ぶ)。縦平滑画素値SPVv4の重みは、「1−横重みHWe」に設定される(「縦重み」とも呼ぶ)。
最も近い境界線が縦境界線Bw、Beである複数の画素HPについては、縦重みよりも横重みHWeが大きい。そして、縦境界線Bw、Beの中央部に近いほど、横重みHWeが大きい。図30の下段に示すように、このような画素HPに関しては、平均値SPV4は、主に横平滑画素値SPVh4によって決まる。
逆に、最も近い境界線が横境界線Bn、Bsである複数の画素VPについては、横重みHWeよりも縦重みが大きい。そして、境界線Bn、Bsの中央部に近いほど、縦重みが大きい(横重みHWeが小さい)。図30の下段に示すように、このような画素VPに関しては、平均値SPV4は、主に縦平滑画素値SPVv4によって決まる。
横境界線Bn、Bsからの距離と、縦境界線Bw、Beからの距離が同じである画素については、縦重みと横重みHWeとが同じ「0.5」である。また、画素ブロックの中央部の4つの画素についても、縦重みと横重みHWeとが同じ「0.5」である。
図31は、平滑化フィルタを示す説明図である。この平滑化フィルタSF4は、上述の横重みマトリクスHWと、図29に示す平滑画素値SPVh3、SPVv3(平滑化フィルタSFh、SFv)とを組み合わせることによって得られる平滑化フィルタである。図30に示す平滑画素値SPVh4、SPVv4として図29に示す平滑画素値SPVh3、SPVv3をそれぞれ利用することは、この平滑化フィルタSF4を用いて平滑画素値を算出することと等価である。
図示するように、フィルタSF4の要素は、横方向hrと縦方向vtとの間で非対称である。特に、縦境界線Bw、Beに近い画素に関しては、横重みHWeが大きいので、横平滑化の強度が強くなる。このような縦境界線Bw、Beの周辺では、横方向hrの画素値変化(縦方向vtに延びるブロックノイズ)が生じやすい。これらの結果、強い横平滑化によってブロックノイズを低減可能である。そして、境界線Bw、Beと平行な縦方向vtの平滑化の強度を弱めることによって画像がぼやけることを抑制できる。
一方、横境界線Bn、Bsに近い画素に関しては、横重みHWeが小さいので、縦平滑化の強度が強くなる。このような横境界線Bn、Bsの周辺では、縦方向vtの画素値変化(横方向hrに延びるブロックノイズ)が生じやすい。これらの結果、強い縦平滑化によってブロックノイズを低減可能である。そして、境界線Bn、Bsと平行な横方向hrの平滑化の強度を弱めることによって画像がぼやけることを抑制できる。
なお、横平滑画素値SPVh4としては、縦方向vtに延びる2本の境界線Bw、Beの少なくとも一方におけるブロックノイズ強度BNSを利用する種々の平滑化によって算出される画素値を採用可能である。同様に、縦平滑画素値SPVv4としては、横方向hrに延びる2本の境界線Bn、Bsの少なくとも一方におけるブロックノイズ強度BNSを利用する種々の平滑化によって算出される画素値を採用可能である。例えば、本実施例の平滑画素値SPVh4、SPVv4として、図27に示す平滑画素値SPVh1、SPVv1を利用してもよく、図28に示す平滑画素値SPVh2、SPVv2を利用してもよい。
これらの場合も、横重みHWeと縦重み(1−HWe)とのそれぞれは、平滑化の強度決定に対する重みを示している。すなわち、横重みHWeは、横平滑画素値SPVh4(SPVh1、SPVh2)の決定に利用された横正規化強度αph1、αph2の重みを示している。縦重み(1−HWe)は、縦平滑画素値SPVv4(SPVv1、SPVv2)の決定に利用された縦正規化強度αpv1、αpv2の重みを示している。すなわち、縦境界線Bw、Beの周辺では、縦正規化強度αpv1、αpv2よりも、横正規化強度αph1、αph2が、大きな重みで平滑化の強度決定に利用される。その結果、縦境界線Bw、Beの周辺で生じやすい横方向hrの画素値変化を示すブロックノイズを効果的に低減可能である。そして、縦正規化強度αpv1、αpv2の重みを小さくすることによって、画像が過剰にぼやけることを抑制できる。
逆に、横境界線Bn、Bsの周辺に関しては、縦正規化強度αpv1、αpv2の重みを大きくすることによって、横境界線Bn、Bsの周辺で生じやすい縦方向vtの画素値変化を示すブロックノイズを効果的に低減可能である。そして、横正規化強度αph1、αph2の重みを小さくすることによって、画像が過剰にぼやけることを抑制できる。
なお、平滑化モジュール424(図16)は、図25に示す実施例と同様に、第3主成分ym3の平滑化強度から、他の主成分ym1、ym2の平滑化強度を決定すればよい。そして、平滑化モジュール424は、横平滑画素値と縦平滑画素値との重み付き平均値を、各主成分毎に算出すればよい。
B7.ブロックノイズ強度を利用した平滑化処理の第7実施例:
図32は、第7実施例におけるフィルタモジュール420aを示す説明図である。図16に示すフィルタモジュール420bとの差違は、エッジ方向検出モジュール423が追加されている点だけである。装置構成の他の部分は、図1、図2に示す実施例と同じである。また、画像処理は、図4、図5、図17に示す実施例と同様に実行される。ただし、本実施例では、図17のステップS210で、エッジ方向検出モジュール423は、画素ブロックが表す画像のエッジ方向を検出する。そして、平滑化モジュール424は、検出されたエッジ方向を利用して平滑化処理を実行する。
図33は、エッジ方向とエッジ強度BESとの関係を示す説明図である。図33には、図18と同様に、対象画像SIと、対象ブロックFを中心とする3*3の画素ブロックグループBGが示されている。また、画素ブロックグループBGの上には、図20と同様の第1グラフGhが示されている。横軸は横方向hrの画素位置を示し、縦軸は画素値を示している。また、画素ブロックグループBGの右には、第2グラフGvが示されている。この第2グラフGvは、縦方向vtの画素位置(縦軸)と画素値(横軸)との関係を示している。
図33の例では、画素ブロックグループBGは、対象画像SIの被写体のエッジを表している。このエッジは、ほぼ縦方向vtに延びている。これは、画素ブロックグループBGの全体(特に対象ブロックFとその周辺)において、横方向hrに画素を辿ったときの画素値の変化が大きく、縦方向vtに画素を辿ったときの画素値の変化が小さいことを意味している(グラフGh、Gv参照)。これらの結果、左境界線Bwでのエッジ強度BESwと、右境界線Beでのエッジ強度BESeが大きくなる(以下、これらのエッジ強度BESw、BESeのことを「縦エッジ強度BESw、BESe」とも呼ぶ)。そして、上境界線Bnでのエッジ強度BESnと、下境界線Bsでのエッジ強度BESsとが小さくなる(以下、これらのエッジ強度BESn、BESsのことを「横エッジ強度BESn、BESs」とも呼ぶ)。
逆に、画素ブロックグループBGが横方向hrに延びるエッジを表す場合には、横エッジ強度BESn、BESsが大きくなり、縦エッジ強度BESw、BESeが小さくなる(図示省略)。
一般には、エッジの方向と境界線とがなす角度が小さいほど、その境界線に関するエッジ強度BESが大きくなる。従って、横エッジ強度BESn、BESsに対する縦エッジ強度BESw、BESeの比率によって、エッジ方向を表すことができる。
図34は、エッジ方向算出を示す概要図である。対象ブロックFの左上半分の第1三角領域AA1内の画素については、エッジ方向検出モジュール423(図32)は、まず、上横エッジ強度BESnと左縦エッジ強度BESwとから傾斜角度DA1を算出する(DA1=arctan(BESw/BESn))。
この第1傾斜角度DA1は、エッジ方向と横方向hrとのなす角度を示している。図34の下段には、2つのエッジ方向EGa、EGbが示されている。第1エッジ方向EGaは、右上に向かって延びるエッジ方向を示している。第2エッジ方向EGbは、右下に向かって延びるエッジ方向を示している。また、2つのエッジ方向EGa、EGbのそれぞれに関して、エッジ方向と横方向hrとのなす角度Axは、同じである。なお、右上は、横方向hrを基準とする反時計回り方向の角度(以下「基準角度θ」と呼ぶ)が0〜90度の範囲を示している。右下は、基準角度θが−90〜0度の範囲を示している。
第1三角領域AA1が第1エッジ方向EGaに延びるエッジを表す場合には、第1傾斜角度DA1は角度Axである。また、第1三角領域AA1が第2エッジ方向EGbに延びるエッジを表す場合も、第1傾斜角度DA1は角度Axである。このように、1つの値を示す第1傾斜角度DA1は、エッジ方向が右上を指す場合と、エッジ方向が右下を指す場合との両方を示し得る。この理由は、数式18に示すように、エッジ強度BESn、BESwのそれぞれが、ゼロ以上の値に設定されるからである。ここで、第1傾斜角度DA1は、横方向hrを基準とする0〜90度の範囲の値に設定される。
そこで、エッジ方向検出モジュール423(図32)は、エッジ方向をより詳細に特定する処理を実行する。具体的には、第1三角領域AA1内の、第1ラインLn1上における画素値の変化率の大きさと、第3ラインLn3上における画素値の変化率の大きさとの比較結果から、右上と右下とが区別される。
第1ラインLn1は、対象ブロックFの左上隅の画素(f11)から右下(θ=−45度)に向かって中央部の画素(f44)まで延びるライン(f11、f22、f33、f44)を示している。この第1ラインLn1上の画素値の変化率の大きさVR1は、種々の方法で算出され得る。例えば、以下の演算式を採用可能である。
VR1=(|f22-f11|+|f33−f22|+|f44−f33|)/3
この大きさVR1は、第1ラインLn1上で隣接する画素間の画素値差分の絶対値の平均値を示している。
第3ラインLn3は、左下隅の画素(f81)から右上(θ=45度)に向かって右上隅の画素(f18)まで延びるライン(f81、f72、f63、・・・f27、f18)を示している。この第3ラインLn3上の画素値の変化率の大きさVR3は、種々の方法で算出され得る。例えば、以下の演算式を採用可能である。
VR3=(|f72−f81|+|f63−f72|+|f54−f63|+|f45−f54|+|f36−f45|+|f27−f36|+|f18−f27|)/7
この大きさVR3は、第3ラインLn3上で隣接する画素間の画素値差分の絶対値の平均値を示している。
第1エッジ方向EGaのようにエッジ方向が右上を向いている場合には、第1大きさVR1が第3大きさVR3よりも大きくなる。一方、第2エッジ方向EGbのようにエッジ方向が右下を向いている場合には、第1大きさVR1が第3大きさVR3よりも小さくなる。従って、エッジ方向検出モジュール423(図32)は、第1大きさVR1が第3大きさVR3以上である場合には、第1傾斜角度DA1を、そのまま、第1エッジ角度EA1として採用する。第1大きさVR1が第3大きさVR3よりも小さい場合には、第1傾斜角度DA1の符号を負(−)に設定して得られる値を、第1エッジ角度EA1として採用する。エッジ方向を示すこの第1エッジ角度EA1は、横方向hrを基準とする反時計回り方向の角度で表されている(−90〜+90度)。
対象ブロックFの右下半分の第2三角領域AA2内の画素については、エッジ方向検出モジュール423(図32)は、下横エッジ強度BESsと右縦エッジ強度BESeとから第2傾斜角度DA2を算出し、第2傾斜角度DA2から第2エッジ角度EA2を算出する。エッジ方向を示すこの第2エッジ角度EA2は、横方向hrを基準とする反時計回り方向の角度で表されている(−90〜+90度)。なお、2つの領域AA1、AA2の境界上の画素については、2つのエッジ角度EA1、EA2の内の任意の一方を利用可能である。なお、第2エッジ角度EA2の算出方法は、第1エッジ角度EA1の算出方法と同様である。ただし、第1ラインLn1の代わりに第2ラインLn2が利用される。第2ラインLn2は、対象ブロックFの右下隅の画素(f88)から左上(θ=135度)に向かって中央部の画素(f55)まで延びるライン(f88、f77、f66、f55)を示している。
図35は、エッジ方向を利用する平滑化処理の概要図である。本実施例では、平滑化モジュール424(図32)は、平滑化の方向が互いに異なる4種類の異方性平滑化フィルタSFh、SFi1、SFv、SFi2の中から、エッジ角度EAに応じて平滑化フィルタを選択する。
ここで、平滑化の方向は、平滑化の強度が最も強くなる方向、すなわち、画素値の変化率を最も強くなだらかにすることが可能な方向を意味している。このような平滑化の方向は、例えば、以下のようなテスト画像データを用いて確認され得る。テスト画像内の或る特定画素の画素値がピークに設定され、他の画素の画素値が、特定画素からの距離が遠いほど小さくなるように設定されていると仮定する。ここで、テスト画像内における画素値分布の形状は、特定画素をピークとする等方的な山形状である。このようなテスト画像の全体に、同じ平滑化フィルタを用いた平滑化処理を実行する。すると、特定画素と、その周辺の画素との間の画素値差分が小さくなる。この画素値差分の減少量は、平滑化の強度に相当する(減少量が大きいほど平滑化強度が強い)。ここで、画素値差分の減少量を、周辺画素毎に比較する。周辺画素としては、例えば、特定画素の周囲を囲む8つの画素を採用可能である。ここで、特定画素から、画素値差分の減少量が最も大きい周辺画素へ向かう方向が、平滑化の方向であるということができる。以下、平滑化の方向を、横方向hrを基準とする反時計回り方向の角度θsで表す。なお、ある方向の平滑化の強度が強いことは、その方向と逆方向の平滑化の強度が強いことと等価である。従って、平滑化方向θsは、−90〜+90度の範囲の値によって表され得る。
図35には、エッジ角度EAの範囲と平滑化フィルタとの関係を表すテーブルが示されている。エッジ角度EAが横範囲EARh(−22.5〜+22.5度)内の場合には、横平滑化フィルタSFhが選択される。この横平滑化フィルタSFhは、図28に示す横平滑化フィルタSFhと同じである。この平滑化フィルタSFhの平滑化方向θsは0度である。
エッジ角度EAが第1斜範囲EARi1(+22.5〜+67.5度)内の場合には、第1斜平滑化フィルタSFi1が選択される。この第1斜平滑化フィルタSFi1は、図21に示す平滑化フィルタSF1において、中央要素CELと、中央要素CELの右上と左下とのそれぞれの要素とをそのまま維持し、他の要素をゼロに設定したものと同じである。この第1斜平滑化フィルタSFi1を利用すれば、右上から左下に向かって画素を辿ったときの画素値の変化を小さくすることができる。このように、この平滑化フィルタSFi1の平滑化方向θsは45度である。
エッジ角度EAが縦範囲EARv(+67.5〜+90度、−90〜−67.5度)内の場合には、縦平滑化フィルタSFvが選択される。この縦平滑化フィルタSFvは、図28に示す縦平滑化フィルタSFvと同じである。この平滑化フィルタSFvの平滑化方向θsは90度である。
エッジ角度EAが第2斜範囲RARi2(−67.5〜−22.5度)内の場合には、第2斜平滑化フィルタSFi2が選択される。この第2斜平滑化フィルタSFi2は、図21に示す平滑化フィルタSF1において、中央要素CELと、中央要素CELの左上と右下とのそれぞれの要素とをそのまま維持し、他の要素をゼロに設定したものと同じである。この第2斜平滑化フィルタSFi2を利用すれば、左上から右下に向かって画素を辿ったときの画素値の変化を小さくすることができる。このように、この平滑化フィルタSFi2の平滑化方向θsは−45度である。
平滑化モジュール424(図32)は、各平滑化フィルタの要素を、代表正規化強度αfに基づいて決定する。代表正規化強度αfとしては、図24に示す実施例で説明した種々の代表値(例えば、最大値)を採用可能である。
なお、本実施例では、傾斜角度DA1、DA2が、0〜+22.5度、+67.5〜+90度のいずれかの範囲内にある場合には、エッジ方向が右上を指す場合と、エッジ方向が右下を指す場合とで共通の平滑化フィルタが利用される。従って、この場合には、右上と右下とを区別する処理を省略してもよい。
以上のように、本実施例では、エッジ角度EA(図34のエッジ角度EA1、EA2)に応じて、エッジ方向とほぼ平行な方向の画素値変化を平滑化する平滑化フィルタが選択される。すなわち、エッジ方向の平滑化の強度が、エッジ方向と垂直な方向の平滑化の強度よりも、強くなる。その結果、被写体のエッジが過剰に滑らかになることを抑制できる。そして、ブロックノイズを低減することができる。
なお、エッジ方向検出モジュール423は、ノイズ強度算出モジュール422と同様に、第3主成分ym3を利用してエッジ方向を算出すればよい。そして、平滑化モジュール424は、各主成分ym1、ym2、ym3に対して、4つのフィルタSFh、SFi1、SFv、SFi2の中からエッジ方向に応じて選択された1つのフィルタを共通に利用すればよい。また、平滑化モジュール424は、図25に示す実施例と同様に、第3主成分ym3の平滑化強度から、他の主成分ym1、ym2の平滑化強度を決定すればよい。
B8.ブロックノイズ強度を利用した平滑化処理の第8実施例:
図36は、第8実施例における色成分毎の平滑化処理の手順を示すフローチャートである。図17に示す処理との差違は、2つのステップS200、S210の間に、ノイズを付加するステップS205が追加されている点だけである。2つのステップS200、S210の処理としては、上述の各実施例の処理を採用可能である。
本実施例では、平滑化モジュール424(図16、図32)は、画素値にノイズを付加し、ノイズが付加された画像データを利用して平滑化処理を実行する。これは、平滑化フィルタを用いた平滑化処理では解消が困難な境界線上の画素値の不連続性を緩和するためである。
図37は、境界線上の不連続性を示す概略図である。図中には、左境界線Bwにおける不連続性が示されている。第1画素列Vf1の8つの画素値f11〜f81は全て「100」であり、第8画素列Vw8の8つの画素値w18〜w88は全て「101」である。このように左境界線Bwの全体に亘って画素値の変化率は、最小値(1)である。この場合には、平滑画素値を中間の値(例えば、100.5)に設定することができないので、平滑化フィルタを利用した平滑化処理では、不連続性を解消することが困難である。また、このような不連続性は、筋状のノイズとして目立ちやすい。そこで、本実施例では、このような不連続性を解消するために、画素値にノイズを付加する。なお、このような画素値分布は、例えば、画素ブロックF、Wが、緩やかなグラデーションを表す場合に、生じ得る。
図38は、ノイズ付加を示す概要図である。先ず、平滑化モジュール424(図16、図32)は、対象ブロックFの第i行の差分指標値Δiを算出する。この差分指標値Δiは、第i行に関する、対象ブロックFと左ブロックWとの間の画素値の差分を表している。具体的には、左ブロックWの第i行の第8列の画素値wi8から、対象ブロックFの第i行の8つの画素値fi1〜fi8の平均値fi_aveを差し引いた差分が、差分指標値Δiとして利用される。
次に、平滑化モジュール424は、差分指標値Δiに横画素位置hrpで決まる係数ncを乗じてノイズ特性値Δijを算出する。図38の中段のグラフに示すように、この係数ncは、横画素位置hrpが左境界線Bwに近いほど大きい。図38の実施例では、左境界線Bwに最も近い4つの横画素位置hrp(1〜4)に対して、係数ncが「3/4」、「2/4」、「1/4」、「0」に、それぞれ設定されている。なお、横画素位置hrpが5よりも大きな範囲では(5〜8)、係数ncはゼロに設定されている。
次に、平滑化モジュール424は、ノイズ特性値Δijからノイズのパラメータを決定する。本実施例では、正規分布に従う乱数がノイズとして利用される。そして、平均値が「Δij/2」に設定され、分散が「(Δij/4)2」に設定される。このように、ノイズの大きさは、ノイズ特性値Δij(すなわち、差分指標値Δi)が大きいほど大きい。なお、このようなノイズは、例えば、平均がゼロで分散が1の正規分布に従う乱数Rnを用いた演算式「(Δij/2)+(Δij/4)*Rn」によって生成可能である。
平滑化モジュール424は、このようにして得られるランダムノイズを、対象ブロックFの第i行の8つの画素値fi1〜fi8に付加する(だたし、平均と分散とが共にゼロに設定される5つの画素値fi4〜fi8にはノイズ付加は行われない)。図38の下には、ノイズ付加による画素値の変化の概要が示されている。この図では、5つの画素値wi8、fi1〜fi4が示されている。黒丸はノイズ付加前の画素値を示している。白丸はノイズ付加後の平均画素値を示している。矢印で示される範囲は、ノイズ付加後の画素値の偏差を示している。ここで、説明を簡単にするために、対象ブロックFの画素値fi1〜fi4は、全て平均値fi_aveであることとしている。
図示するように、左境界線Bwに近いほど、対象ブロックFの画素値が左ブロックWの画素値wi8に近くなる可能性が高い。また、左境界線Bwから遠いほど、画素値の変化量が小さい。これらにより、対象ブロックFの中央部分の画素値が過剰に変化することを抑制しつつ、左境界線Bw上の不連続性を解消することができる。
図39は、ノイズ付加結果の一例を示す概略図である。この図には、図37に示す対象ブロックFにノイズを付加した場合の例が示されている。図示するように、第1画素列Vf1の8つの画素値f11〜f81に、ノイズ付加によるバラツキが生じている。その結果、第8画素列Vw8の画素値との不連続性が大幅に緩和されている。実際には、第8画素列Vw8の8つの画素値w18〜w88にもノイズが付加されるので、左境界線Bw上の不連続性は、より適切に、緩和される。さらに、ノイズ付加の後に平滑化処理が実行されるので、付加されたノイズが目立つことも抑制される。
以上、左境界線Bwについて説明したが、対象ブロックFの他の境界線Bn、Be、Bsについても、同様に、ノイズ付加処理が実行される。ここで、横境界線Bn、Bsに関しては、横方向hrと縦方向vtを入れ替えた関係に従ってノイズパラメータが決定される。ここで、ブロックノイズ強度BNSが大きいほど大きな重みをノイズに付してもよい。
なお、ノイズとしては、図38に示すノイズに限らず、種々のノイズを採用可能である。例えば、乱数を利用してノイズを生成する代わりに、予め設定されたノイズパターンを利用してもよい。また、横画素位置hrpと縦画素位置vtpとに依存しない一様なノイズを付加してもよい。ただし、境界線に近いほど画素値の変化が大きくなるようなノイズを採用することが好ましい。こうすれば、画素ブロックの中央部分の画素値が過剰に変化することを抑制しつつ、境界線上の不連続性を解消することができる。
また、ノイズの大きさ(すなわち、ノイズ付加による画素値の変化量)は、境界線における画素値の変化率が大きいほど大きいことが好ましい。このような変化率を表す指標としては、上述の差分指標値Δiに限らず、変化率と正の相関を有する種々の指標値を採用可能である。例えば、一方の画素ブロック内の画素値の平均値と、他方の画素ブロック内の画素値の平均値との差分を利用してもよい。いずれの場合も、このような指標値が大きいほど大きなノイズを付加すれば、過剰なノイズ付加を避けることができ、そして、境界線上の不連続性が解消されずに残ることを抑制できる。また、大きなノイズが付加された場合であっても、ブロックノイズ強度BNSが強いほど強い平滑化が実行されるので、ノイズが目立つことも抑制できる。
また、ノイズの周波数分布において、ピークが所定値よりも高いことが好ましい。例えば、1サイクル/4画素よりも高い周波数にピークがあれば、ノイズの斑が目立つことを抑制できる。
また、このようなノイズ付加を、所定の条件が成立した場合に実行してもよい。このような条件としては、例えば、境界線に関するブロックノイズ強度BNSが所定の閾値よりも強いこと、を採用可能である。
なお、図36のステップS205では、平滑化モジュール424(図16、図32)は、第3主成分ym3に対してノイズを付加する。また、平滑化モジュール424は、第3主成分ym3に加えて、他の主成分ym1,ym2にノイズを付加してもよい。各主成分ym1、ym2に付加されるノイズとしては、第3主成分ym3に対して付加されたノイズと同じノイズを採用可能である。この代わりに、各主成分ym1、ym2毎に、第3主成分ym3と同じ方法でノイズを算出してもよい。
B9.ブロックノイズ強度を利用した平滑化処理の第9実施例:
上述の各実施例において、ブロックノイズ強度BNSとしては、数式19によって表される値に限らず、他の演算式によって表される値を採用してもよい。例えば、以下の数式20で表される値を採用してもよい。
この数式20は、数式19におけるL2ノルムをL1ノルムに置き換えたものである。L1ノルムは、1次のノルムとも呼ばれ、全ての要素の絶対値の合計値を算出する演算である(数式17参照)。このようなL1ノルムを用いた数式20を利用すれば、n乗(nは2以上の整数)とn乗根との代わりに絶対値計算と加減算とを含む整数演算によってブロックノイズ強度BNSを算出することが可能である。その結果、演算処理の負荷を大幅に軽減することが可能である。
また、数式20において、L1ノルムを最大値ノルムに置き換えてもよい。最大値ノルムは、スープノルムとも呼ばれ、全ての要素の絶対値の内の最大の値を算出する演算である。この場合も、n乗(nは2以上の整数)とn乗根とを計算せずにブロックノイズ強度BNSを算出することが可能である。その結果、演算処理の負荷を大幅に軽減することが可能である。
一般に、数式20において、L1ノルムをp次のノルムに置き換えることが可能である(数式17参照)。p次のノルムは、幾何学的ベクトルの長さの概念を一般化したものである。従って、このようなノルムを用いることによって、差分列(例えば、Vdb、Vdw、Vdf)が示す差分の総合値(すなわち、境界線と垂直な方向に画素を辿ったときの画素値の変化率、換言すれば、境界線と平行に延びるエッジの強さ)を適切に算出することが可能である。その結果、いずれのノルムを利用しても、ブロックノイズの強度を適切に算出することが可能である。なお、上述の最大値ノルムは、p次ノルムの次数pを無限大に設定したときの極限であると見なすことが可能である。
C.変形例:
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
変形例1:
上述の各実施例において、対象画像データの各画素の色を表す色成分としては、R、G、Bの3色成分に限らず、任意の色成分を採用可能である。例えば、Y、Cb、Crの3色成分を採用してもよい。また、色成分の総数としては「3」に限らず任意の複数を採用可能である。例えば、2種類の色成分を採用してもよい。2種類の色成分としては、例えば、明るさ(輝度)と彩度との2成分を採用してもよい。このような対象画像データは、色相が所定の色相に固定されたモノトーン画像を表している。また、4種類の色成分を採用してもよい。例えば、C(シアン)、M(マゼンタ)、Y(イエロ)、K(ブラック)の4色成分を採用してもよい。また、R(赤)、YG(黄緑)、B(青)、EG(エメラルドグリーン)の4色成分を採用してもよい。
変形例2:
上述の各実施例において、対象画像データの各画素の色がN種類(Nは2以上の整数)の元色成分で表されている場合には、N種類の処理色成分(主成分)が算出される。ここで、平滑化処理が、一部の処理色成分に対して実行されてもよい。換言すれば、平滑化処理の対象の処理色成分としては、分散が最も小さい処理色成分を含む少なくとも一部の処理色成分を採用可能である。例えば、分散の最も大きな処理色成分(第1主成分)に対する平滑化処理を省略してもよい。この場合も、分散の小さな処理色成分に対する平滑化処理によって、ノイズの低減が可能である。
また、M種類(Mは2以上N以下の整数)の処理色成分のそれぞれに対して平滑化処理を実行する場合には、個々の画素位置において、分散が小さいほど平滑化処理の強度が強いことが好ましい。こうすれば、分散の大きな処理色成分が過剰に平滑化されて画像がぼやけることを抑制できる。そして、分散の小さな処理色成分を強く平滑化することによってノイズを低減することができる。ただし、複数の処理色成分に対して同じ強度の平滑化処理が実行されてもよい。また、分散の大きな処理色成分に対して、分散の小さな処理色成分よりも強い平滑化処理が実行されてもよい。
いずれの場合も、個々の画素位置において、N種類の処理色成分のうちで分散が最も小さい処理色成分に対して最も強い平滑化処理を実行することが好ましい。こうすれば、分散が大きな処理色成分に対して過剰に強い平滑化処理が実行されることが防止されるので、画像が過剰にぼやけることを防止できる。そして、分散が最も小さい処理色成分に対する強い平滑化処理によって、ノイズを適切に低減することができる。なお、平滑化処理が実行されない色成分に関しては、平滑化強度がゼロに設定されているということができる。
変形例3:
上述の各実施例において、平滑化処理の対象となる領域は、対象画像データによって表される対象画像の内の一部の領域であってもよい。例えば、フィルタモジュール420、420a、420b(図3、図16、図32)は、処理対象領域として、ユーザによって指定された一部の領域を採用してもよい。また、他の装置からの指示によって指定された一部の領域が採用されてもよい。例えば、特定の被写体(例えば、人物)を表す一部の領域を特定する特定装置によって、平滑化処理の対象領域が指定されてもよい。
変形例4:
上述の各実施例において、平滑化処理に利用される処理色成分の決定方法としては、主成分分析による方法に限らず、種々の方法を採用可能である。例えば、近似的に主成分を算出する方法を利用してもよい。また、複数の処理色成分の軸が互いに直交していなくてもよい。ただし、主成分分析によって処理色成分を決定すれば、処理色成分間の相関が過剰に強くなることが防止される。その結果、1つの処理色成分に対する平滑化処理の過剰な影響が他の処理色成分に及ぶことを防止できるので、画像の過剰なぼやけを防止できる。いずれの場合も、色成分変換モジュール421(図3、図16、図32)は、対象画像データを解析することによって、N種類の元色成分を、各元色成分の分散のいずれよりも大きな分散を示す色成分を含むN種類の処理色成分に変換することが好ましい。こうすれば、元色成分のいずれよりも画像データの特徴を強く反映する処理色成分に対して過剰に強い平滑化処理が実行されることが防止される。その結果、画像が過剰にぼやけることを防止できる。
変形例5:
上述の各実施例において、ブロックノイズ強度の算出に利用される処理色成分としては、分散が最小である処理色成分に限らず、種々の成分を採用可能である。例えば、第1主成分ym1を利用してノイズ強度を決定し、そのノイズ強度を利用して各処理色成分の平滑化強度を決定してもよい。いずれの場合も、ノイズ強度の算出に利用された処理色成分以外の処理色成分の平滑化強度の決定方法としては、種々の方法を採用可能である。例えば、図25の実施例と同様に、所定の係数や所定値を利用して平滑化強度に差を設けてもよい。また、処理色成分毎に平滑化フィルタのフィルタ範囲が異なっていてもよい。
また、ブロックノイズ強度の算出と、算出されたブロックノイズ強度に応じた平滑化処理の強度の決定との全体を、処理色成分毎に実行してもよい。また、一部の処理色成分に対する平滑化強度をブロックノイズ強度に応じて決定し、残りの処理色成分に対する平滑化強度を所定の強さに維持してもよい。また、処理色成分毎に平滑化の方向が異なっていても良い。この場合も、処理色成分間の平滑化強度を、第7実施例で説明したようなテスト画像データを用いて比較可能である。上述したように、このテスト画像データでは、テスト画像内における処理色成分の画素値分布の形状が、特定画素をピークとする等方的な山形状である。このようなテスト画像の全体に、同じ平滑化フィルタを用いた平滑化処理を実行する。すると、特定画素と、その周辺の8つの画素との間の画素値差分が小さくなる。この8つの画素値差分減少量のうちの最大値を、その平滑化フィルタによる平滑化強度として利用可能である。そして、このような平滑化強度を用いて、処理色成分間の平滑化強度を比較可能である。ここで、各処理色成分の平滑化強度の算出に、同じ画素値分布を利用すればよい。このような平滑化強度の比較は、各処理色成分の平滑化の方向が同じ場合や、等方的な平滑化処理が実行される場合にも、同様に実行可能である。
いずれの場合も、個々の画素位置において、分散が最も小さい処理色成分に対して最も強い平滑化処理が実行されることが好ましい。そして、個々の画素位置において、分散が小さいほど平滑化処理の強度が強いことが好ましい。
変形例6:
上述の各実施例において、フィルタモジュール420、420a、420b(図3、図16、図32)は、対象画像データとは異なる色成分で表された処理済み対象画像データを生成してもよい。例えば、フィルタモジュール420、420a、420bは、RGB色空間で表された対象画像データから、YCbCr色空間で表された処理済み対象画像データを生成してもよい。この場合には、色成分変換モジュール421は、平滑化処理が実行された後の処理色成分から、元色成分とは異なる出力色成分への変換を実行すればよい。この際、処理色成分を、一旦、元色成分に変換し、そして、元色成分を出力色成分に変換してもよい。また、色成分変換モジュール421とは別の出力変換モジュール(図示せず)によって、このような処理済みのN種類の処理色成分から所定のN種類の出力色成分への変換が実行されてもよい。このような出力変換モジュールは、フィルタモジュール420、420a、420bに設けられてもよく、また、他の画像処理装置に設けられても良い。いずれの場合も、平滑化モジュール424は、処理済みの処理色成分で表された画像データを出力変換モジュールに送出すればよい。
変形例7:
上述の各実施例の平滑化処理の機能を画像処理装置に実装したときに、適切に実装されているかを確認する方法としては、種々の方法を採用可能である。例えば、画像処理装置によって対象画像データから処理済み対象画像データが生成される場合には、これらの画像データを以下のように比較すればよい。ここで、対象画像データの画素の色を表す3成分xt1、xt2、xt3と、処理済み対象画像データの画素の色を表す3成分xp1、xp2、xp3とが、同じ色成分(例えば、RGB)を示していると仮定する。
先ず、対象画像データ(xt1、xt2、xt3)に対して主成分分析を行い、主成分yt1、yt2、yt3を算出する。次に、この主成分分析で得られた対応関係に従って、処理済み対象画像データ(xp1、xp2、xp3)から処理済み主成分yp1、yp2、yp3を算出する。これらの処理済み主成分yp1、yp2、yp3は、対象画像データの主成分yt1、yt2、yt3に平滑化処理を実行した結果を表していると推定される。そこで、処理前主成分yt1、yt2、yt3と、処理済み主成分yp1、yp2、yp3とを比較し、主成分毎の違いを検討する。例えば、平滑化の強度を各主成分間で比較したときに、処理前主成分の分散が小さいほど平滑化の強度が強ければ、上述の各実施例のような平滑化処理が適切に実行されていると推定可能である(第1主成分の平滑化強度<第2主成分の平滑化強度<第3主成分の平滑化強度)。
なお、処理前主成分yt1、yt2、yt3と、処理済み主成分yp1、yp2、yp3との比較方法としては、種々の方法を採用可能である。例えば、これらの主成分間の自己相関と相互相関とを利用して、画像処理装置のインパルス応答を推定する。そして、インパルス応答と、インパルス応答から計算される周波数特性等を各主成分間で比較してもよい。インパルス応答の推定方法としては、種々の方法を採用可能である。例えば、自己相関行列と相互相関行列とを利用してYule-Walker方程式を解く方法を採用可能である。
変形例8:
上述の各実施例において、対象画素ブロックと他の画素ブロックとの間の境界線におけるブロックノイズ強度を算出するためのノイズ強度演算としては、種々の演算を採用可能である。ここで、対象画素ブロック内の画素値の変化率の大きさを示す指数が大きいほど弱いブロックノイズ強度が算出されるように、ノイズ強度演算が設定されていることが好ましい。こうすれば、画像がぼやける等の不具合の発生を抑制しつつブロックノイズを低減することができる。ここで、このような指数としては、種々の値を採用可能である。例えば、上述の各実施例のようにエッジ強度BESを採用してもよい。また、対象画素ブロック内の画素値の分散を採用してもよい。分散の算出には、対象画素ブロックの全体を利用してもよく、所定の一部の領域を利用してもよい。また、対象画素ブロック内の所定の複数の画素位置における画素値変化率の代表値(例えば、平均値、最大値、最頻値、中央値(メディアン)、最小値)を採用してもよい。このような種々の指数の少なくとも一部に関して、指数が大きいほどブロックノイズ強度が弱いことが好ましい。また、数式19、数式20で表される演算式の分母を、このような指標に置き換えても良い。
ここで、ブロックノイズ強度は、以下のように設定されることが好ましい。すなわち、ブロックノイズ強度は、第1算出値を第2算出値で除した値に設定される。ここで、境界線と垂直な方向の画素値の変化率を垂直変化率と呼ぶ。第1算出値は、境界線上における垂直変化率の2次微分と正の相関を有するという第1特徴を示す。第2算出値は、対象画素ブロック内の垂直変化率である対象変化率の大きさを示す対象変化指数と正の相関を有するという第2特徴を示す。さらに、第2算出値は、他の画素ブロック内の垂直変化率である隣接変化率の大きさを示す隣接変化指数と正の相関を有するという第3特徴とを示す。このようなブロックノイズ強度を利用すれば、適切なブロックノイズ強度を算出できる。
第1算出値としては、第1特徴を示す種々の値を採用可能である。例えば、上述の各実施例のようにMSDSの平方根を利用してもよい。また、境界線上の所定の複数の画素位置における垂直変化率の2次微分の代表値(例えば、平均値、最大値、最頻値、中央値(メディアン)、最小値)を採用してもよい。
対象変化指数としては、対象画素ブロック内の垂直変化率の大きさを示す種々の値を採用可能である。例えば、上述の各実施例のように第1内部差分列Vdfのノルムを採用してもよい。また、対象画素ブロック内の所定の複数の画素位置における垂直変化率の代表値(例えば、平均値、最大値、最頻値、中央値(メディアン)、最小値)を採用してもよい。このような種々の対象変化指数の少なくとも一部に関して、第2算出値が対象変化指数と正の相関を有することが好ましい。これらの説明は、隣接変化指数についても、同様である。なお、上述の各実施例では、隣接変化指数として、第2内部差分列Vdwのノルムが利用されている。
なお、第1算出値と対象変化指数と隣接変化指数とのそれぞれは、境界線と垂直な複数の画素ラインを利用して算出可能である。また、各画素ラインから算出された値を総合するために、p次ノルム(数式17)を採用可能である。ここで、1次ノルムと最大値ノルムのいずれかを利用すれば、演算負荷を大幅に低減できる。また、第1算出値と対象変化指数と隣接変化指数とのそれぞれは、互いに異なる画素ラインから算出されてもよい。
いずれの場合も、画素値変化率は、単位長さ当たりの画素値の変化量を意味している。そして、単位長さとしては、1画素分の長さに限らず、任意の長さ(2画素分の長さや3画素分の長さ)を採用可能である。例えば、3画素分の長さを採用してもよい。この場合には、上述の各実施例で利用される差分列Vdb、Vdw、Vdfとして、2画素分の間を空けて選択された画素列の差分を利用すればよい(Vdb=Vf2−Vw7、Vdw=Vw7−Vw4、Vdf=Vf5−Vf2)。ただし、境界線上に生じやすいブロックノイズの強度を算出するためには、単位長さとして小さい長さ(例えば1画素分の長さ)を採用することが好ましい。
変形例9:
上述の各実施例において、平滑化処理の強度は、対象画素ブロックの各画素毎に決定されることが好ましい。こうすれば、画像がぼやける等の不具合の発生を抑制しつつブロックノイズを低減することが容易である。このように平滑化処理の強度を決定する方法としては、例えば、図26、図27、図28、図30に示す実施例が挙げられる。
変形例10:
上述の各実施例において、平滑化処理の対象の画素として、画素ブロック内の一部の画素を採用してもよい。例えば、境界線に近い一部の画素を採用可能である。ただし、上述の各実施例のように全ての画素に平滑化処理を実行すれば、平滑化処理が実行された画素と平滑化処理が実行されなかった画素との間の境界に沿ってノイズが生じることを抑制できる。
また、平滑化フィルタとしては、図22、図29、図35の実施例に限らず、種々のフィルタを採用可能である。例えば、フィルタ範囲が3*3よりも広くてもよい。
変形例11:
上述の各実施例において、平滑化処理の対象となる対象画像データとしては、動画像に含まれるフレーム画像データに限らず、種々の画像データを採用可能である。例えば、JPEG画像データやTIFF画像データ等の静止画像データを採用してもよい。また、ブロックノイズ強度に応じて平滑化強度が調整される平滑化処理(デブロッキング処理)の対象となる対象画像データとしては、動画像に含まれるフレーム画像データに限らず、複数の画素を含む画素ブロック毎の復号を利用して生成された種々の画像データを採用可能である。例えば、JPEG画像データをデコードして得られる画像データを採用してもよい。また、このようなデブロッキング処理を実行する画像処理装置において、画素ブロック毎の復号を行う復号処理部を省略してもよい(図2の実施例では、選択モジュール400が復号処理部に相当する)。この場合には、画像処理装置は、他の装置によって復号(デコード)された画像データを処理対象として利用すればよい。いずれの場合も、対象画像データの取得方法としては、任意の方法を採用可能である。例えば、着脱可能なメモリカードやネットワークを通じて対象画像データを取得してもよい。
また、対象画像データ内の画素ブロックの配置設定(画素ブロックのサイズ(縦画素数と横画素数)を含む)を特定する方法としては、種々の方法を採用可能である。例えば、所定の配置設定が採用されてもよい。この代わりに、対象画像データに対応付けられた配置情報(画素ブロックの配置設定を表す)を利用してもよい。対象画像データと配置情報とは、フィルタモジュール420a、420b(図16、図32:モジュール421、422、423、424)に対して、種々の処理部(例えば、上述の復号処理部や外部装置)から供給され得る。同様に、復号処理部は、画素ブロックの配置設定を種々の方法で特定可能である。例えば、符号化された画像データの解析結果や、その画像データに対応付けられた情報(例えば、ヘッダ情報)から、配置設定を特定可能である。
変形例12:
上述の各実施例において、動画像に含まれる複数のフレーム画像を合成することによって、ユーザによって指定された画像と同じ画像を表す高解像度画像を生成してもよい。ここで、選択モジュール400(図2)が、合成に利用される複数のフレーム画像を選択すればよい。フィルタモジュール420は、各フレーム画像に対してデブロッキング処理を実行すればよい。そして、出力モジュール430は、デブロッキング処理が施された複数のフレーム画像を合成することによって、高解像度画像を生成すればよい。
変形例13:
上述の各実施例において、平滑化処理によって生成された画像データの用途としては、印刷に限らず、種々の用途を採用可能である。例えば、図4のステップS130において、出力モジュール430(図2)は、印刷を実行する代わりに、生成された画像データを含む画像データファイルをユーザに提供してもよい(例えば、ユーザに提供されるデータを格納するためのメモリ(例えば、着脱可能なメモリカードMC(図1))に画像データファイルを格納してもよく、また、ネットワークを通じて接続された通信機器に画像データファイルを送信してもよい)。また、動画像を再生する際に、各フレーム画像に対して平滑化処理を実行してもよい。このように、平滑化処理を実行する画像処理装置としては、プリンタ100に限らず、任意の装置を採用可能である。例えば、デジタルカメラ、携帯電話、携帯情報端末、動画像再生装置等の種々の装置を採用可能である。特に、第9実施例で説明したように、n乗(nは2以上の整数)とn乗根とを含まない整数演算によってブロックノイズ強度BNSを算出すれば、大幅に演算負荷を軽減することができる。その結果、画像処理装置の処理能力が高くない場合であっても、高速に平滑化処理を実行することができる。
変形例14:
上述の各実施例において、動画像データのフォーマットとしては、MPEGフォーマットに限らず、任意のフォーマットを採用可能である。また、上述の各実施例では、プログレッシブスキャンの動画像データを利用しているが、インタレーススキャンの動画像データを利用してもよい。この場合には、対象画像として、フレーム画像の代わりにフィールド画像を採用することが可能である。また、フィールド画像をそのまま採用する代わりに、2枚のフィールド画像から再構成された1枚のフレーム画像を採用してもよい。このようなフィールド画像からのフレーム画像の再構成は、選択モジュール400(より一般的には、画素ブロック毎の復号を行う復号処理部)によって実行され得る。
変形例15:
上述の第7実施例において、エッジ方向の検出方法としては、図34に示す方法に限らず、種々の方法を採用可能である。例えば、ソーベルフィルタを利用してエッジ方向を検出してもよい。ただし、図34に示すように、ブロックノイズ強度BNSの算出のために既に算出済みのエッジ強度BESを利用すれば、演算負荷を軽減できる。エッジ強度BESからエッジ方向を算出する方法としては、種々の方法を採用可能である。例えば、2つの縦エッジ強度BESw、BESeの平均値と、2つの横エッジ強度BESn、BESsの平均値とから、エッジ角度を算出してもよい。
また、平滑化の方向が互いに異なる異方性平滑化フィルタとしては、図35に示したフィルタに限らず、種々のフィルタを採用可能である。また、このような異方性平滑化フィルタの総数としては、4に限らず、種々の複数を採用可能である。ここで、図35の実施例のように、平滑化方向θsが、−90〜+90度の範囲内に均等に分布するように、複数の異方性平滑化フィルタを準備することが好ましい。また、異方性平滑化フィルタの総数が4以上であることが好ましい。いずれの場合も、平滑化モジュール424は、平滑化の方向が互いに異なる複数種類の平滑化フィルタの中から、平滑化の方向がエッジ方向に最も近い平滑化フィルタを選択することが好ましい。
また、平滑化の強度を、図26に示す実施例と同様に、画素位置に応じて変化させてもよい。
変形例16:
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図2のフィルタモジュール420の機能を、論理回路を有するハードウェア回路によって実現してもよい。
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア(コンピュータプログラム)は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやCD−ROMのような携帯型の記録媒体に限らず、各種のRAMやROM等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。