図1は、本発明を適用した画像処理システムの一実施の形態の構成例を示すブロック図である。
図1の画像処理システム1は、DVDプレーヤなどの画像送出装置11と画像処理装置12により構成され、画像送出装置11から送出される入力画像のブロックノイズを低減し、出力画像として出力する。
画像送出装置11は、スケーリング部21と表示制御部22により構成される。スケーリング部21には、図示せぬDVDやHDDなどの記録媒体に記録されている圧縮された記録信号が読み出されてデコードされることにより得られた画像(以下、元画像という)が入力される。スケーリング部21は、表示制御部22から供給されるスケーリング率で元画像をスケーリングすることにより、解像度変換やIP変換(インタレース−プログレッシブ変換)を行う。
具体的には、例えば、スケーリング部21は、図2で示されるように、720画素×480画素のSD(Standard Definition)解像度の画像Aを、1280画素×720画素の解像度の画像D、360画素×240画素の解像度の画像B、または、1920画素×1080画素のHD(High Definition)解像度の画像Eに変換する。また、スケーリング部21は、HD解像度の1つである1440画素×1080画素の画像Cを、もう1つのHD解像度である1920画素×1080画素の画像Eに変換する。
さらに、スケーリング部21は、720画素×480画素のSD解像度の画像Aを、1440画素×1080画素の解像度の画像に変換して、左右に240画素幅の枠を付加することにより、画像Aを1920画素×1080画素のHD解像度の画像Fに変換する。
そして、スケーリング部21は、スケーリング後の画像を入力画像として画像処理装置12に入力する。
表示制御部22には、画像処理装置12から出力される出力画像の画面モードが入力される。表示制御部22は、画面モードに応じてスケーリング率を決定する。そして、表示制御部22は、そのスケーリング率をスケーリング部21と画像処理装置12に入力する。
画像処理装置12は、再スケーリング部31、ブロック境界情報検出部32、検出情報補正部33、およびブロックノイズ低減処理部34により構成される。
再スケーリング部31は、スケーリング部21から入力される入力画像と、表示制御部22から入力されるスケーリング率を取得する。再スケーリング部31は、そのスケーリング率で入力画像を再度スケーリングし、入力画像のサイズおよび構造を、スケーリング前の元画像のサイズおよび構造に戻す。そして、再スケーリング部31は、再度スケーリングを行うことにより得られた入力画像(以下、再スケーリング画像という)をブロック境界情報検出部32に供給する。
より詳細には、上述したように、入力画像は、スケーリング部21により解像度変換やIP変換が行われた元画像である。従って、入力画像の垂直方向のブロックサイズ(以下、垂直ブロックサイズという)は、元画像の解像度、エンコード時の条件、およびIP変換の有無によって変化する。
例えば、図3の最左部で示されるように、元画像がインターレース画像である場合、垂直ブロックサイズが8画素であるとき、エンコード時に図3の左から2番目の上段で示されるように、フィールド構造であれば、元画像の垂直ブロックサイズは、図3の左から3番目の上段で示されるように、8画素のままとなる。これに対して、元画像に対してIP変換が行われると、IP変換後の元画像の垂直ブロックサイズは、図3の左から4番目の上段で示されるように、16画素となる。
また、エンコード時に図3の左から2番目の下段で示されるように、フレーム構造であれば、元画像の垂直ブロックサイズは、図3の左から3番目の下段で示されるように、4画素の垂直ブロックサイズとなる。一方、元画像に対してIP変換が行われると、IP変換後の元画像の垂直ブロックサイズは、図3の左から4番目の下段で示されるように、8画素が維持される。
なお、スケーリング部21におけるスケーリング率とブロックサイズの変化を纏めると、図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画素である。
以上のように入力画像のブロックサイズは、元画像の解像度、エンコード時の条件(例えば、エンコード時の構造)、およびIP変換の有無によって、元画像のブロックサイズから変化する。そこで、再スケーリング部31は、スケーリング部21におけるスケーリング率に基づいて再度スケーリングを行って、入力画像のサイズおよび構造を元画像と同一にすることにより、ブロックサイズを元に戻す。
ブロック境界情報検出部32は、再スケーリング部31から供給された再スケーリング画像から、デコード前にエンコードされていた状態におけるDCT処理される単位であるブロックサイズ、ブロック境界位置、および信頼度を検出する。そして、ブロック境界情報検出部32は、検出されたブロックサイズと信頼度をブロックサイズ情報として検出情報補正部33に供給するとともに、ブロック境界位置の情報をブロック境界位置情報として検出情報補正部33に供給する。
検出情報補正部33は、画像送出装置11の表示制御部22から入力されるスケーリング率に基づいて、ブロック境界情報検出部32からの情報が表すブロックサイズとブロック境界位置を補正する。そして、検出情報補正部33は、補正後のブロックサイズ情報およびブロック境界位置情報を、入力画像のブロックサイズ情報およびブロック境界位置情報としてブロックノイズ低減処理部34に供給する。
ブロックノイズ低減処理部34は、検出情報補正部33より供給されてくるブロックサイズ情報およびブロック境界位置情報に基づいて、スケーリング部21から入力される入力画像に対するブロックノイズ低減処理の強度を適応的に変化させて、入力画像のブロックノイズを低減する。そして、ブロックノイズ低減処理部34は、ブロックノイズを低減したブロックノイズ低減処理画像を出力画像として出力する。
次に、図5を参照して、スケーリングと再スケーリングについて説明する。
なお、図5中丸印は画素を表し、丸印の中の数字k(小数点第2位以下は切捨て)は、その画素の位置を画素単位で表すものである。また、図5の例では、元画像の位相数Nを4、スケーリング後の画像の初期位相Pを7(元画像の1.75画素目)、スケーリング後の画像の位相数を表す拡大率Mを3としている。即ち、図5の例では、スケーリング率はN/M、つまり4/3倍(約1.333倍)となっている。
従って、図5Aに示されるように、スケーリング部21に入力される元画像の各画素は配置される。そして、図5Aに示されるような元画像が、スケーリング部21によりスケーリング率N/Mでスケーリングされると、スケーリング後の画像の各画素の元画像上の位置は、図5Bに示されるようになる。
具体的には、スケーリング後の画像のi番目の画素の総位相数spposは、次の式(1)で表される。
sppos=P+M×i
・・・(1)
そして、スケーリング後の画像の各画素の元画像上の位置は、元画像上のspos番目の画素の位置から、sphase番目の位相である。なお、このsposおよびsphaseは、それぞれ、spposを用いて以下の式(2)および(3)で表される。
spos=int(sppos/N)
・・・(2)
sphase=sppos%N
・・・(3)
なお、式(2)において、int( )は、( )を超えない最大の整数を表し、式(3)において、%は剰余演算子である。これらのことは、後述する(5)および(6)においても同様である。
次に、図5Bに示されるように各画素が配置されたスケーリング後の画像は、入力画像として画像処理装置12に入力される。このとき、画像処理装置12側で把握される各画素の位置は、図5Cに示されるように入力画像上の位置となる。そして、再スケーリング部31は、この入力画像上の各画素の位置とスケーリング率に基づいて、図5Dに示されるように、入力画像の各画素の元画像上の位置を計算する。
具体的には、再スケーリング部31は、入力画像のi番目の画素の総位相数opposは、次の式(4)で演算する。
oppos=P+M×i
・・・(4)
そして、入力画像の各画素の元画像上の位置が、入力画像上のopos番目の画素の位置から、ophase番目の位相であるとして、再スケーリング部31は、opposを用いて以下の式(5)および(6)の演算を行い、oposおよびophaseを求める。
opos=int((oppos-P)/N)
・・・(5)
ophase=(oppos-P)%N
・・・(6)
式(5)および(6)によれば、入力画像の各画素の元画像上の位置は、入力画像の0番目の画素の位置を元画像の0番目の画素の位置として演算される。これは、検出情報補正部33における補正を容易にするためである。
次に、再スケーリング部31は、線形補間などを行うことにより、以上のようにして計算された入力画像の各画素の元画像上の位置に、入力画像の各画素の位置を戻す。なお、このとき、入力画像の画素の元画像上の画素単位の位置を表す整数部分mposが、前(図中左隣)の画素の整数部分mposと同一である場合には、その入力画像の画素の画素値は考慮せずに線形補間を行う。例えば、図5において、図5Dに示される元画像上の画素単位の位置0.7は、前の画素の位置0と整数部分が同一であるため、線形補間において位置0.7の画素の画素値は考慮されない。
次に、図6のフローチャートを参照して、図1の画像処理装置12による画像処理について説明する。この画像処理は、例えば、画像送出装置11から入力画像が入力されたとき、開始される。
ステップS11において、画像処理装置12の再スケーリング部31(図1)は、表示制御部22から供給されるスケーリング率に基づいて、スケーリング部21から入力される入力画像に対して再スケーリングを行う。具体的には、再スケーリング部31は、図5Dに示されるように、入力画像の各画素の元画像上の位置を求め、図5Eに示されるように、入力画像の各画素の位置を元画像上の位置に戻す。そして、再スケーリング部31は、再スケーリング画像をブロック境界情報検出部32に供給する。
ステップS12において、ブロック境界情報検出部32は、ブロックサイズおよびブロック境界位置を検出するブロック検出処理を行う。このブロック検出処理の詳細については後述する。
ステップS13において、検出情報補正部33は、表示制御部22から入力されるスケーリング率に基づいて、ブロック境界情報検出部32から供給されるブロックサイズ情報とブロック境界位置情報を補正する。具体的には、検出情報補正部33は、スケーリング率N/Mを用いて次の式(7)を演算し、補正後のブロックサイズbsizeとブロック境界位置bposを得る。
bsize=BS×N/M
bpos=BP×N/M
・・・(7)
なお、式(7)において、BSは補正前のブロックサイズを表し、BPは補正前のブロック境界位置を表す。
但し、ブロックサイズが整数ではなく、ブロックサイズ比brate(後述する)で表される場合、検出情報補正部33は、スケーリング率N/Mを用いて次の式(8)を演算し、補正後のブロックサイズとしてのブロックサイズ比brateを得る。
brate=BR×M/N
・・・(8)
なお、式(8)において、BRは補正前のブロックサイズ比を表す。このブロックサイズ比とは、例えば、ブロックサイズを分母が64の分数で表したときの分子の値である。例えば、ブロックサイズが10.67である場合、ブロックサイズ比は48となる。
ステップS14において、ブロックノイズ低減処理部34は、検出情報補正部33により補正されたブロックサイズ情報とブロック境界位置情報に基づいて、入力画像に対するブロックノイズ低減処理の強度を適応的に変化させて、入力画像のブロックノイズを低減する。そして、ブロックノイズ低減処理部34は、その結果得られるブロックノイズ低減処理画像を出力画像として出力する。
次に、図7のブロック図を参照して、ブロック境界情報検出部32の実施の形態の構成例について説明する。
水平検出部41は、再スケーリング画像における水平ブロックサイズ、水平ブロック境界位置、および水平信頼度を検出し、その水平ブロックサイズと水平信頼度の情報をブロックサイズ情報として出力すると共に、水平ブロック境界位置の情報をブロック境界位置情報として出力する。また、水平検出部41は、水平ブロックサイズを垂直検出部42に供給する。
垂直検出部42は、水平検出部41より供給されてくる水平ブロックサイズに基づいて、再スケーリング画像における垂直ブロックサイズ、垂直ブロック境界位置、および垂直信頼度を検出する。そして、垂直検出部42は、検出された垂直ブロックサイズと垂直信頼度の情報をブロックサイズ情報として出力すると共に、垂直ブロック境界位置の情報をブロック境界位置情報として出力する。
次に、図8を参照して、水平検出部41の構成例について説明する。
ブロック段差情報取得部51は、再スケーリング画像の画素単位で、注目画素に対して狭域、中域、および広域の3種類の参照画素によりブロック段差情報を求め、それぞれ狭域分布情報バッファ52−1、中域分布情報バッファ52−2、および、広域分布情報バッファ52−3に出力する。
狭域分布情報バッファ52−1、中域分布情報バッファ52−2、および、広域分布情報バッファ52−3は、それぞれブロック段差情報に基づいて、狭域分布情報バッファhist1[x]、中域分布情報バッファhist2[hx]、および、広域分布情報バッファhist3[qx]で表現される配列として、水平方向の画素位置単位で、ブロック段差が検出された画素数を、それぞれ記憶している。尚、ここで、x,hx,qxは、それぞれ水平方向の位置カウンタx、位置カウンタxが2の倍数の位置カウンタhx、および、位置カウンタxが4の倍数の位置カウンタqxである。また、特に画素位置を区別する必要が無い場合、単に、狭域分布情報バッファhist1、中域分布情報バッファhist2、および、広域分布情報バッファhist3とも称するものとする。
周期計測部53は、狭域分布情報バッファ52−1、中域分布情報バッファ52−2、および、広域分布情報バッファ52−3に記憶されている狭域分布情報バッファhist1[x]、中域分布情報バッファhist2[hx]、および、広域分布情報バッファhist3[qx]の配列に基づいて、小周期情報を求めて小周期バッファ54に格納する。小周期情報は、小周期バッファbuf1_p,buf2_p,buf3_pからなる配列として求められ、小周期バッファ54に格納される。
ここで、小周期とは、それぞれブロックサイズpで表現される画素数pを示し、小周期情報とは、小周期を構成するブロックサイズpの何番目かを示す位相毎の検出数を示す情報である。
尚、小周期バッファbuf1_pは、狭域分布情報バッファhist1に基づいて得られる、水平ブロックサイズp画素の小周期情報を格納しており、小周期バッファbuf2_pは、中域分布情報バッファhist2に基づいて得られる、水平ブロックサイズp画素の小周期情報を格納しており、小周期バッファbuf3_pは、広域分布情報バッファhist3に基づいて得られる、水平ブロックサイズp画素の小周期情報を格納している。
また、周期計測部53は、狭域、中域、および広域の三種類の周期別の発生頻度interval1[n],interval2[n],interval3[n]を求めて判定部55に供給する。ここで、発生頻度interval1[n]は、狭域分布情報バッファhist1[x]に基づいて得られるピーク値の空間的な発生間隔の大きさを示す画素数nの発生頻度を表しており、発生頻度interval2[n]は、中域分布情報バッファhist2[x]に基づいて得られるピーク値の空間的な発生間隔の大きさを示す画素数nの発生頻度を表しており、発生頻度interval3[n]は、広域分布情報バッファhist3[x]に基づいて得られるピーク値の空間的な発生間隔の大きさを示す画素数nの発生頻度を表している。
判定部55は、小周期バッファ54に格納されている小周期バッファbuf1_p,buf2_p,buf3_p、および周期計測部53により計測された発生頻度interval1[n],interval2[n],interval3[n]に基づいて、今現在入力された再スケーリング画像における水平方向のブロックサイズ情報、およびブロック境界位置情報を判定し、安定化処理部56に供給する。
安定化処理部56は、判定部55より供給されてくる今現在入力されている再スケーリング画像の水平方向のブロックサイズ情報、およびブロック境界位置情報と、直前に入力されていた再スケーリング画像の水平方向のブロックサイズ情報、およびブロック境界位置情報に基づいて、出力する水平ブロックサイズ、および水平ブロック境界位置を安定化させる。そして、安定化処理部56は、安定化された水平ブロックサイズのブロックサイズ情報と水平ブロック境界位置のブロック境界位置情報を出力する。
次に、図9を参照して、ブロック段差情報取得部51の実施の形態の構成例について説明する。
狭域段差計算部61は、注目画素に対して連続して隣接する複数の画素に基づいて、注目画素の狭域段差を計算し、メモリからなる狭域段差記憶部62に記憶させる。
狭域ブロック段差特徴検出部63は、狭域段差記憶部62に記憶されている狭域段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist1[x]更新部64に供給する。
バッファhist1[x]更新部64は、狭域ブロック段差特徴検出部63より供給されてくるブロック段差特徴の検出結果に基づいて、狭域分布情報バッファ52−1の狭域分布情報バッファhist1[x]を更新する。
中域位置判定部65は、今現在の注目画素の座標位置が2の倍数であるか否かを判定し、2の倍数である場合、再スケーリング画像を中域段差計算部66に供給する。
中域段差計算部66は、注目画素に対して1画素おきに隣接する複数の画素に基づいて、注目画素の中域段差を計算し、メモリからなる中域段差記憶部67に記憶させる。
中域ブロック段差特徴検出部68は、中域段差記憶部67に記憶されている中域段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist2[hx]更新部69に供給する。
バッファhist2[hx]更新部69は、中域ブロック段差特徴検出部68より供給されてくるブロック段差特徴の検出結果に基づいて、中域分布情報バッファ52−2の狭域分布情報バッファhist2[hx]を更新する。
広域位置判定部70は、今現在の注目画素の座標位置が4の倍数であるか否かを判定し、4の倍数である場合、再スケーリング画像を広域段差計算部71に供給する。
広域段差計算部71は、注目画素に対して2画素おきに隣接する複数の画素に基づいて、注目画素の広域段差を計算し、メモリからなる広域段差記憶部72に記憶させる。
広域ブロック段差特徴検出部73は、広域段差記憶部72に記憶されている広域段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist3[qx]更新部74に供給する。
バッファhist3[qx]更新部74は、広域ブロック段差特徴検出部73より供給されてくるブロック段差特徴の検出結果に基づいて、広域分布情報バッファ52−3の広域分布情報バッファhist3[qx]を更新する。
次に、図10を参照して、周期計測部53の実施の形態の構成例について説明する。
発生頻度計測部91のピーク判定部101は、狭域分布情報バッファ52−1に格納されている狭域分布情報バッファhist1、中域分布情報バッファ52−2に格納されている中域分布情報バッファhist2、広域分布情報バッファ52−3に格納されている広域分布情報バッファhist3のそれぞれについてピークとなる位置を検出する。
フラグ設定部102は、ピーク判定部101による検出結果に応じて、ピーク判定部101によりピークが最初に検出されるまでの状態を認識するための状態フラグstateを設定する。例えば、フラグ設定部102は、ピーク判定部101によりまだピークとなる位置が検出されていない場合、状態フラグstateを0に設定し、位置が検出された場合、状態フラグstateを1に設定する。
発生頻度更新部103は、フラグ設定部102により設定されている状態フラグstateに応じて、狭域、中域、および広域のそれぞれについて、ピークが検出される画素数の間隔で、発生頻度カウンタ103aに格納されている発生頻度カウンタinterval1[n],interval2[n],interval3[n]を更新し、その結果を出力部104より判定部55に出力する。
小周期バッファ取得部92のピーク判定部111は、ピーク判定部101と同様のものであり、狭域分布情報バッファ52−1に格納されている狭域分布情報バッファhist1、中域分布情報バッファ52−2に格納されている中域分布情報バッファhist2、広域分布情報バッファ52−3に格納されている広域分布情報バッファhist3のそれぞれについてピークとなる位置を検出する。
小周期バッファ更新部112は、ピーク判定部111による検出結果に基づいて、狭域、中域、および広域のそれぞれについて、小周期バッファ54に格納されている、所定の小周期における各位相毎の発生頻度を表す小周期バッファbuf1[n],buf2[n],buf3[n]を更新する。
境界条件発生総数更新部113は、狭域、中域、および広域のそれぞれについて、ピーク判定部111によりピークが検出された場合、全て境界条件が発生したものとして、小周期バッファ54に格納されている、境界条件発生総数カウンタbtotal1,btotal2,total3を更新する。
次に、図11を参照して、判定部55の実施の形態の構成例について説明する。
判定部55は、狭域処理部141、中域処理部142、広域処理部143、狭域候補選択部144、中域候補選択部145、広域候補選択部146、および総合選択部147を備えている。
狭域処理部141、中域処理部142、および広域処理部143は、それぞれ狭域分布情報バッファhist1、中域分布情報バッファhist2、および広域分布情報バッファhist3に格納された小周期情報に基づいて、所定の水平ブロックサイズ、水平ブロック境界位置、および水平信頼度を求めて、それぞれ狭域候補選択部144、中域候補選択部145、および広域候補選択部146に供給する。
具体的には、狭域処理部141は、整数ブロックサイズ判定部161、および非整数ブロックサイズ判定部162を備えており、それぞれ整数個の画素からなる水平ブロックサイズ、および、非整数個の画素からなる水平ブロックサイズについて、それぞれの水平方向のブロックサイズ情報、およびブロック境界位置情報を生成する。
詳細には、整数ブロックサイズ判定部161の小周期バッファ読出部171は、制御カウンタ172により供給される制御カウンタiに基づいて、小周期バッファ54より狭域分布情報バッファhist1に基づいて求められた小周期バッファbuf1を小周期ごとに読み出し、比較部173に供給する。
比較部173は、小周期ごとに、小周期バッファbuf1の各値と、最大値カウンタ174に格納されている最大値カウンタmaxとを順次比較し、比較対象とされた小周期バッファbuf1の値が最大値カウンタmax以上の値である場合、最大値カウンタ更新部175を制御して、その小周期バッファbuf1の値で最大値カウンタmaxを更新する。また、このとき、比較部173は、最大値位相カウンタ更新部177を制御して、最大値位相カウンタ176に格納されている最大値位相カウンタmax_posの位相を、小周期バッファbuf1の値が最大値をとる位相に更新させる。すなわち、比較部173は、このような処理により、小周期ごとに小周期バッファbuf1がピークを取るときのピークの値となる最大値を最大値カウンタ174に最大値カウンタmaxとして記憶させると共に、そのときの小周期内における位相を最大値位相カウンタmax_posに記憶させる。
判定結果出力部178は、最終的に最大値カウンタ174に格納されている最大値カウンタmax、および最大値位相カウンタ176に格納されている最大値位相カウンタmax_posに基づいて、各小周期のブロックサイズ情報およびブロック境界位置情報を生成して、狭域候補選択部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は、処理の対象を狭域分布情報バッファhist1に代えて、中域分布情報バッファhist2、および広域分布情報バッファhist3とすることを除き、狭域処理部141と同様であるので、その説明は省略するものとする。
狭域候補選択部144、中域候補選択部145、および広域候補選択部146は、それぞれ狭域処理部141、中域処理部142、および広域処理部143より供給されてきた水平ブロックサイズ、水平ブロック境界位置、および水平信頼度に基づいて、狭域、中域、および広域のそれぞれの水平ブロックサイズ、水平ブロック境界位置、および水平信頼度の候補を選択し、総合選択部147に供給する。
具体的には、狭域候補選択部144は、信頼度比較部144aと発生頻度比較部144bにより構成される。信頼度比較部144aは、狭域処理部141の判定結果出力部178から供給されるブロックサイズ情報に含まれる水平信頼度を比較する。また、発生頻度比較部144bは、周期計測部53に記憶されている発生頻度interval1を比較する。狭域候補選択部144は、信頼度比較部144aによる比較結果と発生頻度比較部144bによる比較結果に基づいて、狭域分布情報バッファhist1に基づいた水平ブロックサイズ、水平ブロック境界位置、および水平信頼度の候補を選択し、総合選択部147に供給する。
尚、中域候補選択部145および広域候補選択部146は、比較対象を狭域処理部141から供給される水平信頼度と発生頻度interval1に代えて、中域処理部142から供給される水平信頼度と発生頻度interval2、および広域処理部143から供給される水平信頼度と発生頻度interval3とすることを除き、狭域候補選択部144と同様であるので、その説明は省略するものとする。
総合選択部147は、信頼度比較部147a、発生頻度比較部147b、および集中度比較部147cにより構成される。総合選択部147は、狭域候補選択部144、中域候補選択部145、および広域候補選択部146より供給されてきた水平ブロックサイズ、水平ブロック境界位置、および水平信頼度の候補を比較して、再スケーリング画像における水平ブロックサイズおよび水平ブロック境界位置を判定する。そして、総合選択部147は、判定された水平ブロックサイズのブロックサイズ情報と水平ブロック境界位置のブロック境界位置情報を安定化処理部56に出力する。
次に、図12を参照して、安定化処理部56の実施の形態の構成例について説明する。
取得部201は、判定部55より供給されてくる水平方向のブロックサイズ情報を取得し、step計算部202、直前画像情報比較部203、直前画像情報記憶部207、および選択部211に供給する。また、取得部201は、判定部55より供給されてくる水平方向のブロック境界位置情報を取得し、直前画像情報比較部203、直前画像安定化情報比較部204、および直前画像情報記憶部207に供給する。
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の変更可能性フラグと、判定値メモリ206の判定値とに基づいて、入力された再スケーリング画像の水平方向のブロックサイズ情報、およびブロック境界位置情報か、または、直前の再スケーリング画像の水平方向のブロックサイズ情報、およびブロック境界位置情報を出力する。
次に、図13を参照して、垂直検出部42の実施の形態の構成例について説明する。
ブロック段差情報取得部501は、再スケーリング画像の画素単位で、注目画素に対して水平ブロックサイズに対応する参照画素によりブロック段差情報を求め、分布情報バッファ502に出力する。
周期計測部503は、分布情報バッファ502に記憶されている分布情報バッファhist[x]の配列情報に基づいて、水平ブロックサイズに対応する小周期の小周期情報を求め、小周期バッファbuf_pからなる配列として、小周期バッファ504に格納させる。
判定部505は、図11の狭域処理部141および発生頻度比較部144bを備えていない狭域候補選択部144と同様に構成され、小周期バッファ504に格納されている小周期バッファbuf_pに基づいて、今現在入力された再スケーリング画像における垂直方向のブロックサイズ情報、および垂直ブロック境界位置情報を判定し、安定化処理部506に供給する。
安定化処理部506は、図12の安定化処理部56と同様に構成され、判定部505より供給されてくる今現在入力されている再スケーリング画像の垂直方向のブロックサイズ情報、およびブロック境界位置情報と、直前に入力されていた再スケーリング画像の垂直方向のブロックサイズ情報、およびブロック境界位置情報に基づいて、出力する垂直ブロックサイズ、および垂直ブロック境界位置を安定化させる。そして、安定化処理部506は、安定化された垂直ブロックサイズのブロックサイズ情報と垂直ブロック境界位置のブロック境界位置情報を出力する。
次に、図14のブロック図を参照して、ブロック段差情報取得部501の実施の形態の構成例について説明する。
サイズ判定部541は、水平ブロックサイズを取得して、垂直ブロックサイズの大小を判定し、判定結果を位置判定部542に供給する。
位置判定部542は、位置判定部542による判定結果に基づいて、今現在の垂直方向の位置カウンタyにおいて、段差を計算するか否かを判定し、判定結果に基づいて、段差計算部543に段差計算を実行させる。
段差計算部543は、位置判定部542の判定結果に基づいて、再スケーリング画像の注目画素に対して連続して隣接するか、または、1画素毎に隣接する複数の画素に基づいて、注目画素の段差を計算し、メモリからなる段差記憶部544に記憶させる。
ブロック段差特徴検出部545は、段差記憶部544に記憶されている段差を読み出し、ブロック段差としての特徴の有無を検出し、検出結果をバッファhist[x]更新部546に供給する。
バッファhist[x]更新部546は、ブロック段差特徴検出部545より供給されてくるブロック段差特徴の検出結果に基づいて、分布情報バッファ502の分布情報バッファhist[x]を更新する。
次に、図15のブロック図を参照して、周期計測部503の実施の形態の構成例について説明する。
サイズ取得部561は、水平検出部41より供給されてくる水平ブロックサイズを取得し、水平ブロックサイズをピーク判定部591に供給する。
小周期バッファ取得部562のピーク判定部591は、分布情報バッファ502に格納されている分布情報バッファhistについて、サイズ取得部561より供給されてくる水平ブロックサイズに対応する小周期毎にピークとなる位置を検出する。
小周期バッファ更新部592は、ピーク判定部591による検出結果に基づいて、小周期バッファ504に格納されている、所定の小周期における各位相毎の発生頻度を表す小周期バッファbuf[n]を更新する。
境界条件発生総数更新部593は、ピーク判定部591によりピークが検出された場合、全て境界条件が発生したものとして、小周期バッファ504に格納されている、境界条件発生総数カウンタbtotalを更新する。
次に、図16のフローチャートを参照して、図7のブロック境界情報検出部32による図6のステップS12のブロック検出処理について説明する。尚、以降においては、水平ブロックサイズが8画素、10.67画素、および12画素のみを検出する例について説明するものとするが、同様の手法により、その他の水平ブロックサイズをも検出することが可能である。
ステップS21において、ブロック境界情報検出部32は、再スケーリング画像におけるブロック境界情報を検出するための検出範囲を設定する。この検出範囲は、自由に設定することが可能であるが、画像単位でのブロックノイズ強度を求めるのであれば、画角に対して歪の小さい中央近傍が最も適切な画像が読み出される可能性が高いので、再スケーリング画像のサイズが、水平方向および垂直方向においてhsize(画素)×vsize(画素)である場合、水平方向における中央画素近傍(座標(hsize/2)近傍)の範囲および垂直方向における中央画素近傍(座標(hsize/2)近傍)の範囲からなる検出範囲を設定する。なお、複数の検出範囲を設定し、それぞれの検出範囲でブロック境界情報を検出しても構わない。
ステップS22において、水平検出部41の安定化処理部56における直前画像情報記憶部207および直前画像安定化情報記憶部208をリセットする。このとき、垂直検出部42においても同様にリセット処理が実行される。
ステップS23において、水平検出部41は、水平検出処理を実行し、水平方向のブロックサイズ情報、およびブロック境界位置情報を検出する。
ここで、図17のフローチャートを参照して、水平検出処理について説明する。
ステップS31において、ブロック段差情報取得部51は、ブロック段差情報取得処理を実行し、ブロック段差情報を取得する。
ここで、図18のフローチャートを参照して、ブロック段差情報取得処理について説明する。
ステップS41において、ブロック段差情報取得部51は、狭域分布情報バッファ52−1、中域分布情報バッファ52−2、および広域分布情報バッファ52−3のそれぞれに記憶されている、注目画素に対して狭域の範囲のブロック段差の分布数を蓄積する分布情報バッファhist1[x]、注目画素に対して中域の範囲のブロック段差の分布数を蓄積する中域分布情報バッファhist2[hx]、および注目画素に対して広域の範囲のブロック段差の分布数を蓄積する広域分布情報バッファhist3[qx]を0に初期化する。
ステップS42において、ブロック段差情報取得部51は、再スケーリング画像の垂直位置を示す垂直位置カウンタyを0に初期化する。
ステップS43において、ブロック段差情報取得部51は、再スケーリング画像における、狭域、中域、および広域のそれぞれについての水平位置を示す水平位置カウンタx,hx,qxを0に初期化する。
ステップS44において、狭域段差計算部61は、再スケーリング画像のうち、座標(x,y)で示される画素を注目画素に設定し、注目画素と、注目画素に対応して設定される狭域の近傍の参照画素により狭域段差diff1を計算し、計算結果を狭域段差記憶部62に記憶させる。
例えば、狭域の近傍画素は、注目画素を中心として、右方向に隣接する3画素、および左方向に隣接する4画素からなる8画素を用いる場合、それぞれの画素位置は、図19で示されるように、注目画素の座標位置をxであるものとして、注目画素を画素P[x]として表現すれば、右方向に隣接する3画素は、それぞれ注目画素に近い画素から画素P[x+1],P[x+2],P[x+3]として表現され、左方向に隣接する画素は、それぞれ注目画素に近い画素から画素P[x−1],P[x−2],P[x−3],P[x−4]として表現される。このとき、狭域段差計算部61は、以下の式(9)を計算することにより、注目画素の狭域段差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
・・・(9)
ここで、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]の画素値を示している。
すなわち、式(9)においては、狭域段差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]間のそれぞれの画素間の画素値の差分絶対値の平均値を減算した値となる。
ステップS45において、狭域ブロック段差特徴検出部63は、狭域段差記憶部62に記憶されている狭域段差diff1[x]が所定の範囲内の値であるか否かを判定する。ステップS45において、例えば、狭域段差記憶部62に記憶されている狭域段差diff1[x]が所定の範囲内の値である場合、ステップS46において、狭域ブロック段差特徴検出部63は、判定結果に基づいて、注目画素に対応する狭域段差diff1[x]がブロック段差の特徴を備えるものとみなし、狭域ブロック段差特徴情報bnstep1を1に設定し、バッファhist1[x]更新部64に供給する。
一方、ステップS45において、例えば、狭域段差記憶部62に記憶されている狭域段差diff1[x]が所定の範囲内の値ではない場合、ステップS47において、狭域ブロック段差特徴検出部63は、狭域段差diff1[x]が所定の範囲内の値ではないという判定結果に基づいて、狭域ブロック段差特徴情報bnstep1を0に設定し、バッファhist1[x]更新部64に供給する。
ステップS48において、バッファhist1[x]更新部64は、狭域分布情報バッファ52−1に格納されている狭域分布情報バッファhist1[x]に狭域ブロック段差特徴情報bnstep1を加算して記憶させる。
ステップS49において、中域位置判定部65は、カウンタxが2の倍数であるか否かを判定する。ステップS49において、例えば、カウンタxが2の倍数である場合、ステップS50において、中域段差計算部66は、再スケーリング画像のうち、座標(x,y)で示される画素を注目画素に設定し、注目画素と、注目画素に対応して設定される近傍の中域の参照画素により中域段差diff2を計算し、計算結果を中域段差記憶部67に記憶させる。
例えば、中域の参照画素は、注目画素を中心として、注目画素の左右に隣接する1画素、注目画素の右に隣接する画素から右方向に1画素おきに隣接する3画素、および注目画素の左に隣接する画素から左方向に1画素おきに隣接する3画素からなる8画素を用いる場合、それぞれの画素位置は、図20で示されるように、注目画素の座標位置をxであるものとして、注目画素を画素P[x]として表現すれば、注目画素の左右に隣接する1画素は、それぞれ画素P[x-1],P[x+1]として表現され、注目画素の右に隣接する画素から右方向に1画素おきに隣接する3画素は、それぞれ注目画素に近い画素から画素P[x+3],P[x+5],P[x+7]として表現され、注目画素の左に隣接する画素から左方向に1画素おきに隣接する3画素は、それぞれ注目画素に近い画素から画素P[x−3],P[x−5],P[x−7]として表現される。このとき、中域段差計算部67は、以下の式(10)を計算することにより、注目画素の中域段差diff2を計算する。尚、図20においては、横軸が水平方向の画素の座標であり、縦軸が対応する画素の画素値を示している。また、ここでは、水平方向に対する処理を説明するが、当然のことながら垂直方向に対する処理とするようにしてもよい。
diff2[hx]=|P[x+1]−P[x−1]|−(|P[x−7]−P[x−5]|+|P[x−5]−P[x−3]|
+|P[x−3]−P[x−1]|+|P[x+1]−P[x+3]|
+|P[x+3]−P[x+5]|+|P[x+5]−P[x+7]|)/6
・・・(10)
ここで、diff2[hx]は、カウンタxが2の倍数であるときの注目画素P[x]の中域段差を示し、P[x+1],P[x+3],P[x+5],P[x+7],P[x−1],P[x−3],P[x−5],P[x−7]は、それぞれ画素P[x+1],P[x+3],P[x+5],P[x+7],P[x−1],P[x−3],P[x−5],P[x−7]の画素値を示している。
すなわち、式(10)においては、中域段差diff2は、注目画素P[x]を中心として左右に隣接する画素P[x+1]とP[x−1]との画素値の差分絶対値から、画素P[x−7],P[x−5]間、画素P[x−5],P[x−3]間、画素P[x−3],P[x−1]間、画素P[x+1],P[x+3]間、画素P[x+3],P[x+5]間、および画素P[x+5],P[x+7]間のそれぞれの画素間の画素値の差分絶対値の平均値を減算した値となる。
ステップS51において、中域ブロック段差特徴検出部68は、中域段差記憶部67に記憶されている中域段差diff2[hx]が所定の範囲内の値であるか否かを判定する。ステップS51において、例えば、中域段差記憶部67に記憶されている中域段差diff2[hx]が所定の範囲内の値である場合、ステップS52において、中域ブロック段差特徴検出部68は、判定結果に基づいて、注目画素に対応する中域段差diff2[hx]がブロック段差の特徴を備えるものとみなし、中域ブロック段差特徴情報bnstep2を1に設定し、バッファhist2[hx]更新部69に供給する。
一方、ステップS51において、例えば、中域段差記憶部67に記憶されている中域段差diff2[hx]が所定の範囲内の値ではない場合、ステップS53において、中域ブロック段差特徴検出部68は、中域段差diff2[hx]が所定の範囲内の値ではないという判定結果に基づいて、中域ブロック段差特徴情報bnstep2を0に設定し、バッファhist2[hx]更新部69に供給する。
ステップS54において、バッファhist2[hx]更新部69は、中域分布情報バッファ52−2に格納されているバッファhist2[hx]に中域ブロック段差特徴情報bnstep2を加算して記憶させる。
ステップS55において、中域位置判定部65は、カウンタhxを1インクリメントする。
ステップS56において、広域位置判定部70は、カウンタxが4の倍数であるか否かを判定する。ステップS56において、例えば、カウンタxが4の倍数である場合、ステップS57において、広域段差計算部71は、再スケーリング画像のうち、座標(x,y)で示される画素を注目画素に設定し、注目画素と、注目画素に対応して設定される近傍の広域の参照画素により広域段差diff3を計算し、計算結果を広域段差記憶部72に記憶させる。
例えば、広域の参照画素は、注目画素を中心として、注目画素の右方向に1画素飛んで隣接する1画素、その画素から右方向に2画素おきに隣接する3画素、注目画素の左に隣接する1画素、およびその画素から左方向に2画素おきに隣接する3画素からなる8画素を用いる場合、それぞれの画素位置は、図21で示されるように、注目画素の座標位置をxであるものとして、注目画素を画素P[x]として表現すれば、注目画素の右方向に1画素飛んで隣接する1画素は、P[x+2]として表現され、その画素から右方向に2画素おきに隣接する3画素は、それぞれ注目画素に近い画素から画素P[x+5],P[x+8],P[x+11]として表現され、注目画素の左に隣接する1画素は、P[x-1]として表現され、その画素から左方向に2画素おきに隣接する3画素は、それぞれ注目画素に近い画素から画素P[x−4],P[x−7],P[x−10]として表現される。このとき、広域段差計算部71は、以下の式(11)を計算することにより、注目画素の広域段差diff3を計算する。尚、図21においては、横軸が水平方向の画素の座標であり、縦軸が対応する画素の画素値を示している。また、ここでは、水平方向に対する処理を説明するが、当然のことながら垂直方向に対する処理とするようにしてもよい。
diff3[qx]=|P[x+2]−P[x−1]|−(|P[x−10]−P[x−7]|+|P[x−7]−P[x−4]|
+|P[x−4]−P[x−1]|+|P[x+2]−P[x+5]|
+|P[x+5]−P[x+8]|+|P[x+8]−P[x+11]|)/6
・・・(11)
ここで、diff3[qx]は、カウンタxが4の倍数であるときの注目画素P[x]の広域段差を示し、P[x+2],P[x+5],P[x+8],P[x+11],P[x−1],P[x−4],P[x−7],P[x−10]は、それぞれ画素P[x+2],P[x+5],P[x+8],P[x+11],P[x−1],P[x−4],P[x−7],P[x−10]の画素値を示している。
すなわち、式(11)においては、広域段差diff3は、注目画素P[x]を中心として右に1つ飛ばして隣接する画素P[x+2]と左に隣接する画素P[x−1]との画素値の差分絶対値から、画素P[x−10],P[x−7]間、画素P[x−7],P[x−4]間、画素P[x−4],P[x−1]間、画素P[x+2],P[x+5]間、画素P[x+5],P[x+8]間、および画素P[x+8],P[x+11]間のそれぞれの画素間の画素値の差分絶対値の平均値を減算した値となる。
ステップS58において、広域ブロック段差特徴検出部73は、広域段差記憶部72に記憶されている広域段差diff3[qx]が所定の範囲内の値であるか否かを判定する。ステップS58において、例えば、広域段差記憶部72に記憶されている広域段差diff3[qx]が所定の範囲内の値である場合、ステップS59において、広域ブロック段差特徴検出部73は、判定結果に基づいて、注目画素に対応する広域段差diff3[qx]がブロック段差の特徴を備えるものとみなし、広域ブロック段差特徴情報bnstep3を1に設定し、バッファhist3[qx]更新部74に供給する。
一方、ステップS58において、例えば、広域段差記憶部72に記憶されている広域段差diff3[qx]が所定の範囲内の値ではない場合、ステップS60において、広域ブロック段差特徴検出部73は、広域段差diff3[qx]が所定の範囲内の値ではないという判定結果に基づいて、広域ブロック段差特徴情報bnstep3を0に設定し、バッファhist3[qx]更新部74に供給する。
ステップS61において、バッファhist3[qx]更新部74は、広域分布情報バッファ52−3に格納されているバッファhist3[qx]に広域ブロック段差特徴情報bnstep3を加算して記憶させる。
ステップS62において、広域位置判定部70は、カウンタqxを1インクリメントする。
ステップS63において、ブロック段差情報取得部51は、カウンタxを1インクリメントする。
ステップS64において、ブロック段差情報取得部51は、カウンタxが水平方向の検出範囲xsize以上であるか否かを判定し、以上ではない場合、処理は、ステップS44に戻る。すなわち、ステップS44乃至S64の処理が繰り返される。そして、ステップS64において、カウンタxが検出範囲xsize以上である場合、ステップS65において、ブロック段差情報取得部51は、カウンタyを1インクリメントする。
ステップS66において、ブロック段差情報取得部51は、カウンタyが垂直方向の検出範囲ysize以上であるか否かを判定し、以上ではない場合、処理は、ステップS43に戻る。すなわち、ステップS43乃至S66の処理が繰り返される。そして、ステップS66において、カウンタyが検出範囲ysize以上である場合、処理は終了する。
また、ステップS49において、カウンタxが2の倍数ではないと判定された場合、ステップS50乃至S55の処理がスキップされる。さらに、ステップS56において、カウンタxが4の倍数ではないと判定された場合、ステップS57乃至S62の処理がスキップされる。
以上の処理により狭域分布情報バッファ52−1、中域分布情報バッファ52−2、および広域分布情報バッファ52−3には、それぞれ各注目画素に対して隣接する近傍画素により、ブロック段差であるとみなされた水平方向の画素数が、ブロック段差情報として、それぞれ狭域分布情報バッファhist1[x]、中域分布情報バッファhist2[hx]、および広域分布情報バッファhist3[qx]に記憶される。このとき、中域分布情報バッファhist2[hx]は、カウンタxが2の倍数であるときのみであるので、検出回数は、狭域分布情報バッファhist1[x]の半分となる。また、広域分布情報バッファhist3[qx]は、カウンタxが4の倍数であるときのみであるので、検出回数は、狭域分布情報バッファhist1[x]の1/4となる。
尚、分布情報バッファは、ブロックサイズに応じたものが必要となるため、比較的小さなブロックサイズに対応する狭域分布情報バッファhist1、中程度のブロックサイズに対応する中域分布情報バッファhist2、比較的大きなブロックサイズに対応する広域分布情報バッファhist3が求められている。これに対して、後述する垂直検出処理においては、水平検出処理により求められた水平ブロックサイズから、ある程度必要となる分布情報バッファが特定できるため、狭域分布情報バッファ、中域分布情報バッファ、または広域分布情報バッファのいずれかが求められるだけでよい。
ここで、図17のフローチャートの説明に戻る。
ステップS31において、ブロック段差情報が取得されると、ステップS32において、周期計測部53は、周期計測処理を実行し、発生頻度と小周期情報とを計測する。
ここで、図22のフローチャートを参照して、周期計測部53による周期計測処理について説明する。
ステップS71において、周期計測部53は、処理対象とする計測用分布情報バッファhistを狭域分布情報バッファ52−1に格納されている狭域分布情報バッファhist1[x]に設定する。
ステップS72において、発生頻度計測部91は、狭域分布情報バッファhist1[x]に対して発生頻度計算処理を実行し、発生頻度interval1[n]を計測する。
ここで、図23のフローチャートを参照して、発生頻度計算処理について説明する。
ステップS91において、発生頻度計測部91は、状態フラグstate、各周期の発生頻度を示す発生頻度カウンタinterval1[n]、位置カウンタx、および周期計測カウンタcntを、それぞれ0に初期化する。
ステップS92において、ピーク判定部101は、狭域分布バッファ52−1より狭域分布情報バッファhist1[x]と、その近傍の値を読み出し、狭域分布情報バッファhist1[x]の値がピーク条件を満たすか否かを判定する。より具体的には、例えば、ピーク判定部101は、狭域分布バッファ52−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において、例えば、ピーク条件を初めて満たすような場合、状態フラグstateは0であるので、処理は、ステップS94に進む。
ステップS94において、フラグ設定部102は、状態フラグstateを1に設定する。
ステップS94の処理により、ピーク条件を満たすような状態が2回目以降の場合、状態フラグは1となるので、ステップS93で状態フラグstateは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に戻る。
ステップS99で位置カウンタxが検出範囲の水平サイズであるxsize以上であると判定された場合、ステップS100において、出力部104は、発生頻度更新部103の発生頻度カウンタ103aより発生頻度カウンタinterval1[n]を読み出し、判定部55に出力する。
一方、ステップS92において、ピーク位置条件を満たさない場合、ステップS93乃至S96の処理がスキップされる。
以上の処理によりピークとして検出された狭域分布情報バッファhist1[x]のピークが検出される度に、ピークの発生間隔毎に発生頻度カウンタinterval[n]がカウントされていくことになり、ピークの発生する間隔毎の検出数が発生頻度として計測されて、判定部55に出力される。
したがって、水平ブロックサイズが8画素または12画素の画像が入力され、ブロック単位でノイズが発生しているような場合、最初のピークとして検出される位置から8画素毎に、または、12画素毎に、順次interval1[8]またはinterval1[12]が、カウントされる可能性が高いといえる。また、水平ブロックサイズが10.67画素の画像が入力されると、最初にピークが検出されてから、interval1[10]とinterval1[11]とが、所定の割合で順次カウントされる可能性が高いと言える。
ここで、図22のフローチャートの説明に戻る。
ステップS72において、発生頻度計算処理が終了すると、ステップS73において、小周期バッファ取得部92が、小周期バッファbuf1_8取得処理を実行し、小周期バッファを取得する。
ここで、図24のフローチャートを参照して、小周期バッファbuf1_8取得処理について説明する。
ステップS111において、小周期バッファ取得部92は、小周期バッファ54に格納されている小周期バッファbuf1_8[phase]、および境界条件発生総数カウンタbtotal1_8を0に初期化すると共に、位置カウンタx、および位相カウンタphaseも併せて0に初期化する。
ステップS112において、ピーク判定部111は、狭域分布バッファ52−1より狭域分布情報バッファhist1[x]と、その近傍の値を読み出し、狭域分布情報バッファhist1[x]の値がピーク条件を満たすか否かを判定する。尚、このピーク判定部111による判定処理は、上述したピーク判定部101による処理と同一であるので、その説明は省略する。
ステップS112において、例えば、ピーク条件を満たすと判定された場合、ピーク判定部111は、例えば、ピーク条件を満たすことを示す情報を、小周期バッファ更新部112および境界条件発生総数更新部113に供給する。そして、ステップS113において、小周期バッファ更新部112は、小周期バッファ54に格納されている小周期バッファbuf1_8[phase]を1インクリメントする。
一方、ステップS112において、例えば、ピーク条件を満たさないと判定された場合、ステップS113およびS114の処理は、スキップされる。
ステップS114において、境界条件発生総数更新部113は、小周期バッファ54に格納されている境界条件発生総数カウンタbtotal1_8を1インクリメントする。
ステップS115において、小周期バッファ取得部92は、位相カウンタphaseを1インクリメントする。
ステップS116において、小周期バッファ取得部92は、位相カウンタphaseが、計測周期P以上であるか否か、すなわち、水平ブロックサイズである8以上であるか否かを判定する。ステップS116において、例えば、位相カウンタphaseが計測周期P以上である場合、ステップS117において、小周期バッファ取得部92は、位相カウンタphaseを0に初期化する。
また、ステップS116において、例えば、位相カウンタphaseが計測周期P以上ではなかった場合、ステップS117の処理がスキップされる。
ステップS118において、小周期バッファ取得部92は、位置カウンタxを1インクリメントする。
ステップS119において、小周期バッファ取得部92は、位置カウンタxが検出範囲の水平サイズであるxsize以上であるか否かを判定する。ステップS119において、位置カウンタxが検出範囲の水平サイズであるxsize以上ではない場合、処理は、ステップS112に戻る。
そして、ステップS119において、位置カウンタxが検出範囲の水平サイズであるxsize以上である場合、処理は終了する。
すなわち、以上の処理においては、水平方向の座標が、位相カウンタphaseにより0乃至8で巡回的に付されて、位相カウンタphase毎にピークが検出された回数である小周期情報が、小周期バッファ54に小周期バッファbuf1_8[phase]としてカウントされる。また、ピークが検出される度に、位相カウンタphaseとは無関係に、境界条件発生総数カウンタbtotal1_8が1インクリメントされる。
ここで、図22のフローチャートの説明に戻る。
ステップS73において、狭域分布情報バッファhist1における水平ブロックサイズ8画素の小周期バッファbuf1_8取得処理が終了すると、ステップS74において、小周期バッファ取得部92は、狭域分布情報バッファhist1における水平ブロックサイズが10.67画素の小周期バッファbuf1_32取得処理を実行し、小周期バッファbuf1_32と共に、境界条件発生総数カウンタbtotal1_32を求める。尚、ステップS74の処理は、ステップS73の処理における位相カウンタphaseが、0乃至8ではなく、0乃至32で巡回的に付される以外は、同様の処理であるので、その説明は省略する。また、水平ブロックサイズが10.67画素である場合、巡回数が32となる理由は、10.67を整数にする最小公倍数であるからである。
また、ステップS75において、小周期バッファ取得部92は、狭域分布情報バッファhist1における水平ブロックサイズが12画素の小周期バッファbuf1_12取得処理を実行し、小周期バッファbuf1_12と共に、境界条件発生総数カウンタbtotal1_12を求める。尚、ステップS75の処理は、ステップS73の処理における位相カウンタphaseが、0乃至12で巡回的に付される以外は、同様の処理であるので、その説明は省略する。
ステップS71乃至S75の処理により、発生頻度計測部91により狭域分布情報バッファhist1についての発生頻度カウンタinterval1[n]が求められて判定部55に出力されると共に、狭域分布情報バッファhist1についての、小周期バッファbuf1_8,buf1_32,buf1_12および境界条件発生総数カウンタbtotal1_8,btotal1_32,btotal1_12が、小周期バッファ54に格納される。
また、ステップS76乃至S80の処理は、中域分布情報バッファhist2が計測用分布情報バッファhistとなること以外は、ステップS71乃至S75の処理と同様であるので、ステップS76乃至S80の処理により、発生頻度計測部91により中域分布情報バッファhist2についての発生頻度カウンタinterval2[n]が求められて判定部55に出力されると共に、中域分布情報バッファhist2についての、小周期バッファbuf2_8,buf2_32,buf2_12および境界条件発生総数カウンタbtotal2_8,btotal2_32,btotal2_12が、小周期バッファ54に格納される。
さらに、ステップS81乃至S85の処理は、広域分布情報バッファhist3が計測用分布情報バッファhistとなること以外は、ステップS71乃至S75の処理と同様であるので、ステップS81乃至S85の処理により、発生頻度計測部91により広域分布情報バッファhist3についての発生頻度カウンタinterval3[n]が求められて判定部55に出力されると共に、広域分布情報バッファhist3についての、小周期バッファbuf3_8,buf3_32,buf3_12および境界条件発生総数カウンタbtotal3_8,btotal3_32,btotal3_12が、小周期バッファ54に格納される。
以上の処理により、狭域分布情報バッファhist1、中域分布情報バッファhist2、および広域分布情報バッファhist3のそれぞれについて、ピーク値が発生する間隔ごとの発生頻度が発生頻度カウンタinterval1[n]乃至3[n]として求められて、判定部55に供給されると共に、狭域分布情報バッファhist1、中域分布情報バッファhist2、および広域分布情報バッファhist3のそれぞれに基づいた水平ブロックサイズ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が求められて、小周期バッファ54に格納される。
尚、本実施例においては、図4のリストL1で示されるように、水平ブロックサイズ24,48画素は存在していないので、中域分布情報バッファhist2についての、小周期バッファbuf2_12および境界条件発生総数カウンタbtotal2_12、並びに、広域分布情報バッファhist3についての、小周期バッファbuf3_12および境界条件発生総数カウンタbtotal3_12は必ずしも必要ではない。このため、図22のフローチャートにおけるステップS80,S85の処理は、省略するようにしてもよい。
ここで、図17のフローチャートの説明に戻る。
ステップS32において、周期計測処理がなされると、ステップS33において、判定部55は、判定処理を実行し、周期計測処理で求められた発生頻度を示す発生頻度カウンタ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のフローチャートを参照して、判定部55による判定処理について説明する。
ステップS141において、整数ブロックサイズ判定部161は、狭域分布情報バッファhist1に基づいた狭域ブロックサイズ8情報取得処理を実行し、水平ブロックサイズが8画素となる場合のブロックサイズ情報およびブロック境界位置情報を示す水平狭域ブロックサイズ8情報を取得する。
ここで、図26のフローチャートを参照して、狭域分布情報バッファhist1に基づいた狭域ブロックサイズ8情報取得処理について説明する。
ステップS171において、狭域処理部141の整数ブロックサイズ判定部161は、最大値位相カウンタ176に格納されている最大値位相カウンタmax_posを0に初期化し、最大値カウンタ174に格納されている最大値カウンタmaxを小周期バッファbuf1_8[max_pos]に設定する。また、整数ブロックサイズ判定部161は、制御カウンタ172により制御される制御カウンタiを1に初期化する。
ステップS172において、小周期バッファ読出部171は、小周期バッファ54より制御カウンタiで指定される小周期バッファbuf1_8[i]を読み出し、比較部173に供給する。比較部173は、小周期バッファbuf1_8[i]が最大値カウンタmax以上であるか否かを判定する。
ステップS172において、例えば、小周期バッファbuf1_8[i]が最大値カウンタmax以上である場合、比較部173は、比較結果を最大値カウンタ更新部175および最大値位相カウンタ更新部177に供給する。そして、ステップS173において、最大値カウンタ更新部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を読み出す。そして、判定結果出力部178は、水平ブロックサイズ8情報として、8を水平ブロックサイズbs、最大値位相カウンタmax_posを水平ブロック境界位置bp8、および最大値カウンタmaxの値を水平ブロックサイズ8に対する水平信頼度br8とする情報を、狭域候補選択部144に供給する。
尚、以下、狭域ブロックサイズ8情報、中域ブロックサイズ8情報、および広域ブロックサイズ8情報を区別するため、必要に応じて、狭域ブロックサイズ8情報については、水平ブロックサイズbsを水平ブロックサイズbs1、水平ブロック境界位置bp8を水平ブロック境界位置bp1_8、水平信頼度br8を水平信頼度br1_8とし、中域ブロックサイズ8情報については、水平ブロックサイズbsを水平ブロックサイズbs2、水平ブロック境界位置bp8を水平ブロック境界位置bp2_8、水平信頼度br8を水平信頼度br2_8とし、広域ブロックサイズ8情報については、水平ブロックサイズbsを水平ブロックサイズbs3、水平ブロック境界位置bp8を水平ブロック境界位置bp3_8、水平信頼度br8を水平信頼度br3_8とも称するものとするが、特に区別する必要が無い場合は、単に、水平ブロックサイズbs、水平ブロック境界位置bp8、水平信頼度br8と称するものとし、その他のブロックサイズについても同様に称するものとする。
以上の処理により、狭域分布情報バッファhist1に基づいた水平ブロックサイズが8画素の小周期バッファbuf1_8で示される小周期情報に基づいて、水平ブロックサイズが8画素である場合の巡回数内の水平ブロック境界位置bp8、および、水平ブロック境界位置bp8となった位相の検出回数を示す水平信頼度br8を含む水平ブロックサイズ8情報が水平狭域ブロックサイズ8情報として求められることになる。
ここで、図25のフローチャートの説明に戻る。
ステップS142において、整数ブロックサイズ判定部161は、狭域分布情報バッファhist1に基づいた狭域ブロックサイズ12情報取得処理を実行し、水平ブロックサイズが12画素となる条件を示す水平狭域ブロックサイズ12情報を取得する。尚、狭域ブロックサイズ12情報取得処理は、処理対象が小周期バッファbuf1_12となり、図26のステップ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は、小周期バッファ54より制御カウンタiで指定される小周期バッファbuf1_32[i]を読み出し、比較部173−1に供給する。比較部173−1は、小周期バッファbuf1_32[i]が最大値カウンタmax以上であるか否かを判定する。
ステップS192において、例えば、小周期バッファbuf1_32[i]が最大値カウンタmax以上である場合、比較部173−1は、比較結果を最大値カウンタ更新部175−1および最大値位相カウンタ更新部177−1に供給する。そして、ステップS193において、最大値カウンタ更新部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より大きい場合、判定結果出力部178−1は、最大値カウンタ174−1に格納されている最大値カウンタmaxおよび最大値位相カウンタ176に格納されている最大値位相カウンタmax_pos0を読み出し、比較判定部192に供給する。そして、ステップS196において、比較判定部192は、集計値max_totalに最大値カウンタmaxを加算することにより集計値max_totalを更新する。
ステップS197において、狭域処理部141の整数ブロックサイズ判定部191−2は、最大値位相カウンタ176−2に格納されている最大値位相カウンタmax_pos1を、(max_pos0+1)に初期化し、最大値カウンタ174−2に格納されている最大値カウンタmaxを小周期バッファbuf1_32[max_pos1]に設定すると共に、制御カウンタ172−2により制御される制御カウンタiをmax_pos1+1に初期化する。
ステップS198において、小周期バッファ読出部171−2は、小周期バッファ54より制御カウンタiで指定される小周期バッファbuf1_32[i]を読み出し、比較部173−2に供給する。比較部173−2は、小周期バッファbuf1_32[i]が最大値カウンタmax以上であるか否かを判定する。
ステップS198において、例えば、小周期バッファbuf1_32[i]が最大値カウンタmax以上である場合、比較部173−2は、比較結果を最大値カウンタ更新部175−2および最大値位相カウンタ更新部177−2に供給する。そして、ステップS199において、最大値カウンタ更新部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よりも大きい場合、判定結果出力部178−2は、最大値カウンタ174−2に格納されている最大値カウンタmaxおよび最大値位相カウンタ176−2に格納されている最大値位相カウンタmax_pos1を読み出し、比較判定部192に供給する。そして、ステップS202において、比較判定部192は、集計値max_totalに最大値カウンタmaxを加算することにより集計値max_totalを更新する。
ステップS203(図28)において、狭域処理部141の整数ブロックサイズ判定部191−3は、最大値位相カウンタ176−3に格納されている最大値位相カウンタmax_pos2を、(max_pos1+1)に初期化し、最大値カウンタ174−3に格納されている最大値カウンタmaxを小周期バッファbuf1_32[max_pos2]に設定すると共に、制御カウンタ172−3により制御される制御カウンタiをmax_pos2+1に初期化する。
ステップS204において、小周期バッファ読出部171−3は、小周期バッファ54より制御カウンタiで指定される小周期バッファbuf1_32[i]を読み出し、比較部173−3に供給する。比較部173−3は、小周期バッファbuf1_32[i]が最大値カウンタmax以上であるか否かを判定する。
ステップS204において、例えば、小周期バッファbuf1_32[i]が最大値カウンタmax以上である場合、比較部173−3は、比較結果を最大値カウンタ更新部175−3および最大値位相カウンタ更新部177−3に供給する。そして、ステップS205において、最大値カウンタ更新部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が31よりも大きい場合、判定結果出力部178−3は、最大値カウンタ174−3に格納されている最大値カウンタmaxおよび最大値位相カウンタ176−3に格納されている最大値位相カウンタmax_pos2を読み出し、比較判定部192に供給する。そして、ステップS208において、比較判定部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情報として、10.67を水平ブロックサイズbs、最大値位相カウンタ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を減算した値が11とならない場合、ステップS214において、例えば、最大位相カウンタmax_pos1から最大位相カウンタmax_pos0を減算した値が11とならない場合、または、ステップS219において、例えば、最大位相カウンタmax_pos2から最大位相カウンタmax_pos1を減算した値が11とならない場合、ステップS218において、比較判定部192は、正しい値ではないものとみなし、小数点以下の位置phを0/3と判定するが、max_totalを3よりも大きな値(図28では、3×2としているが、これよりも大きな値でもよい)で除し、その値を水平信頼度relyとすることにより、水平信頼度relyを小さくする。
すなわち、上述したように10.67画素の水平ブロックサイズに対応させるために巡回数を32としたのは、10.67を整数にする最小公倍数であるからであり、巡回区間を3区間に分類し、各区間における水平ブロック境界位置との相対関係から小数点以下の位置を求めるためである。
以上の処理により、狭域分布情報バッファhist1に基づいた水平ブロックサイズが10.67画素の小周期バッファbuf1_32に基づいて、水平ブロックサイズが10.67画素である(bs=10.67)場合の巡回数内の水平ブロック境界位置bp10、および、水平ブロック境界位置bp10となった位相の検出回数を示す水平信頼度br10を含む水平ブロックサイズ10.67情報が水平狭域ブロックサイズ10.67情報として求められることになる。
ここで、図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に対して、所定の比率より存在するか否かが判定される。ステップS243において、例えば、水平信頼度br12が、境界条件発生総数カウンタbtotal1_12/Nよりも大きいと判定された場合、ステップS244において、狭域候補選択部144は、狭域分布情報hist1の候補ブロックサイズbs1として水平ブロックサイズ12を選択すると共に、対応して候補ブロック境界位置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よりも大きいと判定された場合、ステップS248において、狭域候補選択部144は、狭域分布情報バッファhist1の候補ブロックサイズbs1として水平ブロックサイズ10を選択すると共に、対応して候補ブロック境界位置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よりも大きくない場合、ステップS249において、狭域候補選択部144は、狭域分布情報バッファhist1の候補ブロックサイズbs1として水平ブロックサイズ8を選択すると共に、対応して候補ブロック境界位置bp1、候補信頼度br1、候補周期カウンタbi1、および候補境界条件発生総数カウンタbt1として、それぞれbp8、br8、interval1[8]、およびbtotal1_8を設定し、総合選択部147に供給する。
すなわち、最も信頼度情報が高く、かつ、最も発生頻度が高く、かつ、境界条件発生総数カウンタに対して所定の比率以上である水平ブロックサイズが狭域分布情報バッファhist1に基づいた候補として選択される。尚、以降においては、候補ブロックサイズbs1、候補ブロック境界位置bp1、候補信頼度br1、候補周期カウンタbi1、および候補境界条件発生総数カウンタbt1を纏めて、狭域分布情報バッファhist1に基づいて得られた候補ブロック情報と称するものとする。
以上の処理により狭域分布情報バッファhist1に基づいて、最も信頼度情報が高く、かつ、最も発生頻度が高く、かつ、境界条件発生総数カウンタに対して所定の比率以上である水平ブロックサイズが狭域分布情報バッファhist1の水平ブロックサイズの候補として選択することが可能となる。
ここで、図25のフローチャートの説明に戻る。
すなわち、ステップS141乃至S144の処理により、水平狭域ブロックサイズ8,12,10.67情報が取得され、それらに基づいて狭域分布情報バッファhist1の候補ブロック情報として、候補ブロックサイズbs1、候補ブロック境界位置bp1、候補信頼度br1、候補周期カウンタbi1、および候補境界条件発生総数カウンタbt1が求められる。
同様にして、ステップS145乃至S148においては、ステップS145乃至S147の処理で、中域処理部142により、それぞれ水平中域ブロックサイズ8,12,10.67情報が取得される。そして、ステップS148において、中域候補選択部145が、信頼度比較部145aおよび発生頻度比較部145bを制御することにより、中域ブロックサイズ候補判定処理を実行する。この処理により、中域分布情報バッファhist2の候補ブロック情報として、候補ブロックサイズbs2、候補ブロック境界位置bp2、候補信頼度br2、候補周期カウンタbi2、および候補境界条件発生総数カウンタbt2が求められ、総合選択部147に供給される。
さらに、ステップS149乃至S152においては、ステップS149乃至S151の処理で、広域処理部143により、それぞれ水平広域ブロックサイズ8,12,10.67情報が取得される。そして、ステップS152において、広域候補選択部146が、信頼度比較部146aおよび発生頻度比較部146bを制御することにより、広域分布ブロックサイズ候補判定処理を実行する。この処理により、広域分布情報バッファhist3の候補ブロック情報として、候補ブロックサイズbs3、候補ブロック境界位置bp3、候補信頼度br3、候補周期カウンタbi3、および候補境界条件発生総数カウンタbt3が求められ、総合選択部147に供給される。
ステップS153において、総合選択部147は、水平ブロックサイズ判定処理を実行し、水平ブロックサイズおよび水平ブロック境界位置を判定する。
ここで、図30のフローチャートを参照して、水平ブロックサイズ判定処理について説明する。
ステップS281において、総合選択部147は、信頼度比較部147aを制御して、候補信頼度br3_tが、候補信頼度br2_tよりも大きく、かつ、候補信頼度br3_tが、候補信頼度br1よりも大きいか否かを判定する。すなわち、候補信頼度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よりも大きいか否かを判定し、広域分布情報バッファhist3から得られた候補信頼度br3_tの集中度を判定する。
ステップS283において、候補信頼度br3_tが、候補境界条件発生総数カウンタbt3の所定の比率1/Mよりも大きいと判定された場合、処理は、ステップS284に進む。
ステップS284において、総合選択部147は、広域分布情報バッファhist3の候補ブロックサイズbs3と候補境界位置bp3を判定結果として選択し、候補ブロックサイズbs3の4倍である水平ブロックサイズbsize_cur、候補ブロック境界位置bp3の4倍である水平ブロック境界位置bpos_cur、候補信頼度br3_tである水平信頼度brank_cur、および、候補境界条件発生総数カウンタbt3の4倍である境界条件発生総数カウンタbtotalを出力する。
また、ステップS281において、候補信頼度br3_tが、候補信頼度br2_tよりも大きくないか、または、候補信頼度br3_tが、候補信頼度br1よりも大きくない場合、処理は、ステップS285に進む。
ステップS285において、候補信頼度br2_tが、候補信頼度br1よりも大きい場合、処理は、ステップS286に進む。
ステップS286において、総合選択部147は、発生頻度比較部147bを制御して、候補周期カウンタbi2_tが、候補周期カウンタbi1よりも大きいか否かを判定する。
ステップS286において、例えば、候補周期カウンタbi2_tが、候補周期カウンタbi1よりも大きい場合、ステップS287において、総合選択部147は、集中度比較部147cを制御して、候補信頼度br2_tが、候補境界条件発生総数カウンタbt2の所定の比率1/Mよりも大きいか否かを判定し、中域分布情報バッファhist2から得られた候補信頼度br2_tの集中度を判定する。
ステップS287において、候補信頼度br2_tが、候補境界条件発生総数カウンタbt2の所定の比率1/Mよりも大きいと判定された場合、処理は、ステップS288に進む。
ステップS288において、総合選択部147は、中域分布情報バッファhist2の候補ブロックサイズbs2と候補境界位置bp2を判定結果として選択し、候補ブロックサイズbs2の2倍である水平ブロックサイズbsize_cur、候補ブロック境界位置bp2の2倍である水平ブロック境界位置bpos_cur、候補信頼度br2_tである水平信頼度brank_cur、および、候補境界条件発生総数カウンタbt2の2倍である境界条件発生総数カウンタbtotalを出力する。
さらに、ステップ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は、狭域分布情報バッファhist1の候補ブロックサイズbs1と候補境界位置bp1を判定結果として選択し、候補ブロックサイズbs1である水平ブロックサイズbsize_cur、候補ブロック境界位置bp1である水平ブロック境界位置bpos_cur、候補信頼度br1である水平信頼度brank_cur、および、候補境界条件発生総数カウンタbt1である境界条件発生総数カウンタbtotalを出力する。
以上の処理により候補信頼度が最大であり、かつ、候補周期カウンタが最大であり、かつ、候補信頼度が、候補境界条件発生総数カウンタに対して所定の割合より大きい候補ブロック、候補ブロック境界位置、候補信頼度、および候補境界条件発生総数カウンタを、今現在の再スケーリング画像において計測された水平ブロック情報として出力することが可能となる。
ここで、図17のフローチャートの説明に戻る。
ステップS33の判定処理により、今現在の再スケーリング画像において計測される水平ブロック情報が求められる。
ステップS34において、安定化処理部56は、安定化処理を実行して、今現在の再スケーリング画像における水平ブロック情報と、過去の再スケーリング画像における水平ブロック情報とを用いて、水平方向のブロックサイズ情報およびブロック境界位置情報を安定化させて出力する。
ここで、図31のフローチャートを参照して、安定化処理部56による安定化処理について説明する。
ステップS301において、安定化処理部56は、直前の再スケーリング画像において安定化処理がなされた水平ブロックサイズbsize_preを8に、直前の再スケーリング画像において安定化処理がなされた水平ブロック境界位置bpos_preを0に、直前の再スケーリング画像において安定化処理がなされる前の検出結果の水平ブロックサイズbsize_fd1を8に、直前の再スケーリング画像において安定化処理がなされる前の検出結果の水平ブロック境界位置bpos_fd1を0に、判定結果の変更の有無を示す判定値bchangeを0にそれぞれ初期化する。尚、このステップS301の処理は、2枚目の再スケーリング画像以降においてはスキップされる。
ステップS302において、取得部201は、判定部55より供給されてくる今現在の再スケーリング画像における判定結果としての、水平ブロックサイズbsize_cur、水平ブロック境界位置bpos_cur、水平信頼度brank_cur、および境界条件発生総数カウンタbtotalを取得し、水平信頼度brank_curをstep計算部202に、水平ブロックサイズbsize_cur、水平ブロック境界位置bpos_cur、水平信頼度brank_cur、および境界条件発生総数カウンタbtotalを直前画像情報比較部203、直前画像情報記憶部207、および選択部211に供給する。
このとき、step計算部202は、水平信頼度brank_curより制御係数stepを計算する。より具体的には、step計算部202は、例えば、水平信頼度brank_curが所定の最低値より小さいとき、制御係数step=−1とし、所定の最低値より大きく、かつ、所定の最高値よりも小さいとき、制御係数step=0とし、所定の最高値よりも大きいとき、制御係数step=1とするように計算する。
ステップS303において、直前画像安定化情報比較部204は、直前画像安定化情報記憶部208に記憶されている安定化処理後の水平ブロックサイズbsize_preおよび水平ブロック境界位置bpos_preを読み出し、今現在の安定化処理前の水平ブロックサイズbsize_curと水平ブロックサイズbsize_preとが同一で、かつ、水平ブロック境界位置bpos_curと、水平ブロック境界位置bpos_preとが同一であるか否かを判定する。すなわち、安定化処理後の直前の再スケーリング画像との比較により、水平ブロックサイズと水平ブロック境界位置が同一であるか否かが判定される。
ステップS303において、例えば、水平ブロックサイズbsize_curと水平ブロックサイズbsize_preとが同一で、かつ、水平ブロック境界位置bpos_curと、水平ブロック境界位置bpos_preとが同一である場合、ステップS304において、直前画像安定化情報比較部204は、判定結果を判定値管理部205、および変更可能性フラグ管理部209に供給する。判定値管理部205は、判定値bchangeを0にし、判定値メモリ206に格納する。また、変更可能性フラグ管理部209は、変化の有無の可能性を示す変更可能性フラグbflagを変更の可能性がないことを示す0に設定し、変更可能性フラグメモリ210に格納する。
一方、ステップS303において、例えば、水平ブロックサイズbsize_curと水平ブロックサイズbsize_preとが同一ではないか、または、水平ブロック境界位置bpos_curと、水平ブロック境界位置bpos_preとが同一ではない場合、処理は、ステップS305に進む。
ステップS305において、直前画像情報比較部203は、直前画像情報記憶部207に記憶されている、安定化処理前の水平ブロックサイズbsize_fd1および水平ブロック境界位置bpos_fd1を読み出し、今現在の安定化処理前の水平ブロックサイズbsize_curと、直前の画像の安定化処理前の水平ブロックサイズbsize_fd1とが同一で、かつ、水平ブロック境界位置bpos_curと、水平ブロック境界位置bpos_fd1とが同一であるか否かを判定する。すなわち、直前の再スケーリング画像との比較により、水平ブロックサイズと水平ブロック境界位置が同一であるか否かが判定される。
ステップS305において、今現在の安定化処理前の水平ブロックサイズbsize_curと、安定化処理前の直前の再スケーリング画像の水平ブロックサイズbsize_fd1とが同一で、かつ、水平ブロック境界位置bpos_curと、水平ブロック境界位置bpos_fd1とが同一であると判定された場合、ステップS306において、直前画像情報比較部203は、判定結果を判定値管理部205および変更可能性フラグ管理部209に供給する。判定値管理部205は、判定値bchangeを制御係数stepにして、判定値メモリ206に格納する。変更可能性フラグ管理部209は、変更可能性フラグbflagを変更の可能性があることを示す1に設定し、変更可能性フラグメモリ210に格納する。
一方、ステップS305において、今現在の安定化処理前の水平ブロックサイズbsize_curと、安定化処理前の直前の再スケーリング画像の水平ブロックサイズbsize_fd1とが同一でないか、または、水平ブロック境界位置bpos_curと、水平ブロック境界位置bpos_fd1とが同一ではないと判定された場合、ステップS307において、直前画像情報比較部203は、判定結果を判定値管理部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のフローチャートの説明に戻る。
ステップS34の安定化処理が終了すると、水平検出処理が終了する。すなわち、水平検出処理により水平方向のブロックサイズ情報およびブロック境界位置情報が求められることになる。
ここで、図16のフローチャートの説明に戻る。
ステップS23において、水平検出処理が終了すると、ステップS24において、垂直検出部42により垂直検出処理が実行されて、垂直ブロックサイズおよび垂直ブロック境界位置が検出される。
ここで、図32のフローチャートを参照して、垂直検出処理について説明する。
ステップS501において、ブロック段差情報取得部501は、ブロック段差情報取得処理を実行し、ブロック段差情報を求めて分布情報バッファ502に蓄積させる。
ここで、図33のフローチャートを参照して、ブロック段差情報取得処理について説明する。尚、図33のフローチャートにおいては、ステップS544の処理を除き、図18のフローチャートにおけるステップS41乃至S55,S63乃至S66の処理と同様であるので、その説明は省略する。
すなわち、ステップS544においては、サイズ判定部541が、水平ブロックサイズに基づいて、検出され得る垂直ブロックサイズが所定値よりも大きいか否かを判定する。そして、ステップS544において、検出され得る垂直ブロックサイズが所定値よりも大きくないと判定された場合、位置判定部542、段差計算部543、段差記憶部544、ブロック段差特徴検出部545、およびバッファhist[x]更新部546により、ステップS545乃至S549,S557、およびS558の処理が繰り返されて、狭域分布情報バッファhist1と同一の分布情報バッファhist[x]が求められる。
一方、ステップS544において、検出され得る垂直ブロックサイズが所定値よりも大きいと判定された場合、ステップS550乃至S558の処理が実行されて、中域分布情報バッファhist2と同一の分布情報バッファhist[x]が求められることになる。
すなわち、水平ブロックサイズにより予め垂直ブロックサイズが限定されることになるので、垂直ブロックサイズに対応した分布情報バッファだけを求めるだけでよいため、狭域分布情報バッファか、中域分布情報バッファのいずれかを求めるだけでよいことになる。尚、以上においては、垂直ブロックサイズに応じて狭域分布情報バッファ、または、中域分布情報バッファを求める例について説明してきたが、さらに、大きな垂直ブロックサイズを取るような画像を扱う場合、さらに、広域分布情報バッファを求めるようにしてもよい。また、狭域分布情報バッファ、中域分布情報バッファ、または広域分布情報バッファのいずれか2つを選択して、垂直ブロックサイズに応じて求めるようにしてもよい。
ここで、図32のフローチャートの説明に戻る。
ステップS501において、ブロック段差情報取得処理が終了すると、ステップS502において、周期計測部503は、周期計測処理を実行し、小周期バッファを求める。
ここで、図34のフローチャートを参照して、周期計測部503による周期計測処理について説明する。
ステップS571において、周期計測部503は、処理対象とする計測用分布情報バッファhistを分布情報バッファ502に格納されている分布情報バッファhist[x]に設定する。
ステップS572において、小周期バッファ取得部562は、サイズ取得部561により供給されてくる水平ブロックサイズに基づいて、ピーク判定部591、小周期バッファ更新部592、および境界条件発生総数更新部593を制御して、水平ブロックサイズに対応する垂直ブロックサイズの画素数に対応する小周期バッファ取得処理を実行する。尚、小周期バッファ取得処理については、図24のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
すなわち、垂直処理においては、水平ブロックサイズにより予めブロックサイズが限定されることになるので、小周期バッファ取得処理を限定されたブロック数にのみ実施すればよい。
ここで、図32のフローチャートの説明に戻る。
ステップS502において、周期計測処理が実施され、小周期バッファが求められると、ステップS503において、判定部505は、判定処理を実行し、垂直ブロックサイズおよび垂直ブロック境界位置を判定する。
ここで、図35のフローチャートを参照して、判定部505による判定処理について説明する。
ステップS591において、判定部505が、ブロックサイズp情報取得処理を実行する。尚、この処理は、図26を参照して説明した狭域ブロックサイズ8情報取得処理と同様であるので、その説明は省略する。
ステップS591において、ブロックサイズp情報取得処理が実行され、ブロックサイズp情報が取得されると、ステップS592において、判定部505は、ブロックサイズp情報取得処理の判定結果に基づいて、垂直ブロック判定処理を実行し、垂直ブロックサイズおよび垂直ブロック境界位置を判定する。その結果、垂直ブロックサイズbsize_cur、垂直ブロック境界位置bpos_cur、垂直信頼度brank_cur、境界条件発生総数カウンタbtotalが求められて出力される。尚、垂直ブロック判定処理は、図30を参照して説明した水平ブロックサイズ判定処理と同様であるので、その説明は省略する。
ここで、図32のフローチャートの説明に戻る。
ステップS503の判定処理により垂直ブロックサイズおよび垂直ブロック境界位置が判定されると、ステップS504において、安定化処理部506により安定化処理がなされて、判定処理により判定された垂直ブロックサイズ、および垂直ブロック境界位置が安定化される。そして、安定化された垂直ブロックのブロックサイズ情報および垂直ブロック境界位置のブロック境界位置情報が出力される。尚、安定化処理については、図31のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
ここで、図16のフローチャートの説明に戻る。
ステップS24において、垂直検出処理が実行されると、ステップS25において、ブロック境界情報検出部32は、入力条件の変更があるか否かを判定し、変更がないと判定した場合、処理は、ステップS23に戻る。すなわち、入力条件の変更が無い限り、ステップS23乃至S25の処理が繰り返される。
そして、ステップS25において、入力条件の変更があると判定された場合、処理は、ステップS21に戻り、以降の処理が繰り返される。
尚、以上においては、水平ブロックサイズを求めた後、垂直ブロックサイズを求めることにより、水平ブロックサイズに基づいて、垂直ブロックサイズを求める手間を省くことが可能となり、処理の高速化を実現することが可能となる。
また、ブロックサイズについては、小数点以下の値であっても求めることが可能であるので、今後、様々な画像フォーマットが発生しても、高い精度でブロックサイズやブロック境界位置を求めることが可能となる。
尚、以上においては、水平ブロックサイズを求めた後、垂直ブロックサイズを求めることとする例について説明してきたが、当然のことながら垂直ブロックサイズを求めてから、水平ブロックサイズを求めるようにしてもよい。さらに、水平検出処理、または、垂直検出処理のいずれかだけであってもよい。
以上の処理によりブロックサイズおよびブロック境界位置を高い精度で求めることが可能となる。
なお、上述した画像処理システム10では、画像送出装置11から画像処理装置12にスケーリング率が入力されたが、画像処理装置にはスケーリング率が入力されなくてもよい。この場合の画像処理システムの構成について、図36に示す。
図36の画像処理システム1000は、画像送出装置1001と画像処理装置1002により構成される。なお、図36において、図1と同一のものには同一の符号を付してあり、説明は繰り返しになるので、省略する。
画像送出装置1001は、スケーリング部21と表示制御部1011により構成され、スケーリング率を画像処理装置1002に入力しない。詳細には、表示制御部1011には、図1の表示制御部22と同様に、画像処理装置1001から出力される出力画像の画面モードが入力される。表示制御部1011は、表示制御部22と同様に画面モードに応じてスケーリング率を決定するが、そのスケーリング率をスケーリング部21にだけ入力する。
画像処理装置1002は、検出情報補正部33、ブロックノイズ低減処理部34、再スケーリング部1021、ブロック境界情報検出部1022、および検出制御部1023により構成される。画像処理装置1002は、予め用意されている複数のスケーリング率で再スケーリングを行い、その結果得られる複数のブロックサイズ情報およびブロック境界位置情報から、最適なブロックサイズ情報およびブロック境界位置情報を選択する。
具体的には、再スケーリング部1021は、検出制御部1023から供給されるスケーリング率に基づいて、スケーリング部21から入力される入力画像に対して再度スケーリングを行い、その結果得られる再スケーリング画像をブロック境界情報検出部1022に供給する。
ブロック境界情報検出部1022は、図1のブロック境界情報検出部32と同様に、再スケーリング部1021から供給された再スケーリング画像から、ブロックサイズ、ブロック境界位置、および信頼度を検出する。そして、ブロック境界情報検出部1022は、その結果得られるブロックサイズ情報とブロック境界位置情報を検出制御部1023に供給する。
また、ブロック境界情報検出部1022は、信頼度と境界条件発生総数カウンタに基づいて、信頼度の境界条件発生総数カウンタに対する割合を、検出の集中率を表す検出集中率Qとして求める。ここでは、水平方向および垂直方向のそれぞれについて求められた検出集中率の和が検出集中率Qとされる。そして、ブロック境界情報検出部1022は、その結果得られる検出集中率Qを検出制御部1023に供給する。
検出制御部1023は、予め用意されている複数のスケーリング率を順次再スケーリング部1021に供給する。また、検出制御部1023は、ブロック境界情報検出部1022によるブロックサイズ情報とブロック境界位置情報の検出結果を制御する。
具体的には、検出制御部1023は、ブロック境界情報検出部1022から供給された全ての検出集中率Qのうちの最も高い検出集中率Qに対応するスケーリング率を、スケーリング部21におけるスケーリング率と一致している再スケーリングに最適なスケーリング率として決定し、検出情報補正部33に供給する。また、検出制御部1023は、最適なスケーリング率に対応するブロックサイズおよびブロック境界位置を検出結果として、検出情報補正部33に供給する。
次に、図37を参照して、検出集中率Qについて説明する。
なお、図37において、横軸は、小周期が8画素である場合の各位相の番号を表し、縦軸は検出集中率Qを表している。
図37Aと図37Bでは、検出集中率Qが最も高い位相の番号が4であるため、番号が4である位相がブロック境界位置として検出される。しかしながら、図37Aでは、ブロック境界位置における検出集中率Qと他の位相における検出集中率Qにほとんど差がなく、ブロック境界位置における検出集中率Qは低い。即ち、図37Aでは、再スケーリングのスケーリング率がスケーリング部21におけるスケーリング率と異なっているため、境界条件が周期的に発生せず、検出集中率Qが平均化されてしまっている。
これに対して、図37Bでは、ブロック境界位置における検出集中率Qが他の位相における検出集中率Qに比べて突出しており、ブロック境界位置の検出集中率Qは高い。即ち、図37Bでは、再スケーリングのスケーリング率がスケーリング部21におけるスケーリング率と一致しているため、境界条件が周期的に発生し、ブロック境界位置に境界条件の発生が集中している。
以上のように、検出集中率Qはスケーリング率に応じて異なり、スケーリング率ごとの検出集中率Qは、例えば、図38に示すようになる。なお、図38では、スケーリング率の種類がa乃至fの6種類ある。また、図38において、横軸は、スケーリング率の種類を表しており、縦軸は検出集中率を表している。
スケーリング率ごとの検出集中率Qが図38に示されるような場合、検出制御部1023は、最も高い検出集中率Qに対応するスケーリング率dを、スケーリング部21におけるスケーリング率と一致している、再スケーリングに最適なスケーリング率として決定する。
次に、図39のフローチャートを参照して、図36の画像処理装置1002による画像処理について説明する。この画像処理は、例えば、画像送出装置1001から入力画像が入力されたとき、開始される。
ステップS1001において、検出制御部1023は、再スケーリングのスケーリング率Mとしてスケーリング率の初期値aを設定する。そして、検出制御部1023は、そのスケーリング率Mを再スケーリング部1021に供給する。
ステップS1002において、再スケーリング部1021は、検出制御部1023から供給されるスケーリング率Mに基づいて、図1の再スケーリング部31と同様に、スケーリング部21から入力される入力画像に対して再スケーリングを行う。そして、再スケーリング部1021は、その結果得られる再スケーリング画像をブロック境界情報検出部1022に供給する。
ステップS1003において、ブロック境界情報検出部1022は、再スケーリング画像に対してブロック検出処理を行う。このブロック検出処理は、図16のブロック検出処理と同様であるので、説明は省略する。
ステップS1004において、ブロック境界情報検出部1022は、ブロック検出処理により求められた信頼度と境界条件発生総数カウンタに基づいて検出集中率Qを求め、検出制御部1023に出力する。
ステップS1005において、検出制御部1023は、内蔵するメモリ(図示せず)に、スケーリング率Mをアドレスとして、ブロック境界情報検出部1022から供給される検出集中率Q並びにブロックサイズ情報およびブロック境界位置情報を配列Rとして保持する。
ステップS1006において、検出制御部1023は、予め用意されている全てのスケーリング率で再スケーリングが行われたか、即ち、予め用意されている全てのスケーリング率をスケーリング率Mに設定したかを判定する。
ステップS1006で予め用意されている全てのスケーリング率でまだ再スケーリングが行われていないと判定された場合、ステップS1007において、スケーリング率Mを、予め用意されているまだ設定されていないスケーリング率に更新する。そして、処理はステップS1002に戻り、以降の処理が繰り返される。
一方、ステップS1006で予め用意されている全てのスケーリング率で再スケーリングが行われたと判定された場合、ステップS1008において、検出制御部1023は、配列R内から検出集中率Qが最高となるブロックサイズ情報およびブロック境界位置情報を選択し、そのブロックサイズ情報およびブロック境界位置情報と、それに対応するアドレスとしてのスケーリング率Mを検出情報補正部33に供給する。
ステップS1009において、検出情報補正部33は、検出制御部1023から入力されるスケーリング率に基づいて、検出制御部1023から供給されるブロックサイズ情報とブロック境界位置情報を補正する。
ステップS1010において、ブロックノイズ低減処理部34は、図6のステップS14の処理と同様に、検出情報補正部33により補正されたブロックサイズ情報とブロック境界位置情報に基づいて、入力画像に対するブロックノイズ低減処理の強度を適応的に変化させて、入力画像のブロックノイズを低減する。そして、ブロックノイズ低減処理部34は、その結果得られるブロックノイズ低減処理画像を出力画像として出力する。
以上のように、画像処理装置12および1002では、スケーリングされた入力画像に対して再スケーリングを行い、ブロックサイズを元に戻した後、整数周期でブロックサイズとブロック境界位置の検出を行うので、再スケーリング画像におけるブロックサイズとブロック境界位置を正確に検出することができる。その結果、入力画像が任意の倍率でスケーリングされた場合であっても、再スケーリング画像から検出されたブロックサイズとブロック境界位置をスケーリング率に応じて補正することにより、入力画像におけるブロックサイズとブロック境界位置を正確に検出することができる。
これに対して、スケーリングされた入力画像をそのまま用いて整数周期でブロックサイズとブロック境界位置が検出される場合、スケーリング前の元画像を用いた検出では、図37Bに示されたように、ブロック境界位置において検出集中率が突出する場合であっても、スケーリング率が105%などのような場合、境界条件が周期的に発生しなくなり、図37Aに示されたように、検出集中率が平均化されてしまう。その結果、ブロックサイズとブロック境界位置を正確に検出することができない。
また、画像処理装置12および1002では、上述したように、入力画像におけるブロックサイズとブロック境界位置を正確に検出することができるので、ブロックサイズやブロック境界位置などのデコード情報が対応付けて入力されない入力画像のブロックノイズを低減することができる。
尚、ブロックサイズおよびブロック境界位置の検出方法は、上述した方法に限定されない。
ところで、上述した一連の画像処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
図40は、汎用のパーソナルコンピュータの構成例を示している。このパーソナルコンピュータは、CPU(Central Processing Unit)1051を内蔵している。CPU1051にはバス1054を介して、入出力インタフェース1055が接続されている。バス1054には、ROM(Read Only Memory)1052およびRAM(Random Access Memory)1053が接続されている。
入出力インタフェース1055には、ユーザが操作コマンドを入力するキーボード、マウスなどの入力デバイスよりなる入力部1056、処理操作画面や処理結果の画像を表示デバイスに出力する出力部1057、プログラムや各種データを格納するハードディスクドライブなどよりなる記憶部1058、LAN(Local Area Network)アダプタなどよりなり、インターネットに代表されるネットワークを介した通信処理を実行する通信部1059が接続されている。また、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどのリムーバブルメディア1061に対してデータを読み書きするドライブ1060が接続されている。
CPU1051は、ROM1052に記憶されているプログラム、または磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリ等のリムーバブルメディア1061から読み出されて記憶部1058にインストールされ、記憶部1058からRAM1053にロードされたプログラムに従って各種の処理を実行する。RAM1053には、CPU1051が各種の処理を実行する上において必要なデータなども適宜記憶される。
尚、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
12 画像処理装置, 31 再スケーリング部, 32 ブロック境界情報検出部, 33 検出情報補正部, 1002 画像処理装置, 1023 検出制御部