以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
即ち、本発明の画像処理装置は、ブロックマッチングにより注目画素を含むブロックと、その近傍の複数のブロックについて、それぞれブロック単位動きベクトルを検出するブロック単位動きベクトル検出手段(例えば、図2のブロック単位動きベクトル検出部12)と、ブロック単位動きベクトル検出手段により検出された複数のブロック単位動きベクトルに基づいて、注目画素の生成に使用される第1のフィールド上の画素と、第2のフィールド上の画素との画素値の差分を計算する差分計算手段(例えば、図3の動き補償部36)と、差分計算手段により計算された画素値の差分が最小となるブロック単位の動きベクトルを、注目画素の画素単位動きベクトルとして選択する画素単位動きベクトル選択手段(例えば、図3の条件判定部37)と、画素単位動きベクトル選択手段により選択された画素単位動きベクトルにより、第1のフィールド上の画素と第2のフィールド上の画素とを用いて、フィールド間補間により注目画素の画素値を生成するフィールド間補間画素生成手段(例えば、図33の時間補間部112)と、注目画素を垂直方向、または、水平方向に隣接する画素を用いて、フィールド内補間により注目画素の画素値を生成するフィールド内補間画素生成手段(例えば、図33の空間補間部111)と、フィールド間画素生成手段により生成された注目画素の画素値、注目画素の垂直方向、または、水平方向に隣接する画素の画素値、フィールド内補間画素生成手段により生成された注目画素の画素値、並びに、注目画素と同位置の注目画素の存在する時間的に前後のフィールドの画素の画素値に基づいて、エラー発生量を計算するエラー発生量計算手段(例えば、図33のエラー処理部113)と、エラー発生量計算手段により計算されたエラー発生量に基づいて、フィールド内補間画素生成手段により生成された画素値、および、フィールド間補間画素生成手段により生成された画素値を用いて注目画素の画素値を決定する画素値決定手段(例えば、図33の画素生成部114)とを備えることを特徴とする。
前記注目画素の生成に使用される第1のフィールド上の画素と、第2のフィールド上の画素とにおけるそれぞれの補助情報を生成する補助情報生成手段(例えば、図16の現フィールドデータ用付加情報検出部51)をさらに設けるようにさせることができ、画素単位動きベクトル選択手段には、注目画素の生成に使用される第1のフィールド上の画素における補助情報と、第2のフィールド上の画素における補助情報とが一致して、かつ、差分計算手段により計算された画素値の差分が最小となるブロック単位動きベクトルを、注目画素の画素単位動きベクトルとして選択させるようにすることができる。
前記注目画素の生成に使用される第1のフィールド上の画素における補助情報と、第2のフィールド上の画素における補助情報とが一致しない場合、複数のブロックの基準位置と、注目画素との距離に応じて、複数のブロック毎のブロック単位動きベクトルを平滑化して、注目画素の画素単位動きベクトルを計算する画素単位動きベクトル計算手段(例えば、図27の動きベクトル平滑化部82)をさらに設けるようにさせることができる。
前記フィールド間画素生成手段により生成された注目画素の画素値と、注目画素の垂直方向、または、水平方向に隣接する画素の画素値との差分の絶対値の和をフィールド間補間画素空間遷移情報として計算するフィールド間補間画素空間遷移情報計算手段(例えば、図34のフィールド間補間画素空間遷移解析部133)と、フィールド間補間画素生成手段により生成された注目画素の画素値と、注目画素と同位置の注目画素の存在する時間的に前後のフィールドの画素の画素値との差分の絶対値の和をフィールド間補間画素時間遷移情報として計算するフィールド間補間画素時間遷移情報計算手段(例えば、図34のフィールド間補間画素時間遷移解析部132)と、フィールド内補間画素生成手段により生成された注目画素の画素値と、注目画素と同位置の注目画素の存在する時間的に前後のフィールドの画素の画素値との差分の絶対値の和をフィールド間補間画素時間遷移情報として計算するフィールド内補間画素時間遷移情報計算手段(例えば、図34のフィールド内補間画素時間遷移解析部131)とをさらに設けるようにさせることができ、エラー発生量計算手段は、フィールド間補間画素空間遷移情報、フィールド間補間画素時間遷移情報、および、フィールド内補間画素時間遷移情報に基づいて、エラー発生量を計算させるようにすることができる。
本発明の画像処理方法は、ブロックマッチングにより注目画素を含むブロックと、その近傍の複数のブロックについて、それぞれブロック単位動きベクトルを検出するブロック単位動きベクトル検出ステップ(例えば、図4のフローチャートのステップS1の処理)と、ブロック単位動きベクトル検出ステップの処理で検出された複数のブロック単位動きベクトルに基づいて、注目画素の生成に使用される第1のフィールド上の画素と、第2のフィールド上の画素との画素値の差分を計算する差分計算ステップ(例えば、図5のフローチャートのステップS13乃至S17の処理)と、差分計算ステップの処理で計算された画素値の差分が最小となるブロック単位の動きベクトルを、注目画素の画素単位動きベクトルとして選択する画素単位動きベクトル選択ステップ(例えば、図4のフローチャートのステップS4の処理)と、画素単位動きベクトル選択ステップの処理で選択された画素単位動きベクトルにより、第1のフィールド上の画素と第2のフィールド上の画素とを用いて、フィールド間補間により注目画素の画素値を生成するフィールド間補間画素生成ステップ(例えば、図36のフローチャートのステップS322の処理)と、注目画素を垂直方向、または、水平方向に隣接する画素を用いて、フィールド内補間により注目画素の画素値を生成するフィールド内補間画素生成ステップ(例えば、図36のフローチャートのステップS321の処理)と、フィールド間画素生成ステップの処理で生成された注目画素の画素値、注目画素の垂直方向、または、水平方向に隣接する画素の画素値、フィールド内補間画素生成ステップの処理で生成された注目画素の画素値、並びに、注目画素と同位置の注目画素の存在する時間的に前後のフィールドの画素の画素値に基づいて、エラー発生量を計算するエラー発生量計算ステップ(例えば、図36のフローチャートのステップS323の処理)と、エラー発生量計算ステップの処理で計算されたエラー発生量に基づいて、フィールド内補間画素生成ステップの処理で生成された画素値、および、フィールド間補間画素生成ステップの処理で生成された画素値を用いて注目画素の画素値を決定する画素値決定ステップ(例えば、図36のフローチャートのステップS325,S327の処理)とを含むことを特徴とする。
尚、記録媒体、および、プログラムについての対応関係は、画像処理方法と同様であるので、その説明は省略する。
図2は、本発明を適用した画像処理装置20の一実施の形態の構成を示す図である。尚、図2の画像処理装置20の構成において、図1の画像処理装置1と対応する構成については、同一の符号を付してあり、その説明は、適宜省略するものとする。
画素単位動きベクトル検出部21は、入力データである現フィールドデータ、画像メモリ11−2より供給される前遅延フィールドデータ、および、ブロック単位動きベクトル検出部12より供給されるブロック単位動きベクトルに基づいて、画素単位で動きベクトルを生成し、画素単位動きベクトルとして画像合成部22に供給する。
画像合成部22は、入力データである現フィールドデータ、画像メモリ11−1より供給される遅延フィールドデータ、画像メモリ11−2より供給される前遅延フィールドデータ、および、画素単位動きベクトル検出部21より供給される画素単位動きベクトルに基づいて、現フィールドと前遅延フィールドとを合成することにより新たなフィールドを生成して後段の装置に出力する。
画像合成部22は、生成した新たなフィールドを含む出力データとして、例えば、走査線変換処理においては、入力されたインタレース画像をプログレッシブ画像に変換して出力したり、解像度変換またはフィールド周波数変換を実行する。ここで、後段の装置とは、例えば、その他の画像処理装置であったり、テレビジョン受像機のような画像表示装置であったり、VTR(Video Tape Recoder)のような画像記録装置であっても良い。
次に、図3を参照して、画素単位動きベクトル検出部21の詳細な構成について説明する。
ブロック単位動きベクトル用メモリ31は、ブロック単位動きベクトル検出部12より供給されるブロック単位動きベクトルを格納し、注目ブロックの動きベクトルだけでなく、その近傍の動きベクトルも含めた複数の動きベクトルを同時に動き補償部36に供給する。尚、注目画素とは、処理対象となる画素であり、注目ブロックとは、処理対象となる注目画素を含む複数の画素からなるブロックである。
現フィールドデータ用前処理部32は、LPF(Low Pass Filter)などから構成され、入力される現フィールドデータのノイズの影響を除去する前処理を行い、処理結果となるノイズ除去された現フィールドデータを現フィールドデータ用バッファ33に供給する。なお、現フィールドデータ用前処理部32は、LPFに限らず、例えば、メディアンフィルタのようなものでもよく、さらには、現フィールドデータ用前処理部32を設けず、前処理を行わないようにしてもよい。
現フィールドデータ用バッファ33は、現フィールドデータ用前処理部32より供給された前処理済の現フィールドデータを格納する。現フィールドデータ用バッファ33は、例えば、メモリなどから構成されており、現フィールドデータのうち処理に必要なのデータが保持できる容量があれば良い。現フィールドデータ用バッファ33は、動き補償部36からの要求に応じて、メモリ上をランダムにアクセスすることにより読み出したデータを動き補償部36に供給する。
前遅延フィールドデータ用前処理部34は、現フィールドデータ用前処理部32と同様にLPFなどから構成され、画像メモリ11−2より供給される前遅延フィールドデータのノイズの影響を除去する前処理を行い、処理結果を前遅延フィールド前処理済データとして前遅延フィールドデータ用バッファ35に供給する。
前遅延フィールドデータ用バッファ35は、現フィールドデータ用バッファ33と同様に、例えば、メモリなどで構成されており、前遅延フィールドデータ用前処理部34より供給される前処理済前遅延フィールドデータを格納する。前遅延フィールドデータ用バッファ35は、動き補償部36からの要求に応じて、メモリ上をランダムにアクセスすることにより読み出した前遅延フィールドデータを動き補償部36に供給する。
動き補償部36は、動き補償処理を実行し、ブロック単位動きベクトル用メモリ31より、注目ブロックとその近傍の複数のブロックのブロック単位の動きベクトルを読み出し、各動きベクトルが、注目画素を通るとき、注目画素の存在するフィールドから見て、時間的に前後のフレームとなる現フィールド上と前遅延フィールド上を、その動きベクトルが通る位置の画素間の画素値の差分を求め、差分データとして動きベクトル毎に条件判定部37に出力する。このとき、動き補償部36は、差分データに対応する動きベクトルも条件判定部37に供給する。
条件判定部37は、条件判定処理を実行し、動きベクトル毎に求められた差分データのうち、最小となる差分データを選択し、最小となった差分データに対応する動きベクトルを識別する選択信号と、比較した差分データに対応する動きベクトルを画素ベクトル選択部38に供給する。
画素ベクトル選択部38は、選択処理を実行し、条件判定部37より供給された選択信号に基づいて、差分データが最小となるブロック単位動きベクトルを注目画素の画素単位動きベクトルとして選択し、画像合成部22に出力する。
次に、図4のフローチャートを参照して、図2の画像処理装置20による画像処理について説明する。
ステップS1において、ブロック単位動きベクトル検出部12は、入力される原フィールドデータと画像メモリ11−2より供給される前遅延フィールドデータに基づいて、ブロックマッチングによりブロック単位で動きベクトルを求め、画素単位動きベクトル検出部21に出力する。尚、ブロック単位の動きベクトルの検出方法については、従来のブロックマッチング法を用いた検出方法と同様であるので、その説明は省略する。
ステップS2において、画素単位動きベクトル検出部21の動き補償部36は、動き補償処理を実行して、処理結果として処理に使用したブロック単位の動きベクトルと差分データを条件判定部37に出力する。
ここで、図5のフローチャートを参照して、動き補償部36による動き補償処理について説明する。
ステップS11において、動き補償部36は、処理回数をカウントするための図示せぬカウンタyを初期化して0にする。ステップS12において、動き補償部36は、処理回数をカウントするための図示せぬカウンタxを初期化して0にする。
ステップS13において、動き補償部36は、現フィールドデータ用バッファ33より現フィールドデータ用前処理部32により前処理された現フィールドデータと、前遅延フィールドデータ用バッファ35より前遅延フィールドデータ用前処理部34により前処理された前遅延フィールドデータとを読み出し、図5で示される生成しようとしている注目画素(x,y)の属するブロックである生成ブロックと、その近傍の複数のブロックA乃至Eのうち、ブロックAのブロック単位動きベクトルである動きベクトルaに基づいて、注目画素(x,y)の生成に使用される現フィールド上の画素a_prと前遅延フィールド上の画素a_deの画素値を求め、さらに、その差分a_diffを求め、計算に用いたブロック単位動きベクトルaと対応付けて条件判定部37に出力する。尚、以降の説明においては、注目画素が存在するブロックを注目ブロックと称し、その近傍のブロックを近傍ブロックと称し、さらに、注目画素のフィールドを生成フィールドと称するものとする。
すなわち、例えば、図6で示されるように、注目画素の存在する生成フィールドのサイズがxsize×ysizeであって、注目ブロックが図6中のブロックC(図中では、黒く表示されているブロックである)であった場合、その近傍ブロックは、ブロックA,B,D,E(図中では斜線で示されているブロックである)の4ブロックであるものとする。ここで、各ブロックのサイズは、いずれも同一であり、例えば、図7で示されるように、step_x×step_yである。さらに、注目ブロックと近傍ブロックであるブロックA乃至Eのブロック単位ベクトルは、例えば、図8で示されるように、それぞれ動きベクトルa乃至eであるものとする。
さらに、生成フィールドは、時間的に前遅延フィールドと現フィールドの間に存在するものであり、前遅延フィールドと現フィールドの間隔を1とすれば、図9で示されるように、現フィールドまでの間隔をαとするとき、前遅延フィールドまでの距離は(1−α)で表されることになる。
また、注目画素(x,y)の生成に使用する現フィールド上の画素a_prと前遅延フィールド上の画素a_deとは、例えば、ブロックAのブロック単位動きベクトルaを(Xa,Ya)で表すものとすると、図10で示されるように、画素a_prは、現フィールド上の座標(x+α×Xa,y+α×Ya)上の画素であり、画素a_deは、前遅延フィールド上の座標(x−(1−α)×Xa,y−(1−α)×Ya)上の画素となる。
従って、ブロック単位動きベクトルaが(Xa,Ya)で表される場合、動き補償部36は、現フィールド上の座標(x+α×Xa,y+α×Ya)上の画素a_prの画素値と、前遅延フィールド上の座標(x−(1−α)×Xa,y−(1−α)×Ya)上の画素a_deの画素値の差分a_diffを求め、演算に用いたブロック単位動きベクトルaと対応付けて条件判定部37に供給する。
すなわち、動き補償部36は、ブロック単位動きベクトルaが、生成フィールド上の注目画素(x,y)を通るときに、現フィールドを通る位置の画素(図10中のブロック単位動きベクトルaの終点となる位置の画素)の画素値と、前遅延フィールドを通る位置の画素(図10中のブロック単位動きベクトルaの始点となる位置の画素)の画素値との差分を差分a_diffとして計算する。
ステップS14において、動き補償部36は、ステップS13の処理と同様に、ブロックBのブロック単位動きベクトルbに基づいて、注目画素(x,y)の生成に使用する現フィールド上の画素b_prと前遅延フィールド上の画素b_deの画素値を求め、さらに、その差分b_diffを求め、計算に用いた動きベクトルbを対応付けて条件判定部37に出力する。
ステップS15において、動き補償部36は、ステップS13の処理と同様に、ブロックCのブロック単位動きベクトルcに基づいて、注目画素(x,y)の生成に使用する現フィールド上の画素c_prと前遅延フィールド上の画素c_deの画素値を求め、さらに、その差分c_diffを求め、計算に用いた動きベクトルcを対応付けて条件判定部37に出力する。
ステップS16において、動き補償部36は、ステップS13の処理と同様に、ブロックDのブロック単位動きベクトルdに基づいて、注目画素(x,y)の生成に使用する現フィールド上の画素d_prと前遅延フィールド上の画素d_deの画素値を求め、さらに、その差分d_diffを求め、計算に用いた動きベクトルdを対応付けて条件判定部37に出力する。
ステップS17において、動き補償部36は、ステップS13の処理と同様に、ブロックEのブロック単位動きベクトルeに基づいて、注目画素(x,y)の生成に使用する現フィールド上の画素e_prと前遅延フィールド上の画素e_deの画素値を求め、さらに、その差分e_diffを求め、計算に用いた動きベクトルeを対応付けて条件判定部37に出力する。
ステップS18において、動き補償部36は、カウンタxが、フィールドの水平方向のサイズに相当するxsizeであるか否かを判定し、xsizeではないと判定した場合、ステップS19において、カウンタxを1インクリメントして、その処理は、ステップS13に戻る。
ステップS18において、カウンタxがxsizeではないと判定された場合、ステップS20において、動き補償部36は、カウンタyがysizeであるか否かを判定し、例えば、ysizeではないと判定したとき、ステップS21において、カウンタyを1インクリメントして、その処理は、ステップS12に戻り、それ以降の処理が繰り返される。
ステップS20において、カウンタyがysizeであると判定された場合、その処理は、終了する。
すなわち、ステップS13乃至S17の処理が、生成フィールド上の各画素について繰り返され、各画素について、自らの属するブロックと、その近傍のブロックのブロック単位動きベクトルの前遅延フィールド上の始点位置の画素値と、現フィールド上の終点位置の画素値との差分a_diff乃至e_diffが求められ、演算に使用されたブロック単位動きベクトルと対応付けて条件判定部37に供給され、ステップS18乃至S21の処理により、生成フィールド上の全ての画素について、その処理がなされたと判定されるまで繰り返される。
ここで、図4のフローチャートの説明に戻る。
ステップS4において、動き補償処理が成されると、ステップS5において、条件判定部37は、条件判定処理を実行し、各画素について画素単位動きベクトルの候補となるブロック単位動きベクトルa乃至eのいずれかを選択する信号を画素ベクトル選択部38に供給する。
ここで、図11のフローチャートを参照して、条件判定部37による条件判定処理について説明する。
ステップS31において、条件判定部37は、動き補償部36より供給された差分b_diffと差分d_diffとを比較し、差分b_diffが差分d_diffよりも小さいか否かを判定する。すなわち、条件判定部37は、注目ブロックからみて水平方向に隣接する近傍ブロックの差分b_diffと差分d_diffとの大小を比較する。
例えば、ステップS31において、差分b_diffが差分d_diffよりも小さいと判定された場合、条件判定部37は、ステップS32において、水平方向の差分h_diffとしてb_diffを設定し(h_diff=b_diffに設定し)、水平方向の近傍ブロックの代表となる動きベクトルhを動きベクトルbに設定する(h=bに設定する)。
一方、例えば、ステップS31において、差分b_diffが差分d_diffよりも小さくないと判定された場合、条件判定部37は、ステップS33において、水平方向の差分h_diffとしてd_diffを設定し(h_diff=d_diffに設定し)、水平方向の近傍ブロックの代表となる動きベクトルhを動きベクトルdに設定する(h=dに設定する)。
ステップS34において、条件判定部37は、動き補償部36より供給された差分a_diffと差分e_diffとを比較し、差分a_diffが差分e_diffよりも小さいか否かを判定する。すなわち、条件判定部37は、注目ブロックからみて垂直方向に隣接する近傍ブロックの差分a_diffと差分e_diffとの大小を比較する。
例えば、ステップS34において、差分a_diffが差分e_diffよりも小さいと判定された場合、条件判定部37は、ステップS35において、垂直方向の差分v_diffとしてa_diffを設定し(v_diff=a_diffに設定し)、垂直方向の近傍ブロックの代表となる動きベクトルvを動きベクトルeに設定する(v=eに設定する)。
一方、例えば、ステップS34において、差分a_diffが差分e_diffよりも小さくないと判定された場合、条件判定部37は、ステップS36において、垂直方向の差分v_diffとしてa_diffを設定し(v_diff=a_diffに設定し)、垂直方向の近傍ブロックの代表となる動きベクトルvを動きベクトルaに設定する(v=aに設定する)。
ステップS37において、条件判定部37は、c_diffが所定の閾値thよりも小さいか否かを判定し、例えば、所定の閾値thよりも小さい場合、ステップS38において、選択信号PSELとしてc_diffを採用したことを示すCと共に、ブロック単位動きベクトルcを画素ベクトル選択部38に供給する。
ステップS37において、差分c_diffが閾値thよりも小さくないと判定された場合、ステップS39において、条件判定部37は、差分h_diffが差分v_diffよりも小さいか否かを判定し、例えば、差分h_diffが差分v_diffよりも小さいと判定した場合、ステップS40に進む。
ステップS40において、条件判定部37は、h_diffが所定の閾値thよりも小さいか否かを判定し、例えば、所定の閾値thよりも小さい場合、ステップS41において、選択信号PSELとしてh_diffを採用したことを示すHと共に、ブロック単位動きベクトルhを画素ベクトル選択部38に供給する。また、ステップS40において、h_diffが所定の閾値thよりも小さくない場合、その処理は、ステップS38に進む。
ステップS39において、差分h_diffが差分v_diffよりも小さくないと判定された場合、ステップS42において、条件判定部37は、v_diffが所定の閾値thよりも小さいか否かを判定し、例えば、所定の閾値thよりも小さい場合、ステップS43において、選択信号PSELとしてv_diffを採用したことを示すVと共に、ブロック単位動きベクトルvを画素ベクトル選択部38に供給する。また、ステップS42において、v_diffが所定の閾値thよりも小さくない場合、その処理は、ステップS38に進む。
すなわち、ステップS31乃至S33の処理により、注目ブロックに対して水平方向に隣接する近傍ブロック間の差分のうち小さい方が水平方向の差分として設定され、ステップS34乃至S36の処理により、注目ブロックに対して垂直方向に隣接する近傍ブロック間の差分のうち小さい方が垂直方向の差分として設定される。
そして、ステップS37において、注目ブロックの差分が所定の閾値thよりも小さい場合、ステップS38において、選択信号としてc_diffを選択したことを示すCが画素ベクトル選択部38に供給される。また、ステップS37において、注目ブロックの差分が所定の閾値thよりも小さくない場合、ステップS39において、水平方向の差分h_diffと垂直方向の差分v_diffとの大小関係から差分が小さい方が選択され、ステップS40,S42において、それぞれ所定の閾値thよりも小さければ、ステップS41,S43の処理により、それぞれ選択信号として、それぞれh_diff,v_diffを選択したことを示すPSEL=H,Vを画素ベクトル選択部38に供給する。また、ステップS40,S42において、所定の閾値よりも小さくない場合、ステップS38において、選択信号としてc_diffを選択したことを示すCが画素ベクトル選択部38に供給される。
結果として、差分a_diff乃至e_diffのうち、c_diffが所定の閾値thよりも小さければ、選択信号PSEL=Cが画素ベクトル選択部38に供給され、c_diffが所定の閾値thよりも小さくなければ、差分a_diff,b_diff,d_diff,e_diffのうち、最も小さなものであって、かつ、所定の閾値thよりも小さな差分である選択信号PSEL=HまたはVが画素ベクトル選択部38に供給され、さらに、いずれの差分も所定の閾値thよりも小さくない場合、選択信号PSEL=Cが画素ベクトル選択部38に供給される。
次に、図12のフローチャートを参照して、画素ベクトル選択部38による選択処理について説明する。
ステップS61において、画素ベクトル選択部38は、選択信号PSELがCであるか否かを判定し、例えば、選択信号PSELがCであると判定した場合、ステップS62において、ブロック単位動きベクトルcを、注目画素(x,y)の画素単位動きベクトルに設定し、画素の位置情報と共に画像合成部13に出力する。
ステップS61において、選択信号PSELがCではないと判定された場合、ステップS63において、画素ベクトル選択部38は、選択信号PSELがHであるか否かを判定し、例えば、選択信号PSELがHであると判定した場合、ステップS64において、ブロック単位動きベクトルh(すなわち、ブロック単位動きベクトルbまたはd)を、注目画素(x,y)の画素単位動きベクトルに設定し、画素の位置情報と共に画像合成部13に出力する。
ステップS63において、選択信号PSELがHではないと判定された場合、すなわち、選択信号PSELがVであると判定された場合、ステップS65において、画素ベクトル選択部38は、ブロック単位動きベクトルv(すなわち、ブロック単位動きベクトルaまたはe)を、注目画素(x,y)の画素単位動きベクトルに設定し、画素の位置情報と共に画像合成部13に出力する。
以上の処理により、選択信号に対応した画素単位動きベクトルが設定される。
ここで、図4のフローチャートの説明に戻る。
ステップS5において、画像合成部13は、画素単位動きベクトルの情報に基づいて、現フィールドデータ、遅延フィールドデータ、前遅延フィールドデータを合成して、解像度を変換した画像データを出力する。すなわち、例えば、生成フィールド上の注目画素の画素単位動きベクトルが、ブロック単位動きベクトルaであるように設定されていた場合、画像合成部13は、上述した図10で示されるように、生成フィールド上の注目画素について、対応する画素単位動きベクトルaを用いて、画素単位動きベクトルaが注目画素を通るときの前遅延フィールド上の画素単位動きベクトルaの始点となる位置の画素の画素値と、現フィールド上の画素単位動きベクトルaの終点となる位置の画素の画素値とを用いて、例えば、その画素間の平均値を取ることによりフィールド間補間して画素を生成し、さらに、必要に応じて遅延フィールドデータと合成して、画像を生成し、出力する。
すなわち、以上の処理により、生成しようとする画素の属するブロックを含む、その近傍のブロックのブロック単位ベクトルを、生成しようとする画素位置における画素単位動きベクトルの候補とし、その候補となっているブロック単位動きベクトルを用いて、実際にフィールド間補間に使用される画素間の画素値の差分が最も小さい、すなわち、フィールド間補間により生成される新たな画素が、フィールド間補間に使用される画素と最も相関の高い画素となるブロック単位動きベクトルが、画素単位動きベクトルに設定される。結果として、画素単位動きベクトルを用いてフィールド間補間により生成された画素は、画素単位で周辺と相関の高いものとすることが可能となり、ブロック単位動きベクトルを用いた場合に比べて、より自然な画像となる。
また、この処理により、例えば、図13で示されるような白枠で示される領域の画像の場合、従来の処理においては、ブロック単位で動きベクトルが設定されていたため、ブロックとして設定された領域内で異なる動きのある画素が存在しても(図13においては、背景が静止しており、人物の肩の部分が移動している)、ブロック単位で同一の動きベクトルが使用されるため、図14で示されるように、ブロック単位で階段状に同様の位置関係にある現フィールドと前遅延フィールド上の画素がフィールド間補間に使用されることにより、画素が生成された画像上に、例えば、階段状のシャギーが発生してしまうようなことがあった。尚,図14,図15は、各画素の動きベクトルの水平方向の大きさを濃度にして表したものである。図14においては、白枠で括られた各ブロック内に数値が示されており、これらの数値は、各ブロックのブロック単位の画素の動きベクトルの水平方向の大きさを示している。今の場合、注目ブロックが+12であり、上に隣接した近傍ブロックが0であり、下に隣接した近傍ブロックが13であり、左に隣接したブロックが−1であり、右に隣接したブロックが+12であり、注目ブロックでは、動きのある画素の存在する領域と、動きのない画素の存在する領域が混在しているにも関わらず、同一の動きベクトルが設定されている。
一方、本発明を利用した処理においては、画素単位で動きベクトルが設定され、さらに、それらの動きベクトルは、フィールド間補間により生成される画素がフィールド間補間に使用される画素間の差分が周辺のブロック単位動きベクトルの中で最小のものであるので、周辺の画素との相関が高いものとなり、例えば、図15の白枠部分で示される注目ブロック内に動きのある画素の存在する領域と動きのない画素の存在する領域との境界部分についても、それぞれ区別して動きベクトルが生成されることになるので、結果として、自然な画素生成を実現することが可能となる。
尚、フィールドには、位相の異なる2つのフィールドがあり、それぞれトップフィールドとボトムフィールドと称される。トップフィールドは、最上段の水平走査線上から1ラインおきに画素が配置され、それ以外のラインには、画素がなく、ボトムフィールドは、最上段の1ライン下の水平走査線から1ラインおきに画素が生成され、それ以外のラインに画素が存在しない。すなわち、トップフィールドとボトムフィールドでは、画素の存在するラインが1ラインずれた関係となっている。このため、この例においては、現フィールドと前遅延フィールドは、同位相のフィールドであるが、遅延フィールドは、現フィールドと前遅延フィールド上における画素配置が1ラインずれた異なる位相のフィールドである。
従って、図9で示されるαを1/2に設定した場合、生成フィールドは、遅延フィールドそのものとなり、遅延フィールド上の画素が存在しないライン上に、現フィールドと前遅延フィールド上に存在する画素の情報に基づいて、遅延フィールド上の画素が存在しないライン上に画素を生成し、さらに、遅延フィールドデータと合成することで、インタレース画像をプログレッシブ画像に変換することが可能となる。
また、以上においては、画素単位動きベクトルの候補として、注目ブロックのブロック単位動きベクトルの他に近傍ブロックとして、注目ブロックに水平方向、および、垂直方向に隣接するブロックである近傍ブロックのブロック単位動きベクトルを使用する例について説明してきたが、近傍ブロックは、それ以外の位置のブロックでもよいし、また、数についても、上述した4ブロックのみならず、例えば、注目ブロックの左右の斜上、または、左右の斜下の位置のブロックを含めた8ブロックとするようにしても良い。また、同位相の異なるフィールド上のブロックを近傍ブロックとして使用してもよく、例えば、前後の同一位相のフィールド(生成フィールドに対して2フィールド前のフィールドと2フィールド後のフィールド)上の注目ブロックと同位置のブロックなどを使用してもよい。
ところで、図3の画素単位動きベクトル検出部21の場合、この方法では、画素単位の動きベクトルを導出する際に、複数のブロック単位動きベクトルの候補を用いて、フィールド間補間に使用する画素間の画素値の差分が小さい、すなわち、相関の高い画素間を始点と終点とする動きベクトルを画素単位動きベクトルとするため、例えば、同様の形状が繰り返される画像や複雑な形状を持つ画像では、画素単位の動きベクトルが誤検出される恐れがある。この誤検出された画素単位動きベクトルがフィールド間補間に使用されると、補間により生成された画素からなる画像に、空間的、または、時間的な不連続性が生じる恐れがあり、結果として、画質の劣化を招く恐れがある。
そこで、注目ブロックと近傍ブロックの複数のブロック単位動きベクトルを画素単位の動きベクトルの候補として、いずれかを選択する際、動きベクトルに対応したフィールド間補間に使用される画素間の差分のみならず、その他の付加情報における選択条件を付加することにより正確に画素単位動きベクトルを選択できるようにしても良い。
図16は、注目ブロックと近傍ブロックの複数のブロック単位動きベクトルを画素単位の動きベクトルの候補として、いずれかを選択する際、動きベクトルに対応したフィールド間補間に使用される画素間の差分のみならず、その他の付加情報における選択条件を付加することにより、より正確に画素単位動きベクトルを選択できるようにした画素単位動きベクトル検出部21の構成を示している。尚、図3の画素単位動きベクトル検出部21と対応する構成については、同一の符号を付してあり、その説明は適宜省略するものとする。
図16の画素単位動きベクトル検出部21において、図3の画素単位動きベクトル検出部21と異なるのは、現フィールド付加情報検出部51、現フィールド付加情報用バッファ52、前遅延フィールド付加情報検出部53、および、前遅延フィールド付加情報用バッファ54が新たに加えられており、さらに、動き補償部36および条件判定部37に代えて動き補償部55および条件判定部56を設けている点である。
現フィールド付加情報検出部51は、現フィールドデータを取得し、所定の手順に従って付加情報として、画素単位の2次元のエッジの存在する方向を示すコードを計算する。なお、現フィールド付加情報検出部51は、図16で示されているように、現フィールドデータをそのまま使用して画素単位の2次元のエッジの存在する方向を示すコードを計算するようにしてもよいが、現フィールドデータ用前処理部32により前処理がなされた現フィールドデータを使用して画素単位の2次元のエッジの存在する方向を示すコードを計算するようにしてもよい。
現フィールド付加情報用バッファ52は、現フィールド付加情報検出部51より供給された付加情報を取得し、格納する。現フィールド付加情報用バッファ52は、動き補償部55からの要求に応じて、データをを動き補償部55に供給する。
前遅延フィールド付加情報検出部53は、前遅延フィールドデータを取得し、所定の手順に従って付加情報として、画素単位の2次元のエッジの存在する方向を示すコードを計算する。なお、前遅延フィールド付加情報検出部53は、図16で示されているように、前遅延フィールドデータをそのまま使用して画素単位の2次元のエッジの存在する方向を示すコードを計算するようにしてもよいが、前遅延フィールドデータ用前処理部34により前処理がなされた前遅延フィールドデータを使用して画素単位の2次元のエッジの存在する方向を示すコードを計算するようにしてもよい。
前遅延フィールド付加情報用バッファ54は、前遅延フィールド付加情報検出部53より供給された付加情報を取得し、格納する。前遅延フィールド付加情報用バッファ54は、動き補償部55からの要求に応じて、データをを動き補償部55に供給する。
動き補償部55は、基本的には動き補償部36と同様に動き補償処理を実行するものであるが、差分データとブロック単位動きベクトルを条件判定部56に供給するのみならず、現フィールド付加用バッファ52、および、前遅延フィールド付加用バッファ54より取得した付加情報に基づいて、複数の候補となるブロック単位動きベクトル毎にフィールド間補間に使用される画素間の付加情報を比較し、比較結果を条件判定部56に出力する。
条件判定部56は、条件判定処理を実行し、上述した差分データに加えて比較結果を考慮して、差分データが小さく、かつ、比較結果が一致する動きベクトルを識別する選択信号と、比較した差分データに対応する動きベクトルを画素ベクトル選択部38に供給する。
次に、図17のフローチャートを参照して、図21の画素単位動きベクトル検出部21を備えた画像処理装置20による画像処理について説明する。尚、図17のステップS71,S75,S76の処理は、図4のフローチャートを参照して説明したステップS1,S4,S5の処理と同様であるので、その説明は省略する。
ステップS72において、現フィールド付加情報検出部51、および、前遅延フィールド付加情報検出部53は、それぞれ付加情報検出処理を実行し、現フィールドデータと前遅延フィールドデータのそれぞれについて、画素単位エッジの存在する方向を示すコードを計算し、現フィールド付加情報バッファ52および前遅延フィールド付加情報バッファ54に格納させる。
ここで、図18のフローチャートを参照して、現フィールド付加情報検出部51による付加情報検出処理を説明する。
ステップS81において、現フィールド付加情報検出部51は、現フィールド上の各画素について、水平エッジの有無を示すコードである水平エッジコードEHを計算する。すなわち、例えば、図19で示されるように、注目画素が画素D(x,y)であった場合、現フィールド付加情報検出部51は、図中の注目画素の左側に隣接する画素D(x−1,y)との画素値の差分(D(x,y)−D(x−1,y))を水平エッジコードEHとして演算する。
ステップS82において、現フィールド付加情報検出部51は、現フィールドの各画素について、垂直エッジの有無を示すコードである垂直エッジコードEVを計算する。すなわち、例えば、図19で示されるように、注目画素が画素D(x,y)であった場合、現フィールド付加情報検出部51は、図中の注目画素の上側に隣接する画素D(x,y−1)との画素値の差分(D(x,y)−D(x,y−1))を垂直エッジコードEVとして計算する。尚、図19においては、水平方向の座標は、右に向かって上昇し、垂直方向の座標は、下に向かった上昇するものとする。
ステップS83において、現フィールド付加情報検出部51は、現フィールドの各画素について、所定のテーブルに基づいて、水平エッジコードEHと垂直エッジコードEVとのそれぞれの値が、正の値であるか、0であるか、または、負の値であるかに基づいて、エッジの方向を示すコードを決定し、決定したエッジの方向のコードを画素位置の情報に対応付けて現フィールド付加情報バッファ52に格納させる。
すなわち、エッジの方向のコードを決定するテーブルは、例えば、図20で示されるようなテーブルであり、水平エッジコードEHと垂直エッジコードEVが正の値、負の値、または0のいずれであるかにより決定される。従って、図20で示されるテーブルを使用する場合、現フィールド付加情報検出部51は、水平エッジコードEHと垂直エッジコードEVとが、いずれも0である場合、エッジは存在しないものとみなし、コードを0とする。また、水平エッジコードEHと垂直エッジコードEVとが、いずれも負の値である場合、エッジは注目画素からみて左上方向の位置に存在するものとして、コードは1とされる。さらに、水平エッジコードEHが0であって、垂直エッジコードEVが負の値である場合、エッジは注目画素からみて上方向の位置に存在するものとして、コードは2とされる。また、水平エッジコードEHが正の値であって、垂直エッジコードEVが負の値である場合、エッジは注目画素からみて右上方向の位置に存在するものとして、コードは3とされる。さらに、水平エッジコードEHが正の値であって、垂直エッジコードEVが、0である場合、エッジは注目画素からみて右方向の位置に存在するものとして、コードは4とされる。また、水平エッジコードEHと垂直エッジコードEVとが、いずれも正の値である場合、エッジは注目画素からみて右下方向の位置に存在するものとして、コードは5とされる。さらに、水平エッジコードEHが0であって、垂直エッジコードEVが正の値である場合、エッジは注目画素からみて下方向の位置に存在するものとして、コードは6とされる。また、水平エッジコードEHが負の値であって、垂直エッジコードEVが、正の値である場合、エッジは注目画素からみて左下方向の位置に存在するものとして、コードは7とされる。さらに、水平エッジコードEHが負の値であって、垂直エッジコードEVが0である場合、エッジは注目画素からみて左方向の位置に存在するものとして、コードは8とされる。
以上の処理により、現フィールドデータ上の各画素について隣接する画素間との大小関係からエッジの存在する可能性を示す情報を、エッジの方向を示すコードとして各画素に付加することができる。尚、以上においては、現フィールド付加情報検出部51による付加情報検出処理について説明してきたが、前遅延フィールド付加情報検出部53においても、前遅延フィールドから同様の処理により付加情報が検出されることになるので、その処理の説明は省略する。
ここで、図17のフローチャートの説明に戻る。
ステップS72において、付加情報検出処理が実行されれた後、ステップS73において、動き補償部55は、動き補償処理を実行し、差分データおよび比較結果を条件判定部56に出力する。
ここで、図21のフローチャートを参照して、動き補償部55による動き補償処理について説明する。尚、図21のフローチャートにおいて、ステップS101乃至S103,S105,S107,S109,S111、および、ステップS113乃至S116の処理は、図5を参照して説明したステップS11乃至S21の処理と同様であるので、その説明は省略する。
ステップS104において、動き補償部55は、画素a_prと画素a_deのエッジ方向のコードを比較し、比較結果code_aを条件判定部56に出力する。より詳細には、動き補償部55は、画素a_prと画素a_deのエッジ方向のコードを比較し、一致した場合、比較結果code_a=1を、一致しない場合、比較結果code_a=0を条件判定部56に出力する。
ステップS106において、動き補償部55は、画素b_prと画素b_deのエッジ方向のコードを比較し、比較結果code_bを条件判定部56に出力する。より詳細には、動き補償部55は、画素b_prと画素b_deのエッジ方向のコードを比較し、一致した場合、比較結果code_b=1を、一致しない場合、比較結果code_b=0を条件判定部56に出力する。
ステップS108において、動き補償部55は、画素c_prと画素c_deのエッジ方向のコードを比較し、比較結果code_cを条件判定部56に出力する。より詳細には、動き補償部55は、画素c_prと画素c_deのエッジ方向のコードを比較し、一致した場合、比較結果code_c=1を、一致しない場合、比較結果code_c=0を条件判定部56に出力する。
ステップS110において、動き補償部55は、画素d_prと画素d_deのエッジ方向のコードを比較し、比較結果code_dを条件判定部56に出力する。より詳細には、動き補償部55は、画素d_prと画素d_deのエッジ方向のコードを比較し、一致した場合、比較結果code_d=1を、一致しない場合、比較結果code_d=0を条件判定部56に出力する。
ステップS112において、動き補償部55は、画素e_prと画素e_deのエッジ方向のコードを比較し、比較結果code_eを条件判定部56に出力する。より詳細には、動き補償部55は、画素e_prと画素e_deのエッジ方向のコードを比較し、一致した場合、比較結果code_e=1を、一致しない場合、比較結果code_e=0を条件判定部56に出力する。
以上の処理により、動き補償部55は、候補となる注目ブロックと近傍ブロックのブロック単位動きベクトル毎の差分データと共に、対応するブロック単位動きベクトル毎のフレーム間補間処理に使用する画素間のエッジの方向を示すコードの比較結果を条件判定部56に出力する。
ここで、図17のフローチャートの説明に戻る。
ステップS74において、条件判定部56は、条件判定処理を実行する。
ここで、図22のフローチャートを参照して、条件判定部56による条件判定処理について説明する。
ステップS131において、条件判定部56は、差分a_diff,b_diff,d_diff,e_diffを比較して、小さい順に並び替える。以降の説明においては、差分は、小さい順に差分a_diff,b_diff,d_diff,e_diffに並べら得ているものとして説明していくが、順序は、これに限るものではないことは言うまでもないことである。
ステップS132において、条件判定部56は、ステップS131の処理で並べられた差分a_diff,b_diff,d_diff,e_diffのうち、最も小さな差分を選択する。従って、今の場合、差分a_diffが選択されることになる。
ステップS133において、条件判定部56は、選択された差分が、注目ブロックに対して垂直方向に隣接するブロックの差分であるa_diffまたはe_diffであるか否かを判定する。今の場合、a_diffが選択されているので、a_diffであると判定され、ステップS134に進む。
ステップS134において、条件判定部56は、垂直方向の差分v_diffとしてa_diffまたはe_diffのいずれか選択されている値を設定し(v_diff=a_diffまたはe_diffに設定し)、垂直方向の近傍ブロックの代表となる動きベクトルvを、差分に対応して動きベクトルaまたはeに設定し(v=aまたはeに設定し)、比較結果code_vを差分に対応して、比較結果code_a、または、code_eのいずれかに設定する(code_v=code_aまたはcode_eに設定する)。今の場合、a_diffが選択されているので、垂直方向の差分v_diffは、a_diffとして選択され、垂直方向の近傍ブロックの代表となる動きベクトルvが動きベクトルaとされ、比較結果code_vは、code_eとされる。
一方、例えば、ステップS133において、差分a_diffまたは差分e_diffが選択されていないと判定された場合、条件判定部56は、ステップS135において、水平方向の差分h_diffとしてb_diffまたはd_diffのいずれか選択されている値を設定し(h_diff=b_diffまたはd_diffに設定し)、水平方向の近傍ブロックの代表となる動きベクトルhを、差分に対応して動きベクトルbまたはdに設定し(v=bまたはdに設定し)、比較結果code_hを差分に対応して、比較結果code_b、または、code_dのいずれかに設定する(code_h=code_bまたはcode_dに設定する)。
ステップS136において、条件判定部56は、c_diffが所定の閾値thよりも小さくて、かつ、比較結果code_cが1であるか否かを判定し、例えば、所定の閾値thよりも小さく、さらに、比較結果code_cが1である場合、ステップS137において、選択信号PSELとしてc_diffを採用したことを示すCと共に、ブロック単位動きベクトルcを画素ベクトル選択部38に供給する。すなわち、注目ブロックの差分c_diffが所定の閾値thよりも小さく、さらに、比較結果code_cが1(ブロック単位動きベクトルcが注目画素を通るときの、ブロック単位動きベクトルcの現フィールド上の交点の位置の画素と前遅延フィールド上の交点の位置における画素とのエッジの存在する方向が一致している)場合、注目ブロックのブロック単位動きベクトルcが選択されることになる。
ステップS137において、差分c_diffが閾値thよりも小さくないか、または、code_cが1ではないと判定された場合、ステップS138において、条件判定部56は、選択された差分が、差分h_diffであるか否かを判定し、今の場合、差分v_diff=a_diffであるので、差分h_diffではないと判定され、その処理は、ステップS142に進む。
ステップS142において、条件判定部56は、v_diffが所定の閾値thよりも小さいか否かを判定し、例えば、所定の閾値thよりも小さい場合、ステップS143において、code_vが1であるか否かを判定し、例えば、1であると判定されたとき、ステップS144において、選択信号PSELとしてv_diffを採用したことを示すVと共に、ブロック単位動きベクトルvを画素ベクトル選択部38に供給する。また、ステップS142において、v_diffが所定の閾値thよりも小さくない場合、その処理は、ステップS137に進む。
また、ステップS138において、h_diffであると判定された場合、ステップS139において、条件判定部56は、h_diffが所定の閾値thよりも小さいか否かを判定し、例えば、所定の閾値thよりも小さい場合、ステップS140において、code_hが1であるか否かを判定し、例えば、1であると判定したとき、ステップS141において、選択信号PSELとしてh_diffを採用したことを示すHと共に、ブロック単位動きベクトルhを画素ベクトル選択部38に供給する。また、ステップS139において、h_diffが所定の閾値thよりも小さくない場合、その処理は、ステップS137に進む。
ステップS140、または、ステップS143において、それぞれcode_hが1ではない、または、code_vが1ではないと判定された場合、ステップS145において、条件判定部56は、ブロック単位動きベクトルの候補が2以上残されているか否かを判定する。今の場合、差分a_diff,b_diff,d_diff,e_diffに対応するブロック単位動きベクトルa,b,d,eの4個が残されているので、2以上残されていると判定され、その処理は、ステップS146に進む。
ステップS146において、条件判定部56は、今現在差分diffが最も小さい動きベクトルを候補から削除し、その処理は、ステップS132に戻る。すなわち、今の場合、差分a_diffが最も小さいので、対応する動きベクトルaが候補から削除されることになる。
さらに、ステップS132においては、候補から動きベクトルaが削除されているので、差分a_diffの次に小さい差分b_diffを選択して、それ以降の処理を繰り返す。そして、ステップS132乃至S136,S138乃至S140、S142,S143,S145、S146の順に処理がなされると、候補となっている動きベクトルbが削除され、ステップS132において、差分d_diffが選択されて、それ以降の処理が繰り返される。
そして、さらに、ステップS132乃至S136,S138乃至S140、S142,S143,S145の順に処理がなされると、ステップS145において、候補が2以上ではなくなるので、その処理は、ステップS137に進む。
すなわち、注目ブロックの差分c_diffが所定の閾値thよりも小さく、比較結果code_cが1である場合、条件判定部56は、選択信号PSEL=Cを出力する。また、注目ブロックの差分c_diffが所定の閾値thよりも小さく、比較結果code_cが1ではない場合、条件判定部56は、差分a_diff,b_diff,d_diff,e_diffのうち、比較結果が1であるもので最も小さいものに対応する選択信号PSEL=HまたはVを出力する。さらに、注目ブロックの差分c_diffが所定の閾値thよりも小さく、比較結果code_cが1ではない場合であって、その他の候補の比較結果が全て1ではないとき、条件判定部56は、選択信号PSEL=Cを出力する。
結果として、画素単位動きベクトルの候補となるブロック単位動きベクトルが注目画素を通るときの現フィールド上の交点の位置の画素と前遅延フィールド上の交点の位置の画素との画素間差分のみならず、それぞれの画素のエッジの存在する方向が一致するか否かの要素も考慮して、注目ブロックとその近傍ブロックのブロック単位動きベクトルの候補から最適なブロック単位動きベクトルが画素単位動きベクトルとして選択されることになるので、細かい図形や繰り返しの形状などを含む画像であっても、正確に画素単位の動きベクトルを決定することが可能となる。
ところで、以上においては、画素単位動きベクトルの候補となるブロック単位動きベクトルが注目画素を通るときの現フィールド上の交点の位置の画素と前遅延フィールド上の交点の位置の画素との画素間差分のみならず、それぞれの画素のエッジの存在する方向が一致するか否かを考慮して、注目ブロックおよび複数の近傍ブロックのブロック単位動きベクトルから最適な画素単位動きベクトルを選択する例について説明してきたが、以上の方法では、画素単位動きベクトルとして選択できる動きベクトルに限りがあり、解像度変換やインタレース画像からプログレッシブ画像への変換といった画像処理においては不自然な画素が生成される可能性を小さくすることができるが、例えば、フィールド周波数変換やコマ数変換といったもともと存在しないフィールドを生成するような画像生成の場合、動きベクトルの精度が生成される画像に直接反映されることになり、一部で動きベクトルが正確に検出できないといった事態が発生すると正確にフィールドを生成することができなくなる恐れがある。
そこで、注目画素の周辺の候補となる動きベクトルを注目画素からの距離に応じて、平滑化して、周辺画像との相関を生かして、画素単位の動きベクトルを求めるようにしても良い。
図23は、注目画素の周辺の候補となる動きベクトルを注目画素からの距離に応じて、平滑化して、周辺画像との相関を生かした画素生成をすることにより、画素単位の動きベクトルを求めるようにした画素単位動きベクトル検出部21の構成を示している。尚、図23の画素単位動きベクトル検出部21において、図3または図16の画素単位動きベクトル検出部21と対応する構成については、同一の符号を付しており、その説明は適宜省略するものとする。
図23の画素単位動きベクトル検出部21は、ブロック単位動きベクトル用メモリ31と動きベクトル平滑化部71から構成されている。
動きベクトル平滑化部71は、注目ブロックと近傍ブロックの各ブロック単位動きベクトルを、各ブロックの中心位置(基準となる位置であればよく、必ずしも中心である必要はないが、ここでは、中心位置を基準位置とする)を起点とするベクトルとみなし、生成フィールド上の各画素について、近傍ブロックのブロック単位動きベクトルの起点位置からの距離に応じて係数を掛けた線形和をとることにより、注目画素近傍の動きブロックを平滑化し、画素単位動きベクトルを生成し、画像合成部22に出力する。
次に、図24のフローチャートを参照して、図23の画素単位動きベクトル検出部21を備えた画像処理装置20による画像処理について説明する。尚、図24のフローチャートにおけるステップS151,S153の処理は、図4のフローチャートにおけるステップS1,S5の処理と同様であるので、その説明は省略する。また、説明の便宜上、注目ブロックと近傍ブロックは、図25で示されるように設定するものとする。すなわち、注目ブロックをブロックEとして、近傍ブロックをブロックA乃至D,F乃至Iとし、それぞれのブロック単位動きベクトルをa乃至iで示すものとする。
ステップS152において、動きベクトル平滑化部71は、ブロック単位動きベクトル用メモリ31に格納されている動きベクトルを読み出し、動きベクトル平滑化処理を実行する。
ここで、図26のフローチャートを参照して、動きベクトル平滑化部71による動きベクトル平滑化処理について説明する。
ステップS161において、動きベクトル平滑化部71は、各画素の画素単位動きベクトルが求められていないブロックを注目ブロックとして、その近傍ブロックであるブロックA乃至Iに対応するブロック単位動きベクトルa乃至iをブロック単位動きベクトル用メモリ31より読み出す。たとえば、注目ブロックと近傍ブロックが、図27で示されるように、3ブロック×3ブロックであるものとし、各ブロックのサイズがstep_x×step_yであるものとする。また、図中の注目ブロックであるブロックEの左上の位置が原点となり、x方向は、水平右側方向とし、y方向は垂直下方向であるものとする。また、図27において、各ブロックの中央部の黒丸は、各ブロックの中心位置を示している。また、この処理では、注目ブロック内の各画素の画素単位動きベクトルを求める処理を説明する。
ステップS162において、動きベクトル平滑化部71は、図示せぬカウンタyを初期化する。ステップS163において、動きベクトル平滑化部71は、図示せぬカウンタxを初期化する。
ステップS164において、動きベクトル平滑化部71は、カウンタyがy<step_y/2であるかであるか否かを判定し、例えば、カウンタyがy<step_y/2であると判定した場合、すなわち、注目画素(x,y)が、注目ブロックの垂直方向の中央よりも上側に存在する場合、ステップS165において、以下の式(1)を演算する。
vv0=b×(step_y/2−y)+e×(step_y/2+y)
・・・(1)
ここで、b,eは、ブロック単位動きベクトルb,eである。すなわち、式(1)においては、注目画素とブロックB,Eの中心位置までのそれぞれの垂直方向の距離に応じた重み係数を用いてブロック単位動きベクトルb,eの線形和vv0を求めている。
ステップS166において、動きベクトル平滑化部71は、カウンタxがx<step_x/2であるかであるか否かを判定し、例えば、カウンタxがx<step_x/2であると判定した場合、すなわち、注目画素が、注目ブロックの水平方向の中央よりも左側に存在する場合、ステップS167において、以下の式(2)を演算する。
vv1=a×(step_y/2−y)+d×(step_y/2+y)
・・・(2)
ここで、a,dは、ブロック単位動きベクトルa,dである。すなわち、式(2)においては、注目画素とブロックA,Dの中心位置までのそれぞれの垂直方向の距離に応じた重み係数を用いてブロック単位動きベクトルa,dの線形和vv1を求めている。
ステップS168において、動きベクトル平滑化部71は、以下の式(3)を演算する。
pv(x,y)=vv1×(step_x/2−x)+vv0×(step_x/2+x)
・・・(3)
すなわち、式(3)においては、注目画素とブロックE,Dの中心位置までのそれぞれの水平方向の距離(=ブロックA,Bの中心位置までのそれぞれの水平方向の距離)に応じた重み係数を用いてブロック単位動きベクトルvv0,vv1の線形和を注目画素の画素単位動きベクトルpv(x,y)として求めており、ここでは、水平方向の距離(=ブロックA,Bの中心位置までのそれぞれの水平方向の距離)に応じた重み係数を用いて、ブロック単位動きベクトルb,eの線形和vv0とブロック単位動きベクトルa,dの線形和vv1との線形和を求めている。
従って、ステップS165,S167,S168により、注目画素が注目ブロックの左上の領域に存在する場合、各画素の画素単位の動きベクトルは、ブロックA,B,D,Eのそれぞれの中心位置からの距離に応じた重み係数によるベクトルa,b,d,eの線形和として求められる。
ステップS164において、カウンタyが、y<step_y/2ではないと判定された場合、すなわち、注目画素が、注目ブロックの垂直方向の中央よりも下側に存在する場合、ステップS171において、以下の式(4)を演算する。
vv0=e×(step_y×3/2−y)+h×(step_y/2+y)
・・・(4)
ここで、e,hは、ブロック単位動きベクトルe,hである。すなわち、式(4)においては、注目画素とブロックE,Hの中心位置までのそれぞれの垂直方向の距離に応じた重み係数を用いてブロック単位動きベクトルe,hの線形和vv0を求めている。
ステップS172において、動きベクトル平滑化部71は、カウンタxがx<step_x/2であるかであるか否かを判定し、例えば、カウンタxがx<step_x/2であると判定した場合、すなわち、注目画素が、注目ブロックの水平方向の中央よりも左側に存在する場合、ステップS173において、以下の式(5)を演算し、その処理は、ステップS168に進む。
vv1=d×(step_y×3/2−y)+g×(step_y/2+y)
・・・(5)
ここで、d,gは、ブロック単位動きベクトルd,gである。すなわち、式(5)においては、注目画素とブロックD,Gの中心位置までのそれぞれの垂直方向の距離に応じた重み係数を用いてブロック単位動きベクトルd,gの線形和vv1を求めている。
従って、ステップS171,S173,S168により、注目画素が注目ブロックの左下の領域に存在する場合、各画素の画素単位の動きベクトルは、ブロックD,E,G,Hのそれぞれの中心位置からの距離に応じた重み係数によるベクトルd,e,g,hの線形和として求められる。
ステップS166において、例えば、カウンタxがx<step_x/2ではないと判定された場合、すなわち、注目画素が、注目ブロックの水平方向の中央よりも右側に存在する場合、ステップS176において、以下の式(6)を演算する。
vv1=c×(step_y/2−y)+f×(step_y/2+y)
・・・(6)
ここで、c,fは、ブロック単位動きベクトルc,fである。すなわち、式(6)においては、注目画素とブロックC,Fの中心位置までのそれぞれの垂直方向の距離に応じた重み係数を用いてブロック単位動きベクトルc,fの線形和vv1を求めている。
ステップS175において、動きベクトル平滑化部71は、以下の式(7)を演算する。
pv(x,y)=vv0×(step_x×3/2−x)+vv1×(step_x/2+x)
・・・(7)
すなわち、式(7)においては、注目画素とブロックB,Cの中心位置までのそれぞれの水平方向の距離(=ブロックE,Fの中心位置までのそれぞれの水平方向の距離)に応じた重み係数を用いてブロック単位動きベクトルvv0,vv1の線形和を注目画素の画素単位動きベクトルpv(x,y)として求めている。
従って、ステップS165,S176,S175により、注目画素が注目ブロックの右上の領域に存在する場合、各画素の画素単位の動きベクトルは、ブロックB,C,E,Fのそれぞれの中心位置からの距離に応じた重み係数によるベクトルb,c,e,fの線形和として求められる。
ステップS172において、例えば、カウンタxがx<step_x/2ではないと判定した場合、すなわち、注目画素が、注目ブロックの水平方向の中央よりも右側に存在する場合、ステップS174において、以下の式(8)を演算し、その処理は、ステップS175に進む。
vv1=f×(step_y×3/2−y)+i×(step_y/2+y)
・・・(8)
ここで、f,iは、ブロック単位動きベクトルf,iである。すなわち、式(8)においては、注目画素とブロックF,Iの中心位置までのそれぞれの垂直方向の距離に応じた重み係数を用いてブロック単位動きベクトルf,iの線形和vv1を求めている。
従って、ステップS171,S174,S175により、注目画素が注目ブロックの右下の領域に存在する場合、各画素の画素単位の動きベクトルは、ブロックE,F,H,Iのそれぞれの中心位置からの距離に応じた重み係数によるベクトルe,f,h,iの線形和として求められる。
ステップS169において、カウンタxが、フィールド画像の水平方向の大きさであるxsizeであるか否かが判定され、カウンタxがxsizeではないと判定された場合、その処理は、ステップS170に進み、動きベクトル平滑化部71は、カウンタxを1インクリメントし、その処理は、ステップS164に戻る。
ステップS169において、カウンタxがxsizeであると判定された場合、すなわち、注目ブロックの水平方向の1ラインの各画素の画素単位動きベクトルが求められたと判定された場合、ステップS177において、動きベクトル平滑化部71は、カウンタyがフィールド画像の垂直方向の大きさであるysizeであるか否かを判定し、例えば、カウンタyがysizeではないと判定した場合、ステップS178において、カウンタyを1インクリメントし、その処理は、ステップS163に戻る。
ステップS177において、カウンタyが、ysizeであると判定された場合、すなわち、そのブロックの全ての画素について画素単位動きベクトルが求められたと判定された場合、ステップS179において、動きベクトル平滑化部71は、全てのブロックについて、画素単位動きベクトルが求められたか否かを判定し、全てのブロックについて処理が終わっていないと判定された場合、その処理は、ステップS161に戻り、それ以降の処理が繰り返され、ステップS177において、全てのブロックについて処理が終了していると判定された場合、その処理は、終了する。
以上の処理によれば、各画素について注目ブロックの右上の領域の画素の画素単位動きベクトルは、注目ブロック、および、注目ブロックの上、右上、および右に隣接するブロックのそれぞれの中心位置との距離に応じた係数を乗じた線形和を求めることにより、平滑化して求められ、各画素のついて注目ブロックの右下の領域の画素の画素単位動きベクトルは、注目ブロック、および、注目ブロックの下、右下、および右に隣接するブロックのそれぞれの中心位置との距離に応じた係数を乗じた線形和を求めることにより、平滑化して求められ、各画素のついて注目ブロックの左上の領域の画素の画素単位動きベクトルは、注目ブロック、および、注目ブロックの上、左上、および左に隣接するブロックのそれぞれの中心位置との距離に応じた係数を乗じた線形和を求めることにより、平滑化して求められ、各画素のついて注目ブロックの左下の領域の画素の画素単位動きベクトルは、注目ブロック、および、注目ブロックの下、左下、および左に隣接するブロックのそれぞれの中心位置との距離に応じた係数を乗じた線形和を求めることにより、平滑化して求められる。
結果として、空間的に分布するブロック単位動きベクトルをその距離に応じて合成することで、画素単位の動きベクトルが生成されるので、計算コストを抑制しつつ、動きベクトルの検出エラーの少ない動きベクトルを画素単位で生成することが可能となる。
以上においては、1の画素単位の動きベクトルを生成するに当たり、4ブロック分のブロック単位動きベクトルを合成するようにしたが、それ以上の数のブロックのブロック単位動きベクトルを距離に応じて係数を乗じた線形和を求めるようにしても良い。
また、以上においては、同一フィールド内のブロック単位動きベクトルを合成していたが、注目ブロックの存在するフィールド以外のフィールドのブロック単位動きベクトルを使用するようにしてもよく、例えば、注目ブロックの存在するフィールドと2フィールド分前と後のフィールド上の同位置のブロックのブロック単位動きベクトルをフィールドの間隔に応じた係数を乗じた線形和として求めるようにしても良い。
さらに、図3や図16の画素単位動きベクトル検出部21の構成と、図23の画素単位動きベクトル21の構成を合成するようにして、例えば、図22のフローチャートのステップS145の処理により候補となるブロック単位動きベクトルがなくなり、画素単位の動きベクトルを絞り込めないような状態になったとき、その画素の動きベクトルについては、平滑化により求めるようにしても良い。
図28は、図16の画素単位動きベクトル検出部21の構成と図23の画素単位動きベクトル検出部21の構成を組み合わせた画素単位動きベクトル検出部21を示している。
基本的な構成は、図16の画素単位動きベクトル検出部21と同様であるが、動きベクトル平滑化部82が加えられており、それに対応して条件判定部56、画素ベクトル選択部57に代えて、条件判定部81、画素ベクトル選択部83が設けられている。条件選択部81は、条件選択部56と基本的に同様であるが、さらに、候補となるブロック単位動きベクトルがなくなり、画素単位の動きベクトルを絞り込めないような状態になったとき、その画素の動きベクトルについては、動きベクトル平滑化部82を動作させる。動きベクトル平滑化部82は、基本的に動きベクトル平滑化部71と同様のものである。画素ベクトル選択部83は、画素ベクトル選択部57と基本的に同様のものであるが、画素単位動きベクトルの選択に際して、動きベクトル平滑化部82により平滑化された動きベクトルを画素単位の動きベクトルとして選択することができる。
尚、図28の画素単位動きベクトル検出部21を備えた画像処理装置20の画像処理に付いては、基本的に図4のフローチャートの処理と同様であるが、条件判定処理、および、選択処理以外は、同様であるので、ここでは、図29乃至図31のフローチャートを参照して、図28の画素単位動きベクトル検出部21の条件判定処理および選択処理についてのみ説明する。また、図29のフローチャートにおけるステップS191乃至206は、図22のフローチャートにおけるステップS131乃至S146と同様であるので、その説明は省略する。
ステップS207において、動きベクトル平滑化部82は、条件判定部81からの指令に基づいて、動きベクトル平滑化処理を実行する。
ここで、図30で示されるフローチャートについては、動きベクトル平滑化部82による動きベクトル平滑化処理であるが、図30のフローチャートにおけるステップS221乃至S231の処理については、図26のフローチャートにおけるステップS161,S164乃至S175の処理と同様であるのでその説明は省略する。
次に、図31のフローチャートを参照して、図28の画素単位動きベクトル検出部21による選択処理について説明する。尚、図31のフローチャートにおけるステップS251乃至S254,S256の処理については、図12のフローチャートを参照して説明したステップS61乃至S65の処理と同様であるので、その説明は省略する。
ステップS255において、画素ベクトル選択部83は、選択信号PSELがVであるか否かを判定し、例えば、選択信号PSELがVであると判定した場合、その処理は、ステップS256に進む。また、ステップS255において、選択信号PSELがVではないと判定された場合、ステップS257において、画素ベクトル選択部83は、動きベクトル平滑化部82より供給される動きベクトルを画素単位の動きベクトルとする。
以上の処理により、候補となるブロック単位動きベクトルがなくなり、画素単位の動きベクトルを絞り込めないような状態になったとき、その画素の動きベクトルについては、平滑化により求められるようになるので、より安定した画素単位動きベクトルを求めることが可能となる。
以上においては、動きベクトルを正確に求めて、フィールド間補間による画素生成を正確に実現できるようにする手法について説明してきたが、動きベクトルの信頼性を向上させることで、生成される画像をより自然なものにすることを可能とするものであるが、例えば、検出された動きベクトルにより複数の補間方法で補間生成された画素をそれぞれ評価してエラー発生量を把握した後、補間方法を切替えるようにしても良い。
図32は、画像合成部22に代えて、画像合成部101を設けるようにした画像処理装置20の構成を示している。画像合成部22は、フィールド間補間により画像を生成していたが、画像合成部101は、フィールド間補間とフィールド内補間のいずれでも画素を補間生成することができ、それぞれの手法で生成された画素を評価して、エラー発生量を求め、エラー発生量に応じて、フィールド間補間とフィールド内補間を切替えて出力する。
図33は、画像合成部101の構成を示している。
空間補間部111は、遅延フィールドデータに基づいて、遅延フィールドの画像内に存在する画素を利用した、いわゆるフィールド内補間により画素を生成してエラー処理部113および画素生成部114に供給する。
時間補間部112は、画素単位動きベクトルに基づいて、現フィールドデータ、および、前遅延フィールドデータを利用した、いわゆる、フィールド間補間により新たな画素を生成しエラー処理部113および画素生成部114に供給する。
エラー処理部113は、入力される現フィールドデータ、遅延フィールドデータ、前遅延フィールドデータ、空間補間部111より供給されるフィールド内補間されたデータ、および、時間補間部112より供給されるフィールド間補間されたデータに基づいて、エラー発生量(エラーの発生量を定性的に求められる値であって、厳密にエラーが定義され、さらに、そのエラーが発生する量を求めるものではない)を求めて、画素生成部114に供給する。
画素生成部114は、エラー処理部113より供給されるエラー発生量の情報に基づいて、空間補間部111より供給されるフィールド内補間画素データと、時間補間部112より供給されるフィールド間補間画素データとを切替えて画素を生成し、出力する。
次に、図34を参照して、エラー処理部113の構成について説明する。
フィールド内補間時間遷移解析部131は、フィールド内補間画素からなるフィールド内補間画素と、現フィールドデータおよび前遅延フィールドデータに基づいて、フィールド内補間画素の時間に応じた画素値の変化を遷移として求め、混合部134に供給する。
フィールド間補間時間遷移解析部132は、フィールド間補間画素からなるフィールド間補間画素と、現フィールドデータおよび前遅延フィールドデータに基づいて、フィールド間補間画素の時間に応じた画素値の変化を遷移として求め、混合部134に供給する。
フィールド間補間空間遷移解析部133は、フィールド間補間画素からなるフィールド間補間画素と、遅延フィールドデータに基づいて、フィールド間補間画素の空間における画素値の変化を遷移として求め、混合部134に供給する。
混合部134は、フィールド内補間時間遷移解析部131、フィールド間補間時間遷移解析部132、および、フィールド間補間空間遷移解析部133より供給されるフィールド内補間時間遷移解析結果、フィールド間補間時間遷移解析結果、および、フィールド間補間空間遷移解析結果に基づいて、エラーの発生量を計算し、画素生成部114に供給する。
次に、図35のフローチャートを参照して、図32の画像処理装置20による画素処理について説明する。尚、図35のフローチャートのステップS301乃至S304の処理は、図4のフローチャートにおけるステップS1乃至S4と同様であるので、その説明は省略する。
ステップS305において、画像合成部101は、画像合成処理を実行する。
ここで、図36のフローチャートを参照して、画像合成部101による画像合成処理について説明する。
ステップS321において、空間補間部111は、入力された遅延フィールドデータを用いてフィールド内補間画像を生成する。すなわち、空間補間部111は、遅延フィールド上の注目画素を、同一フィールド内の既存の画素を用いてフィールド内補間して生成し、エラー処理部113、および、画素生成部114に供給する。
例えば、図37で示されるように、前遅延フィールド、遅延フィールド、および、現フィールド上に画素が配置されていた場合、空間補間部111は、遅延フィールド内の既存の画素である画素B,Dの中間位置に、注目画素として画素Psを生成し、このときの画素値を画素B,Dの平均画素値とする。
尚、図37においては、時間方向(図中のt軸)に向かって順に前遅延フィールド、遅延フィールド、および、現フィールドのそれぞれの垂直方向(Y方向)の画素の配置を示している。前遅延フィールド上には、図中上から画素Q,A,Lが配置され、遅延フィールド上には、図中上から画素B,Dが配置され、さらに、現フィールド上には図中上から画素M,C,Rが配置されており、前遅延フィールドと現フィールドは、同一位相のフィールドであるため、垂直方向の同位置に画素が配置されているが、遅延フィールドは、位相が異なるため、画素の配置が1ラインずれた配置となっている。尚、同様の図については、以降においても同様とする。
ステップS322において、時間補間部112は、供給された動きベクトルに基づいて、遅延フィールドの前後のフィールドである現フィールド上の画素と前遅延フィールド上の画素からフィールド間補間により遅延フィールド上の画素を生成し、エラー処理部113および画素生成部114に供給する。すなわち、時間補間部112は、例えば、動きベクトルが図37における画素Rを始点として画素Qを終点としたベクトルであった場合、遅延フィールド上の画素Ptを、前後のフィールドである現フィールド上の画素Qと前遅延フィールド上の画素Rの平均画素値として生成する。尚、図37において、画素Ps,Ptが同位置に示されているが、それぞれフィールド内補間画素とフィールド間補間画素であり、異なるものであるが同位置の画素であることを示している。
ステップS323において、エラー処理部113は、エラー検出処理を実行し、エラー発生量を計算し、計算したエラー発生量を画素生成部114に供給する。
ここで、図38のフローチャートを参照して、エラー処理部113によるエラー検出処理について説明する。
ステップS341において、エラー処理部113のフィールド間補間空間遷移解析部133は、フィールド間補間空間遷移解析処理を実行し、解析結果であるフィールド間空間遷移情報を混合部134に供給する。
ここで、図39のフローチャートを参照して、フィールド間補間空間遷移解析部133によるフィールド間補間空間遷移解析処理について説明する。
ステップS361において、フィールド間補間空間遷移解析部133は、空間補間部112より供給された遅延フィールド上のフィールド間補間画素と、遅延フィールド上の空間的に上の画素間の画素値の差分を上り遷移として求める。すなわち、図40で示されるようにフィールド間補間画素である画素Psが遅延フィールド上に存在していた場合、フィールド間補間空間遷移解析部133は、その空間的に上に存在する画素Bとの画素値の差分を上り遷移(Pt−B)として求める。
ステップS362において、フィールド間補間空間遷移解析部133は、空間補間部111より供給された遅延フィールド上のフィールド間補間画素と、遅延フィールド上の空間的に下の画素間の画素値の差分を下り遷移として求める。すなわち、図40で示されるようにフィールド間補間画素である画素Psが遅延フィールド上に存在していた場合、フィールド間補間空間遷移解析部133は、その空間的に下に存在する画素Dとの画素値の差分を下り遷移(D−Pt)として求める。
ステップS363において、フィールド間補間空間遷移解析部133は、上り遷移と下り遷移との積を求める。すなわち、図40の場合、フィールド間補間空間遷移解析部133は、上り遷移と下り遷移との積として(D−Pt)×(Pt−B)を求め、混合部134に出力する。
ステップS364において、フィールド間補間空間遷移解析部133は、上り遷移と下り遷移のそれぞれの絶対値の和を求め混合部134に出力する。すなわち、図40の場合、フィールド間補間空間遷移解析部133は、以下の式(9)で示されるフィールド間補間空間遷移解析結果を混合部134に出力する。
フィールド間補間空間遷移解析結果=|D−Pt|+|Pt−B|
・・・(9)
フィールド間補間空間遷移解析部133は、フィールド間補間空間遷移解析結果として、上り遷移と下り遷移のそれぞれの絶対値の和を混合部134に出力すると共に、上り遷移と下り遷移との積も出力する。
すなわち、例えば、図41で示されるように遅延フィールド上の画素B,Dの画素値とフィールド間補間生成された画素Ptの画素値の変化が単調増加、または、単調減少していないような場合、不自然な画素が生成されている可能性が高いものと考えることができる。従って、上り遷移と下り遷移との積として(D−Pt)×(Pt−B)が負の値である場合、生成された画素間が不自然である可能性があるものと予想される。また、上り遷移と下り遷移のそれぞれの絶対値の和が大きくなると、より不自然な画素が生成されている可能性が高いものと考えることができる。尚、図41においては、縦軸が画素の空間方向の位置を示し、横軸が画素値を示している。
ここで、図38のフローチャートの説明に戻る。
ステップS342において、フィールド間補間時間遷移解析部132は、フィールド間補間時間遷移解析処理を実行し、フィールド間補間時間遷移解析結果を混合部134に出力する。
ここで、図42のフローチャートを参照して、フィールド間補間時間遷移解析部132によるフィールド間補間時間遷移解析処理について説明する。
ステップS381において、フィールド間補間時間遷移解析部132は、フィールド間前遷移を求める。すなわち、例えば、図43で示されるように注目画素としてフィールド間補間生成された遅延フィールド上の画素Ptと、時間的に前の前遅延フィールド上の同位置の画素Aとの画素値の差分をフィールド間前遷移(A−Pt)として求める。尚、図43においては、フィールド間補間生成された画素Ptとフィールド内補間生成された画素Psが、それぞれ異なる位置に表示されているが、説明の都合上分けて表示しているのみであって、実際には、画素Pt,Psは、いずれも遅延フィールド上の画素B,Dの中央位置に生成されている。
ステップS382において、フィールド間補間時間遷移解析部132は、フィールド間後遷移を求める。すなわち、例えば、図43で示されるように注目画素としてフィールド間補間生成された遅延フィールド上の画素Ptと、時間的に後の現フィールド上の同位置の画素Cとの画素値の差分をフィールド間後遷移(Pt−C)として求める。
ステップS383において、フィールド間補間時間遷移解析部132は、フィールド間前遷移とフィールド間後遷移のそれぞれの絶対値の和を求め、フィールド間補間時間遷移解析結果として混合部134に供給する。
すなわち、フィールド間補間時間遷移解析部132は、図43の場合、フィールド間前遷移の絶対値とフィールド間後遷移の絶対値との和として以下の式(10)で示されるフィールド間補間時間遷移解析結果を求めて混合部134に供給する。
フィールド間補間時間遷移解析結果=|A−Pt|+|Pt−C|
・・・(10)
また、例えば、図44で示されるように前遅延フィールド上の画素A、遅延フィールド上の画素Pt、および、現フィールド上の画素Cの画素値の時間方向の変化が単調増加、または、単調減少していないような場合、不自然な画素が生成されている可能性が高いものと考えることができる。従って、フィールド間前遷移とフィールド間後遷移との積として(A−Pt)×(Pt−C)が負の値である場合、生成された画素間が不自然である可能性があるものと予想される。また、フィールド間前遷移とフィールド間後遷移のそれぞれの絶対値の和が大きくなると、より不自然な画素が生成されている可能性が高いものと考えることができる。尚、図44においては、縦軸が画素値を示し、横軸が時間方向の位置を示している。
ここで、図38のフローチャートの説明に戻る。
ステップS343において、フィールド内補間時間遷移解析部131は、フィールド内補間時間遷移解析処理を実行し、フィールド内補間時間遷移解析結果を混合部134に出力する。
ここで、図45のフローチャートを参照して、フィールド内補間時間遷移解析部131によるフィールド内補間時間遷移解析処理について説明する。
ステップS401において、フィールド内補間時間遷移解析部131は、フィールド内前遷移を求める。すなわち、例えば、図43で示されるように注目画素としてフィールド内補間生成された遅延フィールド上の画素Psと、時間的に前の前遅延フィールド上の同位置の画素Aとの画素値の差分をフィールド間前遷移(A−Ps)として求める。
ステップS402において、フィールド内補間時間遷移解析部131は、フィールド内後遷移を求める。すなわち、例えば、図43で示されるように注目画素としてフィールド内補間生成された遅延フィールド上の画素Psと、時間的に後の現フィールド上の同位置の画素Cとの画素値の差分をフィールド内後遷移(Ps−C)として求める。
ステップS403において、フィールド内補間時間遷移解析部131は、フィールド内前遷移とフィールド内後遷移のそれぞれの絶対値の和を求め、フィールド内補間時間遷移解析結果として混合部134に供給する。
すなわち、フィールド内補間時間遷移解析部131は、図43の場合、フィールド内前遷移の絶対値とフィールド内後遷移の絶対値との和として以下の式(11)を求めて、フィールド内補間時間遷移解析結果として混合部134に供給する。
フィールド内補間時間遷移解析結果=|A−Ps|+|Ps−C|
・・・(11)
また、例えば、図46で示されるように前遅延フィールド上の画素A、遅延フィールド上の画素Pt、および、現フィールド上の画素Cの画素値の時間方向の変化が単調増加、または、単調減少しているような場合、画素値の変化が少なく時間的に自然な画素が生成されている可能性が高いものと考えることができる。従って、フィールド内前遷移とフィールド内後遷移との積として(A−Ps)×(Ps−C)が正の値である場合、生成された画素間が自然である可能性があるものと予想される。また、フィールド内前遷移とフィールド内後遷移のそれぞれの絶対値の和が大きくなると、より不自然な画素が生成されている可能性が高いものと考えることができる。尚、図46においては、縦軸が画素値を示し、横軸が時間方向の位置を示している。
ここで、図38のフローチャートの説明に戻る。
ステップS344において、混合部134は、供給されたフィールド内補間時間遷移解析結果、フィールド間補間時間遷移解析結果、および、フィールド間補間空間遷移解析結果に基づいて、以下の式(12)を演算することにより、エラー発生量を求める。
エラー発生量
=K×((フィールド間補間時間遷移解析結果)×(フィールド間補間空間遷移解析結果))
/(フィールド内補間時間遷移解析結果)
・・・(12)
ここで、Kは、定数であり、エラーの発生量を変化させる値が設定され、例えば、動きベクトルの信頼度などが設定される。
また、式(12)で示されるエラー発生量は、フィールド間補間画素における信頼度とフィールド内補間画素における信頼度の比率を示したものであり、エラーの程度を定性的に示すものであって、実際の画像処理に伴って発生するエラーの発生回数を示すものではない。しかしながら、この式(12)で示されるエラー発生量が大きくなればなる程、フィールド間補間画素の信頼度が低下し、エラー発生量が小さければ、フィールド間補間画素の信頼度が高まるともいえる。
従って、このエラー発生量に基づいて、フィールド間補間画素を使用するか、または、フィールド内補間画素を切替えて利用することで、生成される画像がより自然なものとなる。
ステップS345において、混合部134は、ステップS344の処理で求めたエラー発生量と共に、フィールド間補間空間遷移解析処理において求めた上り遷移と下り遷移の積の値を画素生成部114に出力する。
以上の処理により、フィールド間補間画素からなる画像とフィールド内補間画素からなる画像の補間により発生する画素単位のエラー発生量が求められる。
ここで、図36のフローチャートの説明に戻る。
ステップS324において、画素生成部114は、未処理画素について、フィールド間空間遷移解析部133より供給されたフィールド間空間遷移における上り遷移と下り遷移の積が正であるか否かを判定し、例えば、正であると判定した場合、ステップS325において、画素生成部114は、時間補間部112より供給されたフィールド間補間画像の画素を採用する。すなわち、フィールド間補間生成された画素の画素値が空間的に近傍に存在する画素の画素値に対して、単調増加、または、単調減少する関係となっていることから、空間的には自然な画素が生成されている可能性が高いので、フィールド間補間生成された画素をそのまま使用する。
ステップS324において、上り遷移と下り遷移の積が正ではないと判定された場合、ステップS326において、画素生成部114は、エラー発生量が閾値thよりも大きいか否かを判定し、例えば、エラー発生量が閾値thよりも大きいと判定された場合、その処理は、ステップS327に進む。
ステップS327において、画素生成部114は、空間補間部111より供給されるフィールド内補間画素を採用する。すなわち、エラー発生量が所定の閾値thよりも大きいと言うことは、フィールド間補間画素のエラー発生量が、フィールド内補間画素のエラー発生量よりも高い割合となることが示されることになるので、フィールド内補間画素が採用される。
ステップS326において、エラー発生量が所定の閾値thよりも大きくない場合、フィールド内補間画素のエラー発生量に対して、フィールド間補間画素によるエラー発生量が少ないことになるので、その処理は、ステップS325に進み、画素生成部114は、注目画素にフィール間補間画素を採用する。
ステップS328において、画素生成部114は、画素が生成されていない未処理の画素が存在するか否かを判定し、未処理の画素が存在すると判定された場合、その処理は
,ステップS324に戻り、それ以降の処理が繰り返される。そして、未処理の画素が存在しないと判定された場合、ステップS329において、画素生成部114は、生成した画素からなる画像を出力する。
生成される画素の時間的、または、空間的な関係に基づいてエラー発生量を求めることで、適応的に画素の補間方法を切替えることができるので、不自然な画素が生成されることが抑制され、例えば、図47で示されるような格子状の画像を、解像度変換により拡大すると、従来においては、図48で示されるように、フィールド間補間により生成された画素の画素値が不自然であるため、まだら上にエラーが発生した画素が表示される。
図49は、図48の画像の各画素について、フィールド間補間空間遷移結果のうち、所定の閾値を超えた(エラーの発生している)画素の分布を示している。尚、図49,図50においては、図中の斜線部分がエラーが生じている画素を示している。
また、図50は、図48の画像の各画素について、フィールド間補間時間遷移結果のうち、所定の閾値を超えた(エラーの発生している)画素の分布を示している。
従って、上述したエラー発生量は、図49,図50において、いずれもエラーを示している画素であるものについては、閾値thを超えたものと考えることができるので、図49,図50のいずれにおいても、閾値thが超えている画素であると見ることができるので、それらの画素をフィールド内補間により生成させることにより、例えば、図51で示されるように、斑状のエラーが抑制されていることが示されている。
尚、以上においては、エラー発生量に基づいて、フィールド内補間画素であるか、フィールド間補間画素であるかを切替える例について説明してきたが、例えば、エラー発生量に基づいて、フィールド内補間画素とフィールド間補間画素との比率を変えながら混合して画素を生成するようにしても良い。
また、フィールド間補間により画素を生成する際、以上においては、2のフィールドを用いるようにしているが、それ以上のフィールドを用いてフィールド間補間するようにしても良い。
以上によれば、フィールド間補間画素、または、フィールド内補間画素のそれぞれのエラー発生量を求めることが可能となり、さらに求められたエラー発生量に基づいて、画素の生成方法を(補間方法を)切替えて画素を生成することが可能となる、
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
図52は、図2、図32の画像処理装置20の電気的な内部構成をソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU501は、パーソナルコンピュータの全体の動作を制御する。また、CPU501は、バス504および入出力インタフェース505を介してユーザからキーボードやマウスなどからなる入力部506から指令が入力されると、それに対応してROM(Read Only Memory)502に格納されているプログラムを実行する。あるいはまた、CPU501は、ドライブ510に接続された磁気ディスク521、光ディスク522、光磁気ディスク523、または半導体メモリ524から読み出され、記憶部508にインストールされたプログラムを、RAM(Random Access Memory)503にロードして実行する。これにより、上述した図2、図32の画像処理装置20の機能が、ソフトウェアにより実現されている。さらに、CPU501は、通信部509を制御して、外部と通信し、データの授受を実行する。
プログラムが記録されている記録媒体は、図52に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク121(フレキシブルディスクを含む)、光ディスク522(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク523(MD(Mini-Disc)を含む)、もしくは半導体メモリ524などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM502や、記憶部508に含まれるハードディスクなどで構成される。
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
12 ブロック単位動きベクトル検出部, 21 画素単位動きベクトル検出部, 22 画像合成部, 31 ブロック単位動きベクトル用メモリ, 32 現フィールドデータ用前処理部, 33 現フィールドデータ用バッファ, 34 前遅延フィールドデータ用前処理部, 35 前遅延フィールドデータ用バッファ, 36 動き補償部, 37 条件判定部, 38 画素ベクトル選択部, 51 現フィールド付加情報検出部, 52 現フィールド付加情報用バッファ, 53 前遅延フィールド付加情報検出部, 54 前遅延フィールド付加情報用バッファ, 55 動き補償部, 56 条件判定部, 71 動きベクトル平滑化部, 81 条件判定部, 82 動きベクトル平滑化部, 38 画素ベクトル選択部, 101 画像合成部, 111 空間補間部, 112 時間補間部, 113 エラー処理部, 114 画素生成部, 131 フィールド内補間時間遷移解析部, 132 フィールド間補間時間遷移解析部, 133 フィールド内補間空間遷移解析部, 134 混合部