図1は、本発明が適用される画像処理装置の実施の形態の構成例を示す図である。
図1の画像処理装置1は、ブロック境界情報検出部11、およびブロックノイズ低減処理部12より構成されており、入力される画像のブロックノイズを低減する処理の強さをブロック単位で制御し、ブロックノイズを低減したブロックノイズ低減処理画像を出力画像として出力するものである。
画像処理装置1に入力される画像は、プレーヤなどによりDVD(Digital Versatile Disc)やHDD(Hard Disc Drive)などの記憶媒体から、読み出され、デコードされることにより出力される画像などを含む。これらのプレーヤのうち、一部のプレーヤは、画像の拡大機能を備えており、例えば、図2で示されるように、記録されている画像データが720画素×480画素のようなSD(Standard Definition)解像度の画像データAであっても、出力解像度である1280画素×720画素の解像度の画像D、360画素×240画素の解像度の画像B、または、1920画素×1080画素のHD(Hi Definition)解像度の画像Eに変換して出力することができる。また、記録信号がHD信号の場合、画像Cで示されるような1440画素×1080画素の解像度の信号が存在しており、一部のプレーヤでは、このような画像Cの画像データを、1920画素×1080画素のHD解像度の画像Eに変換して出力することができる。さらに、別の一部のプレーヤでは、720画素×480画素のようなSD(Standard Definition)解像度の画像データAを、1920画素×1080画素のHD解像度の画像Eの画像として表示するため、1920画素×1080画素のHD解像度の画像Eの中に、1440画素×1080画素の解像度の信号として画像Fのように出力することができる。
したがって、画像処理装置1に入力される画像は、アナログ信号がアナログデジタル変換された画像データ、若しくはデジタル信号からなる画像データ、または、アナログ信号や上述したようないずれかの解像度の原画像データに対して解像度変換された(スケーリングされた)画像でもよい。
ブロック境界情報検出部11は、入力された画像よりデコード前にエンコードされていた状態におけるDCT(Discrete Cosine Transform)処理される単位であるブロックサイズ、およびブロック境界位置がスケーリングなどにより変化したブロックサイズ、およびブロック境界位置を検出し、それぞれの情報をブロックサイズ情報およびブロック境界位置の情報としてブロックノイズ低減処理部12に供給する。
より詳細には、上述したように、様々な解像度の画像が入力されるため、入力される前の解像度によりブロックサイズは異なる。さらに、垂直方向のブロックサイズは、エンコード時の条件やIP変換によっても変化する。例えば、図3の最左部で示されるように、インターレース画像が元画像である場合、ブロックサイズが垂直方向に8画素であるとき、エンコード時に図3の左から2番目の上段で示されるように、フィールド構造であれば、デコード時にインターレース画像のブロックサイズは、図3の左から3番目の上段で示されるように、そのままの8画素のブロックサイズが維持されるが、デコード時にIP変換(インタレース−プログレッシブ変換)されると、画像のブロックサイズは、図3の左から4番目の上段で示されるように、16画素となる。
また、ブロックサイズが垂直方向に8画素であるとき、エンコード時に図3の左から2番目の下段で示されるように、フレーム構造であれば、16画素となり、デコード時にインターレース画像であれば、ブロックサイズは、図3の左から3番目の下段で示されるように、4画素のブロックサイズとなるが、デコード時にIP変換(インタレース−プログレッシブ変換)されると、画像のブロックサイズは、図3の左から4番目の下段で示されるように、8画素が維持される。
これらを纏めると、図4で示されるような関係となり、例えば、入力画像の元画像の解像度が1920画素×1080画素であって、水平ブロックサイズが8画素である場合、水平方向のスケーリングは、図4のリストL1で示されるような関係となる。すなわち、元画像の解像度が360(352)画素×240画素で、サイドパネル有りのとき、水平スケーリング率は4.00で、水平ブロックサイズは32.00画素であり、サイドパネル無しのとき、水平スケーリング率は5.33で、水平ブロックサイズは42.67画素である。また、元画像の解像度が720(704)画素×480画素で、サイドパネル有りのとき、水平スケーリング率は2.00で、水平ブロックサイズは16.00画素であり、サイドパネル無しのとき、水平スケーリング率は2.67で、水平ブロックサイズは21.33画素である。さらに、元画像の解像度が1280画素×720画素で、サイドパネルは無いので、水平スケーリング率は1.50で、水平ブロックサイズは12.00画素である。また、元画像の解像度が1440画素×1080画素で、サイドパネル有りのとき、水平スケーリング率は1.00で、水平ブロックサイズは8.00画素であり、サイドパネル無しのとき、水平スケーリング率は1.33で、水平ブロックサイズは10.67画素である。さらに、元画像の解像度が1920画素×1080画素で、サイドパネルは無いのので、水平スケーリング率は1.00で、水平ブロックサイズは8.00画素である。
また、入力画像の解像度が1920画素×1080画素のインターレース画像であって、垂直方向のブロックサイズが8画素である場合、垂直方向のスケーリングは、図4のリストL2で示されるような関係となる。すなわち、元画像の解像度が360(352)画素×240画素では、フレーム構造となるので、垂直スケーリング率は2.25で、垂直ブロックサイズは18.00画素である。また、元画像の解像度が720(704)画素×480画素で、フィールド構造のとき、垂直スケーリング率は2.25で、垂直ブロックサイズは18.00画素であり、フレーム構造のとき、垂直スケーリング率は1.13で、垂直ブロックサイズは9.00画素である。さらに、元画像の解像度が1280画素×720画素では、フレーム構造なので、垂直スケーリング率は0.75で、垂直ブロックサイズは6.00画素である。また、元画像の解像度が1440画素×1080画素または1920画素×1080画素では、フィールド構造のとき、垂直スケーリング率は1.00で、垂直ブロックサイズは8.00画素であり、フレーム構造のとき、垂直スケーリング率は0.50で、垂直ブロックサイズは4.00画素である。
さらに、入力画像の解像度が1920画素×1080画素のプログレッシブ画像であって、垂直方向のブロックサイズが8画素である場合、垂直方向のスケーリングは、図4のリストL3で示されるような関係となる。すなわち、元画像の解像度が360(352)画素×240画素では、フレーム構造となるので、垂直スケーリング率は4.50で、垂直ブロックサイズは36.00画素である。また、元画像の解像度が720(704)画素×480画素で、フィールド構造のとき、垂直スケーリング率は4.50で、垂直ブロックサイズは36.00画素であり、フレーム構造のとき、垂直スケーリング率は2.25で、垂直ブロックサイズは18.00画素である。さらに、元画像の解像度が1280画素×720画素では、フレーム構造なので、垂直スケーリング率は1.50で、垂直ブロックサイズは12.00画素である。また、元画像の解像度が1440画素×1080画素または1920画素×1080画素では、フィールド構造のとき、垂直スケーリング率は2.00で、垂直ブロックサイズは16.00画素であり、フレーム構造のとき、垂直スケーリング率は1.00で、垂直ブロックサイズは8.00画素である。
このように入力されてくる画像は、様々な形態にブロックサイズが変化する。そこで、ブロック境界情報検出部11は、スケーリングやIP変換なども考慮して、適切なブロックサイズおよびブロック境界位置を検出する。
ブロックノイズ低減処理部12は、入力された画像を、ブロック境界情報検出部11より供給されてくるブロックサイズおよびブロック境界位置の情報に基づいて、ブロックノイズ低減処理の強度を適応的に変化させて、ブロックノイズを低減し、ブロックノイズを低減したブロックノイズ低減処理画像を出力画像として出力する。
次に、図5のブロック図を参照して、ブロック境界情報検出部11の実施の形態の構成例について説明する。
水平検出部21は、入力画像における水平ブロックサイズ、ブロック境界位置、および水平検出信頼度を検出し、出力すると共に、水平方向のブロックサイズの情報を垂直検出部22に供給する。
垂直検出部22は、水平検出部21より供給されてくる水平ブロックサイズの情報、およびインタレースプログレッシブの情報に基づいて、入力画像の垂直方向のブロックサイズである垂直ブロックサイズ、垂直ブロック境界位置、および垂直検出信頼度の情報を出力する。
次に、図6を参照して、水平検出部21の構成例について説明する。
ブロック段差情報取得部41は、入力画像の画素単位で、注目画素に対して狭域、中域、および広域の3種類の参照画素によりブロック段差情報を求め、それぞれ狭域分布情報バッファ42−1、中域分布情報バッファ42−2、および、広域分布情報バッファ42−3に出力する。
狭域分布情報バッファ42−1、中域分布情報バッファ42−2、および、広域分布情報バッファ42−3は、それぞれ狭域分布情報バッファhist1[x]、中域分布情報バッファhist2[hx]、および、広域分布情報バッファhist3[qx]で表現される配列として、水平方向の画素位置単位で、ブロック段差が検出された画素数を、それぞれ記憶してる。尚、ここで、x,hx,qxは、それぞれ水平方向の位置カウンタx、位置カウンタxが2の倍数の位置カウンタhx、および、位置カウンタxが4の倍数の位置カウンタqxである。また、特に画素位置を区別する必要が無い場合、単に、狭域分布情報バッファhist1、中域分布情報バッファhist2、および、広域分布情報バッファhist3とも称するものとする。
周期計測部43は、狭域分布情報バッファ42−1、中域分布情報バッファ42−2、および、広域分布情報バッファ42−3に記憶されている狭域分布情報バッファhist1[x]、中域分布情報バッファhist2[hx]、および、広域分布情報バッファhist3[qx]の配列情報に基づいて、小周期情報を求めて小周期バッファ44に格納する。小周期情報は、小周期バッファbuf1_p,buf2_p,buf3_pからなる配列として求められ、小周期バッファ44に格納させる。
ここで、小周期とは、それぞれブロックサイズpで表現される画素数pを示し、小周期情報とは、小周期を構成するブロックサイズpの何番目かを示す位相毎の検出数を示す情報である。
尚、小周期バッファbuf1_pは、狭域分布情報バッファhist1に基づいて得られる、ブロックサイズp画素の小周期情報を格納しており、小周期バッファbuf2_pは、中域分布情報バッファhist2に基づいて得られる、ブロックサイズp画素の小周期情報を格納しており、小周期バッファbuf3_pは、広域分布情報バッファhist3に基づいて得られる、ブロックサイズp画素の小周期情報を格納している。
また、周期計測部43は、狭域、中域、および広域の三種類の周期別の発生頻度interval1[n],interval2[n],interval3[n]を求めて判定部45に供給する。ここで、発生頻度interval1[n]は、狭域分布情報バッファhist1[x]に基づいて得られるピーク値の空間的な発生間隔の大きさを示す画素数nの発生頻度を表しており、発生頻度interval2[n]は、中域分布情報バッファhist2[x]に基づいて得られるピーク値の空間的な発生間隔の大きさを示す画素数nの発生頻度を表しており、発生頻度interval3[n]は、広域分布情報バッファhist3[x]に基づいて得られるピーク値の空間的な発生間隔の大きさを示す画素数nの発生頻度を表している。
判定部45は、小周期バッファ44に格納されている小周期バッファbuf1_p,buf2_p,buf3_p、および周期計測部43により計測された発生頻度interval1[n],interval2[n],interval3[n]に基づいて、今現在入力された画像におけるブロックサイズ、およびブロック境界位置の情報を判定し、安定化処理部46に供給する。
安定化処理部46は、判定部45より供給されてくる今現在入力されている画像のブロックサイズ、およびブロック境界位置の情報と、直前に入力されていた画像のブロックサイズ、およびブロック境界位置の情報に基づいて、出力するブロックサイズ、およびブロック境界位置の情報を安定化させる。
次に、図7を参照して、ブロック段差情報取得部41の実施の形態の構成例について説明する。
狭域段差計算部61は、注目画素に対して連続して隣接する複数の画素に基づいて、注目画素の狭域段差を計算し、メモリからなる狭域段差記憶部62に記憶させる。
狭域ブロック段差特徴検出部63は、狭域段差記憶部62に記憶されている狭域段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist1[x]更新部64に供給する。
バッファhist1[x]更新部64は、狭域ブロック段差特徴検出部63より供給されてくるブロック段差特徴の検出結果に基づいて、狭域分布情報バッファ42−1の狭域分布情報バッファhist1[x]を更新する。
中域位置判定部65は、今現在の座標位置が2の倍数であるか否かを判定し、2の倍数である場合、入力画像を中域段差計算部66に供給する。
中域段差計算部66は、注目画素に対して1画素おきに隣接する複数の画素に基づいて、注目画素の中域段差を計算し、メモリからなる中域段差記憶部67に記憶させる。
中域ブロック段差特徴検出部68は、中域段差記憶部67に記憶されている中域段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist2[x]更新部69に供給する。
バッファhist2[x]更新部69は、中域ブロック段差特徴検出部68より供給されてくるブロック段差特徴の検出結果に基づいて、中域分布情報バッファ42−2の狭域分布情報バッファhist2[hx]を更新する。
広域位置判定部70は、今現在の座標位置が4の倍数であるか否かを判定し、4の倍数である場合、入力画像を広域段差計算部71に供給する。
広域段差計算部71は、注目画素に対して2画素おきに隣接する複数の画素に基づいて、注目画素の広域段差を計算し、メモリからなる広域段差記憶部72に記憶させる。
広域ブロック段差特徴検出部73は、広域段差記憶部72に記憶されている広域段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist3[x]更新部74に供給する。
バッファhist3[x]更新部74は、広域ブロック段差特徴検出部73より供給されてくるブロック段差特徴の検出結果に基づいて、中域分布情報バッファ42−3の狭域分布情報バッファhist3[qx]を更新する。
次に、図8を参照して、周期計測部43の実施の形態の構成例について説明する。
発生頻度計測部91のピーク判定部101は、狭域分布情報バッファ42−1に格納されている狭域分布情報バッファhist1、中域分布情報バッファ42−2に格納されている狭域分布情報バッファhist2、広域分布情報バッファ42−3に格納されている広域分布情報バッファhist3のそれぞれについてピークとなる位置を検出する。
フラグ設定部102は、ピーク判定部101によりピークが最初に検出されるまでの状態を認識するためのフラグである。
発生頻度更新部103は、狭域、中域、および広域のそれぞれについて、ピークが検出される画素数の間隔で、発生頻度カウンタ103aに格納されている発生頻度カウンタinterval1[n],interval2[n],interval3[n]を更新し、その結果を出力部104より判定部45に出力する。
小周期バッファ取得部92のピーク判定部111は、ピーク判定部101と同様のものであり、狭域分布情報バッファ42−1に格納されている狭域分布情報バッファhist1、中域分布情報バッファ42−2に格納されている狭域分布情報バッファhist2、広域分布情報バッファ42−3に格納されている広域分布情報バッファhist3のそれぞれについてピークとなる位置を検出する。
小周期バッファ更新部112は、狭域、中域、および広域のそれぞれについて、所定の小周期における各位相毎の発生頻度を表す小周期バッファ44に格納されている小周期バッファbuf1[n],buf2[n],buf3[n]を更新する。
境界条件発生総数更新部113は、狭域、中域、および広域のそれぞれについて、ピーク判定部111によりピークが検出された場合、全て境界条件が発生したものとして、小周期バッファ44に格納されている、境界条件発生総数カウンタbtotal1,btotal2,btotal3を更新する。
次に、図9を参照して、判定部45の実施の形態の構成例について説明する。
判定部45は、狭域処理部141、中域処理部142、広域処理部143、狭域候補選択部144、中域候補選択部145、広域候補選択部146、総合選択部147を備えている。
狭域処理部141、中域処理部142、および広域処理部143は、それぞれ狭域分布情報バッファhist1、中域分布情報バッファhist2、および広域分布情報バッファhist3に格納された小周期情報に基づいて、所定のブロックサイズ、ブロック境界位置、および信頼度情報を求めて、それぞれ狭域候補選択部144、中域候補選択部145、および広域候補選択部146に供給する。
狭域候補選択部144、中域候補選択部145、および広域候補選択部146は、それぞれ狭域処理部141、中域処理部142、および広域処理部143より供給されてきたブロックサイズ、ブロック境界位置、および信頼度情報に基づいて、狭域、中域、および広域のそれぞれのブロックサイズ、ブロック境界位置、および信頼度情報の候補を選択し、総合選択部147に供給する。
総合選択部147は、狭域候補選択部144、中域候補選択部145、および広域候補選択部146より供給されてきたブロックサイズ、ブロック境界位置、および信頼度情報を含む候補の情報を比較して、入力画像におけるブロックサイズおよびブロック境界位置を判定する。
狭域処理部141は、整数ブロックサイズ判定部161、および非整数ブロックサイズ判定部162を備えており、それぞれ整数の画素数からなるブロックサイズ、および、非整数の画素数からなるブロックサイズについて、それぞれのブロックサイズ、およびブロック境界位置を含む情報を生成する。
整数ブロックサイズ判定部161の小周期バッファ読出部171は、制御カウンタ172により供給される制御カウンタiに基づいて、小周期バッファ44より狭域分布情報バッファhist1に基づいて小周期バッファbuf1を読み出し、比較部173に供給する。
比較部173は、小周期バッファbuf1と、最大値カウンタ174に格納されている最大値カウンタmaxとを順次比較し、最大値カウンタmaxより大きい値である場合、最大値カウンタ更新部175を制御して、その小周期バッファbuf1の値で最大値カウンタmaxを更新する。また、このとき、比較部173は、最大値位相カウンタ更新部177を制御して、最大値位相カウンタ176に格納されている最大値位相カウンタmax_posの位相を、最大値をとる位相に更新させる。すなわち、比較部173は、このような処理により、小周期バッファbuf1がピークを取るときのピークの値となる最大値を最大値カウンタ174に最大値カウンタmaxとして記憶させると共に、そのときの小周期内における位相を最大値位相カウンタmax_posに記憶させる。
判定結果出力部178は、最終的に最大値カウンタ174に格納されている最大値カウンタmax、および最大値位相カウンタ176に格納されている最大値位相カウンタmax_posとに基づいて、各ブロックサイズpごとのブロックサイズp情報を生成して、狭域候補選択部144に供給する。
非整数ブロックサイズ判定部162は、整数ブロックサイズ判定部191−1乃至191−3、および比較判定部192を備えている。整数ブロックサイズ判定部191−1乃至191−3は、いずれもその構造が整数ブロックサイズ判定部161と同一のものである。ただし、整数ブロックサイズ判定部191−1乃至191−3は、小周期のうちの位相が異なる領域についてブロックサイズ情報を生成し、それぞれ比較判定部192に供給する。
比較判定部192は、整数ブロックサイズ判定部191−1乃至191−3からのブロックサイズ情報に基づいて、非整数ブロックサイズのブロックサイズ、ブロック境界位置、および信頼度情報を含む情報を生成し、狭域候補選択部144に供給する。
尚、中域処理部142、および広域処理部143は、処理の対象を狭域分布情報バッファhist[1]に代えて、中域分布情報バッファhist2[x]、および広域分布情報バッファhist3[x]とすることを除き、狭域処理部141と同様であるので、その説明は省略するものとする。
次に、図10を参照して、安定化処理部46の実施の形態の構成例について説明する。
取得部201は、判定部45より供給されてくるブロックサイズ情報を取得し、step計算部、直前画像情報比較部203、直前画像情報記憶部207、選択部211に供給する。
step計算部202は、ブロックサイズ情報に含まれている信頼度情報に基づいて、制御係数stepを計算し、判定値管理部205、および変更可能性フラグ管理部209に供給する。
直前画像情報比較部203は、直前画像情報記憶部207に記憶されている直前の画像における安定化される前のブロックサイズ、およびブロック境界情報と、取得部201より今現在の画像のブロックサイズ、およびブロック境界情報とを比較し、比較結果を判定値管理部205、および変更可能性フラグ管理部209に供給する。
直前画像安定化情報比較部204は、直前画像安定化情報記憶部208に記憶されている直前の画像における安定化された後のブロックサイズ、およびブロック境界情報と、取得部201より今現在の画像のブロックサイズ、およびブロック境界情報とを比較し、比較結果を判定値管理部205、および変更可能性フラグ管理部209に供給する。
判定値管理部205は、直前画像情報比較部203、および直前画像安定化情報比較部204からの判定結果と、制御係数stepとに基づいて、波形整形部205aを制御して、判定値を管理し、判定値メモリ206に格納させる。
変更可能性フラグ管理部209は、直前画像情報比較部203、および直前画像安定化情報比較部204からの判定結果と、制御係数stepとに基づいて、変更可能性フラグを管理し、変更可能性フラグメモリ210に格納させる。
選択部211は、変更可能性フラグメモリ210の変更可能性フラグと、判定値メモリの判定値とに基づいて、入力された画像のブロックサイズ、およびブロック境界位置の情報であるか、または、直前の画像のブロックサイズ、およびブロック境界位置の情報を出力する。
次に、図11を参照して、垂直検出部22の実施の形態の構成例について説明する。
垂直検出モード判定部501は、水平検出部21より供給されてくる水平ブロックサイズ、およびインターレースであるか、または、プログレッシブであるかを示す情報に基づいて、水平ブロックサイズに対応する垂直検出モードv_modeを判定し、ブロック段差情報取得部502、周期計測部504、判定部506、および安定化処理部507に供給する。
ブロック段差情報取得部502は、入力画像の画素単位で、注目画素に対して垂直検出モードに対応する参照画素によりブロック段差情報を求め、分布情報として分布情報バッファ503に出力する。
周期計測部504は、分布情報バッファ503に分布情報として記憶されている分布情報バッファhist[x]の配列情報に基づいて、周期毎の検出数を示す小周期情報として求め、小周期バッファbuf_pからなる配列として、小周期バッファ505に格納させる。
判定部506は、小周期バッファ505に格納されている小周期バッファbuf_pに基づいて、今現在入力された画像におけるブロックサイズ、およびブロック境界位置の情報を判定し、安定化処理部507に供給する。
安定化処理部507は、判定部506より供給されてくる今現在入力されている画像のブロックサイズ、およびブロック境界位置の情報と、直前に入力されていた画像のブロックサイズ、およびブロック境界位置の情報に基づいて、出力するブロックサイズ、およびブロック境界位置の情報を安定化させる。
次に、図12を参照して、垂直検出モード判定部501の実施の形態の構成例について説明する。
垂直検出モード判定部501は、インタレースプログレッシブ判定部521、ブロックサイズ判定部522、およびモード決定部523を備えている。
インタレースプログレッシブ判定部521は、画像形式がインターレース画像であるかプログレッシブ画像であるかを示す信号に基づいて、入力画像がインターレース画像であるか、プログレッシブ画像であるかを判定し、判定結果をモード決定部523に供給する。
ブロックサイズ判定部522は、水平処理部21より供給されてくる水平ブロックサイズを判定し、判定結果をモード決定部523に供給する。
モード決定部523は、入力画像がインターレース画像であるか、プログレッシブ画像であるかの判定結果と、水平ブロックサイズとに基づいて、垂直検出モードv_modeを決定し、ブロック段差情報取得部502、周期計測部504、判定部506、および安定化処理部507に供給する。
次に、図13のブロック図を参照して、ブロック段差情報取得部502の実施の形態の構成例について説明する。
モード判定部541は、垂直検出モードv_modeを取得して、垂直検出モードv_modeがどのモードであるかを判定し、判定結果を位置判定部542に供給する。
位置判定部542は、垂直検出モードv_modeに基づいて、今現在の垂直方向の位置カウンタyにおいて、段差を計算するか否かを判定し、判定結果に基づいて、段差計算部543に段差計算を実行させる。
段差計算部543は、位置判定部542の判定結果に基づいて、注目画素に対して連続して隣接するか、または、1画素毎に隣接する複数の画素に基づいて、注目画素の段差を計算し、メモリからなる段差記憶部544に記憶させる。
ブロック段差特徴検出部545は、段差記憶部544に記憶されている段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist[x]更新部546に供給する。
バッファhist1[x]更新部546は、ブロック段差特徴検出部545より供給されてくるブロック段差特徴の検出結果に基づいて、分布情報バッファ503の分布情報バッファhist1[x]を更新する。
次に、図14のブロック図を参照して、周期計測部504の実施の形態の構成例について説明する。
モード取得部561は、垂直検出モード判定部501より供給されてくる垂直検出モードv_modeを取得し、垂直検出モードv_modeをピーク判定部591に供給する。
小周期バッファ562のピーク判定部591は、分布情報バッファ503に格納されている分布情報バッファhistについて、モード判定部561より供給されてくる垂直検出モードv_modeに対応する小周期の各位相毎にピークとなる位置を検出する。
小周期バッファ更新部592は、所定の小周期における各位相毎の発生頻度を表す小周期バッファ505に格納されている小周期バッファbuf[n]を更新する。
境界条件発生総数更新部593は、ピーク判定部591によりピークが検出された場合、全て境界条件が発生したものとして、小周期バッファ44に格納されている、境界条件発生総数カウンタbtotalを更新する。
次に、図15のブロック図を参照して、判定部506の実施の形態の構成例について説明する。
モード判定部611は、垂直検出モードv_modeが偶数モードであるか、奇数モードであるかを判定し、偶数モードであるとき、小周期バッファ505を偶数モードブロックサイズ判定部612に接続し、奇数モードであるとき、小周期バッファ505を奇数モードブロックサイズ判定部613に接続する。
偶数モードブロックサイズ判定部612の小周期バッファ読出部631は、制御カウンタ632により供給される制御カウンタiに基づいて、小周期バッファ505より小周期バッファbuf[i]を読み出し、比較部633に供給する。
比較部633は、小周期バッファbufと、最大値カウンタ634に格納されている最大値カウンタmaxとを順次比較し、最大値カウンタmaxより大きい値である場合、最大値カウンタ更新部635を制御して、その小周期バッファbufの値で最大値カウンタmaxを更新する。また、このとき、比較部633は、最大値位相カウンタ更新部637を制御して、最大値位相カウンタ636に格納されている最大値位相カウンタmax_posの位相を更新させる。
判定結果出力部638は、最終的に最大値カウンタ634に格納されている最大値カウンタmax、および最大値位相カウンタ636に格納されている最大値位相カウンタmax_posとに基づいて、各ブロックサイズpごとのブロックサイズp情報を生成して出力する。
奇数モードブロックサイズ判定部613は、偶数モードブロックサイズ判定部651−1,651−2、および比較判定部652を備えている。偶数モードブロックサイズ判定部651−1,651−2は、いずれもその構造が偶数モードブロックサイズ判定部612と同一のものである。
比較判定部652は、偶数モードブロックサイズ判定部651−1,651−2からのブロックサイズ情報に基づいて、奇数モードブロックサイズのブロックサイズ情報を生成し、出力する。
次に、図16のフローチャートを参照して、図5のブロック境界情報検出部11によるブロック境界情報検出処理について説明する。尚、以降においては、水平方向に対して、ブロックサイズが8画素、10.67画素、および12画素のみを検出する例について説明するものとするが、同様の手法により、その他のブロックサイズをも検出することが可能である。
ステップS1において、ブロック境界情報検出部11は、入力画像におけるブロック境界情報を検出するための検出範囲を設定する。この検出範囲は、自由に設定することが可能であるが、画像単位でのブロックノイズ強度を求めるのであれば、画角に対して歪の小さい中央近傍が最も適切な画像が読み出される可能性が高いので、入力画像のサイズが、水平方向および垂直方向に対してhsize(画素)×vsize(画素)である場合、水平方向に対しての中央画素近傍(座標(hsize/2)近傍)の範囲および垂直方向に対しての中央画素近傍(座標(hsize/2)近傍)の範囲からなる検出範囲を設定する。なお、複数の検出範囲を設定し、それぞれの検出範囲でブロック境界情報を検出しても構わない。
ステップS2において、水平検出部21の安定化処理部46における直前画像情報記憶部207および直前画像安定化情報記憶部208をリセットする。このとき、垂直検出部22においても同様にリセット処理が実行される。
ステップS3において、水平検出部21は、水平検出処理を実行し、水平方向のブロックサイズ、およびブロック境界情報を検出する。
ここで、図17のフローチャートを参照して、水平検出処理について説明する。
ステップS11において、ブロック段差情報取得部41は、ブロック段差取得処理を実行し、ブロック段差情報を取得する。
ここで、図18のフローチャートを参照して、ブロック段差情報取得処理について説明する。
ステップS21において、ブロック段差情報取得部41は、狭域分布情報バッファ42−1、中域分布情報バッファ42−2、および広域分布情報バッファ42−3のそれぞれに記憶されている、注目画素に対して狭域の範囲のブロック段差の分布数を蓄積する分布情報バッファhist1[x]、注目画素に対して中域の範囲のブロック段差の分布数を蓄積する中域分布情報バッファhist2[hx]、および注目画素に対して広域の範囲のブロック段差の分布数を蓄積する広域分布情報バッファhist3[qx]を0に初期化する。
ステップS22において、ブロック段差情報取得部41は、図示せぬ入力画像の垂直位置を示す垂直位置カウンタyを0に初期化する。
ステップS23において、ブロック段差情報取得部41は、図示せぬ入力画像に対して、狭域、中域、および広域のそれぞれに対しての水平位置を示す水平位置カウンタx,hx,qxを0に初期化する。
ステップS24において、狭域段差計算部61は、入力画像のうち、画素のうち座標(x,y)で示される画素を注目画素に設定し、注目画素と、注目画素に対応して設定される狭域の近傍の参照画素により狭域段差diff1を計算し、計算結果を狭域段差記憶部62に記憶させる。
例えば、狭域の近傍画素は、注目画素を中心として、右方向に隣接する3画素、および左方向に隣接する4画素からなる8画素を用いる場合、それぞれの画素位置は、図19で示されるように、注目画素の座標位置をxであるものとして、注目画素を画素P[x]として表現すれば、右方向に隣接する2画素は、それぞれ注目画素に近い画素から画素P[x+1],P[x+2],P[x+3]として表現され、左方向に隣接する画素は、それぞれ注目画素に近い画素から画素P[x−1],P[x−2],P[x−3],P[x−4]として表現される。このとき、狭域段差計算部61は、以下の式(1)を計算することにより、注目画素の段差diff1を計算する。尚、図19においては、横軸が水平方向の画素の座標であり、縦軸が対応する画素の画素値を示している。また、ここでは、水平方向に対する処理を説明するが、当然のことながら垂直方向に対する処理とするようにしてもよい。
diff1[x]=|P[x]−P[x−1]|−(|P[x−3]−P[x−4]|+|P[x−2]−P[x−3]|
+|P[x−1]−P[x−2]|+|P[x+1]−P[x]|
+|P[x+2]−P[x+1]|+|P[x+3]−P[x+2]|)/6
・・・(1)
ここで、diff1[x]は、注目画素P[x]の狭域の段差を示し、P[x+1],P[x+2],P[x+3],P[x],P[x−1],P[x−2],P[x−3],P[x−4]は、それぞれ画素P[x+1],P[x+2],P[x+3],P[x],P[x−1],P[x−2],P[x−3],P[x−4]の画素値を示している。
すなわち、式(1)においては、狭域段差diff1は、注目画素P[x]と、その左側の画素P[x−1]との画素値の差分絶対値から、画素P[x−4],P[x−3]間、画素P[x−3],P[x−2]間、画素P[x−2],P[x−1]間、画素P[x],P[x+1]間、画素P[x+1],P[x+2]間、および画素P[x+2],P[x+3]間のそれぞれの画素間の画素値の差分絶対値の平均値を減算した値となる。
ステップS25において、狭域ブロック段差特徴検出部63は、狭域段差記憶部62に記憶されている狭域段差diff1[x]が所定の範囲内の値であるか否かを判定する。ステップS25において、例えば、狭域段差記憶部62に記憶されている狭域段差diff1[x]が所定の範囲内の値である場合、ステップS26において、狭域ブロック段差特徴検出部63は、判定結果に基づいて、注目画素に対応する狭域段差diff1[x]がブロック段差の特徴を備えるものとみなし、狭域ブロック段差特徴情報bnstep1を1に設定し、バッファhist1[x]更新部64に供給する。
一方、ステップS25において、例えば、狭域段差記憶部62に記憶されている狭域段差diff1[x]が所定の範囲内の値ではない場合、ステップS27において、狭域ブロック段差特徴検出部63は、狭域段差diff1[x]が所定の範囲内の値ではないという判定結果に基づいて、狭域ブロック段差特徴情報bnstep1を0に設定し、バッファhist1[x]更新部64に供給する。
ステップS28において、バッファhist1[x]更新部64は、狭域分布情報バッファ42−1に格納されているバッファhist1[x]に狭域ブロック段差特徴情報bnstep1を加算して記憶させる。
ステップS29において、中域位置判定部65は、カウンタxが2の倍数であるか否かを判定する。ステップS29において、例えば、カウンタxが2の倍数である場合、ステップS30において、中域段差計算部66は、入力画像のうち、画素のうち座標(x,y)で示される画素を注目画素に設定し、注目画素と、注目画素に対応して設定される近傍の中域の参照画素により中域段差diff2を計算し、計算結果を中域段差記憶部67に記憶させる。
例えば、中域の参照画素は、注目画素を中心として、右方向に1画素おきに隣接する3画素、および左方向に1画素おきに隣接する4画素からなる8画素を用いる場合、それぞれの画素位置は、図20で示されるように、注目画素の座標位置をxであるものとして、注目画素を画素P[x]として表現すれば、右方向に1画素おきに隣接する3画素は、それぞれ注目画素に近い画素から画素P[x+2],P[x+4],P[x+6]として表現され、左方向に1画素おきに隣接する4画素は、それぞれ注目画素に近い画素から画素P[x−2],P[x−4],P[x−6],P[x−8]として表現される。このとき、中域段差計算部67は、以下の式(2)を計算することにより、注目画素の中域段差diff2を計算する。尚、図20においては、横軸が水平方向の画素の座標であり、縦軸が対応する画素の画素値を示している。また、ここでは、水平方向に対する処理を説明するが、当然のことながら垂直方向に対する処理とするようにしてもよい。
diff2[hx]=|P[x]−P[x−2]|−(|P[x−8]−P[x−6]|+|P[x−6]−P[x−4]|
+|P[x−4]−P[x−2]|+|P[x]−P[x+2]|
+|P[x+2]−P[x+4]|+|P[x+4]−P[x+6]|)/6
・・・(2)
ここで、diff2[hx]は、カウンタxが2の倍数であるときの注目画素P[x]の中域段差を示し、P[x+2],P[x+4],P[x+6],P[x],P[x−2],P[x−4],P[x−6],P[x−8]は、それぞれ画素P[x+2],P[x+4],P[x+6],P[x],P[x−2],P[x−4],P[x−6],P[x−8]の画素値を示している。
すなわち、式(2)においては、中域段差diff2は、注目画素P[x]を中心とする、その画素P[x−2]との画素値の差分絶対値から、画素P[x−8],P[x−6]間、画素P[x−6],P[x−4]間、画素P[x−4],P[x−2]間、画素P[x],P[x+2]間、画素P[x+2],P[x+4]間、および画素P[x+4],P[x+6]間のそれぞれの画素間の画素値の差分絶対値の平均値を減算した値となる。
ステップS31において、中域ブロック段差特徴検出部68は、中域段差記憶部67に記憶されている中域段差diff2[hx]が所定の範囲内の値であるか否かを判定する。ステップS31において、例えば、中域段差記憶部67に記憶されている中域段差diff2[hx]が所定の範囲内の値である場合、ステップS32において、中域ブロック段差特徴検出部68は、判定結果に基づいて、注目画素に対応する中域段差diff2[hx]がブロック段差の特徴を備えるものとみなし、中域ブロック段差特徴情報bnstep2を1に設定し、バッファhist2[hx]更新部69に供給する。
一方、ステップS31において、例えば、中域段差記憶部67に記憶されている中域段差diff2[hx]が所定の範囲内の値ではない場合、ステップS33において、中域ブロック段差特徴検出部68は、中域段差diff2[hx]が所定の範囲内の値ではないという判定結果に基づいて、中域ブロック段差特徴情報bnstep2を0に設定し、バッファhist2[hx]更新部69に供給する。
ステップS34において、バッファhist2[hx]更新部69は、中域分布情報バッファ42−2に格納されているバッファhist2[hx]に中域ブロック段差特徴情報bnstep2を加算して記憶させる。
ステップS35において、中域位置判定部65は、カウンタhxを1インクリメントする。
ステップS36において、広域位置判定部70は、カウンタxが4の倍数であるか否かを判定する。ステップS36において、例えば、カウンタxが4の倍数である場合、ステップS37において、広域段差計算部71は、入力画像のうち、画素のうち座標(x,y)で示される画素を注目画素に設定し、注目画素と、注目画素に対応して設定される近傍の広域の参照画素により広域段差diff3を計算し、計算結果を広域段差記憶部72に記憶させる。
例えば、広域の参照画素は、注目画素を中心として、右方向に2画素おきに隣接する3画素、および左方向に2画素おきに隣接する4画素からなる8画素を用いる場合、それぞれの画素位置は、図21で示されるように、注目画素の座標位置をxであるものとして、注目画素を画素P[x]として表現すれば、右方向に2画素おきに隣接する3画素は、それぞれ注目画素に近い画素から画素P[x+3],P[x+6],P[x+9]として表現され、左方向に2画素おきに隣接する4画素は、それぞれ注目画素に近い画素から画素P[x−3],P[x−6],P[x−9],P[x−12]として表現される。このとき、広域段差計算部71は、以下の式(3)を計算することにより、注目画素の広域段差diff3を計算する。尚、図21においては、横軸が水平方向の画素の座標であり、縦軸が対応する画素の画素値を示している。また、ここでは、水平方向に対する処理を説明するが、当然のことながら垂直方向に対する処理とするようにしてもよい。
diff3[qx]=|P[x]−P[x−3]|−(|P[x−12]−P[x−9]|+|P[x−9]−P[x−6]|
+|P[x−6]−P[x−3]|+|P[x]−P[x+3]|
+|P[x+3]−P[x+6]|+|P[x+6]−P[x+9]|)/6
・・・(3)
ここで、diff3[qx]は、カウンタxが4の倍数であるときの注目画素P[x]の中域段差を示し、P[x+3],P[x+6],P[x+9],P[x],P[x−3],P[x−6],P[x−9],P[x−12]は、それぞれ画素P[x+3],P[x+6],P[x+9],P[x],P[x−3],P[x−6],P[x−9],P[x−12]の画素値を示している。
すなわち、式(3)においては、広域段差diff3は、注目画素P[x]を中心とする、その画素P[x]との画素値P[x−3]の差分絶対値から、画素P[x−12],P[x−9]間、画素P[x−9],P[x−6]間、画素P[x−6],P[x−3]間、画素P[x],P[x+3]間、画素P[x+3],P[x+6]間、および画素P[x+6],P[x+9]間のそれぞれの画素間の画素値の差分絶対値の平均値を減算した値となる。
ステップS38において、広域ブロック段差特徴検出部73は、広域段差記憶部72に記憶されている広域段差diff3[qx]が所定の範囲内の値であるか否かを判定する。ステップS38において、例えば、広域段差記憶部72に記憶されている広域段差diff3[qx]が所定の範囲内の値である場合、ステップS39において、広域ブロック段差特徴検出部73は、判定結果に基づいて、注目画素に対応する広域段差diff3[qx]がブロック段差の特徴を備えるものとみなし、広域ブロック段差特徴情報bnstep3を1に設定し、バッファhist3[qx]更新部74に供給する。
一方、ステップS38において、例えば、広域段差記憶部72に記憶されている広域段差diff3[qx]が所定の範囲内の値ではない場合、ステップS40において、広域ブロック段差特徴検出部73は、広域段差diff3[qx]が所定の範囲内の値ではないという判定結果に基づいて、広域ブロック段差特徴情報bnstep3を0に設定し、バッファhist3[qx]更新部74に供給する。
ステップS41において、バッファhist3[qx]更新部74は、広域分布情報バッファ42−3に格納されているバッファhist3[qx]に広域ブロック段差特徴情報bnstep3を加算して記憶させる。
ステップS42において、広域位置判定部70は、カウンタqxを1インクリメントする。
ステップS43において、ブロック段差情報取得部41は、カウンタxを1インクリメントする。
ステップS44において、ブロック段差情報取得部41は、カウンタxが水平方向の検出範囲xsizeよりも大きいか否かを判定し、大きくない場合、処理は、ステップS24に戻る。すなわち、ステップS24乃至S44の処理が繰り返される。そして、ステップS44において、カウンタxが検出範囲xsizeよりも大きい場合、ステップS45において、ブロック段差情報取得部41は、カウンタyを1インクリメントする。
ステップS46において、ブロック段差情報取得部41は、カウンタyが垂直方向の検出範囲ysizeよりも大きいか否かを判定し、大きくない場合、処理は、ステップS23に戻る。すなわち、ステップS23乃至S44の処理が繰り返される。そして、ステップS46において、カウンタyが検出範囲ysizeよりも大きい場合、処理は終了する。
また、ステップS29において、カウンタxが2の倍数ではないと判定された場合、ステップS30乃至S35の処理がスキップされる。さらに、ステップS36において、カウンタxが4の倍数ではないと判定された場合、ステップS37乃至S42の処理がスキップされる。
以上の処理により狭域分布情報バッファ42−1、中域分布情報バッファ42−2、および広域分布情報バッファ42−3には、それぞれ各注目画素に対して隣接する近傍画素により、ブロック段差であるとみなされた水平方向の画素数が、ブロック段差情報として、それぞれ狭域分布情報バッファhist1[x]、中域分布情報バッファhist2[hx]、および広域分布情報バッファhist3[qx]に記憶される。このとき、中域分布情報バッファhist2[hx]は、カウンタxが2の倍数であるときのみであるので、検出回数は、狭域分布情報バッファhist1[x]の半分となる。また、広域分布情報バッファhist3[qx]は、カウンタxが4の倍数であるときのみであるので、検出回数は、狭域分布情報バッファhist1[x]の1/4となる。
尚、分布情報は、ブロックサイズに応じたものが必要となるため、比較的小さなブロックサイズに対応する狭域分布情報、中程度のブロックサイズに対応する中域分布情報、比較的大きなブロックサイズに対応する広域分布情報が求められている。このため、後述する垂直検出処理においては、水平検出処理により求められたブロックサイズから、ある程度必要となる分布情報が特定できるため、狭域分布情報、中域分布情報、または広域分布情報のいずれかが求められるだけでよい。
ここで、図17のフローチャートの説明に戻る。
ステップS11において、ブロック段差情報が取得されると、ステップS12において、周期計測部43は、周期計測処理を実行し、発生頻度と小周期情報とを計測する。
ここで、図22のフローチャートを参照して、周期計測部43による周期計測処理について説明する。
ステップS61において、周期計測部43は、処理対象となる分布情報バッファを狭域分布情報バッファ42−1に格納されている狭域分布情報バッファhist1[x]に設定する。
ステップS62において、発生頻度計測部91は、狭域分布情報バッファhist1[x]に対して発生頻度計測処理を実行し、発生頻度interval1[n]を計測する。
ここで、図23のフローチャートを参照して、発生頻度計測処理について説明する。
ステップS91において、発生頻度計測部91は、図示せぬ状態フラグstate、周期計測カウンタcnt、発生頻度を示す周期カウンタinterval1[cnt]、および位置カウンタxを、それぞれ0に初期化する。
ステップS92において、ピーク判定部101は、狭域分布バッファ42−1より狭域分布情報バッファhist1[x]と、その近傍の値を読み出し、狭域分布情報バッファhist1[x]の値がピーク条件を満たすか否かを判定する。より具体的には、例えば、ピーク判定部101は、狭域分布バッファ42−1より狭域分布情報バッファhist1[x]と、その近傍の値として、狭域分布情報バッファhist1[x−n]乃至hist1[x+m]を読み出し、狭域分布情報バッファhist1[x]が、狭域分布情報バッファhist1[x−n]乃至hist1[x+m](n,mは任意の整数)のうちの最大値をとり、かつ、所定の閾値peak_thよりも大きいか否かを判定することにより、ピーク条件を満たすか否かを判定する。
ステップS92において、例えば、ピーク条件を満たすと判定された場合、ステップS93において、フラグ設定部102は、状態フラグstateが0であるか否かを判定する。ステップS93において、例えば、ピーク条件を初めて満たすような場合、状態フラグは0であるので、処理は、ステップS94に進む。
ステップS94において、フラグ設定部102は、状態フラグstateを1に設定する。
ステップS94の処理により、ステップS93において、例えば、ピーク条件を満たすような状態が2回目以降の場合、状態フラグは1であるので、処理は、ステップS95に進む。
ステップS95において、発生頻度更新部103は、発生頻度カウンタ103aの発生頻度カウンタinterval1[cnt]を1インクリメントする。
ステップS96において、発生頻度計測部91は、周期計測カウンタcntを0にリセットする。
ステップS97において、発生頻度計測部91は、周期計測カウンタcntを1インクリメントする。
ステップS98において、発生頻度計測部91は、カウンタxを1インクリメントする。
ステップS99において、発生頻度計測部91は、カウンタxが検出範囲の水平サイズであるxsizeより大きいか否かを判定する。ステップS99において、カウンタxが検出範囲の水平サイズであるxsizeより大きくない場合、処理は、ステップS92に戻る。
ステップS100において、出力部104は、発生頻度更新部103の発生頻度カウンタ103aより発生頻度カウンタinterval1[n]を読み出し、判定部105に出力する。
一方、ステップS92において、ピーク位置条件を満たさない場合、ステップS93乃至S96の処理がスキップされる。
以上の処理によりピークとして検出された狭域分布情報バッファhist1[x]のピークが検出される度に、ピークの発生間隔毎に発生頻度カウンタinterval[n]にカウントされていくことになり、ピークの発生する間隔毎の検出数が発生頻度として計測されて、判定部45に出力される。
したがって、水平ブロックサイズが8画素または12画素の画像が入力され、ブロック単位でノイズが発生しているような場合、最初のピークとして検出される位置から8画素毎に、または、12画素毎に、順次interval1[8]またはinterval1[12]が、順次カウントされる可能性が高いといえる。また、水平ブロックサイズが10.67画素の画像が入力されると、最初のピークとして検出される位置から、interval1[10]とinterval1[11]とが、所定の割合で順次カウントされる可能性が高いと言える。
ここで、図22のフローチャートの説明に戻る。
ステップS62において、発生頻度計測処理が終了すると、ステップS63において、小周期バッファ取得部92が、小周期バッファ取得処理を実行し、小周期バッファを取得する。
ここで、図24のフローチャートを参照して、水平方向のブロックサイズが8画素である場合の小周期バッファ取得処理について説明する。
ステップS111において、小周期バッファ取得部92は、小周期バッファ44に格納されている小周期バッファbuf1_8[phase]、および境界条件発生総数btotal1_8を0に初期化すると共に、位置カウンタx、および位相カウンタphaseも併せて0に初期化する。
ステップS112において、ピーク判定部111は、狭域分布バッファ42−1より狭域分布情報バッファhist1[x]と、その近傍の値を読み出し、狭域分布情報バッファhist1[x]の値がピーク条件を満たすか否かを判定する。尚、このピーク判定部111による判定処理は、上述したピーク判定部101による処理と同一であるので、その説明は省略する。
ステップS112において、例えば、ピーク条件を満たすと判定された場合、ステップS113において、ピーク判定部111は、例えば、ピーク条件を満たすことを示す情報を、小周期バッファ更新部112および境界条件発生総数更新部113に供給する。小周期バッファ更新部112は、小周期バッファ44に格納されている小周期バッファbuf1_8[phase]を1インクリメントする。
一方、ステップS112において、例えば、ピーク条件を満たさないと判定された場合、ステップS113の処理は、スキップされる。
ステップS114において、境界条件発生総数更新部113は、小周期バッファ44に格納されている小周期バッファ境界条件発生総数btotal1_8を1インクリメントする。
ステップS115において、小周期バッファ取得部92は、位相カウンタphaseを1インクリメントする。
ステップS116において、小周期バッファ取得部92は、位相カウンタphaseが、計測周期P≧8であるか否か、すなわち、水平方向ブロックサイズである8より大きいか否かを判定する。ステップS116において、例えば、位相カウンタphaseが計測周期P≧8である場合、ステップS117において、小周期バッファ取得部92は、位相カウンタphaseを0に初期化する。
また、ステップS116において、例えば、位相カウンタphaseが計測周期P≧8ではなかった場合、ステップS117の処理がスキップされる。
ステップS118において、小周期バッファ取得部93は、位置カウンタxを1インクリメントする。
ステップS119において、小周期バッファ取得部93は、位置カウンタxが検出範囲の水平サイズであるxsizeより大きいか否かを判定する。ステップS119において、位置カウンタxが検出範囲の水平サイズであるxsizeより大きくない場合、処理は、ステップS112に戻る。
そして、ステップS119において、位置カウンタxが検出範囲の水平サイズであるxsizeより大きい場合、処理は終了する。
すなわち、以上の処理においては、水平方向の座標が、位相カウンタphaseにより0乃至8で巡回的に付されて、位相カウンタphase毎にピークが検出された回数である小周期情報が、小周期バッファ44に小周期バッファbuf1_8[phase]としてカウントされる。また、ピークが検出される度に、位相カウンタphaseとは無関係に、境界条件発生総数btotal1_8が1インクリメントされる。
ここで、図22のフローチャートの説明に戻る。
ステップS63において、狭域分布情報における水平ブロックサイズ8画素の小周期バッファbuf1_8取得処理が終了すると、ステップS64において、小周期バッファ取得部92は、狭域分布情報における水平ブロックサイズが10.67画素の小周期バッファbuf1_32取得処理を実行し、小周期バッファbuf1_32と共に、境界条件発生総数btotal1_32を求める。尚、ステップS64の処理は、ステップS63の処理における位相カウンタphaseが、0乃至8ではなく、0乃至32で巡回的に付される以外は、同様の処理であるので、その説明は省略する。また、水平ブロックサイズが10.67画素である場合、巡回数が32となる理由は、10.67を整数にする最小公倍数であるからである。
また、ステップS65において、小周期バッファ取得部92は、狭域分布情報における水平ブロックサイズが12画素の小周期バッファbuf1_12取得処理を実行し、小周期バッファbuf1_12と共に、境界条件発生総数btotal1_12を求める。
すなわち、ステップS61乃至S65の処理により、発生頻度計測部91により狭域分布情報についての発生頻度カウンタinterval1[n]が求められて判定部45に出力されると共に、狭域分布情報についての、小周期バッファbuf1_8,buf1_32,buf1_12および境界条件発生総数btotal1_8,btotal1_32,btotal1_12が、小周期バッファ44に格納される。
また、ステップS66乃至S70の処理は、中域分布情報バッファhist2が処理対象となること以外は、ステップS61乃至S65の処理と同様であるので、ステップS66乃至S70の処理により、発生頻度計測部91により中域分布情報についての発生頻度カウンタinterval2[n]が求められて判定部45に出力されると共に、中域分布情報についての、小周期バッファbuf2_8,buf2_32,buf2_12および境界条件発生総数btotal2_8,btotal2_32,btotal2_12が、小周期バッファ44に格納される。
さらに、ステップS71乃至S75の処理は、広域分布情報バッファhist3が処理対象となること以外は、ステップS61乃至S65の処理と同様であるので、ステップS71乃至S75の処理により、発生頻度計測部91により中域分布情報についての発生頻度カウンタinterval3[n]が求められて判定部45に出力されると共に、広域分布情報についての、小周期バッファbuf3_8,buf3_32,buf3_12および境界条件発生総数btotal3_8,btotal3_32,btotal3_12が、小周期バッファ44に格納される。
以上の処理により、狭域分布情報バッファhist1、中域分布情報バッファhist2、および広域分布情報バッファhist3のそれぞれについて、ピーク値が発生する間隔ごとの発生頻度を示す発生頻度カウンタinterval1[n]乃至3[n]として求められて、判定部45に供給されると共に、狭域、中域、および広域分布情報に基づいたブロックサイズ8,10.67,12のそれぞれについての小周期情報が、小周期バッファbuf1_8,buf1_32,buf1_12,buf2_8,buf2_32,buf2_12,buf3_8,buf3_32,buf3_12として求められ、さらにピーク値が検出された回数を示す境界条件発生総数btotal1_8,btotal1_32,btotal1_12,btotal2_8,btotal2_32,btotal2_12,btotal3_8,btotal3_32,btotal3_12が求められて、小周期バッファ44に格納される。
尚、本実施例においては、図4のリストL1で示されるように、ブロックサイズ24,48画素は存在していないので、中域分布情報についての、小周期バッファbuf2_12および境界条件発生総数btotal2_12、並びに、広域分布情報についての、小周期バッファbuf3_12および境界条件発生総数btotal3_12は必ずしも必要ではない。このため、図22のフローチャートにおけるステップS70,S75の処理は、省略するようにしてもよい。
ここで、図17のフローチャートの説明に戻る。
ステップS12において、周期計測処理がなされると、ステップS13において、判定部45は、判定処理を実行し、周期判定処理で求められた発生頻度を示す発生頻度カウンタinterval1[n]乃至3[n]、および、小周期情報を示す小周期バッファbuf1_8,buf1_32,buf1_12,buf2_8,buf2_32,buf2_12,buf3_8,buf3_32,buf3_12、および境界条件発生総数btotal1_8,btotal1_32,btotal1_12,btotal2_8,btotal2_32,btotal2_12,btotal3_8,btotal3_32,btotal3_12に基づいて、水平方向のブロックサイズおよびブロック境界位置が判定される。
ここで、図25のフローチャートを参照して、判定部45による判定処理について説明する。
ステップS141において、整数ブロックサイズ判定部161は、狭域分布情報バッファhist1に基づいたブロックサイズ8情報取得処理を実行し、水平方向のブロックサイズが8画素となる条件を示すブロックサイズ8情報を取得する。
ここで、図26のフローチャートを参照して、狭域分布情報バッファhist1に基づいたブロックサイズ8情報取得処理について説明する。
ステップS171において、狭域処理部141の整数ブロックサイズ判定部161は、最大値位相カウンタ176に格納されている最大値位相カウンタmax_pos、および最大値カウンタ174に格納されている最大値カウンタmaxをそれぞれ0に初期化すると共に、制御カウンタ172により制御される制御カウンタiを1に初期化する。
ステップS172において、小周期バッファ読出部171は、小周期バッファ44より制御カウンタiで指定される小周期バッファbuf1_8[i]を読み出し、比較部173に供給する。比較部173は、小周期バッファbuf1_8[i]が最大値カウンタmaxよりも大きいか否かを判定する。
ステップS172において、例えば、小周期バッファbuf1_8[i]が最大値カウンタmaxよりも大きい場合、ステップS173において、比較部173は、比較結果を最大値カウンタ更新部175および最大値位相カウンタ更新部177に供給する。最大値カウンタ更新部175は、比較結果に基づいて、最大値カウンタ174の最大値カウンタmaxを小周期バッファbuf1_8[i]により更新する。また、最大値位相カウンタ更新部177は、最大値位相カウンタ176の最大値位相カウンタmax_posを制御カウンタiで更新する。
ステップS174において、制御カウンタ172は、制御カウンタiを1インクリメントする。
ステップS175において、小周期バッファ読出部171は、制御カウンタiがブロックサイズ8の巡回数の終端である7よりも小さいか否かを判定し、7よりも小さい場合、処理は、ステップS172に戻り、ステップS172乃至S175の処理を繰り返す。
そして、ステップS175において、制御カウンタiが7よりも小さくない場合、ステップS176において、判定結果出力部178は、最大値カウンタ174に格納されている最大値カウンタmaxおよび最大値位相カウンタ176に格納されている最大値位相カウンタmax_posを読み出し、水平方向のブロックサイズが8画素の情報であることを示すブロックサイズbs8、最大値位相カウンタmax_posをブロック境界位置bp8、および最大値カウンタmaxの値をブロックサイズ8に対する信頼度情報br8として、狭域候補選択部144に供給する。
尚、以下、狭域ブロックサイズ8情報、中域ブロックサイズ8情報、および広域ブロックサイズ8情報を区別するため、必要に応じて、狭域ブロックサイズ8情報については、ブロックサイズbs1_8、最大値位相カウンタmax_posをブロック境界位置bp1_8、および最大値カウンタmaxの値をブロックサイズ8に対する信頼度情報br1_8とし、中域ブロックサイズ8情報については、ブロックサイズbs2_8、最大値位相カウンタmax_posをブロック境界位置bp1_8、および最大値カウンタmaxの値をブロックサイズ8に対する信頼度情報br2_8とし、広域ブロックサイズ8情報については、ブロックサイズbs3_8、最大値位相カウンタmax_posをブロック境界位置bp3_8、および最大値カウンタmaxの値をブロックサイズ8に対する信頼度情報br3_8とも称するものとするが、特に区別する必要が無い場合は、単に、ブロックサイズbs8、最大値位相カウンタmax_pos8をブロック境界位置bp8、および最大値カウンタmaxの値をブロックサイズ8に対する信頼度情報br8と称するものとし、その他のブロックサイズについても同様に称するものとする。
以上の処理により、狭域分布情報バッファhist1で示される狭域分布情報に基づいたブロックサイズが8画素の小周期バッファbuf1_8で示される小周期情報に基づいて、水平方向のブロックサイズ8である場合の巡回数内のブロック境界位置bp8、および、ブロック境界位置bp8となった画素数の検出回数を示す信頼度情報br8が狭域ブロックサイズ8情報として求められることになる。
ここで、図25のフローチャートの説明に戻る。
ステップS142において、整数ブロックサイズ判定部161は、狭域分布情報バッファhist1に基づいた狭域ブロックサイズ12情報取得処理を実行し、水平方向のブロックサイズが12画素となる条件を示すブロックサイズ12情報を取得する。尚、狭域ブロックサイズ12情報取得処理は、処理対象が小周期バッファbuf1_12となり、ステップS175における閾値が7から12となる以外は、狭域ブロックサイズ8情報取得処理と同様の処理であるので、その説明は省略する。
ステップS143において、整数ブロックサイズ判定部161は、狭域分布情報バッファhist1に基づいたブロックサイズ10.67情報取得処理を実行し、水平方向のブロックサイズが10.67画素となる条件を示すブロックサイズ10.67情報を取得する。
ここで、図27,図28のフローチャートを参照して、狭域分布情報バッファhist1に基づいたブロックサイズ10.67情報取得処理について説明する。尚、整数ブロックサイズ判定部191−1乃至191−3は、いずれも整数ブロックサイズ判定部161における構成と同様であるが、初期化の条件等が異なる。そこで、以降においては、整数ブロックサイズ判定部191−1乃至191−3における構成については、整数ブロックサイズ判定部161における各構成に対して、それぞれ”−1”,”−2”,”−3”を付して説明するものとする。
ステップS191において、狭域処理部141の整数ブロックサイズ判定部191−1は、最大値位相カウンタ176−1に格納されている最大値位相カウンタmax_pos0を0に、最大値カウンタ174−1に格納されている最大値カウンタmaxを小周期バッファbuf1_32[max_pos0]に初期化すると共に、制御カウンタ172−1により制御される制御カウンタiを1に初期化する。
ステップS192において、小周期バッファ読出部171−1は、小周期バッファ44より制御カウンタiで指定される小周期バッファbuf1_32[i]を読み出し、比較部173−1に供給する。比較部173−1は、小周期バッファbuf1_32[i]が最大値カウンタmaxよりも大きいか否かを判定する。
ステップS192において、例えば、小周期バッファbuf1_32[i]が最大値カウンタmaxよりも大きい場合、ステップS193において、比較部173−1は、比較結果を最大値カウンタ更新部175−1および最大値位相カウンタ更新部177−1に供給する。最大値カウンタ更新部175−1は、比較結果に基づいて、最大値カウンタ174−1の最大値カウンタmaxを小周期バッファbuf1_32[i]により更新する。また、最大値位相カウンタ更新部177−1は、最大値位相カウンタ176−1の最大値位相カウンタmax_pos0を制御カウンタiで更新する。
ステップS194において、制御カウンタ172−1は、制御カウンタiを1インクリメントする。
ステップS195において、小周期バッファ読出部171−1は、制御カウンタiがブロックサイズ10.67の巡回数32(0乃至31)のうち10よりも小さいか否かを判定し、10よりも小さい場合、処理は、ステップS192に戻り、ステップS192乃至S195の処理を繰り返す。
そして、ステップS195において、制御カウンタiが10よりも小さくない場合、ステップS196において、判定結果出力部178−1は、最大値カウンタ174−1に格納されている最大値カウンタmaxおよび最大値位相カウンタ176に格納されている最大値位相カウンタmax_pos0を読み出し、比較判定部192に供給する。比較判定部192は、集計値max_totalに最大値カウンタmaxを加算することにより集計値max_totalを更新する。
ステップS197において、狭域処理部141の整数ブロックサイズ判定部191−2は、最大値位相カウンタ176−2に格納されている最大値位相カウンタmax_pos1を、(max_pos0+1)に、最大値カウンタ174−2に格納されている最大値カウンタmaxを小周期バッファ1_32[max_pos1]に初期化すると共に、制御カウンタ172−2により制御される制御カウンタiをmax_pos1+1に初期化する。
ステップS198において、小周期バッファ読出部171−2は、小周期バッファ44より制御カウンタiで指定される小周期バッファbuf1_32[i]を読み出し、比較部173−2に供給する。比較部173−2は、小周期バッファbuf1_32[i]が最大値カウンタmaxよりも大きいか否かを判定する。
ステップS198において、例えば、小周期バッファbuf1_32[i]が最大値カウンタmaxよりも大きい場合、ステップS199において、比較部173−2は、比較結果を最大値カウンタ更新部175−2および最大値位相カウンタ更新部177−2に供給する。最大値カウンタ更新部175−2は、比較結果に基づいて、最大値カウンタ174−2の最大値カウンタmaxを小周期バッファbuf1_32[i]により更新する。また、最大値位相カウンタ更新部177−2は、最大値位相カウンタ176−2の最大値位相カウンタmax_pos1を制御カウンタiで更新する。
ステップS200において、制御カウンタ172−2は、制御カウンタiを1インクリメントする。
ステップS201において、小周期バッファ読出部171−2は、制御カウンタiがブロックサイズ10.67の巡回数32(0乃至31)のうち20よりも小さいか否かを判定し、20よりも小さい場合、処理は、ステップS198に戻り、ステップS198乃至S201の処理を繰り返す。
そして、ステップS201において、制御カウンタiが20よりも小さくない場合、ステップS202において、判定結果出力部178−2は、最大値カウンタ174−2に格納されている最大値カウンタmaxおよび最大値位相カウンタ176−2に格納されている最大値位相カウンタmax_pos1を読み出し、比較判定部192は、集計値max_totalに最大値カウンタmaxを加算することにより集計値max_totalを更新する。
ステップS203(図28)において、狭域処理部141の整数ブロックサイズ判定部191−3は、最大値位相カウンタ176−3に格納されている最大値位相カウンタmax_pos2を、(max_pos1+1)に、最大値カウンタ174−3に格納されている最大値カウンタmaxを小周期バッファ1_32[max_pos2]に初期化すると共に、制御カウンタ172−3により制御される制御カウンタiをmax_pos2+1に初期化する。
ステップS204において、小周期バッファ読出部171−3は、小周期バッファ44より制御カウンタiで指定される小周期バッファbuf1_32[i]を読み出し、比較部173−3に供給する。比較部173−3は、小周期バッファbuf1_32[i]が最大値カウンタmaxよりも大きいか否かを判定する。
ステップS204において、例えば、小周期バッファbuf1_32[i]が最大値カウンタmaxよりも大きい場合、ステップS205において、比較部173−3は、比較結果を最大値カウンタ更新部175−3および最大値位相カウンタ更新部177−3に供給する。最大値カウンタ更新部175−3は、比較結果に基づいて、最大値カウンタ174−3の最大値カウンタmaxを小周期バッファbuf1_32[i]により更新する。また、最大値位相カウンタ更新部177−3は、最大値位相カウンタ176−3の最大値位相カウンタmax_pos2を制御カウンタiで更新する。
ステップS206において、制御カウンタ172−3は、制御カウンタiを1インクリメントする。
ステップS207において、小周期バッファ読出部171−2は、制御カウンタiがブロックサイズ10.67の巡回数32(0乃至31)の最大値である31よりも小さいか否かを判定し、31よりも小さい場合、処理は、ステップS204に戻り、ステップS204乃至S207の処理を繰り返す。
そして、ステップS207において、制御カウンタiが32よりも小さくない場合、ステップS208において、判定結果出力部178−3は、最大値カウンタ174−3に格納されている最大値カウンタmaxおよび最大値位相カウンタ176−3に格納されている最大値位相カウンタmax_pos2を読み出し、比較判定部192は、集計値max_totalに最大値カウンタmaxを加算することにより集計値max_totalを更新する。
ステップS209において、比較判定部192は、最大位相カウンタmax_pos1から最大位相カウンタmax_pos0を減算した値が10となるか否かを判定する。ステップS209において、例えば、最大位相カウンタmax_pos1から最大位相カウンタmax_pos0を減算した値が10となる場合、処理は、ステップS210に進む。
ステップS210において、比較判定部192は、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が11となるか否かを判定する。ステップS210において、例えば、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が11となる場合、ステップS211において、比較判定部192は、小数点以下の位置phを0/3と判定する。
ステップS212において、比較判定部192は、信頼度情報relyをmax_totalを3で除することにより求め、ステップS213において、水平方向のブロックサイズが10.67画素の情報であることを示すブロックサイズbs10、最大値位相カウンタmax_pos0の値に小数点以下の位置phを加算してブロック境界位置bp10、および信頼度情報relyの値をブロックサイズ10.67に対する信頼度情報br10として、狭域候補選択部144に供給する。
また、ステップS209において、例えば、最大位相カウンタmax_pos1から最大位相カウンタmax_pos0を減算した値が10とならない場合、処理は、ステップS214に進む。
ステップS214において、比較判定部192は、最大位相カウンタmax_pos1から最大位相カウンタmax_pos0を減算した値が11となるか否かを判定する。ステップS214において、例えば、最大位相カウンタmax_pos1から最大位相カウンタmax_pos0を減算した値が11となる場合、処理は、ステップS215に進む。
ステップS215において、比較判定部192は、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が10となるか否かを判定する。ステップS215において、例えば、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が10となる場合、ステップS216において、比較判定部192は、小数点以下の位置phを1/3と判定する。
また、ステップS215において、例えば、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が10とならない場合、ステップS219において、比較判定部192は、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が11となるか否かを判定する。ステップS219において、例えば、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が11となる場合、ステップS217において、比較判定部192は、小数点以下の位置phを2/3と判定する。
そして、ステップS210において、例えば、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が10とならない場合、ステップS214において、例えば、最大位相カウンタmax_pos1から最大位相カウンタmax_pos0を減算した値が11とならない場合、または、ステップS219において、例えば、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が11とならない場合、ステップS218において、比較判定部192は、正しい値ではないものとみなし、小数点以下の位置phを0/3と判定するが、信頼度情報relyをmax_totalを3よりも大きな値(図28では、3×2としているが、これよりも大きな値でもよい)で除することにより、信頼度情報relyを小さくする。
すなわち、上述したように10.67画素のブロックサイズに対応させるために巡回数を32としたのは、10.67を整数にする最小公倍数であるからであり、巡回区間を3区間に分類し、各区間におけるブロック境界位置との相対関係から小数点以下の位置を求めるためである。
以上の処理により、狭域分布情報バッファhist1に基づいたブロックサイズが10.67画素の小周期バッファbuf1_32に基づいて、水平方向のブロックサイズが10.67画素である(bs=10)場合の巡回数内のブロック境界位置bp10、および、ブロック境界位置bp10となった画素数である信頼度情報br10が求められることになる。
ここで、図25のフローチャートの説明に戻る。
ステップS143において、狭域ブロックサイズ10.67情報取得処理が実行されると、ステップS144において、狭域候補選択部144は、狭域分布ブロックサイズ候補判定処理を実行し、狭域分布情報バッファhist1に基づいたブロックサイズ、およびブロック境界位置の候補を選択する。
ここで、図29のフローチャートを参照して、狭域分布ブロックサイズ候補選択処理について説明する。
ステップS241において、狭域候補選択部144は、信頼度比較部144aを制御して、信頼度情報br12が、信頼度情報br10よりも大きく、かつ、信頼度情報br12が、信頼度情報br8よりも大きいか否かを判定させる。すなわち、ブロックサイズ12における信頼度が最も高いか否かが判定される。ステップS241において、例えば、信頼度情報br12が、信頼度情報br10よりも大きく、かつ、信頼度情報br12が、信頼度情報br8よりも大きい場合、処理は、ステップS242に進む。
ステップS242において、狭域候補選択部144は、発生頻度比較部144bを制御して、発生頻度interval1[12]が、発生頻度interval1[8]よりも大きく、かつ、発生頻度interval1[12]が、発生頻度interval1Jよりも大きいか否かを判定する。尚、発生頻度interval1Jは、発生頻度interval1[10]とinterval1[11]との和であり、10.67画素のブロックサイズにおける発生頻度を示すものである。したがって、ステップS242においては、ブロックサイズ12における発生頻度が最も高いか否かが判定される。ステップS242において、発生頻度interval1[12]が、発生頻度interval1[8]よりも大きく、かつ、発生頻度interval1[12]が、発生頻度interval1Jよりも大きい場合、処理は、ステップS243に進む。
ステップS243において、狭域候補選択部144は、信頼度情報br12が、境界条件発生総数btotal1_12/Nよりも大きいか否かを判定する。ここで、Nは、所定の定数である。すなわち、ステップS243においては、信頼度情報br12が、境界条件発生総数btotal1_12/Nに対して、所定の比率以上存在するか否かが判定される。ステップS243において、例えば、信頼度情報br12が、境界条件発生総数btotal1_12/Nよりも大きいと判定された場合、狭域候補選択部144は、狭域分布情報hist1の候補ブロックサイズbs1としてブロックサイズbs12を選択すると共に、対応して候補ブロック境界位置bp1、候補信頼度情報br1、候補周期カウンタbi1、および候補境界発生総数bt1として、それぞれbp12、br12、interval1[12]、およびbtotal1_12を設定し、総合選択部147に供給する。
一方、ステップS241において、例えば、信頼度情報br12が、信頼度情報br10よりも大きく、かつ、信頼度情報br12が、信頼度情報br8よりも大きくない場合、処理は、ステップS245に進む。
ステップS245において、狭域候補選択部144は、信頼度比較部144aを制御して、信頼度情報br10が、信頼度情報br8よりも大きいか否かを判定させる。すなわち、ブロックサイズ10における信頼度が最も高いか否かが判定される。ステップS245において、例えば、信頼度情報br10が、信頼度情報br8よりも大きい場合、処理は、ステップS246に進む。
ステップS246において、狭域候補選択部144は、発生頻度比較部144bを制御して、発生頻度interval1[10]が、発生頻度interval1[8]よりも大きいか否かを判定する。ステップS246において、発生頻度interval1[10]が、発生頻度interval1[8]よりも大きい場合、処理は、ステップS247に進む。
ステップS247において、狭域候補選択部144は、信頼度情報br10が、境界条件発生総数btotal1_10/Nよりも大きいか否かを判定する。すなわち、ステップS247においては、信頼度情報br10が、境界条件発生総数btotal1_10/Nに対して、所定の比率以上存在するか否かが判定される。ステップS247において、例えば、信頼度情報br10が、境界条件発生総数btotal1_10/Nよりも大きいと判定された場合、狭域候補選択部144は、狭域分布情報hist1の候補ブロックサイズbs1としてブロックサイズbs10を選択すると共に、対応して候補ブロック境界位置bp1、候補信頼度情報br1、候補周期カウンタbi1、および候補境界発生総数bt1として、それぞれbp10、br10、interval1[10]、およびbtotal1_10を設定し、総合選択部147に供給する。
そして、ステップS242において、発生頻度interval1[12]が、発生頻度interval1[8]よりも大きくないか、または、発生頻度interval1[12]が、発生頻度interval1Jよりも大きくない場合、ステップS243において、例えば、信頼度情報br12が、境界条件発生総数btotal1_12/Nよりも大きくない場合、ステップS245において、例えば、信頼度情報br10が、信頼度情報br8よりも大きくない場合、ステップS246において、発生頻度interval1[10]が、発生頻度interval1[8]よりも大きくない場合、または、ステップS247において、例えば、信頼度情報br10が、境界条件発生総数btotal1_10/Nよりも大きくない場合、狭域候補選択部144は、狭域分布情報hist1の候補ブロックサイズbs1としてブロックサイズbs8を選択すると共に、対応して候補ブロック境界位置bp1、候補信頼度情報br1、候補周期カウンタbi1、および候補境界発生総数bt1として、それぞれbp8、br8、interval1[8]、およびbtotal1_8を設定し、総合選択部147に供給する。
すなわち、最も信頼度情報が高く、かつ、最も発生頻度が高く、かつ、境界条件発生総数に対して所定の比率以上であるブロックサイズが狭域分布情報に基づいた候補として選択される。尚、以降においては、ブロックサイズbs1、ブロック境界位置bp1、信頼度情報br1、周期カウンタbi1、および境界発生総数bt1を纏めて、狭域分布情報に基づいて得られたブロックサイズ情報と称するものとする。
以上の処理により狭域分布情報に基づいて、最も信頼度情報が高く、かつ、最も発生頻度が高く、かつ、境界条件発生総数に対して所定の比率以上であるブロックサイズが狭域分布情報のブロックサイズの候補として選択することが可能となる。
ここで、図25のフローチャートの説明に戻る。
すなわち、ステップS141乃至S144の処理により、狭域ブロックサイズ8,12,10.67情報が取得され、それらの中から狭域分布ブロックサイズ候補として、ブロックサイズbs1、候補ブロック境界位置bp1、候補信頼度情報br1、候補周期カウンタbi1、および候補境界発生総数bt1が求められる。
同様にして、ステップS145乃至S148においては、ステップS145乃至S147の処理で、中域処理部142により、それぞれ中域ブロックサイズ8,12,10.67情報が取得される。そして、ステップS148において、中域候補選択部145が、信頼度比較部145aおよび発生頻度比較部145bを制御することにより、中域ブロックサイズ候補判定処理を実行する。この処理により、中域分布ブロックサイズ候補として、ブロックサイズbs2、候補ブロック境界位置bp2、候補信頼度情報br2、候補周期カウンタbi2、および候補境界発生総数bt2が求められ、中域分布情報に基づいたブロックサイズ情報として総合選択部147に供給される。
さらに、ステップS149乃至S152においては、ステップS149乃至S151の処理で、広域処理部143により、それぞれ広域ブロックサイズ8,12,10.67情報が取得される。そして、ステップS152において、広域候補選択部146が、信頼度比較部146aおよび発生頻度比較部146bを制御することにより、広域分布ブロックサイズ候補判定処理を実行する。この処理により、広域分布ブロックサイズ候補として、ブロックサイズbs3、候補ブロック境界位置bp3、候補信頼度情報br3、候補周期カウンタbi3、および候補境界発生総数bt3が求められ、広域分布情報に基づいたブロックサイズ情報として総合選択部147に供給される。
ステップS153において、総合選択部147は、水平ブロックサイズ判定処理を実行し、ブロックサイズを計測結果として求める。
ここで、図30のフローチャートを参照して、水平ブロックサイズ判定処理について説明する。
ステップS281において、総合選択部147は、信頼度比較部147aを制御して、候補信頼度情報br3_tが、候補信頼度情報br2_tよりも大きく、かつ、候補信頼度情報br3_tが、候補信頼度情報br8よりも大きいか否かを判定する。すなわち、候補信頼度情報br3_tが、最大値であるか否かが判定される。
尚、中域分布情報バッファhist2は、水平方向の位置カウンタxが偶数の場合のみのデータである。そこで、候補信頼度情報br2_tは、候補信頼度情報br2を2倍することにより、候補信頼度情報br1との比較のため正規化した値を示している。また、広域分布情報バッファhist3は、水平方向の位置カウンタxが4の倍数の場合のみのデータである。そこで、候補信頼度情報br3_tは、候補信頼度情報br3を4倍することにより、候補信頼度情報br1との比較のため正規化した値を示している。
ステップS281において、候補信頼度情報br3_tが、候補信頼度情報br2_tよりも大きく、かつ、候補信頼度情報br3_tが、候補信頼度情報br1よりも大きい場合、処理は、ステップS282に進む。
ステップS282において、総合選択部147は、発生頻度比較部147bを制御して、候補周期カウンタbi3_tが、候補周期カウンタbi2_tよりも大きく、かつ、候補周期カウンタbi3_tが、候補周期カウンタbi1よりも大きいか否かを判定する。
尚、候補周期カウンタbi2_t,bi3_tについても、候補信頼度情報br2_t,br3_tと同様であり、それぞれ候補周期カウンタbi2を2倍、およびbi3を4倍して、正規化した値である。
ステップS282において、例えば、候補周期カウンタbi3_tが、候補周期カウンタbi2_tよりも大きく、かつ、候補周期カウンタbi3_tが、候補周期カウンタbi1よりも大きい場合、ステップS283において、総合選択部147は、集中度比較部147cを制御して、候補信頼度情報br3_tが、候補境界発生総数bt3の所定の比率1/Mよりも大きいか否かを判定し、広域分布情報から得られた候補信頼度情報br3_tの集中度を判定する。
ステップS283において、候補信頼度情報br3_tが、候補境界発生総数bt3の所定の比率1/Mよりも大きいと判定された場合、処理は、ステップS284に進む。
ステップS284において、総合選択部147は、広域分布ブロックサイズ候補を判定結果として選択し、判定結果として、ブロックサイズbsize_curをブロックサイズbs3の4倍とし、ブロック境界位置bpos_curを候補ブロック境界位置bp3の4倍とし、信頼度情報brank_curを候補信頼度情報br3_tとし、境界発生総数btotalを候補境界発生総数bt3の4倍として出力する。
また、ステップS281において、候補信頼度情報br3_tが、候補信頼度情報br2_tよりも大きくないか、または、候補信頼度情報br3_tが、候補信頼度情報br8よりも大きくない場合、処理は、ステップS285に進む。
ステップS285において、候補信頼度情報br2_tが、候補信頼度情報br1よりも大きい場合、処理は、ステップS286に進む。
ステップS286において、総合選択部147は、発生頻度比較部147bを制御して、候補周期カウンタbi2_tが、候補周期カウンタbi1よりも大きいか否かを判定する。
ステップS286において、例えば、候補周期カウンタbi2_tが、候補周期カウンタbi1よりも大きい場合、ステップS287において、総合選択部147は、集中度比較部147cを制御して、候補信頼度情報br2_tが、候補境界発生総数bt2の所定の比率1/Mよりも大きいか否かを判定し、中域分布情報から得られた候補信頼度情報br2_tの集中度を判定する。
ステップS287において、候補信頼度情報br2_tが、候補境界発生総数bt2の所定の比率1/Mよりも大きいと判定された場合、処理は、ステップS288に進む。
ステップS288において、総合選択部147は、中域分布ブロックサイズ候補を判定結果として選択し、判定結果として、ブロックサイズbsize_curをブロックサイズbs2の2倍とし、ブロック境界位置bpos_curを候補ブロック境界位置bp2の2倍とし、信頼度情報brank_curを候補信頼度情報br2_tとし、境界発生総数btotalを候補境界発生総数bt2の2倍として出力する。
さらに、ステップS282において、例えば、候補周期カウンタbi3_tが、候補周期カウンタbi2_tよりも大きくないか、または、候補周期カウンタbi3_tが、候補周期カウンタbi1よりも大きくない場合、ステップS283において、候補信頼度情報br3_tが、候補境界発生総数bt3の所定の比率Mよりも大きくないと判定された場合、ステップS285において、候補信頼度情報br2_tが、候補信頼度情報br1よりも大きくない場合、ステップS286において、例えば、候補周期カウンタbi2_tが、候補周期カウンタbi1よりも大きくない場合、または、ステップS287において、候補信頼度情報br2_tが、候補境界発生総数bt2の所定の比率1/Mよりも大きくない場合、ステップS289において、総合選択部147は、狭域分布ブロックサイズ候補を判定結果として選択し、判定結果として、ブロックサイズbsize_curをブロックサイズbs1とし、ブロック境界位置bpos_curを候補ブロック境界位置bp1とし、信頼度情報brank_curを候補信頼度情報br1とし、境界発生総数btotalを候補境界発生総数bt1としたブロックサイズ情報を出力する。
以上の処理により候補信頼度情報が最大であり、かつ、候補周期カウンタが最大であり、かつ、候補信頼度情報が、候補境界発生総数に対して所定の割合より大きいブロックサイズ候補を、今現在の画像において計測されたブロックサイズ情報として出力することが可能となる。
ここで、図17のフローチャートの説明に戻る。
ステップS13の判定処理により、今現在の画像において計測されるブロックサイズ情報が求められる。
ステップS14において、安定化処理部46は、安定化処理を実行して、今現在の画像におけるブロックサイズ情報と、過去の画像におけるブロックサイズ情報とを用いて、出力するブロックサイズ情報を安定化させて出力する。
ここで、図31のフローチャートを参照して、安定化処理部46による安定化処理について説明する。
ステップS301において、安定化処理部46は、直前の画像において安定化処理がなされたブロックサイズbsize_preを8に、直前の画像において安定化処理がなされたブロック境界位置bpos_preを0に、直前の画像において安定化処理がなされる前の計測結果のブロックサイズbsize_fd1を8に、直前の画像において安定化処理がなされる前の計測結果のブロック境界位置bpos_fd1を0に、判定結果の変更の有無を示す判定値bchangeを0にそれぞれ初期化する。尚、このステップS301の処理は、2枚目の画像以降においてはスキップされる。
ステップS302において、取得部201は、判定部45より供給されてくる今現在の画像における判定結果として、ブロックサイズbsize_cur、ブロック境界位置bpos_cur、信頼度情報brank_cur、および境界発生総数btotalを取得し、ブロック境界位置bpos_curをstep計算部202に、ブロックサイズbsize、ブロック境界位置bpos_cur、信頼度情報brank_cur、および境界発生総数btotalを直前画像情報比較部203、直前画像情報記憶部207、および選択部211に供給する。
このとき、step計算部202は、信頼度情報brank_curより制御係数stepを計算する。より具体的には、step計算部202は、例えば、信頼度情報brank_curが所定の最低値より小さいとき、制御係数step=−1とし、所定の最低値より大きく、かつ、所定の最高値よりも小さいとき、制御係数step=0とし、所定の最高値よりも大きいとき、制御係数step=1とするように計算する。
ステップS303において、直前画像情報比較部203は、直前画像情報記憶部207に記憶されている安定化処理後のブロックサイズbsize_preおよびブロック境界位置bpos_preを読み出し、今現在の安定化処理前のブロックサイズbsize_curとブロックサイズbsize_preとが同一で、かつ、ブロック境界位置bpos_curと、ブロック境界位置bpos_preとが同一であるか否かを判定する。すなわち、直前の画像との比較により、ブロックサイズとブロック境界位置が同一であるか否かが判定される。
ステップS303において、例えば、ブロックサイズbsize_curとブロックサイズbsize_preとが同一で、かつ、ブロック境界位置bpos_curと、ブロック境界位置bpos_preとが同一である場合、ステップS304において、直前画像情報比較部203は、判定結果を判定値管理部205、および変更可能性フラグ管理部209に供給する。判定値管理部205は、判定値bchangeを0にし、判定値メモリ206に格納する。また、変更可能性フラグ管理部209は、変化の有無の可能性を示す変更可能性フラグbflagを変更の可能性がないことを示す0に設定し、変更可能性フラグメモリ210に格納する。
一方、ステップS303において、例えば、ブロックサイズbsize_curとブロックサイズbsize_preとが同一ではないか、または、ブロック境界位置bpos_curと、ブロック境界位置bpos_preとが同一ではない場合、処理は、ステップS305に進む。
ステップS305において、直前画像安定化情報比較部204は、直前画像安定化情報記憶部208に記憶されている、安定化処理前のブロックサイズbsize_fd1およびブロック境界位置bpos_fd1を読み出し、今現在の安定化処理前のブロックサイズbsize_curと、直前の画像の安定化処理前のブロックサイズbsize_fd1とが同一で、かつ、ブロック境界位置bpos_curと、ブロック境界位置bpos_fd1とが同一であるか否かを判定する。すなわち、安定化処理後の直前の画像との比較により、ブロックサイズとブロック境界位置が同一であるか否かが判定される。
ステップS305において、今現在の安定化処理前のブロックサイズbsize_curと、安定化処理前の直前の画像のブロックサイズbsize_fd1とが同一で、かつ、ブロック境界位置bpos_curと、ブロック境界位置bpos_fd1とが同一であると判定された場合、ステップS306において、直前画像安定化情報比較部204は、判定結果を判定値管理部205および変更可能性フラグ管理部209に供給する。判定値管理部205は、判定値bchangeを制御係数stepにして、判定値メモリ206に格納する。変更可能性フラグ管理部209は、変化の有無の可能性を示す変更可能性フラグbflagを変更の可能性があることを示す1に設定し、変更可能性フラグメモリ210に格納する。
一方、ステップS305において、今現在の安定化処理前のブロックサイズbsize_curと、安定化処理前の直前の画像のブロックサイズbsize_fd1とが同一でないか、または、ブロック境界位置bpos_curと、ブロック境界位置bpos_fd1とが同一ではないと判定された場合、ステップS307において、直前画像安定化情報比較部204は、判定結果を判定値管理部205および変更可能性フラグ管理部209に供給する。判定値管理部205は、判定値bchangeを制御係数−1にして、判定値メモリ206に格納する。変更可能性フラグ管理部209は、変化の有無の可能性を示す変更可能性フラグbflagを変更の可能性があることを示す1に設定し、変更可能性フラグメモリ210に格納する。
ステップS308において、判定値管理部205は、波形整形部205aを制御し、判定値メモリ206の判定値bchangeを波形整形し、判定値メモリ206に格納する。具体的には、判定値管理部205は、判定値bchangeが0より小さい場合、判定値bchangeを0にし、判定値bchangeが最大値bchange_thより大きい場合、判定値bchangeを最大値bchange_thにし、それ以外のとき、そのままに設定することにより判定値を波形整形する。
ステップS309において、選択部211は、判定値メモリ206の判定値bchangeと、変更可能性フラグメモリ210より変更可能性フラグbflagを読み出し、判定値bchangが、最大値bchang_thと同一であり、かつ、変更可能性フラグbflagが、変更有を示す1であるか否かを判定する。
ステップS309において、判定値bchangが、最大値bchang_thと同一であり、かつ、変更可能性フラグbflagが、変更有を示す1である場合、ステップS310において、選択部211は、安定化処理されたブロックサイズbsizeを今現在画像の安定化処理前のブロックサイズbsize_curに変更し、さらに、安定化処理されたブロック境界位置bposを今現在画像の安定化処理前のブロック境界位置bpos_curに変更して出力する。尚、このとき、選択部211は、信頼度情報brank_curを、信頼度情報brankとして併せて出力する。
一方、ステップS309において、判定値bchangが、最大値bchang_thと同一でないか、または、変更可能性フラグbflagが、変更有を示す1ではない場合、ステップS311において、選択部211は、安定化処理されたブロックサイズbsizeを直前の画像の安定化処理後のブロックサイズbsize_preのままとし、さらに、安定化処理されたブロック境界位置bposを今現在画像の安定化処理後のブロック境界位置bpos_preのままとして出力する。尚、このとき、選択部211は、信頼度情報brank_preを信頼度情報brankとして、併せて出力する。
ステップS312において、直前画像情報記憶部207は、記憶されている直前の画像における安定化処理前のブロックサイズbsize_fd1を、今現在の安定化処理前のブロックサイズbsize_curに、安定化処理前のブロック境界位置bpos_fd1を、今現在の安定化処理前のブロック境界位置bpos_curにそれぞれ更新する。また、直前画像安定化情報記憶部208は、記憶されている直前の画像における安定化処理後のブロックサイズbsize_preを、今現在の安定化処理後のブロックサイズbsizeに、安定化処理後のブロック境界位置bpos_preを、今現在の安定化処理後のブロック境界位置bposにそれぞれ更新する。尚、併せて、このとき出力された信頼度情報brankについても信頼度情報brank_preとして図示せぬメモリに記憶させる。
以上の処理により直前の画像におけるブロックサイズおよびブロック境界位置の情報との比較により、ブロックサイズおよびブロック境界位置の情報を安定化して出力することが可能となり、例えば、1画像毎にブロックサイズが変化してしまうといった、フラッタリングを低減することが可能となる。
ここで、図17のフローチャートの説明に戻る。
ステップS14の安定化処理が終了すると、水平検出処理が終了する。すなわち、水平検出処理により水平方向のブロックサイズおよびブロック境界位置が求められることになる。
ここで、図16のフローチャートの説明に戻る。
ステップS3において、水平検出処理が終了すると、ステップS4において、垂直検出部22により垂直検出処理が実行されて、垂直方向のブロックサイズおよびブロック境界位置が検出される。
ここで、図32のフローチャートを参照して、垂直検出処理について説明する。
ステップS501において、垂直検出モード判定部501は、垂直検出モード判定処理を実行し、垂直検出モードを判定する。
ここで、図33のフローチャートを参照して、垂直検出モード判定処理について説明する。尚、以降においては、垂直方向に対して、ブロックサイズが4画素、6画素、8画素、12画素、および16画素のみを検出する例について説明するものとするが、同様の手法により、その他のブロックサイズをも検出することが可能である。
ステップS521において、インタレースプログレッシブ判定部521は、入力されてくる画像がインターレース画像であるか否かを判定する。ステップS521において、例えば、インターレース画像であると判定された場合、処理は、ステップS522に進む。
ステップS522において、ブロックサイズ判定部522は、供給されてくる水平ブロックサイズbsizeが12であるか否かを判定する。ステップS522において、ブロックサイズbsizeが12である場合、処理は、ステップS523に進む。
ステップS523において、モード決定部523は、インターレース画像であり、水平ブロックサイズbsizeが12であるとの判定結果に基づいて、垂直検出モードv_modeを0と判定し、判定結果をブロック段差情報取得部502、周期計測部504、判定部506、および安定化処理部507に供給する。垂直検出モードv_mode=0は、垂直ブロックサイズが6画素に相当するモードである。
一方、ステップS522において、水平ブロックサイズbsizeが12ではないと判定された場合、すなわち、今の場合、水平ブロックサイズが8または10.67である場合、ステップS524において、モード決定部523は、判定結果に基づいて、垂直検出モードv_modeを1と判定し、判定結果をブロック段差情報取得部502、周期計測部504、判定部506、および安定化処理部507に供給する。垂直検出モードv_mode=1は、垂直ブロックサイズが8画素または4画素に相当するモードである。
さらに、ステップS521において、インターレース画像ではないと判定された場合、すなわち、プログレッシブ画像であると判定された場合、ステップS525において、ブロックサイズ判定部522は、ブロックサイズbsizeが12であるか否かを判定する。
ステップS525において、例えば、水平ブロックサイズbsizeが12であると判定された場合、ステップS526において、モード決定部523は、判定結果に基づいて、垂直検出モードv_modeを2と判定し、判定結果をブロック段差情報取得部502、周期計測部504、判定部506、および安定化処理部507に供給する。垂直検出モードv_mode=2は、垂直ブロックサイズが12画素に相当するモードである。
また、ステップS525において、例えば、水平ブロックサイズbsizeが12であると判定された場合、ステップS527において、モード決定部523は、判定結果に基づいて、垂直検出モードv_modeを3と判定し、判定結果をブロック段差情報取得部502、周期計測部504、判定部506、および安定化処理部507に供給する。垂直検出モードv_mode=3は、垂直ブロックサイズが8画素、または16画素に相当するモードである。
以上の処理によりインターレース画像またはプログレッシブ画像の種類と水平ブロックサイズbsizeに基づいて、垂直検出モードv_modeが0,1,2,3の4種類に分類することが可能となる。
ここで、図32のフローチャートの説明に戻る。
ステップS501において、垂直検出モード判定処理により垂直検出モードv_modeが判定されると、ステップS502において、ブロック段差情報取得処理502は、ブロック段差情報取得処理を実行し、ブロック段差情報を求めて分布情報バッファ503に蓄積させる。
ここで、図34のフローチャートを参照して、ブロック段差情報取得処理について説明する。尚、図34のフローチャートにおいては、ステップS544の処理を除き、図18のフローチャートにおけるステップS21乃至S35,S43乃至S46の処理と同様であるので、その説明は省略する。
すなわち、ステップS544においては、モード判定部541が、垂直検出モードv_modeに基づいて、ブロックサイズが所定値よりも大きいか否かを判定する。そして、ステップS544において、ブロックサイズが所定値よりも大きくないと判定された場合、位置判定部542、段差計算部543、段差記憶部544、ブロック段差特徴検出部545、およびバッファhist[x]546により、ステップS545乃至S549の処理が繰り返されて、狭域分布情報バッファhist1と同一の分布情報バッファhist[x]が求められる。
一方、ステップS544において、ブロックサイズが所定値よりも大きいと判定された場合、ステップS550乃至S558の処理が実行されて、中域分布情報バッファhist2と同一の分布情報バッファhist[x]が求められることになる。
すなわち、垂直検出モードv_modeにより予め垂直方向のブロックサイズが限定されることになるので、ブロックサイズに対応した分布情報だけを求めるだけでよいため、狭域分布情報か、中域分布情報のいずれかを求めるだけでよいことになる。尚、以上においては、ブロックサイズに応じて狭域分布情報、または、中域分布情報を求める例について説明してきたが、さらに、大きなブロックサイズを取るような画像を扱う場合、さらに、広域分布情報を求めるようにしてもよい。また、狭域分布情報、中域分布情報、または広域分布情報のいずれか2つを選択して、ブロックサイズに応じて求めるようにしてもよい。
ここで、図32のフローチャートの説明に戻る。
ステップS502において、ブロック段差情報取得処理が終了すると、ステップS503において、周期計測部504は、周期計測処理を実行し、小周期バッファを求める。
ここで、図35のフローチャートを参照して、周期計測部504による周期計測処理について説明する。
ステップS571において、周期計測部504は、処理対象となる分布情報バッファを分布情報バッファ503に格納されている分布情報バッファhist[x]に設定する。
ステップS572において、小周期バッファ取得部562は、モード取得部561により供給されてくる垂直検出モードv_modeに基づいて、ピーク判定部591、小周期バッファ更新部592、および境界条件発生総数更新部593を制御して、垂直検出モードv_modeに対応するブロックサイズの画素数に対応する小周期バッファ取得処理を実行する。尚、小周期バッファ取得処理については、図24のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
すなわち、垂直処理においては、垂直検出モードv_modeにより予めブロックサイズが限定されることになるので、小周期バッファ取得処理を限定されたブロック数にのみ実施すればよい。
ここで、図32のフローチャートの説明に戻る。
ステップS503において、周期計測処理が実施され、小周期バッファが求められると、ステップS504において、判定部506は、判定処理を実行し垂直方向のブロックサイズおよびブロック境界位置を判定する。
ここで、図36のフローチャートを参照して、判定部506による判定処理について説明する。
ステップS591において、モード判定部611は、垂直検出モード判定部501より供給されてくる垂直検出モードv_modeが0を含む偶数モードであるか否かを判定する。すなわち、この例においては、v_modeが0,2は、ブロックサイズpが、インターレース画像、またはプログレッシブ画像であるか否かが判定される。
ステップS591において、例えば、偶数モードであった場合、ステップS592において、偶数モードブロックサイズ判定部612が、小周期バッファ読出部631、制御カウンタ632、比較部633、最大値カウンタ634、最大値カウンタ更新部635、最大値位相カウンタ636、最大値位相カウンタ更新部637、および判定結果出力部638を制御して、ブロックサイズp情報取得処理を実行する。尚、この処理は、図26を参照して説明したブロックサイズ8情報取得処理と同様であるので、その説明は省略する。
ステップS592において、ブロックサイズp情報取得処理が実行され、ブロックサイズp情報が取得されると、ステップS593において、判定結果出力部638は、ブロックサイズp情報取得処理の判定結果に基づいて、ブロックサイズbsize_cur、ブロック境界位置bpos_cur、境界条件発生総数btotalとして出力する。
一方、ステップS591において、偶数ではなく、奇数であると判定された場合、すなわち、今の例においては、ブロックサイズが4画素若しくは8画素、または、8画素または16画素の場合、ステップS593において、奇数モードブロックサイズ判定部613は、ブロックサイズp or p/2情報取得処理を実行し、奇数モードにおけるブロックサイズp or p/2情報を取得する。
ここで、図37のフローチャートを参照して、ブロックサイズp or p/2情報取得処理について説明する。
ここで、図37のフローチャートを参照して、ブロックサイズp or p/2情報取得処理について説明する。尚、整数ブロックサイズ判定部651−1,651−2は、いずれも偶数モードブロックサイズ判定部612における構成と同様であるが、初期化の条件等が異なる。そこで、以降においては、整数ブロックサイズ判定部651−1,651−2における構成については、整数ブロックサイズ判定部161における各構成に対して、それぞれ”−1”,”−2”を付して説明するものとする。
ステップS601において、奇数モードブロックサイズ判定部613の整数ブロックサイズ判定部651−1は、最大値位相カウンタ636−1に格納されている最大値位相カウンタmax_pos0を0に、および最大値カウンタ634−1に格納されている最大値カウンタmax0を小周期バッファbuf[max_pos0]にそれぞれ初期化すると共に、制御カウンタ632−1により制御される制御カウンタiを1に初期化する。
ステップS602において、小周期バッファ読出部631−1は、小周期バッファ505より制御カウンタiで指定される小周期バッファbuf[i]を読み出し、比較部633−1に供給する。比較部633−1は、小周期バッファbuf[i]が最大値カウンタmax0よりも大きいか否かを判定する。
ステップS602において、例えば、小周期バッファbuf[i]が最大値カウンタmax0よりも大きい場合、ステップS603において、比較部633−1は、比較結果を最大値カウンタ更新部635−1および最大値位相カウンタ更新部637−1に供給する。最大値カウンタ更新部635−1は、比較結果に基づいて、最大値カウンタ634−1の最大値カウンタmaxを小周期バッファbuf[i]により更新する。また、最大値位相カウンタ更新部637−1は、最大値位相カウンタ636−1の最大値位相カウンタmax_pos0を制御カウンタiで更新する。
ステップS604において、制御カウンタ632−1は、制御カウンタiを1インクリメントする。
ステップS605において、小周期バッファ読出部631−1は、制御カウンタiがブロックサイズp/2よりも小さいか否かを判定し、p/2よりも小さい場合、処理は、ステップS602に戻り、ステップS602乃至S605の処理を繰り返す。
そして、ステップS605において、制御カウンタiがp/2よりも小さくない場合、ステップS606において、判定結果出力部638−1は、最大値カウンタ634−1に格納されている最大値カウンタmax0および最大値位相カウンタ636に格納されている最大値位相カウンタmax_pos0を読み出し、比較判定部652に供給する。
ステップS607において、奇数モードブロックサイズ判定部613の整数ブロックサイズ判定部651−2は、最大値位相カウンタ636−2に格納されている最大値位相カウンタmax_pos1を、p/2に、最大値カウンタ174−2に格納されている最大値カウンタmax1を小周期バッファbuf[max_pos1]に初期化すると共に、制御カウンタ172−2により制御される制御カウンタiをmax_pos1+1に初期化する。
ステップS608において、小周期バッファ読出部631−2は、小周期バッファ505より制御カウンタiで指定される小周期バッファbuf[i]を読み出し、比較部633−2に供給する。比較部633−2は、小周期バッファbuf[i]が最大値カウンタmax1よりも大きいか否かを判定する。
ステップS608において、例えば、小周期バッファbuf[i]が最大値カウンタmax1よりも大きい場合、ステップS609において、比較部633−2は、比較結果を最大値カウンタ更新部635−2および最大値位相カウンタ更新部637−2に供給する。最大値カウンタ更新部635−2は、比較結果に基づいて、最大値カウンタ634−2の最大値カウンタmax1を小周期バッファbuf[i]により更新する。また、最大値位相カウンタ更新部637−2は、最大値位相カウンタ636−2の最大値位相カウンタmax_pos1を制御カウンタiで更新する。
ステップS610において、制御カウンタ632−2は、制御カウンタiを1インクリメントする。
ステップS201において、小周期バッファ読出部171−2は、制御カウンタiがブロックサイズpよりも小さいか否かを判定し、pよりも小さい場合、処理は、ステップS608に戻り、ステップS608乃至S611の処理を繰り返す。
そして、ステップS611において、制御カウンタiがpよりも小さくない場合、ステップS612において、判定結果出力部638−2は、最大値カウンタ634−2に格納されている最大値カウンタmaxおよび最大値位相カウンタ636−2に格納されている最大値位相カウンタmax_pos1を読み出し、比較判定部652に供給する。
ステップS613において、比較判定部652は、最大値カウンタmax0が最大値カウンタmax1より大きいか否かを判定する。ステップS613において、例えば、最大値カウンタmax0が最大値カウンタmax1より大きい場合、処理は、ステップS614に進む。
ステップS614において、比較判定部652は、最大値カウンタmaxを最大値カウンタmax0とし、最大値位相カウンタmax_posを最大値位相カウンタmax_pos0とし、最小値カウンタminを最大値カウンタmax1とし、最小値位相カウンタmin_posを最大値位相カウンタmax_pos1とする。
一方、ステップS613において、例えば、最大値カウンタmax0が最大値カウンタmax1より大きくない場合、処理は、ステップS615に進む。
ステップS615において、比較判定部652は、最大値カウンタmaxを最大値カウンタmax1とし、最大値位相カウンタmax_posを最大値位相カウンタmax_pos1とし、最小値カウンタminを最大値カウンタmax0とし、最小値位相カウンタmin_posを最大値位相カウンタmax_pos0とする。
ステップS616において、比較判定部652は、最大値カウンタmaxと最小値カウンタmin×2とを比較し、最大値カウンタmaxが最小値カウンタminに対して十分に大きいか否かを判定する。
ステップS616において、比較判定部652は、最大値カウンタmaxと最小値カウンタmin×2とを比較し、最大値カウンタmaxが最小値カウンタminに対して十分に大きいと判定された場合、ステップS617において、比較安定部652は、垂直方向のブロックサイズbsがp画素であり、ブロック境界位置bpが、最大値位相カウンタmax_posであり、信頼度情報brが最大値カウンタmaxである情報を、安定化処理部46に供給する。
ステップS616において、最大値カウンタmaxが最小値カウンタminに対して十分に大きくないと判定された場合、ステップS618において、比較判定部652は、最大値位相カウンタmax_pos1から最大値位相カウンタmax_pos0を減算した値が、p/2であるか否かを判定する。
ステップS618において、例えば、最大値位相カウンタmax_pos1から最大値位相カウンタmax_pos0を減算した値が、p/2である場合、ステップS619において、比較判定部652は、比較安定部652は、垂直方向のブロックサイズbsがp/2画素であり、ブロック境界位置bpが、最大値位相カウンタmin_posであり、信頼度情報brが最大値カウンタmaxと最小値カウンタminとの平均である情報を、安定化処理部46に供給する。
また、ステップS618において、例えば、最大値位相カウンタmax_pos1から最大値位相カウンタmax_pos0を減算した値が、p/2ではない場合、処理は、ステップS617に進む。
以上の処理により画素pまたはp/2とされるブロックサイズについては、それぞれの小周期バッファのうち最大値となる値同士の比較により最大となるブロックサイズが、計測されるブロックサイズとして選択される。
ここで、図32のフローチャートの説明に戻る。
ステップS504の判定処理によりブロックサイズおよびブロック境界位置が判定されると、ステップS505において、安定化処理部507により安定化処理なされて、判定処理により判定されたブロックサイズ、およびブロック境界位置の情報が安定化されて出力される。尚、安定化処理については、図31のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
ここで、図16のフローチャートの説明に戻る。
ステップS4において、垂直検出処理が実行されると、ステップS5において、ブロック境界情報検出部11は、入力条件の変更があるか否かを判定し、変更がないと判定した場合、処理は、ステップS3に戻る。すなわち、入力条件の変更が無い限り、ステップS3乃至S5の処理が繰り返される。
そして、ステップS5において、入力条件の変更があると判定された場合、処理は、ステップS1に戻り、以降の処理が繰り返される。
尚、以上においては、水平方向のブロックサイズを求めた後、垂直方向のブロックサイズを求めることにより、水平方向のブロックサイズの情報に基づいて、垂直方向のブロックサイズを求める手間を省くことが可能となり、処理の高速化を実現することが可能となる。
また、ブロックサイズについては、小数点以下の値であっても求めることが可能であるので、今後、様々な画像フォーマットが発生しても、また、元画像からスケーリングが施されても、高い精度でブロックサイズやブロック境界を求めることが可能となる。
尚、以上においては、水平方向のブロックサイズを求めた後、垂直方向のブロックサイズを求めることとする例について説明してきたが、当然のことながら垂直方向のブロックサイズを求めてから、水平方向のブロックサイズを求めるようにしてもよい。さらに、水平検出処理、または、垂直検出処理のいずれかだけであってもよい。
以上の処理によりブロックサイズおよびブロック境界位置を高い精度で求めることが可能となる。
ところで、上述した一連の画像処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
図38は、汎用のパーソナルコンピュータの構成例を示している。このパーソナルコンピュータは、CPU(Central Processing Unit)1001を内蔵している。CPU1001にはバス1004を介して、入出力インタフェース1005が接続されている。バス1004には、ROM(Read Only Memory)1002およびRAM(Random Access Memory)1003が接続されている。
入出力インタフェース1005には、ユーザが操作コマンドを入力するキーボード、マウスなどの入力デバイスよりなる入力部1006、処理操作画面や処理結果の画像を表示デバイスに出力する出力部1007、プログラムや各種データを格納するハードディスクドライブなどよりなる記憶部1008、LAN(Local Area Network)アダプタなどよりなり、インターネットに代表されるネットワークを介した通信処理を実行する通信部1009が接続されている。また、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどのリムーバブルメディア1011に対してデータを読み書きするドライブ1010が接続されている。
CPU1001は、ROM1002に記憶されているプログラム、または磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリ等のリムーバブルメディア1011から読み出されて記憶部1008にインストールされ、記憶部1008からRAM1003にロードされたプログラムに従って各種の処理を実行する。RAM1003には、CPU1001が各種の処理を実行する上において必要なデータなども適宜記憶される。
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
1 画像処理装置 11 ブロック境界情報検出装置, 12 ブロックノイズ低減処理部, 21 水平検出部, 22 垂直検出部, 41 ブロック段差情報取得部, 42−1 狭域分布情報バッファ, 42−2 中域分布情報バッファ, 42−3 広域分布情報バッファ, 43 周期計測部, 44 小周期情報バッファ, 45 判定部, 46 安定化処理部, 501 垂直検出モード検出部, 502 ブロック段差情報取得部, 503 分布情報バッファ, 504 周期計測部, 505 小周期情報バッファ, 506 判定部, 507 安定化処理部