以下、本発明を実施するための最良の形態について、図面を参照して詳細に説明をする。なお、本発明は、以下の例に限定されるものではなく、本発明の要旨を逸脱しない範囲で、任意に変更可能であることはいうまでもない。
{映像信号処理装置の構成}
図1を用いて、本発明を実施するための最良の形態として示す映像信号処理装置100について説明をする。映像信号処理装置100は、例えば、地上波デジタル放送として放送され、アンテナ200を介して受信されたMPEG−2(Moving Picture Expert Group-2)方式で高効率符号化された映像信号や、DVD(Digital Versatile Disk)再生装置220にて再生された、DVD(Digital Versatile Disk)パッケージにMPEG−2方式で高効率符号化された映像信号を、ディスプレイ210で出力表示可能な信号形態に変換する。
映像信号処理装置100は、ストリームデータ処理部101と、メモリ102と、画質改善処理部103と、OSD(On Screen Display)104と、CPU105と、出力ビデオデータ処理部108とを備えている。
ストリームデータ処理部101、メモリ102、画質改善処理部103、OSD104は、レジスタバス106を介してCPU105と接続されている。ストリームデータ処理部101、画質改善処理部103は、レジスタバス106を介して、CPU105との間でレジスタ情報を相互にやり取りする。
また、ストリームデータ処理部101、画質改善処理部103、OSD104、メモリ102は、メモリバス107を介して接続されており、上述したレジスタバス106を介してCPU105から供給されるレジスタ情報に基づいて、画像データを送信し、各機能部における処理を実行させる。
ストリームデータ処理部101は、上述したように受信又は再生されたMPEG2方式で高効率符号化された画像データに対して、トランスポートストリーム(TS:Transport Stream)方式或いはプログラムストリーム(PS:Program Stream)方式に応じた各種ストリーム処理を実行する。
メモリ102は、ストリームデータ処理部101によって各種ストリーム処理が施され、メモリバス107を介して供給される画像データを一時的に格納する。画質改善処理部103は、メモリ102に格納された画像データに対して、伝送過程などで劣化した画像データの画質を改善するための処理を実行する。
OSD104は、画面表示用のグラフィックッス、字幕情報、緊急情報等の生成を行い、メモリ102に格納されている画像データに重ねたり、部分的に表示したりする等の処理を実行する。また、OSD104は、画像データに対して拡大変換処理、縮小変換処理を実行する。なお、OSD104については、後で詳細に説明をする。
CPU105は、当該映像信号処理装置100の動作を統括的に制御する制御部である。出力ビデオデータ処理部108は、OSD104から供給された画像データに対して、ディスプレイ210と接続された接続インターフェース(アナログ形式又はDVIなどのデジタル方式)に応じた信号形式に変換し、ディスプレイ210に送信する。
このような、映像信号処理装置100は、LSI(Large Scale Integration)としてワンチップ化されている。
図1に示した映像信号処理装置100が備えるOSD104は、図2に示すように、拡大変換ブロック10、上述したような画像データに重ねる文字情報を生成する文字情報生成部15などを備えている。
OSD104が備える拡大変換ブロック10は、所謂アップフォーマットコンバータでありSD(Standard Definition)フォーマットの画像データ、例えば、480iのサイズの画像データを、HD(High Definition)フォーマットの画像データ、例えば1080iのサイズの画像データに拡大処理をしたり、インターレース方式の画像データをプログレッシブ方式の画像データに拡大処理したりする。
図2に示すように、拡大変換ブロック10は、メモリインターフェース11と、垂直方向拡大処理部12と、水平方向拡大処理部13とを備えている。
メモリインターフェース11は、CPU105の制御に応じて、拡大変換ブロック10にて実行する拡大変換処理の対象となる画像データをメモリ102から読み出す際のタイミングを調整する。
メモリインターフェース11によって調整されたタイミングに応じて、メモリ102から読み出された映像信号は、垂直方向拡大処理部12、水平方向拡大処理部13にて、それぞれ垂直方向への拡大処理、水平方向への拡大処理が実行されることになる。拡大変換ブロック10によって拡大処理された映像信号は、文字情報生成部15によって生成された文字情報などが付加されて、上述したように出力ビデオデータ処理部108へ供給される。
続いて、図2に示す拡大変換ブロック10が備えるレジスタについて説明をする。図2では図示していないが、拡大変換ブロック10は、メモリ102から読み出した画像データを拡大処理する際に必要となる所望の情報を格納するレジスタが用意されている。なお、拡大処理における切り出しに関するデータは、MEPGデータにあらかじめエンコードされたFCVOデータ、FCHOデータから算出されることになる。
例えば、図3(a)に示すように、メモリ102のメモリ領域102a1、メモリ領域102a2、メモリ領域103a3に、それぞれ画像データ20、21、22などが格納されているとする。ここで、メモリ領域102a2に格納されている画像データ21から、拡大処理の基になるソース画像データ21cを切り出し、拡大処理する場合を考える。
まず、拡大処理をするには、画像データ21からソース画像データ21cを切り出す必要がある。切り出しに必要な情報は、図3(a)に示す水平方向の切り出し位置を特定する水平方向切り出し位置情報hp、垂直方向の切り出し位置を特定する垂直方向切り出し位置情報vp、水平方向の切り出し幅を特定する水平方向切り出し幅情報hw、垂直方向の切り出し幅を特定する垂直方向切り出し幅情報vwである。
この水平方向切り出し位置情報hp、垂直方向切り出し位置情報vp、水平方向切り出し幅情報hw、垂直方向切り出し幅情報vwは、それぞれ、図3(b)に模式的に示す拡大処理ブロック10が備えるレジスタ110の各レジスタ111、112、113、114に格納される。
画像データ21からソース画像データ21cが切り出されると、次は、拡大処理が実行される。拡大処理に必要な情報は、図4(a)に示す水平方向の拡大処理後の表示開始位置を特定する水平方向表示開始位置情報hds、垂直方向の拡大処理後の表示開始位置を特定する垂直方向表示開始位置情報vds、水平方向の拡大処理後の表示幅を特定する水平方向表示幅情報hdw、垂直方向の拡大処理後の表示幅を特定する垂直方向表示幅情報vdwである。
この水平方向表示開始位置情報hds、垂直方向表示開始位置情報vds、水平方向表示幅情報hdw、垂直方向表示幅情報vdwは、それぞれ、図4(b)に模式的に示す拡大処理ブロック10が備えるレジスタ110の各レジスタ115、116、117、118に格納される。
また、レジスタ110のレジスタ119には、水平方向切り出し幅情報hw、水平方向表示幅情報hdwから求めた水平方向の拡大率である水平方向拡大率(h Delta)が格納される。また、レジスタ40には、垂直方向切り出し幅情報vw、垂直方向表示幅情報vdwから求めた垂直方向の拡大率である垂直方向拡大率(v Delta)が格納される。この水平方向拡大率、垂直方向拡大率は、それぞれ後述する拡大処理に伴う補間演算処理に用いられる。
さらに、レジスタ110のレジスタ121、122には、それぞれ後述する拡大処理に伴う補間演算処理に用いられる水平方向の初期オフセット値、垂直方向のオフセット値が格納される。
{拡大変換処理の具体的な説明}
続いて、映像信号処理装置100が備える拡大変換ブロック10の拡大変換処理の動作について具体的に説明をする。なお、上述したように拡大変換ブロック10は、垂直方向拡大処理部12と、水平方向拡大処理部13とを備えているため、垂直方向、水平方向の拡大処理をそれぞれ独立して実行することができるが、この拡大処理動作は、どちらも全く同様の処理動作となるため、水平方向拡大処理部13における説明をすることで、水平方向拡大処理、垂直方向拡大処理の説明とする。
本発明の実施の形態として示す映像信号処理装置100が備える拡大変換ブロック10においては、MPEG−2方式にて高効率符号化された画像データ、特に、4:2:2フォーマットの画像データを拡大処理した際の問題点を大幅に改善することができる。
上述したように、拡大処理においては、まず、メモリ102に格納された画像データから所望の領域のソース画像データを切り出し、所望の拡大率となるように拡大処理をすることになる。拡大処理をするには、当然のことながらソース画像データよりも多くの画像データが必要となる。つまり、ソース画像データのみでは、画像データとしての情報が足りないことになる。そこで、切り出したソース画像データを用いて補間演算処理を実行することで、足りない映像情報を補うことになる。
なお、補間演算処理は、現在まで様々な演算手法が考案されており、後で詳細に説明をするが、本発明を実施するための最良の形態として示す映像信号処理装置100においては、4点補間回路を用いて補間演算処理をする。
ここで、改めて、MPEG−2方式にて高効率符号化された4:2:2フォーマットの画像データを拡大処理する際の問題点について説明をする。
まず、4:2:2フォーマットについて説明をする。一般に人間の視覚特性は、輝度信号と比較して、色差信号に対して感度が低いため、色差信号について間引いた信号を用い、符号化情報量を低減させることができる。4:2:2フォーマットは、水平方向の色差信号を輝度信号の1/2のサイズとするようなフォーマットである。具体的には、4:2:2フォーマットは、各走査線の輝度信号2サンプルに対して、色差信号1サンプルが配置されることになる。
したがって、4:2:2フォーマットの画像データのデータ形式は、図5に示すように、2つの輝度データYと、色差データCb、Crとからなる輝度・色差データ30を最小構成単位としている。輝度・色差データ30は、輝度データY、色差データCbを含む輝度・色差データ30aと、輝度データY、色差データCrを含む輝度・色差データ30bで構成されている。輝度は、人間の視覚特性において感度が高いため、表示される画像の1画素(ピクセル)毎に与えられる必要がある。したがって、輝度・色差データ30a、30bは、それぞれ1画素分のデータを表していることになる。
図5に示すように色差データCb、Crは、それぞれ2画素毎に与えられるため、輝度・色差データ30a、30bにおいて、色差データCr、Cbが互いに不足していることになる。そこで、一方の輝度・色差データ30aは、輝度・色差データ30bに含まれる色差データCrを共用して用いることになる。他方の輝度・色差データ30bは、輝度・色差データ30aに含まれる色差データCbを共用して用いることになる。
なお、以下の説明において、図5に示す輝度・色差データ30を構成する輝度データY、色差データCb、Crは、それぞれ8ビットの情報量を有することにする。つまり、輝度・色差データ30は、8×4=32ビット(8バイト)の情報量となる。
このような、輝度・色差データ30を、4:2:2フォーマット形式の画像データの最小構成単位とすることを前提にして、メモリ102に格納された画像データを切り出す際の動作について説明をする。なお、説明は、メモリ102に記憶された画像データの水平方向1ラインのみについて考えることにする。また、説明のため、扱う画像データの情報量も実際の画像データよりも大幅に削減させて考えることにする。
まず、図6に示すように、128ビット(16バイト)を1ワードとするような構成単位のメモリ領域102ha、102hb、102hcからなる水平方向メモリ領域102hに画像データの水平方向1ライン分の画像データが格納されているとする。図6に示すように、メモリ領域102ha、102hb、102hcには、上述した2画素分の画像データである輝度・色差データ30が、それぞれ4個ずつ、つまり8画素分ずつ格納されることになる。
メモリ領域102ha、102hb、102hcにおいて、輝度・色差データ30が格納される画素データ単位の領域を画素データ格納領域G1〜G24と呼ぶことにする。また、メモリ102の各メモリ領域102ha、102hb、102hcに格納された輝度・色差データ30を、順番にパケット401〜4012と呼ぶことにする。
このようなメモリ102の構成、4:2:2フォーマットの輝度・色差データ30の構成などを踏まえ、パンスキャン方式のアスペクト比変換を実行するという仮定の基に、水平方向メモリ領域102hに格納されているパケット401〜4012から、所望の輝度・色差データ30を切り出す際の問題点を具体的に検証する。
まず、パンスキャン方式のアスペクト比変換を実行するにあたり、水平方向切り出し位置情報hp、水平方向切り出し幅情報hwによって、図6に示すように、メモリ領域102haの画素データ格納領域G7、G8、メモリ領域102hbの画素データ格納領域G9〜G16、メモリ領域102hcの画素データ格納領域G17、G18が指定され、パケット404〜409の輝度・色差データ30(12画素)が切り出されたとする。
この場合、切り出される輝度・色差データ30は、パケット単位で切り出されており、それぞれのパケット内では、各画素の色差データCr、Cbを相互に共有することで正しく補間がなされることになる。このように、パケット単位、つまり4:2:2フォーマット形式の画像データの最小構成単位で輝度・色差データ30を切り出す場合を“偶数切り出し”と呼ぶことにする。
続いて、パンスキャン方式のアスペクト比変換を実行するには、図6に示すような切り出しを実行した後、切り出す水平方向メモリ領域102hの位置を変更することになるが、切り出す位置によって、表示される映像に違和感がでず、滑らかな動きとなるように切り出されることが望ましい。
例えば、図6で示した切り出しによって表示される映像から、右方向に滑らかに移動した映像となるように切り出すには、図6における水平方向切り出し位置情報hp、水平方向切り出し幅情報hwから1画素分だけ右方向にシフトされた、図7に示すような水平方向切り出し位置情報hp、水平方向切り出し幅情報hwによってメモリ領域102hが指定されることが推定される。
図7に示すように、切り出された両端部においては、上述した“偶数切り出し”の場合と異なり、パケット単位で輝度・色差データ30が切り出されず、パケット404では、一つの輝度データYと、色差データCbのみ、パケット4010では、一つの輝度データYと、色差データCrのみが切り出されることになる。このように、パケット単位で輝度・色差データ30が切り出されない場合、つまり4:2:2フォーマット形式の画像データの最小構成単位が無視されて切り出される場合を“奇数切り出し”と呼ぶことにする。
“奇数切り出し”においては、図7に示す左端部を例に挙げると、画素データ格納領域G7に格納されているパケット404の輝度データY、色差データCbが無視されることになる。この輝度データY、色差データCbは、拡大処理において、つまりパンスキャン方式の切り出し処理の後に実行される拡大処理において、補間画像データを生成する際に必要となるデータである。また、ディスプレイ210に供給するRGB信号を生成する場合にも、パケット404の色差データが必要であるため、画素データ格納領域G7に格納されたパケット404の輝度データY、色差データCbが無視されるということは、最終的にパンスキャン方式でアスペクト比変換された映像の画質に劣化が生じてしまう可能性が非常に高くなる。
切り出しに関するデータである水平方向切り出し位置情報hp、水平方向切り出し幅情報hwなどを算出する際に用いるFCHOデータ、垂直方向切り出し位置情報vp、垂直方向切り出し幅情報vwなどを算出する際に用いるFCVOデータは、画像中心からのオフセット量が指定されているのみであるため、上述したような“偶数切り出し”、“奇数切り出し”といった概念をデータ中に含んでいない。
例えば、従来までの映像処理装置においては、“奇数切り出し”による映像の画質劣化を防ぐため、“奇数切り出し”となるようなFCHOデータ、FCVOデータがMPEGデータにエンコードされていても、常に“偶数切り出し”とするような設定となっていた。したがって、パンスキャン方式のような映像のシフトを伴うエフェクトなどを実行する場合には、滑らかに動画像表示できていないといった問題があった。
そこで、本発明を実施するための最良の形態として示す映像信号処理装置100では、図7に示すような“奇数切り出し”となるようなFCHOデータ、FCVOデータがMPEGデータにエンコードされていても、水平方向拡大処理部13において、図8に示すように、両端における必要なデータである、画素データ格納領域G7の輝度データY、色差データCb、画素データ格納領域G20の輝度データY、色差データCrを取り出して、補間画像データ生成に用いたり、RGB信号生成時に用いたりすることで、誤った補間処理が実行されないようにする。
{水平方向拡大処理部13の具体的な構成}
続いて、上述したような、“偶数切り出し”及び“水平切り出し”を実行する水平方向拡大処理部13の構成について図9を用いて説明をする。図9に示すように、水平方向拡大処理部13は、タイミング信号生成ブロック50と、フィルタ回路60とを備えている。水平方向拡大処理部13は、タイミング信号生成ブロック50で生成される各種タイミング信号に応じて、メモリ102に格納された画像データを読み出し、フィルタ回路60で拡大処理を実行する。
水平方向拡大処理部13のフィルタ回路60は、拡大処理に伴い、以下に示すような4点補間演算処理を実行することになる。4点補間演算処理は、公知の技術であり、例えば、特開平4−317170号公報(4点補間回路)に詳細に記載されているため、本発明を実施するための最良の形態においては、その概略のみの記載とする。
4点補間演算処理は、図10に示すようなフィルタ関数であるCubic関数に補間前データ(Sourceデータ)を4点分入力することで、補間データ(Destinationデータ)を求める演算手法である。Cubic関数から補間データを求めるには、4点分の補間前データの他に、図4で示したレジスタ110のレジスタ119、レジスタ121に格納された水平方向拡大率(h Delta)、水平方向初期オフセット値も必要となる。
図10に示すように、水平方向初期オフセット値、水平方向拡大率は、それぞれ初期オフセット値off、拡大率delとしている。図10に示すフェイズphaは、この初期オフセットoffと、拡大率delの累積加算値とによって算出される値である。図10では、一例として、補間前データである入力データA、B、C、Dによって、補間データである出力データOA、OBが生成されている様子を示してある。続く、出力データOCは、入力データB、C、D、Eによって生成されることになる。
4点補間演算処理において、補間演算に用いられる4点のデータのうち、図10に示す入力データBがCubic関数の中心となる。また、上述した水平方向初期オフセット値つまり、初期オフセット値offは、出力開始位置のデータ、図10における、出力データOAにのみ影響することになる。
再び図9に戻り、水平方向拡大処理部13の構成について説明をする。図9に示すように、タイミング信号生成ブロック50は、フェイズ計算ブロック51と、初期化タイミング信号生成ブロック52と、マスク信号生成ブロック53とを備えている。
フェイズ計算ブロック51は、レジスタ119、121から、それぞれ読み出された拡大率del、初期オフセット値off、初期化タイミング信号生成ブロック52から供給される累積計算開始信号rspからフェイズphaを生成する。算出されたフェイズphaは、図2に示したメモリインターフェースブロック11、フィルタ回路60に供給される。メモリインターフェースブロック11に供給されたフェイズphaは、メモリ102に格納された画像データを読み出す際のタイミング信号となる。また、フィルタ回路60に供給されるフェイズphaは、データバッファ61、補間関数ブロック62のそれぞれに供給される。
初期化タイミング信号生成ブロック52は、レジスタ115、111から、それぞれ読み出した水平方向表示開始位置情報hds、水平方向切り出し位置情報hpの最下位ビットlsb(least significant bit)から、フェイズ計算ブロック51に供給する累積計算開始信号rspを生成する。この累積計算開始信号rspは、上述した“偶数切り出し”、“奇数切り出し”に応じて、それぞれ異なった信号となる。
マスク信号生成ブロック53は、レジスタ115、111から、それぞれ読み出した水平方向表示開始位置情報hds、水平方向切り出し位置情報hpの最下位ビットlsb(least significant bit)、さらに、レジスタ113から読み出した水平方向切り出し幅情報hdwからマスク信号mskを生成する。
フィルタ回路60は、データバッファ61と、補間関数ブロック62と、ディレイ調整ブロック63とを備えている。
データバッファ61は、補間関数ブロック62にて実行される補間演算処理に用いられる入力データである輝度・色差データ30を入力しバッファリングする。データバッファ61は、マスク信号生成ブロック53から供給されたマスク信号mskで、フェイズ計算ブロック51から供給されたフェイズphaの最上位ビットmsb(most significant bit)をマスクすることで生成されるタイミング信号に基づいて、入力データをバッファリングする。このとき、データバッファ61には、レジスタ113、117から読み出された水平方向切り出し幅情報hw、水平方向表示幅情報hdwが供給される。
補間関数ブロック62は、データバッファ61にバファリングされた輝度・色差データ30を、フェイズ計算ブロック51から供給されるフェイズphaを用いて、フィルタリングして、上述したcubic関数に基づいた演算処理により補間データipoを生成する。
ディレイ調整ブロック63は、補間関数ブロック62から供給された補間データipoの“偶数切り出し”、“奇数切り出し”に応じて生ずるレイテンシーを統一し、水平方向に拡大された出力画像データpdと、有効領域を示す信号とを出力する。このとき、ディレイ調整ブロック63には、レジスタ117から読み出された水平方向表示幅情報hdwが供給される。
{バッファリング動作}
続いて、上述したような構成の水平拡大処理部13において実行される水平拡大処理におけるデータバッファ61のバッファリング動作を“偶数切り出し”、“奇数切り出し”毎に説明する。まず、図11、12に示すタイミングチャートを用いて、データバッファ61に入力する入力データのうち輝度データYに着目し、“偶数切り出し”、“奇数切り出し”における動作について説明をする。なお、図11、12に示すタイミングチャートは、一例として、8ピクセルの画像から、16ピクセルの画像へと2倍に拡大する場合について示している。なお、フェイズ計算ブロック50に供給される初期オフセットoffを“0”とし、拡大率delを“0.5”としている。
図11(a)〜(i)は、“偶数切り出し”を実行する際のタイミングチャートであり、それぞれ以下に説明するような信号を示している。
図11において、(a)は、水平拡大処理部13に供給される動作クロック信号、(b)は、拡大後の有効画像領域を示すマスク信号、(c)は、有効データの開始を示すフラグ信号、(d)は、あらかじめ拡大タイミングを加味した状態でメモリ102から読み出された輝度データY、(e)は、拡大前の有効画像領域を示すマスク信号、(f)は、メモリインターフェースブロック11へ供給したメモリ102から輝度データYを読み出す際のタイミング信号兼データバッファ61にバッファリングする際のタイミング信号、(g)は、データバッファ61にバッファリングされた輝度データY、(h)は、フェイズ計算ブロック51で生成されるフェイズpha、(i)は、(b)に示した拡大後の有効画像領域を示すマスク信号を3クロックディレイさせた信号であり、拡大処理された画像データの出力タイミングを示している。
また、図11(g)における(gA)、(gB)、(gC)、(gD)は、それぞれ図10を用いて説明した4点補間演算処理で入力されるデータA、B、C、Dを示している。
図11において、最も重要な信号は、図11(f)で示したタイミング信号であり、“偶数切り出し”の特徴を表している。このようなタイミング信号を生成してメモリ102からの輝度データYの読み出し、データバッファ61へバッファリングをすることで、“偶数切り出し”が実行されることになる。
図11(gB)は、データBに相当するため、上述したように、4点補間演算処理をする際のCubic関数の中心となる。したがって、最初の輝度データY0がデータバッファ61のフリップフロップを経由して、データBとなった時点で補間計算が開始される(ステップS1)。このとき、図11(gA)に示すように、データAに相当するデータがデータバッファ61に供給されていないため、データBと同じ輝度データY0が用いられることになる。したがって、ステップS1において補間関数ブロック62に4点補間演算を実行するために供給される輝度データを、データA、B、C、Dの順に示すと(Y0、Y0、Y1、Y2)のようになる。
逆説的になるが、図11(f)に示すタイミング信号は、このような輝度データの供給により補間演算ブロック62における演算が実行されるよう、ステップS1を開始するまでの初期化期間として、3クロック分のイニシャル(initial)信号を有している。このイニシャル信号の後の図11(f)に示されるタイミング信号は、ここでは、2倍の拡大率の逆数として示されるデルタ0.5を累積加算した際の、2回に1回ごとに発生するキャリーを示している。
このように、図11(f)に示すタイミング信号に応じて、データバッファ61にバッファリングされ(ステップS1〜ステップS7)、補間関数ブロック62にて補間演算処理が実行され、さらに、図11(gB)に示すように、データBとして8個目の輝度データである輝度データY7が供給され、バッファリングされ(ステップS8)、補間演算が実行されることで、1水平方向ラインの補間演算処理が終了することになる。
このときデータC、Dに相当するデータがデータバッファ61に供給されていないため、データBと同じ輝度データY7がどちらにも用いられることになる。したがって、ステップS8においてデータバファ61に4点補間演算を実行するために供給される輝度データは、データA、B、C、Dの順に示すと(Y6、Y7、Y7、Y7)のようになる。
以上が、“偶数切り出し”のバッファリング動作であり、このようにデータバッファ61にバッファリングされることにより、補間関数ブロック62で生成される補間演算処理された輝度データは、4:2:2フォーマットを崩すことがないため、非常に良好な画像を形成することができる。
図12(a)〜(i)は、“奇数切り出し”を実行する際のタイミングチャートであり、それぞれ以下に説明するような信号を示している。なお、説明のため、この“奇数切り出し”では、上述した図11を用いて示した“偶数切り出し”の後に、右水平方向に1ピクセル分移動させた画像を切り出すことを目的とする場合を例として挙げている。すなわち、上述した“偶数切り出し”では、輝度データY0〜Y7を切り出して、拡大補間処理を実行するが、この“奇数切り出し”では、輝度データY1〜Y8を切り出して拡大補間処理を実行する。
図12において、(a)は、水平拡大処理部13に供給される動作クロック信号、(b)は、拡大後の有効画像領域を示すマスク信号、(c)は、有効データの開始を示すフラグ信号、(d)は、あらかじめ拡大タイミングを加味した状態でメモリ102から読み出された輝度データY、(e)は、拡大前の有効画像領域を示すマスク信号、(f)は、メモリインターフェースブロック11へ供給したメモリ102から輝度データYを読み出す際のタイミング信号兼データバッファ61にバッファリングする際のタイミング信号、(g)は、データバッファ61にバッファリングされた輝度データY、(h)は、フェイズ計算ブロック51で生成されるフェイズpha、(i)は、(b)に示した拡大後の有効画像領域を示すマスク信号を4クロックディレイさせた信号であり、拡大処理された画像データの出力タイミングを示している。
また、図12(g)における(gA)、(gB)、(gC)、(gD)は、それぞれ図10を用いて説明した4点補間演算処理で入力されるデータA、B、C、Dを示している。
図12(e)は、上述した“偶数切り出し”における、図11(e)に相当するが、拡大前の有効画像領域を8ピクセルではなく10ピクセルとし、輝度データY1〜Y8の前後をそれぞれ1ピクセル分余分に確保している。これが、図5〜図8を用いて説明した4:2:2フォーマットを“奇数切り出し”する際の弊害を除去するための操作である。
図12(e)に示すマスク信号と同様に、重要な信号は、図12(f)で示したタイミング信号であり、“奇数切り出し”の特徴を表している。このようなタイミング信号を生成してメモリ102からの輝度データYの読み出し、データバッファ61へのバッファリングを実行することで、“奇数切り出し”が実行されることになる。
図12(gB)は、データBに相当するため、上述したように、4点補間演算処理をする際のCubic関数の中心となる。“奇数切り出し”において、輝度データY0、Y9は、Cubic関数の中心であるデータBとして用いられることはなく、あくまで補間要素として使用されることになる。
例えば、従来の技術においては、マスク信号によって、輝度データY1〜Y8のみが有効画像領域として指定され、データバッファ61にバッファリングされることになる。したがって、最初の4点補間演算を実行するためにデータバッファ61に供給される輝度データは、データAに供給される輝度データをデータBと重複させるため、データA、B、C、Dの順に示すと(Y1、Y1、Y2、Y3)のようになる。
一方、本発明の実施の形態として示す水平拡大処理部13では、最初の輝度データY0をデータバッファ61のフリップフロップを経由してデータBとせずに、そのままスルーして、データAとする。そして、次の輝度データY1がデータバッファ61のフリップフロップを経由して、データBとなった時点で補間計算が開始される(ステップS11)。このときデータAに相当するデータは、補間要素として確保された輝度データY0が用いられる。
したがって、ステップS11において補間関数ブロック62に4点補間演算を実行するために供給される輝度データは、データA、B、C、Dの順に示すと(Y0、Y1、Y2、Y3)のようになる。
逆説的になるが、図12(f)に示すタイミング信号は、このような輝度データの供給により補間演算ブロック62における演算が実行されるよう、ステップS11を開始するまでの初期化期間として、4クロック分のイニシャル(initial)信号を有している。このイニシャル信号の後の図12(f)に示されるタイミング信号は、ここでは、2倍の拡大率の逆数として示されるデルタ0.5を累積加算した際の、2回に1回ごとに発生するキャリーを示している。
このようにタイミング図12(f)に示すタイミング信号に応じて、データバッファ61にバッファリングされ(ステップS1〜ステップS7)、補間関数ブロック62にて補間演算処理が実行され、さらに図11(gB)に示すように、データBとして8個目の輝度データである輝度データY8が供給され、バッファリングされ(ステップS18)、補間演算が実行されることで、1水平方向ラインの補間演算処理が終了することになる。
このときデータC、Dに相当するデータが、データバッファ61に供給されていないため、輝度データY0と同様に補間要素として確保された輝度データY9が用いられることになる。したがって、ステップS18において、データバッファ61に、4点補間演算を実行するために供給される輝度データY9は、データA、B、C、Dの順に示すと(Y7、Y8、Y9、Y9)のようになる。
以上が、“奇数切り出し”のバッファリング動作であり、このようにデータバッファ61にバッファリングされることにより、補間関数ブロック62で生成される補間演算処理された輝度データは、4:2:2フォーマットを崩すことがないため、非常に良好な画像を形成することができる。
以上の結果をまとめると、図13に示すようになる。図13(a)に示すような4:2:2フォーマットの画像データを構成する輝度データY0、Y1、Y2・ ・ ・ ・Y9、Y10、Y11に対して、まず、始めに図13(b)に示す輝度データY0〜Y7までを指定したとする(偶数切り出し)。
次に、図13(c)に示すように、1ピクセルだけ水平右方向にシフトした輝度データY1〜Y8が指定されたとする(奇数切り出し)。このとき、データバッファ61にバッファリングさせる輝度データは、図13(d)に示すように輝度データY0〜Y9となる。この輝度データY0、Y9は、4:2:2フォーマットを維持するための補間要素として用いられる。
そして、図13(e)に示すように、さらに1ピクセルだけ水平右方向にシフトした輝度データY2〜Y9が指定されたとする(偶数切り出し)。
このようにして、“偶数切り出し”、“奇数切り出し”によって切り出された画像データから補間画像データを生成し、連続表示させた映像は、“偶数切り出し”ではもちろんのこと、“奇数切り出し”においても4:2:2フォーマットが崩されることがないため、非常に滑らかで高画質な映像となる。したがって、パンスキャン方式のアスペクト比変換を実行した場合には、従来までは、滑らかさに欠けていた動画像を、非常に滑らかな動画像に改善することができる。
続いて、図14、15に示すタイミングチャートを用いて、データバッファ61に入力する入力データのうち色差データCr、Cbに着目し、“偶数切り出し”、“奇数切り出し”における動作について説明をする。なお、図14、15に示すタイミングチャートは、一例として、8ピクセルの画像から、16ピクセルの画像へと2倍に拡大する場合について示している。なお、フェイズ計算ブロック50に供給される初期オフセットoffを“0”とし、拡大率delを“0.5”としている。
図14(a)〜(i)は、“偶数切り出し”を実行する際のタイミングチャートであり、それぞれ以下に説明するような信号を示している。
図14において、(a)は、水平拡大処理部13に供給される動作クロック信号、(b)は、拡大後の有効画像領域を示すマスク信号、(c)は、有効データの開始を示すフラグ信号、(d)は、あらかじめ拡大タイミングを加味した状態でメモリ102から読み出された輝度データY、(e)は、拡大前の有効画像領域を示すマスク信号、(f)は、メモリインターフェースブロック11へ供給したメモリ102から色差データCb、Crを読み出す際のタイミング信号兼データバッファ61にバッファリングする際のタイミング信号、(g)は、データバッファ61にバッファリングされた輝度データY、(h)は、フェイズ計算ブロック51で生成されるフェイズpha、(i)は、(b)に示した拡大後の有効画像領域を示すマスク信号を6クロックディレイさせた信号であり、拡大処理された画像データの出力タイミングを示している。
また、図14(g)における(gA)、(gB)、(gC)、(gD)は、それぞれ図10を用いて説明した4点補間演算処理で入力されるデータA、B、C、Dを示している。
図14において、最も重要な信号は、図14(f)で示したタイミング信号であり、“偶数切り出し”の特徴を表している。このようなタイミング信号を生成してメモリ102からの色差データCb、Crの読み出し、データバッファ61へのバッファリングを実行することで、“偶数切り出し”が実行されることになる。
図14(gB)は、データBに相当するため、上述したように、4点補間演算処理をする際のCubic関数の中心となる。したがって、最初の色差データCb0、Cr0がデータバッファ61のフリップフロップを経由して、データBとなった時点で補間計算が開始される(ステップS31)。このとき、図14(gA)に示すように、データAに相当するデータがデータバッファ61に供給されていないため、データBと同じ色差データCb0、Cr0が用いられることになる。したがって、ステップS31において補間関数ブロック62に4点補間演算を実行するために供給される輝度データを、データA、B、C、Dの順に示すと(Cb0:Cr0、Cb0:Cr0、Cb2:Cr2、Cb4:Cr4)のようになる。
逆説的になるが、図14(f)に示すタイミング信号は、このような輝度データの供給により補間演算ブロック62における演算が実行されるよう、ステップS31を開始するまで初期化の期間として、6クロック分のイニシャル(initial)信号を有している。このイニシャル信号の後の図14(f)に示されるタイミング信号は、ここでは、2倍の拡大率の逆数として示されるデルタ0.5を累積加算した際の、2回に1回ごとに発生するキャリーを示している。
このように、図14(f)に示すタイミング信号に応じて、データバッファ61にバッファリングされ(ステップS31〜ステップS37)、補間関数ブロック62にて補間演算処理が実行され、さらに、図14(gB)に示すように、データBとして8個目の輝度データである色差データCb6、Cr6が供給され、バッファリングされ(ステップS38)、補間演算が実行されることで、1水平方向ラインの補間演算処理が終了することになる。
このときデータC、Dに相当するデータがデータバッファ61に供給されていないため、データBと同じ色差データCb6、Cr6がどちらにも用いられることになる。したがって、ステップS38において、データバファ61に4点補間演算を実行するために供給される輝度データは、データA、B、C、Dの順に示すと(Cb4:Cr4、Cb6:Cr6、Cb6:Cr6、Cb6:Cr6)のようになる。
以上が、“偶数切り出し”のバッファリング動作であり、このようにデータバッファ61にバッファリングされることにより、補間関数ブロック62で生成される補間演算処理された輝度データは、4:2:2フォーマットを崩すことがないため、非常に良好な画像を形成することができる。
図15(a)〜(i)は、“奇数切り出し”を実行する際のタイミングチャートであり、それぞれ以下に説明するような信号を示している。なお、説明のため、この“奇数切り出し”では、上述した図14を用いて示した“偶数切り出し”の後に、右水平方向に1ピクセル分移動させた画像を切り出すことを目的とする場合を例として挙げている。すなわち、上述した“偶数切り出し”では、色差データCb0、Cr0〜Cb6、Cr6を切り出して、拡大補間処理を実行するが、この“奇数切り出し”では、色差データCr0、Cb2〜Cr6、Cb8を切り出して拡大補間処理を実行する。
図15において、(a)は、水平拡大処理部13に供給される動作クロック信号、(b)は、拡大後の有効画像領域を示すマスク信号、(c)は、有効データの開始を示すフラグ信号、(d)は、あらかじめ拡大タイミングを加味した状態でメモリ102から読み出された色差データCb、Cr、(e)は、拡大前の有効画像領域を示すマスク信号、(f)は、メモリインターフェースブロック11へ供給したメモリ102から色差データCb、Crを読み出す際のタイミング信号兼データバッファ61にバッファリングする際のタイミング信号、(g)は、データバッファ61にバッファリングされた色差データCb、Cr、(h)は、フェイズ計算ブロック51で生成されるフェイズpha、(i)は、(b)に示した拡大後の有効画像領域を示すマスク信号を4クロックディレイさせた信号であり、拡大処理された画像データの出力タイミングを示している。
また、図15(g)における(gA)、(gB)、(gC)、(gD)は、それぞれ図10を用いて説明した4点補間演算処理で入力されるデータA、B、C、Dを示している。
図15(e)は、上述した“偶数切り出し”における、図14(e)に相当するが、拡大前の有効画像領域を8ピクセルではなく10ピクセルとし、色差データCr0、Cb2〜Cr6、Cb8の前後をそれぞれ1ピクセル分余分に確保している。これが、図5〜図8を用いて説明した4:2:2フォーマットを“奇数切り出し”する際の弊害を除去するための操作である。
図15(e)に示すマスク信号と同様に、重要な信号は、図15(f)で示したタイミング信号であり、“奇数切り出し”の特徴を表している。このようなタイミング信号を生成してメモリ102からの色差データCb、Crの読み出し、データバッファ61へのバッファリングを実行することで、“奇数切り出し”が実行されることになる。
図15(gB)は、データBに相当するため、上述したように、4点補間演算処理をする際のCubic関数の中心となる。
例えば、従来の技術においては、マスク信号によって、色差データCr0、Cb2〜Cr6、Cb8のみが有効画像領域として指定され、データバッファ61にバッファリングされることになる。したがって、最初の4点補間演算を実行するためにデータバッファ61に供給される輝度データは、データAに供給される輝度データをデータBと重複させるため、データA、B、C、Dの順に示すと(Cr0:Cb2、Cr0:Cb2、Cr2:Cb4、Cr4:Cb6)のようになる。
一方、本発明の実施の形態として示す水平拡大処理部13では、“偶数切り出し”と同様に、最初の色差データCb0、Cr0がデータバッファ61のフリップフロップを経由して、データBとなった時点で補間計算が開始される(ステップS41)。このときデータAに相当するデータがデータバッファ61に供給されていないため、データBと同じ色差データCb0、Cr0が用いられることになる。
したがって、ステップS41において補間関数ブロック62に4点補間演算を実行するために供給される輝度データは、データA、B、C、Dの順に示すと(Cb0:Cr0、Cb0:Cr0、Cb2:Cr2、Cb4:Cr4)のようになる。
しかしながら、色差データの“奇数切り出し”では、フェイズの累積加算が、“偶数切り出し”と異なっている。“偶数切り出し”においては、フェイズを0、0.5、・ ・ ・と用いることになるが、“奇数切り出し”においては、右にシフトさせ、最初の4点による補間演算においてフェイズを0.5とし、次の4点による補間演算においてフェイズを0としている。したがって、最後の4点による補間演算では、フェイズを0としている。つまり、色差データの場合は、輝度データの場合と異なり、“偶数切り出し”、“奇数切り出し”の違いによってタイミング信号のイニシャル信号のクロック数に違いはなく、どちらも6クロック分有していることになる。
このようにタイミング図15(f)に示すタイミング信号に応じて、データバッファ61にバッファリングされ(ステップS41〜ステップS47)、補間関数ブロック62にて補間演算処理が実行され、さらに図15(gB)に示すように、データBとして8個目の色差データである色差データCb8、Cr8が供給され、バッファリングされ(ステップS48)、補間演算が実行されることで、1水平方向ラインの補間演算処理が終了することになる。
このときデータC、Dに相当するデータが、データバッファ61に供給されていないため、色差データCb8、Cr8が用いられることになる。したがって、ステップS48において、データバッファ61に、4点補間演算を実行するために供給される色差データは、データA、B、C、Dの順に示すと(Cb6:Cr6、Cb8:Cr8、Cb8:Cr8、Cb8:Cr8)のようになる。
以上が、“奇数切り出し”のバッファリング動作であり、このようにバッファリングされることにより、補間関数ブロック62で生成される補間演算処理された色差データは、4:2:2フォーマットを崩すことがないため、非常に良好な画像を形成することができる。
以上の結果をまとめると、図16に示すようになる。図16(a)に示すような4:2:2フォーマットの画像データを構成する色差データCb0、Cr0、Cb2、Cb2、Cb4、Cr4、Cb6、Cr6、Cb8、Cr8、Cb10、Cr10に対して、まず、始めに図16(b)に示す色差データCb0〜Cr6までを指定したとする(偶数切り出し)。
次に、図16(c)に示すように、1ピクセルだけ水平右方向にシフトした色差データCr0〜Cb8が指定されたとする(奇数切り出し)。このとき、データバッファ61にバッファリングさせる輝度データは、図16(d)に示すように色差データCb0〜Cr8となる。この色差データCb0、Cr8は、4:2:2フォーマットを維持するための補間要素として用いられる。
そして、図16(e)に示すように、さらに1ピクセルだけ水平右方向にシフトした色差データCb2〜Cr8が指定されたとする(偶数切り出し)。
このようにして、“偶数切り出し”、“奇数切り出し”によって拡大処理された画像データから補間画像データを生成し、連続表示させた映像は、“偶数切り出し”ではもちろんのこと、“奇数切り出し”においても4:2:2フォーマットが崩されることがないため、非常に滑らかで高画質な映像となる。したがって、パンスキャン方式のアスペクト比変換を実行した場合には、従来までは、滑らかさに欠けていた動画像を、非常に滑らかな動画像に改善することができる。
{タイミング信号生成ブロック50、フィルタ回路60の実装例}
以下に、図9に示した水平拡大処理部13の実装例を示す。図9に示したように水平拡大処理部13は、タイミング信号生成ブロック50と、フィルタ回路60とを備えている。
例えば、輝度データYに対しては、図17に示すようなタイミング信号生成ブロック50y、図18に示すようなフィルタ回路60yを実装することができる。
図17に示すように、タイミング信号生成ブロック50yは、入力された拡大率del、初期オフセットoffをセレクタSEL1によって切り換えながら累積計算を実行しフェイズphaを生成する。セレクタSEL1は、セレクタSEL3からの出力によって切り換えを行う。
図11(f)、図12(f)に示したタイミング信号のイニシャル(initial)信号は、有効画像領域の始まりにつけてある開始フラグ信号FSをディレイさせたものであり、“偶数切り出し”、“奇数切り出し”に応じたセレクタSEL2の切り換えによって、それぞれに対応したイニシャル信号が生成されることになる。このイニシャル信号は、論理回路LOG1に供給される。論理回路LOG1は、同じく供給されたフェイズphaのMSB(Most Significant Bit)、すなわち上述したキャリーと、供給されたイニシャル信号との論理和を取ることで、図11(f)、図12(f)として示したタイミング信号TSを生成する。
また、ディレイされた開始フラグ信号FSは、セレクタSEL3に供給され、その出力がSEL1の切り換えに作用する。セレクタSEL2、SEL3は、水平方向切り出し位置情報hpのlsbに応じて切り換えられる。
タイミング信号生成ブロック50yは、図11(e)、図12(e)に示した、拡大前の有効画像領域を示すマスク信号である拡大前有効画像領域バリッド信号BVSを生成する。
水平方向切り出し位置情報hpのlsbで切り換えられるセレクタSEL4は、水平方向切り出し幅情報hwと、水平方向切り出し幅情報hwを2ピクセル分拡張させた信号とのいずれかを出力する。そして、比較器CMP1による、SEL4の出力値と、タイミング信号TSで回るマスク信号生成カウンタCNT1のカウント値との比較結果が拡大前有効画像領域バリッド信号BVSになる。
また、図18に示すように、フィルタ回路60yは、入力データである輝度データYを、シフトレジスタREG1を介して、補間フィルタブロックCFB1に供給し、拡大補間処理を実行させる。フィルタ回路60yは、補間フィルタブロックCFB1で拡大補間処理された輝度データYを、水平方向切り出し位置情報hpのlsbによって動作するセレクタSEL5によって、セレクトし出力データとして出力する。
シフトレジスタREG1によるバッファリング処理は、拡大前リクエストバリッド信号RVSと、拡大前リクエスト信号RSとの論理回路LOG2による論理積に応じて実行される。また、バッファリングの初期化は、拡大後有効画像領域バリッド信号AVSの立ち上がりをトリガーにして実行される。この拡大後有効画像領域バリッド信号AVSは、システムレイテンシを考慮されることで、図11(i)、図12(i)に示された拡大後の有効画像領域を示すマスク信号として出力される。
また、色差データCb、Crに対しては、図19に示すようなタイミング信号生成ブロック50c、図20に示すようなフィルタ回路60cを実装することができる。
図19に示すように、タイミング信号生成ブロック50cは、入力された拡大率del、初期オフセットoffをセレクタSEL11によって切り換えながら累積計算を実行しフェイズphaを生成する。
図14(f)、図15(f)に示したタイミング信号のイニシャル(initial)信号は、有効画像領域の始まりにつけてある開始フラグ信号FSをディレイさせたものであり、論理回路LOG11に供給される。論理回路LOG11は、同じく供給されたフェイズphaのMSB(Most Significant Bit)、すなわち上述したキャリーと、供給されたイニシャル信号との論理和を取ることで、図14(f)、図15(f)として示したタイミング信号TSを生成する。
タイミング信号生成ブロック50cは、図14(e)、図15(e)に示した、拡大前の有効画像領域を示すマスク信号である拡大前有効画像領域バリッド信号BVSを生成する。
水平方向切り出し位置情報hpのlsbで切り換えられるセレクタSEL12は、水平方向切り出し幅情報hwと、水平方向切り出し幅情報hwを2ピクセル分拡張させた信号とのいずれかを出力する。そして、比較器CMP11による、セレクタSEL12の出力値と、タイミング信号TSで回るマスク信号生成カウンタCNT11のカウント値との比較結果が拡大前有効画像領域バリッド信号BVSになる。
また、図20に示すように、フィルタ回路60cは、入力データである色差データCb、Crを、シフトレジスタREG11を介して、補間フィルタブロックCFB11に供給し、拡大補間処理を実行させる。
シフトレジスタREG11によるバッファリング処理は、拡大前リクエストバリッド信号RVSと、拡大前リクエスト信号RSとの論理回路LOG12による論理積に応じて実行される。また、バッファリングの初期化は、拡大後有効画像領域バリッド信号AVSの立ち上がりをトリガーにして実行される。この拡大後有効画像領域バリッド信号AVSは、システムレイテンシを考慮されることで、図14(i)、図15(i)に示された拡大後の有効画像領域を示すマスク信号として出力される。
なお、上述した水平拡大処理部13の実装例は、一例であって本発明を限定するものではなく、本発明の要旨を逸脱しない範囲内であれば、どのような実装形式であってもよい。
11 メモリインターフェース、12 垂直方向拡大処理部、13 水平方向拡大処理部、30 輝度・色差データ、50 タイミング信号生成ブロック、51 フェイズ計算ブロック、52 初期化タイミング信号生成ブロック、53 マスク信号生成ブロック、60 フィルタ回路、61 データバッファ、62 補間関数ブロック、63 ディレイ調整ブロック、100 映像信号処理装置、101 ストリームデータ処理部、102 メモリ、103 画質改善処理部、104 OSD(On Screen Display)、105 CPU(Central Processing Unit)