以下に、本発明の実施の形態について図面を参照して説明する。
[フレーム補間装置の構成について]
図3は、本発明を適用したフレーム補間装置の一実施の形態の構成を示す図である。図3に示したフレーム補間装置40は、フレームメモリ41、動きベクトル検出部42、補間フレーム作成部43、および、信号切替部44を含む構成とされている。
フレーム補間装置40は、テレビジョン受像機、パーソナルコンピュータ、携帯電話機など、画像を表示する装置に組み込まれ、その画像を構成する画像フレームから、画像フレームを補間する補間フレームを作成する装置である。フレーム補間装置40は、例えば、1秒間に含まれるフレーム数が60フレームの動画像を、120フレームの動画像に変換するとき、その増加するフレームの画像を生成する。フレーム補間装置40が、フレームを補間することにより、フレーム数が増すことになるので、画質を向上させることが可能となる。
フレームメモリ41は、画像フレーム毎に入力された画像信号を記憶する。ここでは、少なくとも2フレームが記憶される。動きベクトル検出部42は、フレームメモリ41に記憶された複数の画像フレームに基づいて、画像フレームを構成する画像ブロックの動きベクトルを検出する。動きベクトルの検出の方法については、いくつか提案されているが、本実施の形態においては、動きベクトルの検出の仕方には依存せずに、補間フレームを作成できるため、動きベクトルの検出の方法として、どのような方法を適用しても良い。
換言すれば、補間フレーム作成部43は、後述するような処理を行うことにより、補間フレームを生成するので、検出された動きベクトルが供給されることを前提としているため、動きベクトルがどのように検出されるかにより、補間フレーム作成部43の処理に影響があるわけではない。
補間フレーム作成部43は、フレームメモリ41に記憶されている画像フレームと、動きベクトル検出部42で検出された動きベクトルとから、補間フレームを生成する。信号切替部44は、フレームメモリ41が記憶する画像フレームと、補間フレーム作成部43が作成した補間フレームとを切り換えて、図示していない表示装置などに出力する。
[補間フレーム作成部の第1の実施の形態について]
図4は、補間フレーム作成部43の第1の実施の形態の構成を示す図である。図4に示した補間フレーム作成部43は、着目画素設定部51、画素値読み出し部52、画素値演算部53、記憶部54、平均値演算部55、および、動きベクトル設定部56を含む構成とされている。
着目画素設定部51は、過去フレームに含まれる画素のうち、処理対象とする画素を決定する。ここで、過去フレームとは、補間フレーム作成部43が作成する補間フレームを作成するときに参照されるフレームであり、補間フレームより前の時点で表示されるフレームである。また、補間フレームを作成するときに参照されるフレームであり、補間フレームより後の時点で表示されるフレームを、未来フレームと記述する。
また、動きベクトル検出部42は、過去フレームと未来フレームを参照して動きベクトルを検出する。例えば、動きベクトルを、所定の大きさのブロック毎に検出する場合、過去フレームは、動きベクトルの検出の基準となる画像フレームであり、画像ブロックに分割され、画像ブロック毎の動きベクトルが検出される画像フレームである。未来フレームは、動きベクトルの検出の対象となる画像フレームであり、過去フレームを構成する画像ブロックとのマッチングが行われる画像フレームである。
なお、以下の説明においては、動きベクトルは、画素毎に検出されるとして説明するが、以下の説明において画素との部分は、適宜、ブロックなどに置き換えることにより、ブロック毎に動きベクトルを検出するような場合でも本発明を適用できる。換言すれば、画素で処理を行うときを例にして説明するが、ブロックで処理を行うときには、画素との記載をブロックと読み替えることでブロックで処理を行うときにも本発明を適用することができる。また、ブロックは、複数の画素から構成され、以下の説明において、画素とは、ブロック中の画素との意味も含むとする。
着目画素設定部51は、過去フレームに含まれる画素のうち、処理対象とする画素を決定し、その決定された画素の位置に関する情報を、画素値読み出し部52と動きベクトル設定部56に出力する。着目画素設定部51は、例えば、過去フレームの左上から右下にかけて、順に着目画素を設定する。
動きベクトル設定部56は、着目画素に設定されている動きベクトルを設定するとともに、その設定された動きベクトルを、着目画素の前後に位置する画素まで移動し、その着目画素の前後に位置する画素を始点とする動きベクトルを設定する。すなわち、着目画素を中心とし、着目画素を含めた3画素から、それぞれの画素を始点とする、同じ動きベクトルが設定される。
なおここでは、着目画素を中心とし、着目画素を含めた3画素とするが、着目画素に対して右側または左側に位置する2画素と、着目画素の3画素でも良い。また、ここでは、3画素とするが、7画素など、他の画素数でも勿論良い。この画素(ブロック)数は、第3の実施の形態として説明するように、可変的に設定されるようにすることも可能である。
以下の説明においては、着目画素を第1の着目画素とし、着目画素の前の位置に位置する画素を第2の着目画素とし、着目画素の後の位置に位置する画素を第3の着目画素と記述する。また、第1の着目画素を始点とする動きベクトルを、第1の動きベクトルとし、第2の着目画素を始点とする動きベクトルを、第2の動きベクトルとし、第3の着目画素を始点とする動きベクトルを、第3の動きベクトルとする。さらに、第1の動きベクトルの終点に位置する画素を第1の終点画素とし、第2の動きベクトルの終点に位置する画素を第2の終点画素とし、第3の動きベクトルの終点に位置する画素を第3の終点画素とする。
画素値読み出し部52は、動きベクトル設定部56で設定された動きベクトルの始点と終点に位置する画素の画素値をフレームメモリ41(図3)に記憶されているフレームから読み出す。動きベクトルの始点となる画素は、過去フレームに含まれ、動きベクトルの終点となる画素は、未来フレームに含まれている。
すなわちこの場合、過去フレームから、第1の着目画素、第2の着目画素、および第3の着目画素の画素値が、それぞれ読み出され、未来フレームから、第1の終点画素、第2の終点画素、および第3の終点画素の画素値が、それぞれ読み出される。
画素値演算部53は、読み出された画素値から補間フレームの対応する位置の画素の画素値を算出する。例えば、第1の着目画素の画素値と第1の終点画素の画素値の平均値を、第1の着目画素から第1の終点画素に向かう第1の動きベクトルが、補間フレーム内で通過する位置の画素の画素値として設定する。記憶部54は、設定された画素値を、補間フレームを構成する画素値として一時記憶する。
このような処理が各部で行われると、記憶部54に記憶されている補間フレームを構成する1画素に注目したとき、複数の画素値が設定されていることがある。平均値演算部55は、複数の画素値が設定されている画素に対して、設定されている複数の画素値の平均値を算出し、その平均値を、補間フレームの画素値として、信号切替部44(図3)に出力する。
なお、平均値演算部55により演算された結果を、記憶する記憶部を、補間フレーム作成部43に設け、その記憶部から、信号切替部44に補間フレームが出力されるようにしても良い。また、その記憶部は、記憶部54と共用する構成としても良いし、記憶部54自体を、フレームメモリ41と共用するような構成とすることも可能である。
[第1の実施の形態における補間フレームの生成の仕方について]
次に、図4に示したような構成を有する補間フレーム作成部43において行われる補間フレームの生成について、図5乃至図9を参照して説明する。
図5は、過去フレームと未来フレームのそれぞれのフレームにおける画素と、動きベクトルとの関係を説明する図である。過去フレームにおいて、画素101−1、画素102−1、および画素103−1がそれぞれ隣り合う3画素として存在している。
過去フレームの画素101−1が、未来フレームの画素111−1に移動したとして検出されたために、動きベクトル151−1が検出される。同様に、過去フレームの画素101−2が、未来フレームの画素111−2に移動したとして検出されたために、動きベクトル151−2が検出される。同様に、過去フレームの画素101−3が、未来フレームの画素111−3に移動したとして検出されたために、動きベクトル151−3が検出される。
このように動きベクトルが検出されているとき、着目画素設定部51により、着目画素が、画素101−1と設定された場合、図6のように、補間フレームにおける画素値が算出される。
図6を参照するに、まず、画素101−1が第1の着目画素に設定される。この場合、動きベクトル151−1が、第1の動きベクトルとされ、画素111−1が第1の終点画素とされる。
画素101−1の前の画素101−2が第2の着目画素とされる。動きベクトル151−1が移動され、第2の着目画素である画素101−2を始点とする動きベクトル151−2が設定される。この動きベクトル151−2の終点は、画素111−2となる。画素111−2は、画素111−1より前に位置する画素である。また、画素111−2は、第2の終点画素とされる。
同様に、画素101−1の後の画素101−3が第3の着目画素とされる。動きベクトル151−1が移動され、第3の着目画素である画素101−3を始点とする動きベクトル151−3が設定される。この動きベクトル151−3の終点は、画素111−3となる。画素111−3は、画素111−1より後に位置する画素である。また、画素111−3は、第3の終点画素とされる。
着目画素設定部51は、第1の着目画素を画素101−1と設定し、第2の着目画素を画素101−2と設定し、第3の着目画素を画素101−3と設定する。動きベクトル設定部56は、着目画素設定部51により設定された画素毎に、動きベクトル151−1乃至151−3を、それぞれ設定する。
画素値読み出し部52は、まず、第1の着目画素である画素101−1の画素値と第1の終点画素である画素111−1の画素値をフレームメモリ41から読み出し、画素値演算部53に供給する。画素値演算部53は、画素101−1の画素値と画素111−1を加算し、2で除算する。すなわち、画素値演算部53は、画素101−1の画素値と画素111−1の平均値を算出する。算出された画素値は、画素121−1の画素値として設定される。
このようにして、第1の着目画素と第1の終点画素を結ぶ動きベクトル151−1上に位置し、補間フレーム上に位置する画素121−1が設定され、その画素値が算出される。算出された画素値は、記憶部54に記憶される。
同様に、画素値読み出し部52は、第2の着目画素である画素101−2の画素値と第2の終点画素である画素111−2の画素値をフレームメモリ41から読み出し、画素値演算部53に供給する。画素値演算部53は、画素101−2の画素値と画素111−2を加算し、2で除算することにより、画素101−1の画素値と画素111−1の平均値を算出する。算出された平均値は、画素121−2の画素値として設定される。
このようにして、第2の着目画素と第2の終点画素を結ぶ動きベクトル151−2上に位置し、補間フレーム上に位置する画素121−2が設定され、その画素値が算出される。算出された画素値は、記憶部54に記憶される。
さらに、画素値読み出し部52は、第3の着目画素である画素101−3の画素値と第3の終点画素である画素111−3の画素値をフレームメモリ41から読み出し、画素値演算部53に供給する。画素値演算部53は、画素101−3の画素値と画素111−3を加算し、2で除算することにより、画素101−3の画素値と画素111−3の平均値を算出する。算出された平均値は、画素121−3の画素値として設定される。
このようにして、第3の着目画素と第3の終点画素を結ぶ動きベクトル151−3上に位置し、補間フレーム上に位置する画素121−3が設定され、その画素値が算出される。算出された画素値は、記憶部54に記憶される。
このように、1つの着目画素、この場合、画素101−1に着目した場合、補間フレーム上には、3つの画素、この場合、画素121−1、画素121−2、および画素121−3が設定され、その画素値が生成される。
第1の着目画素とした画素101−1に対する処理がこのようにして行われると、次に、第1の着目画素を画素102−1(図5)に設定した処理が行われる。すなわち、1つの着目画素に対する処理が終了されると、隣に位置する画素が新たな着目画素に設定され、同じ処理が実行される。
第1の着目画素が画素102−1に設定された場合、図7のようになる。すなわち、まず画素102−1の前の画素102−2が第2の着目画素とされる。画素102−2からの動きベクトル152−1が移動され、第2の着目画素である画素102−2を始点とする動きベクトル152−2が設定される。この動きベクトル152−2の終点は、画素112−2となる。画素112−2は、画素112−1より前に位置する画素である。また、画素112−2は、第2の終点画素とされる。
同様に、画素102−1の後の画素102−3が第3の着目画素とされる。動きベクトル151−2が移動され、第3の着目画素である画素102−3を始点とする動きベクトル152−3が設定される。この動きベクトル152−3の終点は、画素112−3となる。画素112−3は、画素112−1より後に位置する画素である。また、画素112−3は、第3の終点画素とされる。
図6を参照して説明した場合と同じく、第1の着目画素の画素値と第1の終点画素の画素値との平均が算出され、補間フレームの対応する画素、この場合、画素122−1の画素値として設定される。また、第2の着目画素の画素値と第2の終点画素の画素値との平均が算出され、補間フレームの対応する画素、この場合、画素122−2の画素値として設定される。さらに第3の着目画素の画素値と第3の終点画素の画素値との平均が算出され、補間フレームの対応する画素、この場合、画素122−3の画素値として設定される。
このようにして、1つの着目画素、この場合、画素102−1に着目した場合、補間フレーム上には、3つの画素、この場合、画素122−1、画素122−2、および画素122−3が設定され、その画素値が生成される。
さらに第1の着目画素が画素103−1に設定された場合について、図8を参照して簡便に説明する。画素103−1が第1の着目画素とされたとき、画素103−1の前の画素103−2が第2の着目画素とされる。画素103−2からの動きベクトル153−1が移動され、第2の着目画素である画素103−2を始点とする動きベクトル153−2が設定される。この動きベクトル153−2の終点は、画素113−2となり、第2の終点画素とされる。
同様に、画素103−1の後の画素103−3が第3の着目画素とされる。動きベクトル153−1が移動され、第3の着目画素である画素103−3を始点とする動きベクトル153−3が設定される。この動きベクトル153−3の終点は、画素113−3となり、第3の終点画素とされる。
図6を参照して説明した場合と同じく、第1の着目画素の画素値と第1の終点画素の画素値との平均が算出され、補間フレームの対応する画素、この場合、画素123−1の画素値として設定される。また、第2の着目画素の画素値と第2の終点画素の画素値との平均が算出され、補間フレームの対応する画素、この場合、画素123−2の画素値として設定される。さらに第3の着目画素の画素値と第3の終点画素の画素値との平均が算出され、補間フレームの対応する画素、この場合、画素123−3の画素値として設定される。
このようにして、1つの着目画素、この場合、画素103−1に着目した場合、補間フレーム上には、3つの画素、この場合、画素123−1、画素123−2、および画素123−3が設定され、その画素値が生成される。
このような処理が、過去フレームを構成する画素毎に行われる。この場合、過去フレームを構成する3画素を例に挙げて説明した。このように、過去フレームを構成する3画素を例に挙げた場合、補間フレーム上に作成された画素値は、図9に示すようになる。
図9を参照するに、画素101−1を第1の着目画素としたときに、画素121−1乃至121−3が生成され、画素102−1を第1の着目画素としたときに、画素122−1乃至122−3が生成され、画素103−1を第1の着目画素としたときに、画素123−1乃至123−3が生成される。
これらの生成された画素同士の位置関係は、図9を参照するに、まず、位置Aのところに、画素122−2が設定されている。その隣の画素の位置Bに、画素122―1と画素123―2が設定されている。さらに、位置Bの隣の画素の位置Cに、画素121−2、画素122−3、および画素123−1が設定されている。さらに、位置Cの隣の画素の位置Dに、画素121−1と画素123―3が設定されている。さらに、位置Dの隣の画素の位置Eとして、画素121−3が設定されている。
なお、図9においては、各位置に、複数の画素が設定されていることを図示すると、重なりあってしまうため、3段に分けて記載しているだけであり、例えば、位置Bには、同じ位置に、画素122−1と画素123−2という2つの画素が設定されている、換言すれば、位置Bの画素値として、2つの画素値が記憶部54に記憶されていることを意味する。
このように、1つの画素の画素値として、複数の画素値が設定されている場合がある。そこで、平均値演算部55は、複数の画素値が設定されている場合、その設定されている複数の画素値の平均値を算出し、その平均値を、その画素の画素値として設定する。
すなわち、例えば、位置Bの画素には、画素122−1と画素123−2が設定されているので、画素122−1の画素値と画素123−2の画素値の平均値が、位置Bの画素の画素値とされる。また同様に、例えば、位置Cの画素には、画素121−2、画素122−3、および画素123−1が設定されているので、画素121−2の画素値、画素122−3の画素値、および画素123−1の画素値の平均値が、位置Cの画素の画素値とされる。
このように、本発明においては、補間フレームを構成する画素値は、複数の画素値が設定され、その設定された複数の画素値の平均値が算出されることにより生成される。
[補間フレーム装置の動作について]
次に、図4に示した第1の実施の形態における補間フレーム作成部43の動作について、図10のフローチャートを参照して説明する。
ステップS21において、着目画素設定部51は、過去フレームを構成する画素のうち、処理対象とする画素を設定する。すなわち、第1の着目画素が設定される。ステップS21における処理で、例えば、図5に示した画素101−1が第1の着目画素として設定される。
ステップS22において、第1の着目画素からの動きベクトル(第1の動きベクトル)を用いて、補間する画素値が演算される。まず、動きベクトル設定部56により、着目画素設定部51により設定された第1の着目画素に設定されている第1の動きベクトルが、動きベクトル検出部42から読み出される。読み出された第1の動きベクトルから、第1の着目画素に対応する第1の終点画素が求められる。
このようにして求められた第1の終点画素の画素値が、画素値読み出し部52によりフレームメモリ41から読み出される。画素値読み出し部52は、第1の着目画素の画素値も、フレームメモリ41から読み出す。読み出された2つの画素値は、画素値演算部53に供給される。画素値演算部53は、供給された2つの画素値の平均値を算出する。
例えば、第1の着目画素が画素101−1と設定された場合、図6を参照して説明したようなことが実行される。すなわち、動きベクトル設定部56により、画素101−1に設定されている動きベクトル151−1が読み出される。動きベクトル151−1の終点画素は、画素111−1であるので、第1の終点画素が、画素111−1と求められる。
画素値読み出し部52は、画素101−1の画素値を、フレームメモリ41に記憶されている過去フレームから読み出す。また、画素値読み出し部52は、画素111−1の画素値を、フレームメモリ41に記憶されている未来フレームから読み出す。画素値演算部53は、読み出された画素101−1の画素値と画素111−1の画素値の平均値を算出する。
このように算出された画素値は、ステップS23において、記憶部54の補間フレームを構成する画素のうちの、対応する画素の画素値として記憶される。対応する画素とは、この場合、第1の動きベクトルが通る補間フレーム上の画素である。
次に、ステップS24において、着目画素の前後の画素値が始点となるように、動きベクトルが移動される。この処理は、動きベクトル設定部56により行われる。動きベクトル設定部56は、第1の着目画素の前後に位置する第2の着目画素と第3の着目画素を設定し、その第2の着目画素と第3の着目画素のそれぞれに対して、第1の着目画素に設定されている動きベクトルをあてがうことで、第2の着目画素に設定される動きベクトルと第3の着目画素に設定される動きベクトルを、それぞれ設定する。
図6を再度参照するに、ステップS24における処理は、第1の着目画素である画素101−1に対して、前の位置に位置する画素101−2が第2の着目画素と設定され、後の位置に位置する画素101−3が第3の着目画素と設定される。この第2の着目画素である画素101−2を始点となるように、第1の着目画素である画素101−1に設定されている動きベクトル151−1を移動する。このことにより、動きベクトル151−2が設定される。同様の処理が行われることにより、第3の着目画素に対して、動きベクトル151−3が設定される。
このようにして、動きベクトルが設定されると、ステップS25において、移動された動きベクトルを用いて、補間する画素値が演算される。ステップS25における処理で、第2の着目画素からの第2の動きベクトルを用いて、補間する画素値が演算され、第3の着目画素からの第3の動きベクトルを用いて、補間する画素値が演算される。ステップS25における処理は、基本的に、ステップS22における処理と同様である。
図6を再度参照するに、ステップS24の処理が実行されることにより、画素121−2の画素値と画素121−3の画素値がそれぞれ求められる。求められた画素値は、ステップS26において、記憶部54に記憶される。
ステップS27において、1フレーム分の処理が終了したか否かが判断される。すなわち、図5に示したような、仮に1フレームが3画素から構成されているときには、画素101−1、画素102−1、および画素103−1に対して、ステップS21乃至S26の処理が行われたか否かが判断される。
図5に示したような状態のとき、ステップS21乃至S27が実行されることにより、図6乃至図8を参照して説明した処理が繰り返されることになる。その結果、例えば、図9に示したような画素値が、補間フレームの画素値として記憶部54に記憶される。
ステップS27において、1フレーム処理が終了したと判断された場合、ステップS28に処理が進められる。ステップS28において、画素毎に平均値が演算される。ステップS28における処理は、平均値演算部55(図4)により実行される。平均値演算部55は、記憶部54に記憶されている補間フレームを構成する1画素に注目し、その注目した画素に設定されている画素値を読み出す。そして、読み出した画素値の平均値を算出する。算出された画素値は、その注目した画素の画素値として出力される。
例えば、記憶部54には、図9に示したように、1つの画素に対して、複数の画素値が設定され、それらの画素値が記憶されている。平均値演算部55は、例えば、位置Cの画素に注目したとき、画素121−2の画素値、画素122−3の画素値、および画素123−1の画素値を読み出す。そして、読み出したこれらの3画素の画素値の平均値を算出する。算出された画素値は、位置Cの画素の画素値として出力される。
なお、ここでは、平均値が算出されるとして説明を続けるが、特定の画素値に重み付けするなどしても良い。
例えば、図9において、位置Cの画素に対しては、3つの画素値が設定されているが、そのうち画素123−1の画素値は、画素121−2の画素値や画素122−3の画素値と異なり、第1の着目画素と第1の終点画素から算出された画素値である。換言すれば、画素121−2の画素値や画素122−3の画素値は、あてがわれた動きベクトルを用いて算出された画素値であるが、画素123−1の画素値は、動きベクトル検出部42により検出された動きベクトルを用いて算出された画素値である。このようなときには、画素123−1の画素値が、画素121−2の画素値や画素122−3の画素値よりも、生成される画素値に大きな影響を与えるような重み付けがされるようにしても良い。
平均値演算部55による演算が、1フレーム分終了したか否かが、ステップS29において判断される。ステップS29において、1フレーム分の処理は終了していないと判断された場合、ステップS28に処理が戻され、それ以降の処理が繰り返される。一方、ステップS29において、1フレーム分の処理は終了しと判断された場合、1フレーム分の補間フレームを生成する、図10に示したフローチャートの処理は終了される。
[効果について]
このように、補間フレームが作成されることにより、以下のような効果がある。まず、動きベクトルが一様な部分は、複数の画素値を設定することなく処理した場合と等価とすることがきるとともに、動きベクトルがばらつく部分は、ボケた画像とすることができる。換言すれば、動きベクトルがばらつく部分のみに対して、そのばらつきを吸収するような加工を施すことが可能となる。
図5を再度参照するに、図5において動きベクトル152−1と動きベクトル153−1は、同じ方向で同じ傾きであるが、動きベクトル151−1は、異なる方向で異なる傾きである。このような場合、図1Bを参照して説明したような状況であり、波形が不連続となり、特に目立つような劣化が起こる可能性がある。
このような状況であっても、本発明によれば、上述したように、隣接する画素の動きベクトルや隣接する画素の画素値を用いて、1つの画素に対して複数の画素値を生成し、その複数の画素値から補間すべき画素の画素値を設定するので、波形が不連続になるようなことを防ぐことが可能となる。
すなわち、例えば、図9を再度参照するに、位置Dに生成される画素値は、本発明によれば、画素121−1と画素123−3の画素値が用いられて設定される。これ対して、図1Bで説明したような方法を仮に適用した場合、画素121−1の画素値しか生成されない。
図1Bを参照して説明したような方法を適用し、画素121−1しか生成されなければ、隣接する画素の画素値、例えば、画素122−1や画素123−1に対して、画素121−1の画素値が急激に変化してしまい、波形が不連続になってしまう可能性がある。しかしながら、本発明によれば、このような波形が不連続になるような状況が発生しても、近接する画素の影響を受け、近接する画素の画素値に対して急激に変化するようなことを防ぐことが可能となるため、結果的に、画素値が急激に変化するようなことを防ぐことができ、波形が不連続になるようなことを防ぐことが可能となる。
“動きベクトルが一様な部分は、複数の画素値を設定することなく処理した場合と等価とすることができる”ということについて説明する。例えば、図11に示したように、動きベクトル171乃至175が同じ方向で、同じ傾きであるような場合、動きベクトルが一様であると言える。このような場合、例えば、動きベクトル173が通る補間フレーム上に生成される画素の画素値は、本発明によれば、前後の動きベクトル172,174も用いられて生成されるが、動きベクトル172,174を移動すると(例えば、図10のステップS24に対応する処理を実行すると)、動きベクトル173と重なるため、結果的に、動きベクトル173を用いたときに算出される画素値が3つ算出されることになる。よって、その3つの画素値の平均値は、動きベクトル173を用いたいときに算出される値と同じになる。
図11に示したような状況のときには、波形が不連続になるようなことはないため、目立つような劣化が起こることもない。図1Bを参照して説明したような方法、すなわち、1つの動きベクトルに基づき、1つの画素値を算出するようなときでも、図11に示したような動きベクトルが一様なときには、波形が不連続になるようなことは少ない。よって、従来の方式で波形が不連続なるようなことがない部分であれば、本発明に基づく方式であっても、波形が不連続なるようなことはない。よって、本発明を適用することで、従来波形が不連続にならないよう部分が不連続なってしまうというようなことは起きないので、本発明を適用することで、画質が劣化するようなことはない。
すなわち、動きベクトルが一様な部分は、複数の画素値を設定することなく処理する従来の場合と等価とすることができ、従来適切に処理が行える部分は、本発明でも適切に処理ができる。
第1の実施の形態においては、例えば、図5における動きベクトル151−1が、他の動きベクトル152−1,153−1と異なる向きで、異なる傾きであるが、その動きベクトル151−1は、間違って検出された動きベクトルであるのか否かを判断するといったような判断を行うことなく、処理を行う。換言すれば、第1の実施の形態においては、検出された動きベクトルが正しいか否かといった判断を行うことはない。
よって、このような判断を行うことにより、この判断自体が誤判断となり、結果として、間違った処理を行ってしまうといったようなことを防ぐことが可能となる。換言すれば、判断を行い、判断結果により処理の切り換えを行うようなことをしないため、処理の切り換えによる劣化などが生じるようなことを防ぐことが可能となる。このような判断を行わなくても、本発明によれば、上述したように、波形が不連続にならないように制御することが可能である。
また、本発明によれば、波形の連続性を考慮した画素値を基に、最終的な画素値を求めているため、劣化部分も連続的な変化となり、劣化を目立ちにくくすることが可能となる。
[補間フレーム作成部の第2の実施の形態について]
図12は、本発明を適用した第2の実施の形態における補間フレーム作成部43の構成を示す図である。
図12に示した第2の実施の形態における補間フレーム作成部43は、画素位置決定部201、動きベクトル設定部202、前後画素位置決定部204、動きベクトル設定部205、画素値読み出し部203、画素値演算部206、記憶部207、および平均値演算部208を含む構成とされている。
画素位置決定部201は、補間フレームを構成する画素のうち、画素値を生成する処理を実行する画素を決定する。動きベクトル設定部202は、画素位置決定部201で決定された画素に設定されている動きベクトルを動きベクトル検出部42(図3)から読み出し、設定する。画素値読み出し部203は、動きベクトル設定部202により設定された動きベクトルの始点に位置する画素の画素値と、終点に位置する画素の画素値を、それぞれフレームメモリ42から読み出す。
前後画素位置決定部204は、画素位置決定部201により決定された画素の前後に位置する画素を決定する。動きベクトル設定部205は、前後画素位置決定部204で決定された画素に設定されている動きベクトルを、動きベクトル検出部42からそれぞれ読み出し、それぞれ設定する。画素値読み出し部203は、動きベクトル設定部205により設定された2本の動きベクトルのそれぞれの始点に位置する画素の画素値と、それぞれの終点に位置する画素の画素値を、それぞれフレームメモリ42から読み出す。
画素値演算部206は、画素値読み出し部203により読み出された、所定の動きベクトルの始点に位置する画素の画素値と、終点に位置する画素の画素値を用いて、補間フレームを構成する画素であり、画素位置決定部201により決定された画素の画素値を算出する。
記憶部207は、画素値演算部206による演算で算出された画素値を記憶する。記憶部207には、1つの画素に対して、複数の画素値が記憶される。平均値演算部208は、記憶部207に記憶されている複数の画素値を用いて、画素位置決定部201により決定された画素の、最終的な画素値を算出し、信号切替部44(図3)に出力する。
[第2の実施の形態における補間フレームの生成の仕方について]
次に、図12に示したような構成を有する補間フレーム作成部43において行われる補間フレームの生成について、図13乃至図17を参照して説明する。
図13は、過去フレームと未来フレームのそれぞれのフレームにおける画素と、動きベクトルとの関係を説明する図である。過去フレームにおいて、画素231−1、画素232−1、および画素233−1がそれぞれ隣り合う3画素として存在している。
過去フレームの画素231−1が、未来フレームの画素231−2に移動したとして検出されたために、動きベクトル251が検出される。同様に、過去フレームの画素232−1が、未来フレームの画素231−2に移動したとして検出されたために、動きベクトル252が検出される。同様に、過去フレームの画素233−1が、未来フレームの画素233−2に移動したとして検出されたために、動きベクトル253が検出される。
また、動きベクトル251が補間フレーム上を通る位置に位置する画素を、画素231―3とし、動きベクトル252が補間フレーム上を通る位置に位置する画素を、画素232―3とし、動きベクトル253が補間フレーム上を通る位置に位置する画素を、画素233―3とする。
このような関係が、成り立っていることを前提とし、以下の説明を続ける。すなわち、補間フレーム作成部43の処理は、例えば、図13における動きベクトル251乃至253が、動きベクトル検出部42で検出されていることが前提とされている。
また、補間フレーム上の1画素には、検出された動きベクトルが1本だけ設定されている状態である。換言すれば、補間フレーム上の1画素に、複数の動きベクトルが通るような検出が行われたときには、何らかの処理が実行されることにより、1本の動きベクトルに絞り込まれる。よって、補間フレームを構成する全ての画素に動きベクトルが1本だけ設定されていることを前提としている。
このような前提が満たされるように、動きベクトル検出部42は、動きベクトルを検出するが、その検出方法は、どのような方法でも良い。
図13に示したような状況のとき、補間フレーム作成部43は、以下のような処理を実行することで、補間フレーム上の所定の画素の画素値を算出する。
図14を参照する。ここでは、補間フレーム上の画素である画素233−3が処理対象とされた場合を例に挙げて説明を続ける。画素位置決定部201(図12)は、処理対象とする画素を、画素233−3と決定する。画素位置決定部201は、補間フレームを構成する画素のうち、例えば、左上から右下にかけて、順に、処理対象の画素とするように構成されている。
動きベクトル設定部202は、画素位置決定部201で処理対象の画素として設定された画素233−3を通る動きベクトルは、動きベクトル253であると設定する。動きベクトル253の始点の画素は、過去フレームの画素233−1であり、終点の画素は、未来フレームの画素233−2である。画素値読み出し部203は、画素233−1の画素値と画素233−2の画素値を、フレームメモリ41からそれぞれ読み出し、画素値演算部206に供給する。
画素値演算部206は、供給された2つの画素値を用いて、画素233−3の画素値を算出し、記憶部207に出力する。画素値演算部206は、例えば、供給された2つの画素値の平均値を算出することで、画素233−3の画素値を算出し、記憶部207に出力する。ここでは、算出された画素値を、画素値293(図17)とする。
このような処理が行われる一方で、前後画素位置決定部204は、画素位置決定部201により決定された画素233−3の前後に位置する画素を決定する。ここでは、前後の画素を1つずつ決定するとして説明を続けるが、決定される画素の個数は、前後の1つずつに限定されるわけではない。
前後画素位置決定部204は、この場合、画素233−3の前の画素として、画素232−3を決定し、後の画素として、画素231−3を決定する。
動きベクトル決定部205は、前後画素位置決定部204により決定された画素232−3を通る動きベクトルとして、動きベクトル252を設定する。さらに、動きベクトル決定部205は、動きベクトル252を、画素233―3をを通る動きベクトル252’(図15)を設定する。画素値読み出し部203は、設定された動きベクトル252’の始点の位置の画素の画素値と、終点の位置の画素の画素値を、フレームメモリ41からそれぞれ読み出す。
図15を参照して説明するに、動きベクトル252が画素233−3を通るように移動されると、動きベクトル252’のようになる。動きベクトル252’の始点の画素は、画素233−1であり、終点の画素は、画素233−2となる。画素値読み出し部203は、画素233−1の画素値と画素233−2の画素値をそれぞれフレームメモリ41から読み出し、画素値演算部206に供給する。
画素値演算部206は、供給された2つの画素値を用いて、画素233−3の画素値を算出し、記憶部207に出力する。ここでは、算出された画素値を、画素値292(図17)とする。
同様に、動きベクトル決定部205は、図16を参照して説明するように、前後画素位置決定部204により決定された画素231−3を通る動きベクトルとして、動きベクトル251を設定する。さらに、動きベクトル決定部205は、動きベクトル251を、画素233―3を通る動きベクトル251’を設定する。画素値読み出し部203は、設定された動きベクトル251’の始点の位置の画素の画素値と、終点の位置の画素の画素値を、フレームメモリ41からそれぞれ読み出す。
図16を参照するに、動きベクトル251が画素233−3を通るように移動されると、動きベクトル251’のようになる。動きベクトル251’の始点の画素は、画素271であり、終点の画素は、画素272となる。画素値読み出し部203は、画素271の画素値と画素272の画素値をそれぞれフレームメモリ41から読み出し、画素値演算部206に供給する。
画素値演算部206は、供給された2つの画素値を用いて、画素233−3の画素値を算出し、記憶部207に出力する。ここでは、算出された画素値を、画素値291(図17)とする。
このような処理が行われることにより、図17を参照するに、補間フレームを構成する画素であり、画素位置決定部201により処理対象に設定された画素233−3には、画素値として、画素値291、画素値292、および画素値293が設定される。
平均値演算部208は、画素値291、画素値292、および画素値293の、例えば、平均値を算出し、その平均値を、画素233−3の画素値として出力する。なお、ここでは平均値として説明を続けるが、重み付けなどの処理が行われる演算が行われるようにしても良い。
このように、補間フレームを構成する1つの画素に注目したとき、その画素(注目画素とする)を通る動きベクトルAの両端の画素の画素値を用いて画素値が算出され、注目画素の前に位置する画素を通る動きベクトルBを、注目画素を通る動きベクトルB’とし、その動きベクトルB’の両端の画素の画素値を用いて画素値が算出され、さらに、注目画素の後に位置する画素を通る動きベクトルCを、注目画素を通る動きベクトルC’とし、動きベクトルC’の両端の画素の画素値を用いて画素値が算出される。
この場合、1つの注目画素に対して、3つの画素値が算出される。記憶部207には、このように、1つの注目画素に対して、3つの画素値が記憶される。そして、3つの画素値から、注目画素の画素値が算出される。
[補間フレーム装置の動作について]
次に、図12に示した第2の実施の形態における補間フレーム作成部43の動作について、図18のフローチャートを参照して説明する。
ステップS51において、画素位置決定部201は、補間フレームを構成する画素のうち、処理対象とする画素(画素A)を決定する。ステップS51における処理で、例えば、図14に示した画素233−3が画素Aとされる。
ステップS52において、動きベクトル設定部202は、画素Aを通る動きベクトル(動きベクトルA)を設定する。画素233−3が画素Aとされているときには、動きベクトル253が動きベクトルAとされる(図14参照)。
ステップS53において、動きベクトルAが用いられて、補間する画素値が演算される。画素値読み出し部203は、動きベクトル253が動きベクトルAとされている場合、図14を参照して説明したように、動きベクトル253の両端の画素の画素値、この場合、画素233−1の画素値と画素233−2の画素値を、それぞれフレームメモリ41から読み出す。
画素値演算部206は、画素値読み出し部203により読み出された画素値を用いて、補間する画素値を算出する。この場合、画素233−1の画素値と画素233−2の画素値から、画素値293(図17)が算出される。
ステップS54において、画素値演算部206により算出された画素値が、画素Aの画素値として、記憶部207に記憶される。この場合、画素値293が、画素233−3の画素値として記憶部207に記憶される。
ステップS55において、前後画素位置決定部204は、画素Aの前の画素Bと後の画素Cを決定する。ステップS55における処理で、例えば、画素Bとして、図15に示した画素232−3が設定され、画素Cとして、図16に示した画素231−3が設定される。
ステップS56において、動きベクトル設定部205は、画素Bを通る動きベクトル(動きベクトルB)と、画素Cを通る動きベクトル(動きベクトルC)を設定する。画素232−3が画素Bとされているときには、動きベクトル252が動きベクトルBとされ、画素231−3が画素Cとされているときには、動きベクトル251が動きベクトルBとされる(図15、図16参照)。
ステップS57において、動きベクトル設定部205は、動きベクトルBの方向と傾きを有する動きベクトルであり、画素Aを通る動きベクトルB’を設定する。また、動きベクトル設定部205は、動きベクトルCの方向と傾きを有する動きベクトルであり、画素Aを通る動きベクトルC’を設定する。
図15を再度参照するに、動きベクトルBが動きベクトル252とされているとき、動きベクトル252と同じ方向と傾きを有し、画素233−3を通る、動きベクトル252’が動きベクトルB’と設定される。
また図16を参照するに、動きベクトルCが動きベクトル251とされているとき、動きベクトル251と同じ方向と傾きを有し、画素233−3を通る、動きベクトル251’が動きベクトルC’と設定される。
ステップS58において、動きベクトルB’と動きベクトルC’がそれぞれ用いられて、補間する画素値が演算される。画素値読み出し部203は、動きベクトル252’が動きベクトルB’とされている場合、図15を参照して説明したように、動きベクトル252’の両端の画素の画素値、この場合、画素233−1の画素値と画素233−2の画素値を、それぞれフレームメモリ41から読み出す。
画素値演算部206は、画素値読み出し部203により読み出された画素値を用いて、補間する画素値を算出する。この場合、画素233−1の画素値と画素233−2の画素値から、画素値292(図17)が算出される。
また同様に、画素値読み出し部203は、動きベクトル251が動きベクトルC’とされている場合、図16を参照して説明したように、動きベクトル251’の両端の画素の画素値、この場合、画素271の画素値と画素272の画素値を、それぞれフレームメモリ41から読み出す。
画素値演算部206は、画素値読み出し部203により読み出された画素値を用いて、補間する画素値を算出する。この場合、画素271の画素値と画素272の画素値から、画素値291(図17)が算出される。
ステップS59において、画素値演算部206により算出された画素値が、画素Aの画素値として、記憶部207に記憶される。この場合、画素値291と画素値292が、画素233−3の画素値として記憶部207に追加記憶される。ステップS54における処理と、ステップS59における処理が行われたことで、画素233−3の画素値として、図17に示したように、画素値291、画素値292、および画素値293が記憶部207に記憶される。
ステップS60において、平均値演算部208は、記憶部207に記憶されている所定の画素に設定された複数の画素値から、その所定の画素の画素値を算出する。この場合、補間フレームを構成する画素のうち、画素233−3の画素値として、画素値291、画素値292、および画素値293が記憶されている。平均値演算部208は、画素値291、画素値292、および画素値293の平均値を算出することで、画素233−3の画素値を算出する。
平均値演算部208により演算された画素値は、信号切替部44に出力される。平均値演算部208からの演算結果を記憶する記憶部を設け、その記憶部を介して信号切替部44に出力されるようにしても良い。また、ステップS61において、1フレーム分の処理が終了したか否かが判断されるが、1フレーム分の処理が終了した時点で、信号切替部44に出力されるようにしても良い。
ステップS61において、1フレーム分の処理が終了したか否かが判断され、1フレーム分の処理は終了していないと判断された場合、ステップS51に処理が戻され、それ以降の処理が繰り返される。一方、ステップS61において、1フレーム分の処理は終了したと判断された場合、補間フレームが1フレーム分生成されたことになるので、1フレームの補間フレームを作成する図18に示したフローチャートの処理は終了される。
このように、第2の実施の形態においては、補間フレームを構成する1つの画素に注目し、その画素を通る動きベクトルと、その画素の前後の画素を通る動きベクトルを用いて、注目した画素の画素値が生成される。
第2の実施の形態においても、第1の実施の形態と同じ効果がある。第1の実施の形態のところで、効果については既に説明したので、ここでは、その説明を省略する。
第1の実施の形態と第2の実施の形態を比較するに、第1の実施の形態においては、補間フレームを構成する全ての画素に対して複数の画素値が設定されたあと、各画素の平均値が算出されることにより、補間フレームを構成する1つの画素の画素値が算出されるため、1フレームの処理が終了したあと、最終的な画素値が算出され、出力される。
換言すれば、第1の実施の形態において、図10のフローチャートのステップS21乃至S27が繰り返し行われ、ステップS27において、1フレーム分の処理が終了したと判断されたとき、ステップS28において、画素毎に平均値が算出される。
第1の実施の形態に対して、第2の実施の形態においては、補間フレームを構成する1画素に注目したとき、その画素と隣接する画素を通る動きベクトルを用いて複数の画素値が演算されたあと、その複数の画素値の平均が算出されることで、その画素の画素値が算出される。
換言すれば、第2の実施の形態においては、図18のフローチャートを参照するに、画素毎に平均値が算出されるのは、ステップS60であり、1フレーム分の処理が終了したか否かの判断が行われるステップS61よりも前の処理である。すなわち、第2の実施の形態においては、1フレーム分の処理を終わる前の時点で、最終的な画素値を算出し、出力することができる。
さらに換言するならば、第2の実施の形態においては、注目した画素の画素値を、他の画素値に関する処理を待たずに算出することができる。よって、第2の実施の形態においては、リアルタイムに画素値を算出することが可能となる。
また、ここで、例えば、補間フレームを構成する1画素に対して、3つの画素値が設定され、その3つの画素値の平均値が算出されることで、最終的な画素値が算出される場合を考える。
第1の実施の形態の場合、3つの画素値を設定するために、記憶部54(図4)は、少なくとも3フレーム分の画素値を記憶するだけの容量を必要とする。これに対し、第2の実施の形態の場合、記憶部207(図12)は、3つの画素値を記憶するだけの容量があればよい。よって、第2の実施の形態の方が、第1の実施の形態に比べて、記憶部の容量を小さくすることが可能となる。
第1の実施の形態または第2の実施の形態のどちらを適用した場合においても、処理後の画像に対しては、同様の効果を期待できる。図19と図20に、本発明を適用したときの画像の一例を示す。図19は、本発明を適用せずに画素値を算出したときの画像であり、図20は、第1の実施の形態、または、第2の実施の形態を適用して画素値を算出したときの画像である。
図19中、円で囲んだ部分を、図19と図20の、それぞれの画像で比較するに、本発明を適用して処理した図20の画像の方が、図19の画像に比べて、滑らかな変化となっていることがわかる。
このように、本発明によれば、急激な変化を抑えることができ、波形が不連続にならないようにすることができ、画質を向上させることが可能となる。
[第3の実施の形態について]
次に、第3の実施の形態について説明する。第1の実施の形態と第2の実施の形態においては、補間フレームを構成する1画素に対して、複数の画素値を設定し、その複数の画素値の平均値を求めることにより、最終的な画素値を算出した。その複数の画素値は、注目している画素に近接する画素を通る動きベクトルを用いて算出した。
ところで、例えば、動き境界の部分など、近接する画素が急激に変化するが、その変化は正しい変化である。このような正しい変化の場合であっても、第1の実施の形態や第2の実施の形態の場合、近接する画素の影響をうけるため、動き境界などの部分もぼやけてしまう可能性がある。
本発明は、動きベクトルがばらつく部分を、ぼけた画像とする特徴があるが、複数の異なる動きベクトルが存在することが正しい、動き境界部の画像もぼかしてしまうことがある。そこで、動きベクトルが検出されるときなどに、動きの境界部であるというようなことを示す付加情報を生成し、その付加情報に基づいて、動きの境界部であれば、境界部の動きベクトルを用いないで処理を行うことにより、動き境界部がぼけないように処理しても良い。
このような付加情報自体を生成し、その生成した付加情報を用いて処理を行う第3の実施の形態について説明を加える。なお、第3の実施の形態として以下に説明するのは、第1の実施の形態、または第2の実施の形態において、付加情報を生成する処理を加えた実施の形態である。まず、第1の実施の形態において、付加情報を生成し、その生成された付加情報に用いた処理を行う第3の実施の形態について説明する。
図21は、第3の実施の形態における補間フレーム作成部43の構成例を示す図である。図21に示した補間フレーム作成部43は、図4に示した補間フレーム作成部43に、付加情報生成部401を追加した構成とされている。付加情報生成部401は、着目画素設定部51により設定された注目画素の近辺を探索し、動き境界であるか否かを判断し、その判断に基づく付加情報を生成する。付加情報を生成するとき、フレームメモリ41に記憶されている過去フレームと未来フレームが参照される。
生成された付加情報は、動きベクトル設定部56に供給される。動きベクトル設定部56は、動き境界をまたぐような動きベクトルは用いないように動きベクトルを設定する。補間フレーム作成部43の他の部分は、図4を参照して説明した場合と基本的に同様であるので、その説明は省略する。
図22のフローチャートを参照し、図21に示した補間フレーム作成部43における処理について説明する。
ステップS101において、着目画素設定部51は、過去フレームを構成する画素のうちから、処理対象とする着目画素を設定する。ステップS102において、着目画素設定部51により、着目画素として設定された画素の近辺に関する付加情報が、付加情報生成部401により生成される。
図23は、ステップS102において実行される付加情報生成処理の詳細を説明するフローチャートである。
ステップS131において、注目画素を中心とする、初期値のブロックサイズとブロック一致閾値が設定される。ブロック一致閾値とは、ブロック内の一致数がその閾値以上であれば、ブロックが一致しているとして判断して良いという許容範囲を示す値であり、好ましくは、ブロックの画素の数に設定される。
ここでは、初期値のブロックサイズを1画素として説明を続ける。なお、上述してきた説明において、画素との記述は、ブロックと置き換えることにより、ブロックで処理する場合にも適用できる。また、ブロックは、複数の画素から構成される。
ステップS132において、過去フレームと未来フレームから、それぞれ、画素値が読み出される。読み出される画素値は、注目画素とされた画素に設定されている動きベクトルの始点と終点に対応する画素の画素値である。なお、ブロックの場合、ブロックに設定されている動きベクトルが用いられ、その動きベクトルの始点と終点に対応する画素値がそれぞれ読み出される。
ステップS133において、読み出された画素値から差分絶対値が算出される。ステップS133において、過去フレームから読み出された始点に対応する画素の画素値と、未来フレームから読み出された終点に対応する画素の画素値との差分が算出される。そして、その差分値の絶対値が算出される。
ステップS134において、算出された差分値の絶対値が、画素一致閾値よりも小さいものの数を、一致数として算出する。ここで画素一致閾値とは、差分値の絶対値がその閾値以下であれば、一致する画素値として判断して良いという許容範囲を示す値であり、好ましくは、0に設定される。
ステップS135において、一致した画素数が、ブロック一致閾値より以上かどうかが判断される。ここでは、ブロック内の一致数を用いて、ブロックが一致しているか否かを判断するとするが、例えば、ブロック内の全ての画素値同士の差分の絶対値の和を算出し、その和の値が所定の閾値以上であるか否かを判断することで、画素(ブロック)が一致するか否かを判断するとするようにしても良い。また、変化量を用いた判断などでも良い。
ステップS135において、一致数がブロック一致閾値以上と判断された場合、ステップS136に処理が進められる。ステップS136において、ブロックサイズが広げられる。また、ステップS136において、ブロックサイズが広げられたことに伴い、ブロック一致閾値も変更される。ステップS136において、ブロックサイズを、どの程度広げるかにより、ブロック一致閾値もどのように変更するかが決定される。すなわち、例えば、ブロックサイズを10ブロック広げた場合、広げた10ブロックと元のブロックを含むサイズのときに、ブロック内の一致数がその閾値以上であれば、ブロックが一致しているとして判断して良いという許容範囲を示す値に変更される。
ブロックサイズが広げられ、ブロック一致閾値が変更されると、ステップS132に処理が戻され、その広げられたブロックサイズに対して、ステップS132以下の処理が繰り返し行われる。このように、ブロック一致閾値が変更された場合、ステップS135において用いられるブロック一致閾値は、変更後のブロック一致閾値である。
ブロックサイズの広げ方などについては、図24を参照して後述する。ステップS135において、一致数がブロック一致閾値よりも小さいと判断された場合、ステップS137に処理が進められる。
ステップS137において、その時点で設定されているブロックサイズが付加情報として設定され、出力される。
ここで、図24を参照して再度説明する。図24において、白丸は、白い画素を示し、黒丸は、黒い画素を示すとする。ステップS131において、画素501−1が注目画素として設定され、初期ブロックサイズとして設定される。
ステップS132において、画素501―1に設定されている動きベクトル511の始点である画素501−1の画素値と、終点である画素501−2の画素値がフレームメモリ41から読み出される。ステップS133において、画素501−1と画素501−2の差分が算出され、その絶対値が算出される。ステップS134において、画素501−1と画素501−2の差分絶対値が、画素一致閾値よりも小さいと判断される。この場合、画素501−1と画素501−2は、ともに白い画素であるので、一致している画素であると判断される。
ステップS135において、一致数は、ブロック一致閾値以下であると判断され、ステップS136に処理が進められる。ステップS136において、ブロックサイズが広げられる。図24に示した例においては、画素502−1と画素503−1を新たに含むブロックに広げられる。即ち、この場合、画素501−1の1画素を含むブロックが、画素501−1、画素502−1、および画素503−1の3画素を含むブロックに拡大される。この拡大に伴い、ブロック一致閾値も変更される。なお、画素ではなく、ブロックで処理している場合、3個のブロックを含むブロックサイズに拡大されたことになる。
再度、ステップS132に処理が戻され、拡大されたブロックに含まれる画素値が、過去フレームと未来フレームからそれぞれ読み出される。この場合、画素502−1と画素502−2が読み出される。また、画素503−1と画素503−2も読み出される。この場合、読み出される画素は、全て白色の画素であるので、ステップS134において、“YES”と判断され、ステップS135に処理が進められる。ステップS135においても、“YES”と判断されると、ステップS136に処理が進められ、さらにブロックサイズが拡大され、ブロック一致閾値が変更される。
図24に示した例では、画素504−1と画素505−1をさらに含むブロックサイズに拡大される。すなわちこの場合、5個の画素を含むブロックサイズに拡大される。なお、画素ではなく、ブロックで処理している場合、5個のブロックを含むブロックサイズに拡大されたことになる。
再度、ステップS132に処理が戻され、拡大されたブロックに含まれる画素値が、過去フレームと未来フレームからそれぞれ読み出される。この場合、画素504−1と画素504−2が読み出される。また、画素505−1と画素505−2も読み出される。この場合、読み出される画素のうち、画素504−1と画素504−2は、白い画素なので、ステップS135において、一致する画素であると判断されるが、画素505−1と画素505−2は、白い画素と黒い画素であるので、ステップS135において、一致しない画素であると判断される。
ステップS134において、一致しない画素であると判断されると、ステップS137に処理が進められる。ステップS137において、その時点で設定されているブロックサイズが付加情報とされる。この場合、3画素で構成されるブロックサイズが、付加情報とされる。
このようにして、付加情報が生成される。なお、ブロックサイズは、上記した例は、注目画素を中心として、左右方向に1画素ずつ、よって、2画素ずつ拡大される例を示したが、注目画素を含む8×8のブロックを、16×16のブロックに拡大し、その後、32×32のブロックに拡大するといったような拡大が行われるようにしても良い。
また、ブロックの広げ方として、左右方向、上下方向、斜め方向などの各方向にブロックを広げていくようにしても良い。ステップS131で初期値のブロックサイズが設定されるが、この初期値のブロックサイズは、動きベクトルを検出するときに用いられたブロックサイズと同一とするのが好ましい。また、拡大されたブロックは、正方形であることが好ましい。
なお、ここでは、図23に示したフローチャートに基づいてブロックサイズが求められるとしたが、他の方法で、ブロックサイズが求められるようにしても良い。例えば、上記した方法を換言するならば、処理対象とされている画素(ブロック)を含む範囲であり、過去フレームと未来フレームの中で、一致する画素から構成される範囲を検出する方法であり、その検出方法として、上記した以外の方法を適用して、本発明を実施することも可能である。
このようなブロックサイズの拡大は、動きベクトルの正しさと連動させた拡大となる。正しい動きベクトルの部分では、ブロックサイズが拡大する傾向にあり、誤った動きベクトルが含まれる部分では、ブロックサイズが縮小する傾向にある。
このようにして、付加情報が求められると、ステップS103(図22)に処理が進められる。ステップS103以下の処理は、図10のステップS22以下の処理と基本的に同様であるので、その説明は省略する。ただし、ステップS103以下の処理は、ステップS102において求められたブロックサイズで行われる点が、図10のステップS22以下の処理とは異なる。
このようにブロックサイズを可変とすることで、より画質を向上させた補間フレームを生成することが可能となる。
次に、第2の実施の形態において、付加情報を生成し、その生成された付加情報に用いた処理を行う第3の実施の形態について説明する。
図25は、第3の実施の形態における補間フレーム作成部43の構成例を示す図である。図25に示した補間フレーム作成部43は、図12に示した補間フレーム作成部43に、付加情報生成部551を追加した構成とされている。付加情報生成部551は、画素位置決定部201により設定された注目画素の近辺を探索し、エッジがあるか否かを判断し、その判断に基づく付加情報を生成する。付加情報を生成するとき、フレームメモリ41に記憶されている過去フレームと未来フレームが参照される。
生成された付加情報は、前後画素位置決定部204に供給される。前後画素位置決定部204は、エッジの部分をまたぐような動きベクトルは用いないように注目画素の前後の画素を設定する。補間フレーム作成部43の他の部分は、図12を参照して説明した場合と基本的に同様であるので、その説明は省略する。
図26のフローチャートを参照し、図25に示した補間フレーム作成部43における処理について説明する。
ステップS151において、画素位置決定部201により、求めたい画素(画素A)が決定される。この処理は、図18のフローチャートのステップS51と同様に行われる。すなわち、画素位置決定部201は、補間フレームを構成する画素のうち、処理対象とする注目画素を決定する。
ステップS151において、画素位置決定部201により決定された注目画素の近辺に関する付加情報が、ステップS152において、付加情報生成部551により生成される。ステップS152において実行される付加情報生成処理は、既に図23に示したフローチャートを参照して説明した処理と同様に行われる。ただし、この場合、ステップS151で注目画素として設定されるのは、補間フレームを構成する画素であるので、その画素を通る動きベクトルの始点が、処理対象の画素(ブロック)として設定される。
このようにして、付加情報が求められると、ステップS153(図26)に処理が進められる。ステップS153以下の処理は、図18のステップS52以下の処理と基本的に同様であるので、その説明は省略する。ただし、ステップS153以下の処理は、ステップS152において求められたブロックサイズで行われる点が、図18のステップS52以下の処理とは異なる。
このようにブロックサイズを可変とすることで、より画質を向上させた補間フレームを生成することが可能となる。
第3の実施の形態においても、第1の実施の形態や第2の実施の形態と同様の効果を得ることができる。また、第3の実施の形態においては、さらに、エッジなどの部分をぼかすことなく処理を行えるという効果も加わる。
[記録媒体について]
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図27は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータのハードウェアの構成の例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)1001,ROM(Read Only Memory)1002,RAM(Random Access Memory)1003は、バス1004により相互に接続されている。
バス1004には、さらに、入出力インターフェース1005が接続されている。入出力インターフェース1005には、キーボード、マウス、マイクロホンなどよりなる入力部1006、ディスプレイ、スピーカなどよりなる出力部1007、ハードディスクや不揮発性のメモリなどよりなる記憶部1008、ネットワークインタフェースなどよりなる通信部1009、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア1011を駆動するドライブ1010が接続されている。
以上のように構成されるコンピュータでは、CPU1001が、例えば、記憶部1008に記憶されているプログラムを、入出力インターフェース1005及びバス1004を介して、RAM1003にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU1001)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア1011に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア1011をドライブ1010に装着することにより、入出力インターフェース1005を介して、記憶部1008にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部1009で受信し、記憶部1008にインストールすることができる。その他、プログラムは、ROM1002や記憶部1008に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
40 フレーム補間装置, 41 フレームメモリ, 42 動きベクトル検出部, 43 補間フレーム作成部, 44 信号切替部, 51 着目画素設定部, 52 画素値読み出し部, 53 画素値演算部, 54 記憶部, 55 平均値演算部, 56 動きベクトル設定部, 201 画素位置決定部, 202 動きベクトル設定部, 203 画素値読み出し部, 204 前後画素位置決定部, 205 動きベクトル設定部, 206 画素値演算部, 207 記憶部, 208 平均値演算部, 401 付加情報生成部, 551 付加情報生成部