画像処理装置
【課題】拡大縮小変換等の座標変換を行っても画像が乱れることのない画像処理装置を提供する。
【解決手段】表示画像がインタレース方式の2ndフィールドの画像である場合には第1のオフセット補正部12でoffset_1によるオフセット補正を行う。また、キャプチャ画像がインタレース方式の2ndフィールドの画像である場合には第2のオフセット補正部14でoffset_2によるオフセット補正を行う。第1のオフセット補正部12、座標変換部13、第2のオフセット補正部14による座標変換は、元の1フレームの画像を基準とした座標変換となり、本来表示すべき正確な座標の画像データを表示することができる。
【解決手段】表示画像がインタレース方式の2ndフィールドの画像である場合には第1のオフセット補正部12でoffset_1によるオフセット補正を行う。また、キャプチャ画像がインタレース方式の2ndフィールドの画像である場合には第2のオフセット補正部14でoffset_2によるオフセット補正を行う。第1のオフセット補正部12、座標変換部13、第2のオフセット補正部14による座標変換は、元の1フレームの画像を基準とした座標変換となり、本来表示すべき正確な座標の画像データを表示することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ビデオメモリ上に記憶された画像の座標変換を行い表示領域に表示させる画像処理装置に関する。
【背景技術】
【0002】
映像の走査方式には画面を構成する全走査線1本おきに2つのフィールドに分割して走査を行うインタレース方式と、一度に全走査線を走査するプログレッシブ方式とが知られている。また、同じインタレース方式においても、60Hzのフィールド周期であるNTSC(National Television Standards Committee)形式や50Hzのフィールド周期であるPAL(Phase Alternation by Line)方式など、表示周期の異なる映像が用いられている。
【0003】
従来の画像処理装置においては、走査方式や表示周期の異なる映像に変換する機能を備えているものが知られており、このような変換機能ではビデオメモリ上に記憶された画像の座標変換を行い表示領域に表示させる必要がある。
【特許文献1】特開2004−147285号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、キャプチャされた画像がインタレース方式の2ndフィールドの画像である場合は、その画像の原点は1フレームの元画像の原点とは異なるため、2ndフィールドの画像の原点を基準として拡大縮小の処理を行うと本来読み出すべき座標とは異なる座標の画像データが読み出され表示される。
【0005】
そのため、従来の画像処理装置では、拡大縮小変換等の座標変換を行った後の画像が乱れることがあるという課題があった。
本発明は上記事情を考慮してなされたもので、その目的は、拡大縮小変換等の座標変換を行っても画像が乱れることのない画像処理装置を提供することにある。
【課題を解決するための手段】
【0006】
本発明は上記の課題を解決するためになされたもので、請求項1に記載の発明は、ビデオメモリに記憶された画像データを読み出して表示領域に表示させる画像処理装置において、前記表示領域に表示する画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する表示画像判定手段と、前記表示画像判定手段で2ndフィールドの画像データであると判定された場合に、前記表示領域上の座標に対して第一のオフセットを加算する第一のオフセット加算手段と、前記オフセット加算後の座標に対して所定の座標変換を行う座標変換手段と、前記ビデオメモリに記憶された画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する記憶画像判定手段と、前記記憶画像判定手段で2ndフィールドの画像データであると判定された場合に、前記座標変換手段で座標変換後の座標に対して第二のオフセットを加算する第二のオフセット加算手段と、前記第二のオフセット加算手段で加算後の座標で示される画像データを前記表示領域上の座標で表示する画像データとして前記ビデオメモリから読み出す画像読み出し手段とを具備することを特徴とする。
【0007】
また、請求項2に記載の発明は、請求項1に記載の発明において、前記第一のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする。
【0008】
また、請求項3に記載の発明は、請求項1又は請求項2に記載の発明において、前記第二のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする。
【発明の効果】
【0009】
本発明によれば、表示画像がインタレース方式の2ndフィールドの画像である場合には第一のオフセット加算手段で第一のオフセットを加算し、キャプチャ画像がインタレース方式の2ndフィールドの画像である場合には第二のオフセット加算手段で第二のオフセットを加算する。このため、本発明の画像処理装置による座標変換は、元の1フレームの画像を基準とした座標変換となり、本来表示すべき正確な座標の画像データを表示することができる。
【発明を実施するための最良の形態】
【0010】
以下、図面を参照して本発明の実施形態について説明する。
図1は、本発明の一実施形態に係るVDP(Video Display Processor:画像処理装置)の構成を示す構成図である。図1において、VDP1は映像入力信号をキャプチャし、画像データとしてビデオメモリ3に書き込んだ後に表示解像度に合わせてモニタ(図示せず)に表示させるものである。また、VDP1はCPU(Central Processing Unit)2から描画コマンドを入力し映像入力に対するOSD(On Screen Display)表示を行う機能を備える。
【0011】
なお、描画コマンドとして、例えば、LINEコマンド、FILLコマンド、COPYコマンドがある。LINEコマンドは始点と終点を指定して直線の描画を行うためのコマンドであり、FILLコマンドは矩形領域を指定して塗りつぶしを行うためのコマンドである。COPYコマンドは、転送元のアドレスと転送先のアドレスとを指定してビデオメモリ空間内でデータのコピーを行うためのコマンドである。さらに、COPYコマンドにはフォーマット変換を指定する情報と透明色制御及びαブレンディングの設定情報も含まれる。ただし、描画コマンドはこれらに限定されない。
【0012】
本実施形態では、VDP1はビデオメモリ3内に3つの記憶領域(以下では、トリプルバッファと呼ぶ。)を確保し、キャプチャした画像データを記憶させる。VDP1はトリプルバッファのそれぞれにキャプチャした画像データを順次書き込み、その後CPC105は表示タイミングに合わせてトリプルバッファから順次読み出す。
【0013】
VDP1内のCPUインターフェースモジュール101は、CPU2との間の通信を司るものであり、CPU2から入力した描画コマンドをDPU106に出力する機能や、CPU2からビデオメモリ3へのアクセスを制御する機能を備える。VRAMインターフェースモジュール102は、VDP1内の各部からビデオメモリ3へのアクセスを制御するものである。
【0014】
VDU(Video Decoder Unit)103は、アナログ映像信号を入力し、デジタル映像データへと変換するものである。VCC(Video Capture Controller)104は、VDC103から出力されるデジタル映像データ又は外部から直接デジタルデータとして入力される映像データのキャプチャを行い、画像データとしてビデオメモリ3に書き込むものである(画像書き込み手段)。なお、VDC102のデコーダ回路及びVCC104のキャプチャ回路はそれぞれ2回路ずつ備えており、2チャネルの映像入力を同時にキャプチャすることができる。
【0015】
CPC(Capture Plane Controller)105は、ビデオメモリ3から画像データを読み出し(画像読み出し手段)、PDC108へと出力するものである。DPU(Drawing Processor Unit)106は、CPUインターフェースモジュール101から入力した描画コマンドを解釈し、ビデオメモリ3内に直線や矩形を描画したり、描画したデータに対して所定の処理を行うものである。なお、CPU2は、描画コマンドを使わずに直接ビデオメモリ3内に描画することもできる。
【0016】
OSDプレーンコントローラ107は、OSD画像として表示させるデータをビデオメモリ3から読み出し、PDC108へ出力するものである。PDC(Pixel Data Controller)108は、外部から入力されたデジタル映像と、VDU103でデコード後のデジタル映像と、CPC105から出力されるキャプチャ映像と、OSDプレーンコントローラ107から出力されるOSD画像とを入力し、各プレーンのフォーマットを統一し、表示の優先順位及びαブレンディングの設定等に基づいて合成処理を行うものである。
【0017】
なお、「表示プレーン」の用語は、1つの矩形状表示データを外部表示装置の所定の場所に、所定のサイズで表示するために必要な全ての構成を包括したものを示すとともに、外部表示装置に供給される表示データそのものも示している。
【0018】
VDP1では、外部から入力された映像を表示するバックドロップ面と、キャプチャ映像を表示する2つの表示プレーンと、OSD画像を表示する2つの表示プレーンによる階層表示が可能であり、PDC108は合計4つの上記表示プレーンとバックドロップ面の合成処理を行う。
【0019】
PDC108は、合成後のデジタル画像をそのまま外部に出力すると同時に、DAC(Digital-to-Analog Converter)109を介してアナログ映像信号を出力する。CRTコントローラ110は、モニタで表示する際のタイミング信号を出力し、また、モニタ表示に関する情報をVDP1内の各部へ出力する。クロックジェネレータ111は、VDP1内の各部で使用するクロックを生成するものである。
【0020】
次に、上述した実施形態の動作を、図2から図14を参照して説明する。
図2は、VDP1におけるキャプチャ及び表示のモードとトリプルバッファのインクリメントとの対応関係を示す図であり、図3は図2で示した各描画モードの機能を示す図であり、図4は図2で示した各モードにおいて、ビデオメモリ3内におけるキャプチャされた画像データの記憶領域を示す図である。
【0021】
図2において、VCC104がプログレッシブ方式でキャプチャを行う場合、描画モードC*DM[1:0]の指定は行わない。このとき、図4(a)に示すように、ビデオメモリ3内においては1フレームのキャプチャ画像データがトリプルバッファの1つに記憶される。
【0022】
なお、図4(a)においては、トリプルバッファとして1つのビデオメモリ領域のみを表示しているが、実際にはアドレス空間(即ち描画領域)の異なる3つのビデオメモリ領域がビデオメモリ3内に存在する。図4(b)〜(d)に関しても同様である。
【0023】
VCC104がプログレッシブ方式でキャプチャを行い、CPC105がプログレッシブ方式で表示を行う場合(図2の設定1)、CPC105は表示のフレーム単位でインクリメントを行い、ビデオメモリ3から画像データを読み出すトリプルバッファのアドレスを切り替える。
【0024】
VCC104がプログレッシブ方式でキャプチャを行い、CPC105がインタレース方式で表示を行う場合(図2の設定2)、CPC105は表示のフィールド単位でインクリメントを行い、ビデオメモリ3から画像データを読み出すトリプルバッファのアドレスを切り替える。
【0025】
一方、VCC104がインタレース方式でキャプチャを行う場合、ビデオメモリへの記憶方法によって3種類の描画モードC*DM[1:0]を選択する。描画モードとしてC*DM[1:0]=2’b0*を選択した場合、VCC104はフィールド単位でキャプチャを行い、図4(b)に示すように、1stフィールドの画像データと2ndフィールドの画像データとをビデオメモリ3内の同一領域に格納する。
【0026】
描画モードとしてC*DM[1:0]=2’b10を選択した場合、VCC104はフレーム単位でキャプチャを行い、図4(c)に示すように、1stフィールドの画像データと2ndフィールドの画像データとをビデオメモリ3内の別領域に格納する。
【0027】
描画モードとしてC*DM[1:0]=2’b11を選択した場合、VCC104はフレーム単位でキャプチャを行い、図4(d)に示すように、1stフィールドの画像データと2ndフィールドの画像データとをビデオメモリ3内の領域にライン毎に交互に格納する。
【0028】
VDP1において、図2に示したどの設定を使用するかはCPU2からコマンドを入力することで指定され、VCC104は指定された設定にしたがって画像データのキャプチャを行う。また、VCC104は、CRTコントローラ110から表示映像の周期に関するタイミング情報を入力し、キャプチャを行うタイミングと表示を行うタイミングの管理を行う。
【0029】
一方、CPC105は、VCC104からどのトリプルバッファから画像データを読み出すかの指示を入力し、CPU2から指定された設定にしたがって画像データを読み出す。
【0030】
続いて、VCC104がビデオメモリ3内のトリプルバッファにキャプチャした画像データを書き込む際の処理について図5のフローチャートを参照して説明する。
以下では、トリプルバッファを構成する3つの描画領域(画像記憶領域)を描画領域_0、描画領域_1、描画領域_2とし、VCC104は描画領域_0、描画領域_1、描画領域_2、描画領域_0、…の順序で3つの描画領域に順次キャプチャした画像データを書き込む。
【0031】
本実施形態では、変数nを用いて、描画領域_0、描画領域_1、描画領域_2を「描画領域_n」と表す。ここで、変数nは、0、1、2の何れかの値をとり、後述する各描画領域をアクセスする過程で変数nをインクリメントすることにより、nの値は、0、1、2、0、1、2、0…というように0から2の間を巡回する。そこで、説明の便宜上、n=2のときにn+1は0を表し、n=0のときにn−1は2を表すものと定義する。即ち、上記巡回数値列において、n=2のときに変数nをインクリメントすると変数nは0になり、n=0のときに変数nをデクリメントすると変数nは2になる。
なお、本実施形態では、三つの描画領域_0、描画領域_1、描画領域_2を例としているが、これに限定されず、必要に応じて描画領域の数を増やしてもよい。その場合、描画領域の数に応じてビデオメモリ3内のバッファの数も増やせばよい。
【0032】
VCC104がビデオメモリ3内のトリプルバッファに画像データを書き込む場合、即ちトリプルバッファの描画領域_n(描画領域_0、描画領域_1、描画領域_2のうちの任意の1つ)に画像データを書き込む場合、図5において、VCC104は、CRTコントローラ110から入力する表示映像の周期に関するタイミング情報に基づいてCPC105が描画領域_nを読み出し中かどうかを判断する(ステップS501)。
【0033】
CPC105で描画領域_nから画像データが読み出されていると判断した場合は(ステップS501:Yes)、VCC104はキャプチャ映像の次の周期におけるキャプチャを中止し、トリプルバッファへの書き込みを行わない(ステップS503)。
【0034】
その後、VCC104はnをインクリメントせず、1フレーム(又は1フィールド)の書き込みが終了したか否かを判断する(ステップS505)。ここで、書き込み終了でない場合は(ステップS505:No)、再びステップS501に戻って同じ描画領域から画像データが読み出し中かどうかを再び判断する。
【0035】
一方、CPC105で描画領域_nからは画像データが読み出されていないと判断した場合は(ステップS501:No)、VCC104はキャプチャした画像データを描画領域_nに書き込む(ステップS502)。そして、VCC104はnのインクリメントを行い(ステップS504)、再びステップS501に戻って次の描画領域が読み出し中かどうかを判断し、同様の処理を実行する。
【0036】
以後、書き込み終了でない間は(ステップS505:No)、ステップS501〜S505を繰り返し実行し、VCC104は描画領域_0〜描画領域_2に順次キャプチャした画像データの書き込みを行い、描画領域_2の書き込みが終了すると、再び描画領域_0に戻って同様の書き込みを繰り返す。
【0037】
上述の一連のループ処理において、ステップS505において書き込み終了と判断されると(ステップS505:Yes)、1フレーム(又は1フィールド)分の画像の書き込みが完了するが、その後、次のフレーム(又はフィールド)の画像を書き込むために同様の処理が繰り返される。なお、ステップS504におけるインクリメントでは、前述のように、n=2のインクリメントはn=0とし、インクリメントの操作によりn=0、1、2、0、…の順に変化する。
【0038】
以上述べたように、VCC104は、キャプチャした画像データのトリプルバッファへの書き込みが終了した時点で、次に書き込むべきトリプルバッファがCPC105により読み出されている場合には次のキャプチャを中止する。なお、特許請求の範囲に記載の第一の判定手段とは、ステップS501において、VCC104が描画領域_nから画像データが読み出されていないかを判定する機能を指す。
【0039】
続いて、CPC105がビデオメモリ3内のトリプルバッファから画像データを読み出す際の処理について図6のフローチャートを参照して説明する。
図5と同様に、トリプルバッファを構成する3つの描画領域を描画領域_0、描画領域_1、描画領域_2とし、CPC105は描画領域_0、描画領域_1、描画領域_2、描画領域_0、…の順序で3つの描画領域から順次画像データを読み出す。変数nの定義についても同様とする。
【0040】
CPC105がビデオメモリ3内のトリプルバッファから画像データを読み出す場合、即ちトリプルバッファの描画領域_n(描画領域_0、描画領域_1、描画領域_2のうちの任意の1つ)から画像データを読み出す場合、図6において、VCC104が描画領域_nに書き込み中かどうかを判断し(ステップS601)、その描画領域_nに書き込み中である場合は(ステップS601:Yes)、CPC105が同じ描画領域_nから読み出しを行うとティアリングが発生するため、VCC104はCPC105に対して描画領域_n−1を読み出すよう指示する。CPC105がVCC104からの指示を入力すると、描画領域_n−1で記憶された画像データを再度読み出す(ステップS603)。即ち、前回の読み出し時に読み出しの対象となっていた描画領域_n−1と同じ描画領域の画像データが続けて読み出される。
【0041】
その後、CPC105はnをインクリメントせず、1フレーム(又は1フィールド)の読み出しが終了したかどうかを判断する(ステップS605)。ここで、読み出し終了でない場合は(ステップS605:No)、再びステップS601に戻って次の描画領域が書き込み中かどうかを判断し、同様の処理を実行する。
【0042】
一方、VCC104が描画領域_nに書き込みを行っていない場合は(ステップS601:No)、CPC105が画像データを描画領域_nから読み出す(ステップS602)。そして、CPC105はnのインクリメントを行い(ステップS604)、再びステップS601に戻って次の描画領域へ書き込み中かどうかを判断し、同様の処理を実行する。
【0043】
以後、読み出し終了でない間は(ステップS605:No)、ステップS601〜S605を繰り返し実行し、CPC105は描画領域_0〜描画領域_2から順次画像データの読み出しを行う。上述の一連のループ処理において、読み出し終了と判断されると(ステップS605:Yes)、1フレーム(又は1フィールド)分の画像の読み出しが完了するが、その後、次のフレーム(又はフィールド)の画像を読み出すために同様の処理が繰り返される。
【0044】
以上述べたように、CPC105は、トリプルバッファから画像データの読み出しが終了した時点で、次に読み出すべきトリプルバッファがVCC104により書き込まれている場合には前回と再び同じトリプルバッファの画像データの読み出しを行う。なお、特許請求の範囲に記載の第二の判定手段とは、ステップS602において、CPC105がVCC104からの入力に基づいて、描画領域_nに画像データが書き込まれていないかを判定する機能を指す。
また、上述の図5及び図6のフローは、1フレーム(またはフィールド)分の画像処理のフローを表すものとしたが、これに限定されない。
【0045】
次に、図5及び図6で述べたVCC104及びCPC105における処理を図7から図14を参照して具体的に説明する。
図7は、図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より短い場合の例である。
【0046】
図7において、時刻t101〜t103で、CPC105は描画領域_0の画像データを読み出して表示させる。一方、時刻t102〜t103で、VCC104は描画領域_2にキャプチャした画像データを書き込む。
【0047】
時刻t103の時点ではVCC104が次に書き込むべき描画領域_0はCPC105により読み出されていないため、図5のステップS502における判定はNoであり、時刻t103〜t104で、VCC104は描画領域_0にキャプチャした画像データを書き込む。
【0048】
同じ時刻t103の時点ではCPC105が次に読み出すべき描画領域_1はVCC104により書き込まれていないため、図6のステップS602における判定はNoであり、時刻t103〜t105で、CPC105は描画領域_1から画像データを読み出す。
【0049】
時刻t104の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されているため、図5のステップS502における判定はYesであり、VCC104は次の1周期(時刻t104〜t106)におけるキャプチャは行わない。VCC104は、その次のフレーム周期のタイミング(t106〜t108)で描画領域_1にキャプチャした画像データを書き込む。
【0050】
このように、キャプチャ映像フレーム周期が表示フレーム周期より短い場合には、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0051】
図8は、図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より長い場合の例である。
【0052】
図8において、時刻t201〜t203で、VCC104は描画領域_0にキャプチャした画像データ書き込む。一方、時刻t202〜t203で、CPC105は描画領域_2から画像データを読み出す。
【0053】
時刻t203の時点ではCPC105が次に読み出すべき描画領域_0はVCC104により書き込まれていないため、図6のステップS602における判定はNoであり、時刻t203〜t204で、CPC105は描画領域_0から画像データを読み出す。
【0054】
同じ時刻t203の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されていないため、図5のステップS502における判定はNoであり、時刻t203〜t205で、VCC104は描画領域_1にキャプチャした画像データを書き込む。
【0055】
時刻t204の時点ではCPC105が次に読み出すべき描画領域_1はVCC104により書き込まれているため、図6のステップS602における判定はYesであり、CPC105は次の1周期(時刻t204〜t206)で再び描画領域_0から画像データを読み出す。CPC105は、その次のフレーム周期のタイミング(t206〜t208)で描画領域_1から画像データを読み出す。
【0056】
このように、キャプチャ映像フレーム周期が表示フレーム周期より長い場合には、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0057】
図9は、図2の設定2におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フィールド周期より短い場合の例である。図9は、プログレッシブ方式からインタレース方式に変換する処理であり、例えば60Hzのプログレッシブ映像信号を50HzのPAL形式の映像信号に変換する場合の処理である。
【0058】
図9において、VCC104は、時刻t301〜t303では描画領域_0に、時刻t303〜t305では描画領域_1に、時刻t305〜t307では描画領域_2に、時刻t307〜t308では描画領域_0にキャプチャした画像データを書き込む。
【0059】
一方、CPC105は、時刻t304〜t306では描画領域_0から1stフィールドのデータとして、時刻t306〜t309では描画領域_1から2ndフィールドのデータとして画像データを読み出す。
【0060】
時刻t308の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されているため、VCC104は次の1周期(時刻t308〜t310)におけるキャプチャは行わない。VCC104は、その次のフレーム周期のタイミング(t310〜t312)で描画領域_1にキャプチャした画像データを書き込む。
【0061】
図9においても、図7と同様に、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0062】
図10は、図2の設定3におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フレーム周期より長い場合の例である。図10は、インタレース方式からプログレッシブ方式に変換する処理であり、例えば50HzのPAL形式の映像信号を60Hzのプログレッシブ映像信号に変換する場合の処理である。
【0063】
図10において、VCC104は、時刻t401〜t403では描画領域_0に1stフィールドの画像データを、時刻t403〜t405では描画領域_1に2ndフィールドの画像データを、時刻t405〜t408では描画領域_2に1stフィールドの画像データをキャプチャして書き込む。
【0064】
一方、CPC105は、時刻t402〜t404では描画領域_2から、時刻t404〜t406では描画領域_0から、時刻t406〜t407では描画領域_1から画像データを読み出す。
【0065】
時刻t407の時点ではCPC105が次に読み出すべき描画領域_2はVCC104により書き込まれているため、CPC105は次の1周期(時刻t407〜t409)で再び描画領域_1から画像データを読み出す。CPC105は、その次のフレーム周期のタイミング(t409〜t411)で描画領域_2から画像データを読み出す。
【0066】
図10においても、図8と同様に、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0067】
図11は、図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より短い場合の例である。図11は、インタレース方式の映像形式を変換する処理であり、例えば60HzのNTSC形式の映像信号を50HzのPAL形式の映像信号に変換する場合の処理である。
【0068】
図11において、VCC104は、時刻t501〜t503では描画領域_0に1stフィールドの画像データを、時刻t503〜t505では描画領域_1に2ndフィールドの画像データを、時刻t505〜t507では描画領域_2に1stフィールドの画像データを、時刻t507〜t508では描画領域_1に2ndフィールドの画像データをキャプチャして書き込む。
【0069】
一方、CPC105は、時刻t504〜t506では描画領域_0から1stフィールドのデータとして、時刻t506〜t509では描画領域_1から2ndフィールドのデータとして画像データを読み出す。
【0070】
時刻t508の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されているため、VCC104は次の1周期(時刻t508〜t510)におけるキャプチャは行わない。VCC104は、その次のフィールド周期のタイミング(t510〜t512)で描画領域_1にキャプチャした画像データを書き込む。
【0071】
時刻t510以降、再びキャプチャが停止する時刻t519までにVCC104によりキャプチャされた画像データは、CPC105が読み出す時には1stフィールドと2ndフィールドが逆転する。また、VCC104におけるキャプチャの停止は1フィールド単位となり、2フィールド連続してキャプチャが停止することはない。
【0072】
図11においても、図7と同様に、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0073】
図12は、図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より短い場合の例である。図12は、インタレース方式の映像形式を変換する処理であり、例えば60HzのNTSC形式の映像信号を50HzのPAL形式の映像信号に変換する場合の処理である。
【0074】
図12において、VCC104は、時刻t601〜t603では描画領域_0に1stフィールド及び2ndフィールドの画像データを連続してキャプチャし、時刻t603〜t604では描画領域_1に1stフィールド及び2ndフィールドの画像データを連続してキャプチャする。一方、CPC105は、時刻t602〜t605で描画領域_2から1stフィールド及び2ndフィールドの画像データを連続して読み出す。
【0075】
時刻t604の時点ではVCC104が次に書き込むべき描画領域_2はCPC105により読み出されているため、VCC104は次の1周期(時刻t604〜t606)におけるキャプチャは行わない。VCC104は、その次のフレーム周期のタイミング(t606〜t608)で描画領域_2にキャプチャした画像データを書き込む。
【0076】
図11に示した場合と異なり、図12ではフレーム単位でトリプルバッファへの書き込み・読み出しを行うため、VCC104によりキャプチャされた画像データは、CPC105が読み出す時に1stフィールドと2ndフィールドが逆転することはない。また、VCC104におけるキャプチャの停止は2フィールド単位となり、1フレーム連続してキャプチャが停止する。
【0077】
図12においても、図7と同様に、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0078】
なお、図2の設定6又は8の何れを選択した場合においても、キャプチャ及び表示のタイミングは同じであるが、設定8ではビデオメモリ3上で1stフィールドと2ndフィールドとを交互に配置して1つの画像として記憶するため、特に静止画像を表示させる場合において、設定6を用いる場合より解像度を高くすることができる。
【0079】
一方、設定6ではビデオメモリ3上で1stフィールドと2ndフィールドとを別々に記憶するため、動きの激しい動画像を表示する際に適している。本実施形態ではビデオメモリ3への記憶方法として、フィールド毎に別の領域に記憶する方法と、1つの領域にライン毎交互に記憶する方法の何れかを選択可能であるため、表示画像に合わせて適切な方法を選択することができる。
【0080】
図13は、図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より長い場合の例である。図13は、インタレース方式の映像形式を変換する処理であり、例えば50HzのPAL形式の映像信号を60HzのNTSC形式の映像信号に変換する場合の処理である。
【0081】
図13において、VCC104は、時刻t701〜t703では描画領域_0に1stフィールドの画像データを、時刻t703〜t705では描画領域_1に2ndフィールドの画像データを、時刻t705〜t708では描画領域_2に1stフィールドの画像データをキャプチャして書き込む。
【0082】
一方、CPC105は、時刻t702〜t704では描画領域_2から2ndフィールドのデータとして、時刻t704〜t706では描画領域_0から1stフィールドのデータとして、時刻t706〜t707では描画領域_1から2ndフィールドのデータとして画像データを読み出す。
【0083】
時刻t707の時点ではCPC105が次に読み出すべき描画領域_2はVCC104により書き込まれているため、CPC105は次の1周期(時刻t707〜t709)で再び描画領域_1から1stフィールドのデータとして画像データを読み出す。CPC105は、その次のフィールド周期のタイミング(t709〜t711)で描画領域_2から2ndフィールドのデータとして画像データを読み出す。
【0084】
時刻t707以降、再び連続して同じトリプルバッファを読み出す時刻t718までにCPC105により読み出された画像データは、VCC104がキャプチャした画像から1stフィールドと2ndフィールドが逆転したものとなる。
【0085】
図13においても、図8と同様に、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0086】
図14は、図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より長い場合の例である。図14は、インタレース方式の映像形式を変換する処理であり、例えば50HzのPAL形式の映像信号を60HzのNTSC形式の映像信号に変換する場合の処理である。
【0087】
図14において、VCC104は、時刻t801〜t803では描画領域_0に1stフィールド及び2ndフィールドの画像データを、時刻t803〜t805では描画領域_1に1stフィールド及び2ndフィールドの画像データを、時刻t805〜t807では描画領域_2に1stフィールド及び2ndフィールドの画像データを、時刻t807〜t810では描画領域_0に1stフィールド及び2ndフィールドの画像データを連続してキャプチャする。
【0088】
一方、CPC105は、時刻t802〜t804では描画領域_2から1stフィールド及び2ndフィールドの画像データを、時刻t804〜t806では描画領域_0から1stフィールド及び2ndフィールドの画像データを、時刻t806〜t808では描画領域_1から1stフィールド及び2ndフィールドの画像データを、時刻t808〜t809では描画領域_2から1stフィールド及び2ndフィールドの画像データを、連続して読み出す。
【0089】
時刻t809の時点ではCPC105が次に読み出すべき描画領域_0はVCC104により書き込まれているため、CPC105は次の1周期(時刻t809〜t811)で再び描画領域_2から1stフィールド及び2ndフィールドの画像データを連続して読み出す。CPC105は、その次のフレーム周期のタイミング(t811〜t813)で描画領域_0から1stフィールド及び2ndフィールドの画像データを連続して読み出す。
【0090】
図14においても、図8と同様に、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0091】
このように、本実施形態ではビデオメモリ3上に構成した3つの描画領域(トリプルバッファ)にVCC104がキャプチャした画像データを順次書き込み、CPC105が画像データを順次読み出す構成とし、VCC104による書き込み処理がCPC105による読み出し処理に追いついた場合にはキャプチャを1周期停止し、逆にCPC105による読み出し処理がVCC104による書き込み処理に追いついた場合には同じ描画領域を続けて読み出すようにすることで、CPC105による描画領域からの読み出し処理中に、VCC104が該描画領域に書き込みを行うことがなくなり、ティアリングを防止することができる。
【0092】
上述した図7〜図14の処理において、プログレッシブ方式からインタレース方式への変換、インタレース方式からプログレッシブ方式への変換、NTSC形式からPAL形式への変換、PAL形式からNTSC形式への変換においては、画像の拡大縮小の操作が発生する。
【0093】
このため、図15に示すように、CPC105は表示プレーン領域に表示する座標(X,Y)から表示データの座標(x,y)を算出し、CPC105はこの座標(x,y)の位置の画像データをトリプルバッファから読み出す必要がある。
【0094】
SxをX方向の拡大縮小補正係数、SyをY方向拡大縮小補正係数とおくと、CPC105は、以下の(1)式及び(2)式の演算を行い、表示データの座標(x,y)を求める。
x=X×Sx … (1)
y=Y×Sy … (2)
【0095】
しかし、キャプチャされた画像がインタレース方式の2ndフィールドの画像である場合は、その画像の原点は1フレームの元画像の原点とは異なるため、2ndフィールドの画像の原点を基準として拡大縮小の処理を行うと本来読み出すべき座標とは異なる座標の画像データがCPC105から読み出される。
【0096】
同様に、表示する画像がインタレース方式の2ndフィールドの画像である場合においても、その画像の原点は1フレームの表示画像の原点とは異なるため、2ndフィールドの画像の原点を基準として拡大縮小の処理を行うと本来読み出すべき座標とは異なる座標の画像データがCPC105から読み出される。
【0097】
さらに、図11及び図13で前述したように、キャプチャした1stフィールドの画像を2ndフィールドとして表示する場合、またはキャプチャした2ndフィールドの画像を1stフィールドとして表示する場合においても、1stフィールドの画像の原点と2ndフィールドの画像の原点が異なるために、本来読み出すべき座標とは異なる座標の画像データがCPC105から読み出される。
【0098】
以下では、キャプチャする画像又は表示する画像がインタレース方式の2ndフィールドの画像である場合においても、拡大縮小後の座標が本来表示すべき座標となるように補正する方法に関して、図16及び図17を参照して説明する。
【0099】
図16(a)において、VCC104がインタレース方式の画像をフィールド単位でキャプチャし、ビデオメモリ3上のトリプルバッファに書き込むと、フィールド単位で書き込まれた画像のy軸方向のサイズは元画像の1/2となる。
【0100】
このとき、元画像の原点のy座標y0は、1stフィールドの画像の原点と一致するが、2ndフィールドの画像の原点とは一致しない。2ndフィールドの座標の原点を0とおくと、y0は−0.5の位置となる。すなわち、元画像の原点y0を基準とする座標y´は、y´=y+0.5により求められる。
【0101】
したがって、(2)式において、yをy´に置き換えることで元画像の原点y0を基準として拡大縮小を行う計算式となる。
y´=Y×Sy … (3)
ここで、y´=y+0.5を(3)式に代入すると(4)式となり、CPC105は(2)式による演算結果から−0.5を加算する補正を行うことで元画像の原点y0を基準として拡大縮小を行うことができる。
y=Y×Sy−0.5 … (4)
【0102】
(4)式は、例えば、図10の時刻t403〜t405でキャプチャした2ndフィールドの画像データを時刻t406〜t407で表示する際に、CPC105が描画領域_1から画像データを読み出すアドレス(x,y)を算出するのに用いる。
【0103】
一方、図16(b)において、CPC105がインタレース方式の画像を表示する場合、フィールド毎の表示画像のY軸方向のサイズは1フレームの表示画像の1/2となる。
【0104】
このとき、1フレームの表示画像の原点のY座標Y0は、1stフィールドの画像の原点と一致するが、2ndフィールドの画像の原点とは一致しない。2ndフィールドの座標の原点を0とおくと、Y0は−0.5の位置となる。すなわち、1フレームの表示画像の原点Y0を基準とする座標Y´は、Y´=Y+0.5により求められる。
【0105】
したがって、(2)式において、YをY´に置き換えることで1フレームの表示画像の原点Y0を基準として拡大縮小を行う計算式となる。
y=Y´×Sy … (5)
ここで、Y´=Y+0.5を(5)式に代入すると(6)式となり、CPC105は(2)式による演算においてY座標に0.5を加算する補正を行うことで1フレームの表示画像の原点Y0を基準として拡大縮小を行うことができる。
y=(Y+0.5)×Sy … (6)
【0106】
(6)式は、例えば、図9の時刻t303〜t305でキャプチャした画像データを時刻t306〜t309で2ndフィールドの画像データとして表示する際に、CPC105が描画領域_1から画像データを読み出すアドレス(x,y)を算出するのに用いる。
【0107】
なお、VCC104がキャプチャした2ndフィールドの画像をCPC105が2ndフィールドの画像として読み出し表示させる場合は、CPC105は(4)式のy座標に関する補正と(6)式のY座標に関する補正の双方を行い、拡大縮小の変換を(7)式で行う。
y=(Y+0.5)×Sy−0.5 … (7)
【0108】
(7)式は、例えば、図11の時刻t503〜t505でキャプチャした2ndフィールドの画像データを時刻t506〜t509で2ndフィールドの画像データとして表示する際に、CPC105が描画領域_1から画像データを読み出すアドレス(x,y)を算出するのに用いる。
【0109】
図17は、CPC105で拡大縮小の座標変換を行う際の機能を示す機能構成図である。図17において、符号11はX座標からx座標を求めるための座標変換を行うx座標変換部であり、具体的には(1)式の演算を行う。
【0110】
符号12はY座標に対してoffset_1を加算する第1のオフセット補正部であり、表示画像がインタレース方式で且つ2ndフィールドを表示する場合のみoffset_1=+0.5となり、その他の場合はoffset_1=0となる。第1のオフセット補正部12による補正は、(6)式で行った補正に相当する。
【0111】
なお、第1のオフセット補正部12は、CRTコントローラ110から表示画像がプログレッシブ方式、インタレース方式の1stフィールド、インタレース方式の2ndフィールドの何れの画像であるかを判定する。
【0112】
符号13はY座標からy座標を求めるための座標変換を行うy座標変換部であり、具体的には(2)式の演算を行う。符号14はy座標変換部の演算結果に対してoffset_2を加算する第2のオフセット補正部であり、キャプチャ画像がインタレース方式で且つ2ndフィールドの画像である場合のみoffset_2=−0.5となり、その他の場合はoffset_2=0となる。第2のオフセット補正部14による補正は、(4)式で行った補正に相当する。
【0113】
なお、第2のオフセット補正部12は、VCC104からキャプチャした画像がプログレッシブ方式、インタレース方式の1stフィールド、インタレース方式の2ndフィールドの何れの画像であるかを判定する。
【0114】
以上が、CPC105で行う座標の補正方法を説明したが、上記補正方法は拡大縮小の処理を行う場合だけでなく、傾き補正や歪曲補正など他の座標変換を行う際にも用いることが可能である。
【0115】
表示プレーン領域に表示する座標Xから表示データの座標xを求める際の関数をFx、表示プレーン領域に表示する座標Yから表示データの座標yを求める際の関数をFyとおくと、CPC105で行う座標変換は一般に(8)式及び(9)式で表される。
x=Fx(X,Y) … (8)
y=Fy(X,Y) … (9)
【0116】
(8)式及び(9)式に対して、offset_1及びoffset_2を用いた補正を行うと、(10)式および(11)式となる。
x=Fx(X,Y+offset_1) … (10)
y=Fy(X,Y+offset_1)+offset_2 … (11)
上述した拡大縮小の処理では、Fx(X,Y)=X×Sx、Fy(X,Y)=Y×Syである。
【0117】
本実施形態では、キャプチャ画像又は表示画像がインタレース方式の2ndフィールドの画像である場合にCPC105がoffset_1又はoffset_2によるオフセット補正を行うことで、元の1フレームの画像を基準とした座標変換を行うことが可能となり、本来表示すべき正確な座標の画像データを表示することができる。
【0118】
以上、本発明の実施形態を詳述してきたが、具体的な構成は本実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、本実施形態では、ビデオメモリ領域にトリプルバッファとして3つの描画領域を設けたが、4つ以上の描画領域を設けてキャプチャした画像データを順次書き込み、順次読み出す形態としてもよい。
【産業上の利用可能性】
【0119】
本発明は、ビデオメモリ上に記憶された画像の座標変換を行い表示領域に表示させる画像処理装置に用いて好適である。
【図面の簡単な説明】
【0120】
【図1】本発明の一実施形態に係る画像処理装置の構成を示す構成図である。
【図2】図1のVDP1におけるキャプチャ及び表示のモードとトリプルバッファのインクリメントとの対応関係を示す図である。
【図3】図2で示した各描画モードの機能を示す図である。
【図4】図2で示した各モードにおいて、ビデオメモリ3内におけるキャプチャ映像の記憶領域を示す図である。
【図5】VCC104がビデオメモリ3内のトリプルバッファにキャプチャした画像データを書き込む際の処理を示すフローチャートである。
【図6】CPC105がビデオメモリ3内のトリプルバッファから画像データを読み出す際の処理を示すフローチャートである。
【図7】図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より短い場合の例である。
【図8】図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より長い場合の例である。
【図9】図2の設定2におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フィールド周期より短い場合の例である。
【図10】図2の設定3におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フレーム周期より長い場合の例である。
【図11】図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より短い場合の例である。
【図12】図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より短い場合の例である。
【図13】図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より長い場合の例である。
【図14】図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より長い場合の例である。
【図15】CPC105で行う座標変換を示す図である。
【図16】1フレームの画像と、インタレース方式における1stフィールド及び2ndフィールドの画像の原点の位置関係を示す図である。
【図17】CPC105で拡大縮小の座標変換を行う際の機能を示す機能構成図である。
【符号の説明】
【0121】
1…VDP(画像処理装置)、2…CPU、3…ビデオメモリ、11…x座標変換部、12…第1のオフセット補正部(第一のオフセット加算手段)、13…y座標変換部(座標変換手段)、14…第2のオフセット補正部(第二のオフセット加算手段)、101…CPUインターフェースモジュール、102…VRAMインターフェースモジュール、103…VDU、104…VCC、105…CPC、106…DPU、107…OSDプレーンコントローラ、108…PDC、109…DAC、110…CRTコントローラ、111…クロックジェネレータ。
【技術分野】
【0001】
本発明は、ビデオメモリ上に記憶された画像の座標変換を行い表示領域に表示させる画像処理装置に関する。
【背景技術】
【0002】
映像の走査方式には画面を構成する全走査線1本おきに2つのフィールドに分割して走査を行うインタレース方式と、一度に全走査線を走査するプログレッシブ方式とが知られている。また、同じインタレース方式においても、60Hzのフィールド周期であるNTSC(National Television Standards Committee)形式や50Hzのフィールド周期であるPAL(Phase Alternation by Line)方式など、表示周期の異なる映像が用いられている。
【0003】
従来の画像処理装置においては、走査方式や表示周期の異なる映像に変換する機能を備えているものが知られており、このような変換機能ではビデオメモリ上に記憶された画像の座標変換を行い表示領域に表示させる必要がある。
【特許文献1】特開2004−147285号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、キャプチャされた画像がインタレース方式の2ndフィールドの画像である場合は、その画像の原点は1フレームの元画像の原点とは異なるため、2ndフィールドの画像の原点を基準として拡大縮小の処理を行うと本来読み出すべき座標とは異なる座標の画像データが読み出され表示される。
【0005】
そのため、従来の画像処理装置では、拡大縮小変換等の座標変換を行った後の画像が乱れることがあるという課題があった。
本発明は上記事情を考慮してなされたもので、その目的は、拡大縮小変換等の座標変換を行っても画像が乱れることのない画像処理装置を提供することにある。
【課題を解決するための手段】
【0006】
本発明は上記の課題を解決するためになされたもので、請求項1に記載の発明は、ビデオメモリに記憶された画像データを読み出して表示領域に表示させる画像処理装置において、前記表示領域に表示する画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する表示画像判定手段と、前記表示画像判定手段で2ndフィールドの画像データであると判定された場合に、前記表示領域上の座標に対して第一のオフセットを加算する第一のオフセット加算手段と、前記オフセット加算後の座標に対して所定の座標変換を行う座標変換手段と、前記ビデオメモリに記憶された画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する記憶画像判定手段と、前記記憶画像判定手段で2ndフィールドの画像データであると判定された場合に、前記座標変換手段で座標変換後の座標に対して第二のオフセットを加算する第二のオフセット加算手段と、前記第二のオフセット加算手段で加算後の座標で示される画像データを前記表示領域上の座標で表示する画像データとして前記ビデオメモリから読み出す画像読み出し手段とを具備することを特徴とする。
【0007】
また、請求項2に記載の発明は、請求項1に記載の発明において、前記第一のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする。
【0008】
また、請求項3に記載の発明は、請求項1又は請求項2に記載の発明において、前記第二のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする。
【発明の効果】
【0009】
本発明によれば、表示画像がインタレース方式の2ndフィールドの画像である場合には第一のオフセット加算手段で第一のオフセットを加算し、キャプチャ画像がインタレース方式の2ndフィールドの画像である場合には第二のオフセット加算手段で第二のオフセットを加算する。このため、本発明の画像処理装置による座標変換は、元の1フレームの画像を基準とした座標変換となり、本来表示すべき正確な座標の画像データを表示することができる。
【発明を実施するための最良の形態】
【0010】
以下、図面を参照して本発明の実施形態について説明する。
図1は、本発明の一実施形態に係るVDP(Video Display Processor:画像処理装置)の構成を示す構成図である。図1において、VDP1は映像入力信号をキャプチャし、画像データとしてビデオメモリ3に書き込んだ後に表示解像度に合わせてモニタ(図示せず)に表示させるものである。また、VDP1はCPU(Central Processing Unit)2から描画コマンドを入力し映像入力に対するOSD(On Screen Display)表示を行う機能を備える。
【0011】
なお、描画コマンドとして、例えば、LINEコマンド、FILLコマンド、COPYコマンドがある。LINEコマンドは始点と終点を指定して直線の描画を行うためのコマンドであり、FILLコマンドは矩形領域を指定して塗りつぶしを行うためのコマンドである。COPYコマンドは、転送元のアドレスと転送先のアドレスとを指定してビデオメモリ空間内でデータのコピーを行うためのコマンドである。さらに、COPYコマンドにはフォーマット変換を指定する情報と透明色制御及びαブレンディングの設定情報も含まれる。ただし、描画コマンドはこれらに限定されない。
【0012】
本実施形態では、VDP1はビデオメモリ3内に3つの記憶領域(以下では、トリプルバッファと呼ぶ。)を確保し、キャプチャした画像データを記憶させる。VDP1はトリプルバッファのそれぞれにキャプチャした画像データを順次書き込み、その後CPC105は表示タイミングに合わせてトリプルバッファから順次読み出す。
【0013】
VDP1内のCPUインターフェースモジュール101は、CPU2との間の通信を司るものであり、CPU2から入力した描画コマンドをDPU106に出力する機能や、CPU2からビデオメモリ3へのアクセスを制御する機能を備える。VRAMインターフェースモジュール102は、VDP1内の各部からビデオメモリ3へのアクセスを制御するものである。
【0014】
VDU(Video Decoder Unit)103は、アナログ映像信号を入力し、デジタル映像データへと変換するものである。VCC(Video Capture Controller)104は、VDC103から出力されるデジタル映像データ又は外部から直接デジタルデータとして入力される映像データのキャプチャを行い、画像データとしてビデオメモリ3に書き込むものである(画像書き込み手段)。なお、VDC102のデコーダ回路及びVCC104のキャプチャ回路はそれぞれ2回路ずつ備えており、2チャネルの映像入力を同時にキャプチャすることができる。
【0015】
CPC(Capture Plane Controller)105は、ビデオメモリ3から画像データを読み出し(画像読み出し手段)、PDC108へと出力するものである。DPU(Drawing Processor Unit)106は、CPUインターフェースモジュール101から入力した描画コマンドを解釈し、ビデオメモリ3内に直線や矩形を描画したり、描画したデータに対して所定の処理を行うものである。なお、CPU2は、描画コマンドを使わずに直接ビデオメモリ3内に描画することもできる。
【0016】
OSDプレーンコントローラ107は、OSD画像として表示させるデータをビデオメモリ3から読み出し、PDC108へ出力するものである。PDC(Pixel Data Controller)108は、外部から入力されたデジタル映像と、VDU103でデコード後のデジタル映像と、CPC105から出力されるキャプチャ映像と、OSDプレーンコントローラ107から出力されるOSD画像とを入力し、各プレーンのフォーマットを統一し、表示の優先順位及びαブレンディングの設定等に基づいて合成処理を行うものである。
【0017】
なお、「表示プレーン」の用語は、1つの矩形状表示データを外部表示装置の所定の場所に、所定のサイズで表示するために必要な全ての構成を包括したものを示すとともに、外部表示装置に供給される表示データそのものも示している。
【0018】
VDP1では、外部から入力された映像を表示するバックドロップ面と、キャプチャ映像を表示する2つの表示プレーンと、OSD画像を表示する2つの表示プレーンによる階層表示が可能であり、PDC108は合計4つの上記表示プレーンとバックドロップ面の合成処理を行う。
【0019】
PDC108は、合成後のデジタル画像をそのまま外部に出力すると同時に、DAC(Digital-to-Analog Converter)109を介してアナログ映像信号を出力する。CRTコントローラ110は、モニタで表示する際のタイミング信号を出力し、また、モニタ表示に関する情報をVDP1内の各部へ出力する。クロックジェネレータ111は、VDP1内の各部で使用するクロックを生成するものである。
【0020】
次に、上述した実施形態の動作を、図2から図14を参照して説明する。
図2は、VDP1におけるキャプチャ及び表示のモードとトリプルバッファのインクリメントとの対応関係を示す図であり、図3は図2で示した各描画モードの機能を示す図であり、図4は図2で示した各モードにおいて、ビデオメモリ3内におけるキャプチャされた画像データの記憶領域を示す図である。
【0021】
図2において、VCC104がプログレッシブ方式でキャプチャを行う場合、描画モードC*DM[1:0]の指定は行わない。このとき、図4(a)に示すように、ビデオメモリ3内においては1フレームのキャプチャ画像データがトリプルバッファの1つに記憶される。
【0022】
なお、図4(a)においては、トリプルバッファとして1つのビデオメモリ領域のみを表示しているが、実際にはアドレス空間(即ち描画領域)の異なる3つのビデオメモリ領域がビデオメモリ3内に存在する。図4(b)〜(d)に関しても同様である。
【0023】
VCC104がプログレッシブ方式でキャプチャを行い、CPC105がプログレッシブ方式で表示を行う場合(図2の設定1)、CPC105は表示のフレーム単位でインクリメントを行い、ビデオメモリ3から画像データを読み出すトリプルバッファのアドレスを切り替える。
【0024】
VCC104がプログレッシブ方式でキャプチャを行い、CPC105がインタレース方式で表示を行う場合(図2の設定2)、CPC105は表示のフィールド単位でインクリメントを行い、ビデオメモリ3から画像データを読み出すトリプルバッファのアドレスを切り替える。
【0025】
一方、VCC104がインタレース方式でキャプチャを行う場合、ビデオメモリへの記憶方法によって3種類の描画モードC*DM[1:0]を選択する。描画モードとしてC*DM[1:0]=2’b0*を選択した場合、VCC104はフィールド単位でキャプチャを行い、図4(b)に示すように、1stフィールドの画像データと2ndフィールドの画像データとをビデオメモリ3内の同一領域に格納する。
【0026】
描画モードとしてC*DM[1:0]=2’b10を選択した場合、VCC104はフレーム単位でキャプチャを行い、図4(c)に示すように、1stフィールドの画像データと2ndフィールドの画像データとをビデオメモリ3内の別領域に格納する。
【0027】
描画モードとしてC*DM[1:0]=2’b11を選択した場合、VCC104はフレーム単位でキャプチャを行い、図4(d)に示すように、1stフィールドの画像データと2ndフィールドの画像データとをビデオメモリ3内の領域にライン毎に交互に格納する。
【0028】
VDP1において、図2に示したどの設定を使用するかはCPU2からコマンドを入力することで指定され、VCC104は指定された設定にしたがって画像データのキャプチャを行う。また、VCC104は、CRTコントローラ110から表示映像の周期に関するタイミング情報を入力し、キャプチャを行うタイミングと表示を行うタイミングの管理を行う。
【0029】
一方、CPC105は、VCC104からどのトリプルバッファから画像データを読み出すかの指示を入力し、CPU2から指定された設定にしたがって画像データを読み出す。
【0030】
続いて、VCC104がビデオメモリ3内のトリプルバッファにキャプチャした画像データを書き込む際の処理について図5のフローチャートを参照して説明する。
以下では、トリプルバッファを構成する3つの描画領域(画像記憶領域)を描画領域_0、描画領域_1、描画領域_2とし、VCC104は描画領域_0、描画領域_1、描画領域_2、描画領域_0、…の順序で3つの描画領域に順次キャプチャした画像データを書き込む。
【0031】
本実施形態では、変数nを用いて、描画領域_0、描画領域_1、描画領域_2を「描画領域_n」と表す。ここで、変数nは、0、1、2の何れかの値をとり、後述する各描画領域をアクセスする過程で変数nをインクリメントすることにより、nの値は、0、1、2、0、1、2、0…というように0から2の間を巡回する。そこで、説明の便宜上、n=2のときにn+1は0を表し、n=0のときにn−1は2を表すものと定義する。即ち、上記巡回数値列において、n=2のときに変数nをインクリメントすると変数nは0になり、n=0のときに変数nをデクリメントすると変数nは2になる。
なお、本実施形態では、三つの描画領域_0、描画領域_1、描画領域_2を例としているが、これに限定されず、必要に応じて描画領域の数を増やしてもよい。その場合、描画領域の数に応じてビデオメモリ3内のバッファの数も増やせばよい。
【0032】
VCC104がビデオメモリ3内のトリプルバッファに画像データを書き込む場合、即ちトリプルバッファの描画領域_n(描画領域_0、描画領域_1、描画領域_2のうちの任意の1つ)に画像データを書き込む場合、図5において、VCC104は、CRTコントローラ110から入力する表示映像の周期に関するタイミング情報に基づいてCPC105が描画領域_nを読み出し中かどうかを判断する(ステップS501)。
【0033】
CPC105で描画領域_nから画像データが読み出されていると判断した場合は(ステップS501:Yes)、VCC104はキャプチャ映像の次の周期におけるキャプチャを中止し、トリプルバッファへの書き込みを行わない(ステップS503)。
【0034】
その後、VCC104はnをインクリメントせず、1フレーム(又は1フィールド)の書き込みが終了したか否かを判断する(ステップS505)。ここで、書き込み終了でない場合は(ステップS505:No)、再びステップS501に戻って同じ描画領域から画像データが読み出し中かどうかを再び判断する。
【0035】
一方、CPC105で描画領域_nからは画像データが読み出されていないと判断した場合は(ステップS501:No)、VCC104はキャプチャした画像データを描画領域_nに書き込む(ステップS502)。そして、VCC104はnのインクリメントを行い(ステップS504)、再びステップS501に戻って次の描画領域が読み出し中かどうかを判断し、同様の処理を実行する。
【0036】
以後、書き込み終了でない間は(ステップS505:No)、ステップS501〜S505を繰り返し実行し、VCC104は描画領域_0〜描画領域_2に順次キャプチャした画像データの書き込みを行い、描画領域_2の書き込みが終了すると、再び描画領域_0に戻って同様の書き込みを繰り返す。
【0037】
上述の一連のループ処理において、ステップS505において書き込み終了と判断されると(ステップS505:Yes)、1フレーム(又は1フィールド)分の画像の書き込みが完了するが、その後、次のフレーム(又はフィールド)の画像を書き込むために同様の処理が繰り返される。なお、ステップS504におけるインクリメントでは、前述のように、n=2のインクリメントはn=0とし、インクリメントの操作によりn=0、1、2、0、…の順に変化する。
【0038】
以上述べたように、VCC104は、キャプチャした画像データのトリプルバッファへの書き込みが終了した時点で、次に書き込むべきトリプルバッファがCPC105により読み出されている場合には次のキャプチャを中止する。なお、特許請求の範囲に記載の第一の判定手段とは、ステップS501において、VCC104が描画領域_nから画像データが読み出されていないかを判定する機能を指す。
【0039】
続いて、CPC105がビデオメモリ3内のトリプルバッファから画像データを読み出す際の処理について図6のフローチャートを参照して説明する。
図5と同様に、トリプルバッファを構成する3つの描画領域を描画領域_0、描画領域_1、描画領域_2とし、CPC105は描画領域_0、描画領域_1、描画領域_2、描画領域_0、…の順序で3つの描画領域から順次画像データを読み出す。変数nの定義についても同様とする。
【0040】
CPC105がビデオメモリ3内のトリプルバッファから画像データを読み出す場合、即ちトリプルバッファの描画領域_n(描画領域_0、描画領域_1、描画領域_2のうちの任意の1つ)から画像データを読み出す場合、図6において、VCC104が描画領域_nに書き込み中かどうかを判断し(ステップS601)、その描画領域_nに書き込み中である場合は(ステップS601:Yes)、CPC105が同じ描画領域_nから読み出しを行うとティアリングが発生するため、VCC104はCPC105に対して描画領域_n−1を読み出すよう指示する。CPC105がVCC104からの指示を入力すると、描画領域_n−1で記憶された画像データを再度読み出す(ステップS603)。即ち、前回の読み出し時に読み出しの対象となっていた描画領域_n−1と同じ描画領域の画像データが続けて読み出される。
【0041】
その後、CPC105はnをインクリメントせず、1フレーム(又は1フィールド)の読み出しが終了したかどうかを判断する(ステップS605)。ここで、読み出し終了でない場合は(ステップS605:No)、再びステップS601に戻って次の描画領域が書き込み中かどうかを判断し、同様の処理を実行する。
【0042】
一方、VCC104が描画領域_nに書き込みを行っていない場合は(ステップS601:No)、CPC105が画像データを描画領域_nから読み出す(ステップS602)。そして、CPC105はnのインクリメントを行い(ステップS604)、再びステップS601に戻って次の描画領域へ書き込み中かどうかを判断し、同様の処理を実行する。
【0043】
以後、読み出し終了でない間は(ステップS605:No)、ステップS601〜S605を繰り返し実行し、CPC105は描画領域_0〜描画領域_2から順次画像データの読み出しを行う。上述の一連のループ処理において、読み出し終了と判断されると(ステップS605:Yes)、1フレーム(又は1フィールド)分の画像の読み出しが完了するが、その後、次のフレーム(又はフィールド)の画像を読み出すために同様の処理が繰り返される。
【0044】
以上述べたように、CPC105は、トリプルバッファから画像データの読み出しが終了した時点で、次に読み出すべきトリプルバッファがVCC104により書き込まれている場合には前回と再び同じトリプルバッファの画像データの読み出しを行う。なお、特許請求の範囲に記載の第二の判定手段とは、ステップS602において、CPC105がVCC104からの入力に基づいて、描画領域_nに画像データが書き込まれていないかを判定する機能を指す。
また、上述の図5及び図6のフローは、1フレーム(またはフィールド)分の画像処理のフローを表すものとしたが、これに限定されない。
【0045】
次に、図5及び図6で述べたVCC104及びCPC105における処理を図7から図14を参照して具体的に説明する。
図7は、図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より短い場合の例である。
【0046】
図7において、時刻t101〜t103で、CPC105は描画領域_0の画像データを読み出して表示させる。一方、時刻t102〜t103で、VCC104は描画領域_2にキャプチャした画像データを書き込む。
【0047】
時刻t103の時点ではVCC104が次に書き込むべき描画領域_0はCPC105により読み出されていないため、図5のステップS502における判定はNoであり、時刻t103〜t104で、VCC104は描画領域_0にキャプチャした画像データを書き込む。
【0048】
同じ時刻t103の時点ではCPC105が次に読み出すべき描画領域_1はVCC104により書き込まれていないため、図6のステップS602における判定はNoであり、時刻t103〜t105で、CPC105は描画領域_1から画像データを読み出す。
【0049】
時刻t104の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されているため、図5のステップS502における判定はYesであり、VCC104は次の1周期(時刻t104〜t106)におけるキャプチャは行わない。VCC104は、その次のフレーム周期のタイミング(t106〜t108)で描画領域_1にキャプチャした画像データを書き込む。
【0050】
このように、キャプチャ映像フレーム周期が表示フレーム周期より短い場合には、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0051】
図8は、図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より長い場合の例である。
【0052】
図8において、時刻t201〜t203で、VCC104は描画領域_0にキャプチャした画像データ書き込む。一方、時刻t202〜t203で、CPC105は描画領域_2から画像データを読み出す。
【0053】
時刻t203の時点ではCPC105が次に読み出すべき描画領域_0はVCC104により書き込まれていないため、図6のステップS602における判定はNoであり、時刻t203〜t204で、CPC105は描画領域_0から画像データを読み出す。
【0054】
同じ時刻t203の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されていないため、図5のステップS502における判定はNoであり、時刻t203〜t205で、VCC104は描画領域_1にキャプチャした画像データを書き込む。
【0055】
時刻t204の時点ではCPC105が次に読み出すべき描画領域_1はVCC104により書き込まれているため、図6のステップS602における判定はYesであり、CPC105は次の1周期(時刻t204〜t206)で再び描画領域_0から画像データを読み出す。CPC105は、その次のフレーム周期のタイミング(t206〜t208)で描画領域_1から画像データを読み出す。
【0056】
このように、キャプチャ映像フレーム周期が表示フレーム周期より長い場合には、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0057】
図9は、図2の設定2におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フィールド周期より短い場合の例である。図9は、プログレッシブ方式からインタレース方式に変換する処理であり、例えば60Hzのプログレッシブ映像信号を50HzのPAL形式の映像信号に変換する場合の処理である。
【0058】
図9において、VCC104は、時刻t301〜t303では描画領域_0に、時刻t303〜t305では描画領域_1に、時刻t305〜t307では描画領域_2に、時刻t307〜t308では描画領域_0にキャプチャした画像データを書き込む。
【0059】
一方、CPC105は、時刻t304〜t306では描画領域_0から1stフィールドのデータとして、時刻t306〜t309では描画領域_1から2ndフィールドのデータとして画像データを読み出す。
【0060】
時刻t308の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されているため、VCC104は次の1周期(時刻t308〜t310)におけるキャプチャは行わない。VCC104は、その次のフレーム周期のタイミング(t310〜t312)で描画領域_1にキャプチャした画像データを書き込む。
【0061】
図9においても、図7と同様に、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0062】
図10は、図2の設定3におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フレーム周期より長い場合の例である。図10は、インタレース方式からプログレッシブ方式に変換する処理であり、例えば50HzのPAL形式の映像信号を60Hzのプログレッシブ映像信号に変換する場合の処理である。
【0063】
図10において、VCC104は、時刻t401〜t403では描画領域_0に1stフィールドの画像データを、時刻t403〜t405では描画領域_1に2ndフィールドの画像データを、時刻t405〜t408では描画領域_2に1stフィールドの画像データをキャプチャして書き込む。
【0064】
一方、CPC105は、時刻t402〜t404では描画領域_2から、時刻t404〜t406では描画領域_0から、時刻t406〜t407では描画領域_1から画像データを読み出す。
【0065】
時刻t407の時点ではCPC105が次に読み出すべき描画領域_2はVCC104により書き込まれているため、CPC105は次の1周期(時刻t407〜t409)で再び描画領域_1から画像データを読み出す。CPC105は、その次のフレーム周期のタイミング(t409〜t411)で描画領域_2から画像データを読み出す。
【0066】
図10においても、図8と同様に、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0067】
図11は、図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より短い場合の例である。図11は、インタレース方式の映像形式を変換する処理であり、例えば60HzのNTSC形式の映像信号を50HzのPAL形式の映像信号に変換する場合の処理である。
【0068】
図11において、VCC104は、時刻t501〜t503では描画領域_0に1stフィールドの画像データを、時刻t503〜t505では描画領域_1に2ndフィールドの画像データを、時刻t505〜t507では描画領域_2に1stフィールドの画像データを、時刻t507〜t508では描画領域_1に2ndフィールドの画像データをキャプチャして書き込む。
【0069】
一方、CPC105は、時刻t504〜t506では描画領域_0から1stフィールドのデータとして、時刻t506〜t509では描画領域_1から2ndフィールドのデータとして画像データを読み出す。
【0070】
時刻t508の時点ではVCC104が次に書き込むべき描画領域_1はCPC105により読み出されているため、VCC104は次の1周期(時刻t508〜t510)におけるキャプチャは行わない。VCC104は、その次のフィールド周期のタイミング(t510〜t512)で描画領域_1にキャプチャした画像データを書き込む。
【0071】
時刻t510以降、再びキャプチャが停止する時刻t519までにVCC104によりキャプチャされた画像データは、CPC105が読み出す時には1stフィールドと2ndフィールドが逆転する。また、VCC104におけるキャプチャの停止は1フィールド単位となり、2フィールド連続してキャプチャが停止することはない。
【0072】
図11においても、図7と同様に、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0073】
図12は、図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より短い場合の例である。図12は、インタレース方式の映像形式を変換する処理であり、例えば60HzのNTSC形式の映像信号を50HzのPAL形式の映像信号に変換する場合の処理である。
【0074】
図12において、VCC104は、時刻t601〜t603では描画領域_0に1stフィールド及び2ndフィールドの画像データを連続してキャプチャし、時刻t603〜t604では描画領域_1に1stフィールド及び2ndフィールドの画像データを連続してキャプチャする。一方、CPC105は、時刻t602〜t605で描画領域_2から1stフィールド及び2ndフィールドの画像データを連続して読み出す。
【0075】
時刻t604の時点ではVCC104が次に書き込むべき描画領域_2はCPC105により読み出されているため、VCC104は次の1周期(時刻t604〜t606)におけるキャプチャは行わない。VCC104は、その次のフレーム周期のタイミング(t606〜t608)で描画領域_2にキャプチャした画像データを書き込む。
【0076】
図11に示した場合と異なり、図12ではフレーム単位でトリプルバッファへの書き込み・読み出しを行うため、VCC104によりキャプチャされた画像データは、CPC105が読み出す時に1stフィールドと2ndフィールドが逆転することはない。また、VCC104におけるキャプチャの停止は2フィールド単位となり、1フレーム連続してキャプチャが停止する。
【0077】
図12においても、図7と同様に、VCC104の書き込み処理がCPC105の読み出し処理に追いついた段階で、VCC104はその次の1周期におけるキャプチャを中止する。
【0078】
なお、図2の設定6又は8の何れを選択した場合においても、キャプチャ及び表示のタイミングは同じであるが、設定8ではビデオメモリ3上で1stフィールドと2ndフィールドとを交互に配置して1つの画像として記憶するため、特に静止画像を表示させる場合において、設定6を用いる場合より解像度を高くすることができる。
【0079】
一方、設定6ではビデオメモリ3上で1stフィールドと2ndフィールドとを別々に記憶するため、動きの激しい動画像を表示する際に適している。本実施形態ではビデオメモリ3への記憶方法として、フィールド毎に別の領域に記憶する方法と、1つの領域にライン毎交互に記憶する方法の何れかを選択可能であるため、表示画像に合わせて適切な方法を選択することができる。
【0080】
図13は、図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より長い場合の例である。図13は、インタレース方式の映像形式を変換する処理であり、例えば50HzのPAL形式の映像信号を60HzのNTSC形式の映像信号に変換する場合の処理である。
【0081】
図13において、VCC104は、時刻t701〜t703では描画領域_0に1stフィールドの画像データを、時刻t703〜t705では描画領域_1に2ndフィールドの画像データを、時刻t705〜t708では描画領域_2に1stフィールドの画像データをキャプチャして書き込む。
【0082】
一方、CPC105は、時刻t702〜t704では描画領域_2から2ndフィールドのデータとして、時刻t704〜t706では描画領域_0から1stフィールドのデータとして、時刻t706〜t707では描画領域_1から2ndフィールドのデータとして画像データを読み出す。
【0083】
時刻t707の時点ではCPC105が次に読み出すべき描画領域_2はVCC104により書き込まれているため、CPC105は次の1周期(時刻t707〜t709)で再び描画領域_1から1stフィールドのデータとして画像データを読み出す。CPC105は、その次のフィールド周期のタイミング(t709〜t711)で描画領域_2から2ndフィールドのデータとして画像データを読み出す。
【0084】
時刻t707以降、再び連続して同じトリプルバッファを読み出す時刻t718までにCPC105により読み出された画像データは、VCC104がキャプチャした画像から1stフィールドと2ndフィールドが逆転したものとなる。
【0085】
図13においても、図8と同様に、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0086】
図14は、図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャ映像フレーム周期が表示フレーム周期より長い場合の例である。図14は、インタレース方式の映像形式を変換する処理であり、例えば50HzのPAL形式の映像信号を60HzのNTSC形式の映像信号に変換する場合の処理である。
【0087】
図14において、VCC104は、時刻t801〜t803では描画領域_0に1stフィールド及び2ndフィールドの画像データを、時刻t803〜t805では描画領域_1に1stフィールド及び2ndフィールドの画像データを、時刻t805〜t807では描画領域_2に1stフィールド及び2ndフィールドの画像データを、時刻t807〜t810では描画領域_0に1stフィールド及び2ndフィールドの画像データを連続してキャプチャする。
【0088】
一方、CPC105は、時刻t802〜t804では描画領域_2から1stフィールド及び2ndフィールドの画像データを、時刻t804〜t806では描画領域_0から1stフィールド及び2ndフィールドの画像データを、時刻t806〜t808では描画領域_1から1stフィールド及び2ndフィールドの画像データを、時刻t808〜t809では描画領域_2から1stフィールド及び2ndフィールドの画像データを、連続して読み出す。
【0089】
時刻t809の時点ではCPC105が次に読み出すべき描画領域_0はVCC104により書き込まれているため、CPC105は次の1周期(時刻t809〜t811)で再び描画領域_2から1stフィールド及び2ndフィールドの画像データを連続して読み出す。CPC105は、その次のフレーム周期のタイミング(t811〜t813)で描画領域_0から1stフィールド及び2ndフィールドの画像データを連続して読み出す。
【0090】
図14においても、図8と同様に、CPC105の読み出し処理がVCC104の書き込み処理に追いついた段階で、CPC105はその次の1周期では前の周期と同じトリプルバッファから画像データを読み出す。
【0091】
このように、本実施形態ではビデオメモリ3上に構成した3つの描画領域(トリプルバッファ)にVCC104がキャプチャした画像データを順次書き込み、CPC105が画像データを順次読み出す構成とし、VCC104による書き込み処理がCPC105による読み出し処理に追いついた場合にはキャプチャを1周期停止し、逆にCPC105による読み出し処理がVCC104による書き込み処理に追いついた場合には同じ描画領域を続けて読み出すようにすることで、CPC105による描画領域からの読み出し処理中に、VCC104が該描画領域に書き込みを行うことがなくなり、ティアリングを防止することができる。
【0092】
上述した図7〜図14の処理において、プログレッシブ方式からインタレース方式への変換、インタレース方式からプログレッシブ方式への変換、NTSC形式からPAL形式への変換、PAL形式からNTSC形式への変換においては、画像の拡大縮小の操作が発生する。
【0093】
このため、図15に示すように、CPC105は表示プレーン領域に表示する座標(X,Y)から表示データの座標(x,y)を算出し、CPC105はこの座標(x,y)の位置の画像データをトリプルバッファから読み出す必要がある。
【0094】
SxをX方向の拡大縮小補正係数、SyをY方向拡大縮小補正係数とおくと、CPC105は、以下の(1)式及び(2)式の演算を行い、表示データの座標(x,y)を求める。
x=X×Sx … (1)
y=Y×Sy … (2)
【0095】
しかし、キャプチャされた画像がインタレース方式の2ndフィールドの画像である場合は、その画像の原点は1フレームの元画像の原点とは異なるため、2ndフィールドの画像の原点を基準として拡大縮小の処理を行うと本来読み出すべき座標とは異なる座標の画像データがCPC105から読み出される。
【0096】
同様に、表示する画像がインタレース方式の2ndフィールドの画像である場合においても、その画像の原点は1フレームの表示画像の原点とは異なるため、2ndフィールドの画像の原点を基準として拡大縮小の処理を行うと本来読み出すべき座標とは異なる座標の画像データがCPC105から読み出される。
【0097】
さらに、図11及び図13で前述したように、キャプチャした1stフィールドの画像を2ndフィールドとして表示する場合、またはキャプチャした2ndフィールドの画像を1stフィールドとして表示する場合においても、1stフィールドの画像の原点と2ndフィールドの画像の原点が異なるために、本来読み出すべき座標とは異なる座標の画像データがCPC105から読み出される。
【0098】
以下では、キャプチャする画像又は表示する画像がインタレース方式の2ndフィールドの画像である場合においても、拡大縮小後の座標が本来表示すべき座標となるように補正する方法に関して、図16及び図17を参照して説明する。
【0099】
図16(a)において、VCC104がインタレース方式の画像をフィールド単位でキャプチャし、ビデオメモリ3上のトリプルバッファに書き込むと、フィールド単位で書き込まれた画像のy軸方向のサイズは元画像の1/2となる。
【0100】
このとき、元画像の原点のy座標y0は、1stフィールドの画像の原点と一致するが、2ndフィールドの画像の原点とは一致しない。2ndフィールドの座標の原点を0とおくと、y0は−0.5の位置となる。すなわち、元画像の原点y0を基準とする座標y´は、y´=y+0.5により求められる。
【0101】
したがって、(2)式において、yをy´に置き換えることで元画像の原点y0を基準として拡大縮小を行う計算式となる。
y´=Y×Sy … (3)
ここで、y´=y+0.5を(3)式に代入すると(4)式となり、CPC105は(2)式による演算結果から−0.5を加算する補正を行うことで元画像の原点y0を基準として拡大縮小を行うことができる。
y=Y×Sy−0.5 … (4)
【0102】
(4)式は、例えば、図10の時刻t403〜t405でキャプチャした2ndフィールドの画像データを時刻t406〜t407で表示する際に、CPC105が描画領域_1から画像データを読み出すアドレス(x,y)を算出するのに用いる。
【0103】
一方、図16(b)において、CPC105がインタレース方式の画像を表示する場合、フィールド毎の表示画像のY軸方向のサイズは1フレームの表示画像の1/2となる。
【0104】
このとき、1フレームの表示画像の原点のY座標Y0は、1stフィールドの画像の原点と一致するが、2ndフィールドの画像の原点とは一致しない。2ndフィールドの座標の原点を0とおくと、Y0は−0.5の位置となる。すなわち、1フレームの表示画像の原点Y0を基準とする座標Y´は、Y´=Y+0.5により求められる。
【0105】
したがって、(2)式において、YをY´に置き換えることで1フレームの表示画像の原点Y0を基準として拡大縮小を行う計算式となる。
y=Y´×Sy … (5)
ここで、Y´=Y+0.5を(5)式に代入すると(6)式となり、CPC105は(2)式による演算においてY座標に0.5を加算する補正を行うことで1フレームの表示画像の原点Y0を基準として拡大縮小を行うことができる。
y=(Y+0.5)×Sy … (6)
【0106】
(6)式は、例えば、図9の時刻t303〜t305でキャプチャした画像データを時刻t306〜t309で2ndフィールドの画像データとして表示する際に、CPC105が描画領域_1から画像データを読み出すアドレス(x,y)を算出するのに用いる。
【0107】
なお、VCC104がキャプチャした2ndフィールドの画像をCPC105が2ndフィールドの画像として読み出し表示させる場合は、CPC105は(4)式のy座標に関する補正と(6)式のY座標に関する補正の双方を行い、拡大縮小の変換を(7)式で行う。
y=(Y+0.5)×Sy−0.5 … (7)
【0108】
(7)式は、例えば、図11の時刻t503〜t505でキャプチャした2ndフィールドの画像データを時刻t506〜t509で2ndフィールドの画像データとして表示する際に、CPC105が描画領域_1から画像データを読み出すアドレス(x,y)を算出するのに用いる。
【0109】
図17は、CPC105で拡大縮小の座標変換を行う際の機能を示す機能構成図である。図17において、符号11はX座標からx座標を求めるための座標変換を行うx座標変換部であり、具体的には(1)式の演算を行う。
【0110】
符号12はY座標に対してoffset_1を加算する第1のオフセット補正部であり、表示画像がインタレース方式で且つ2ndフィールドを表示する場合のみoffset_1=+0.5となり、その他の場合はoffset_1=0となる。第1のオフセット補正部12による補正は、(6)式で行った補正に相当する。
【0111】
なお、第1のオフセット補正部12は、CRTコントローラ110から表示画像がプログレッシブ方式、インタレース方式の1stフィールド、インタレース方式の2ndフィールドの何れの画像であるかを判定する。
【0112】
符号13はY座標からy座標を求めるための座標変換を行うy座標変換部であり、具体的には(2)式の演算を行う。符号14はy座標変換部の演算結果に対してoffset_2を加算する第2のオフセット補正部であり、キャプチャ画像がインタレース方式で且つ2ndフィールドの画像である場合のみoffset_2=−0.5となり、その他の場合はoffset_2=0となる。第2のオフセット補正部14による補正は、(4)式で行った補正に相当する。
【0113】
なお、第2のオフセット補正部12は、VCC104からキャプチャした画像がプログレッシブ方式、インタレース方式の1stフィールド、インタレース方式の2ndフィールドの何れの画像であるかを判定する。
【0114】
以上が、CPC105で行う座標の補正方法を説明したが、上記補正方法は拡大縮小の処理を行う場合だけでなく、傾き補正や歪曲補正など他の座標変換を行う際にも用いることが可能である。
【0115】
表示プレーン領域に表示する座標Xから表示データの座標xを求める際の関数をFx、表示プレーン領域に表示する座標Yから表示データの座標yを求める際の関数をFyとおくと、CPC105で行う座標変換は一般に(8)式及び(9)式で表される。
x=Fx(X,Y) … (8)
y=Fy(X,Y) … (9)
【0116】
(8)式及び(9)式に対して、offset_1及びoffset_2を用いた補正を行うと、(10)式および(11)式となる。
x=Fx(X,Y+offset_1) … (10)
y=Fy(X,Y+offset_1)+offset_2 … (11)
上述した拡大縮小の処理では、Fx(X,Y)=X×Sx、Fy(X,Y)=Y×Syである。
【0117】
本実施形態では、キャプチャ画像又は表示画像がインタレース方式の2ndフィールドの画像である場合にCPC105がoffset_1又はoffset_2によるオフセット補正を行うことで、元の1フレームの画像を基準とした座標変換を行うことが可能となり、本来表示すべき正確な座標の画像データを表示することができる。
【0118】
以上、本発明の実施形態を詳述してきたが、具体的な構成は本実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、本実施形態では、ビデオメモリ領域にトリプルバッファとして3つの描画領域を設けたが、4つ以上の描画領域を設けてキャプチャした画像データを順次書き込み、順次読み出す形態としてもよい。
【産業上の利用可能性】
【0119】
本発明は、ビデオメモリ上に記憶された画像の座標変換を行い表示領域に表示させる画像処理装置に用いて好適である。
【図面の簡単な説明】
【0120】
【図1】本発明の一実施形態に係る画像処理装置の構成を示す構成図である。
【図2】図1のVDP1におけるキャプチャ及び表示のモードとトリプルバッファのインクリメントとの対応関係を示す図である。
【図3】図2で示した各描画モードの機能を示す図である。
【図4】図2で示した各モードにおいて、ビデオメモリ3内におけるキャプチャ映像の記憶領域を示す図である。
【図5】VCC104がビデオメモリ3内のトリプルバッファにキャプチャした画像データを書き込む際の処理を示すフローチャートである。
【図6】CPC105がビデオメモリ3内のトリプルバッファから画像データを読み出す際の処理を示すフローチャートである。
【図7】図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より短い場合の例である。
【図8】図2の設定1におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より長い場合の例である。
【図9】図2の設定2におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フィールド周期より短い場合の例である。
【図10】図2の設定3におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フレーム周期より長い場合の例である。
【図11】図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より短い場合の例である。
【図12】図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より短い場合の例である。
【図13】図2の設定4におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフィールド周期が表示フィールド周期より長い場合の例である。
【図14】図2の設定6又は8におけるキャプチャ及び表示のタイミングを示す図であり、キャプチャフレーム周期が表示フレーム周期より長い場合の例である。
【図15】CPC105で行う座標変換を示す図である。
【図16】1フレームの画像と、インタレース方式における1stフィールド及び2ndフィールドの画像の原点の位置関係を示す図である。
【図17】CPC105で拡大縮小の座標変換を行う際の機能を示す機能構成図である。
【符号の説明】
【0121】
1…VDP(画像処理装置)、2…CPU、3…ビデオメモリ、11…x座標変換部、12…第1のオフセット補正部(第一のオフセット加算手段)、13…y座標変換部(座標変換手段)、14…第2のオフセット補正部(第二のオフセット加算手段)、101…CPUインターフェースモジュール、102…VRAMインターフェースモジュール、103…VDU、104…VCC、105…CPC、106…DPU、107…OSDプレーンコントローラ、108…PDC、109…DAC、110…CRTコントローラ、111…クロックジェネレータ。
【特許請求の範囲】
【請求項1】
ビデオメモリに記憶された画像データを読み出して表示領域に表示させる画像処理装置において、
前記表示領域に表示する画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する表示画像判定手段と、
前記表示画像判定手段で2ndフィールドの画像データであると判定された場合に、前記表示領域上の座標に対して第一のオフセットを加算する第一のオフセット加算手段と、
前記オフセット加算後の座標に対して所定の座標変換を行う座標変換手段と、
前記ビデオメモリに記憶された画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する記憶画像判定手段と、
前記記憶画像判定手段で2ndフィールドの画像データであると判定された場合に、前記座標変換手段で座標変換後の座標に対して第二のオフセットを加算する第二のオフセット加算手段と、
前記第二のオフセット加算手段で加算後の座標で示される画像データを前記表示領域上の座標で表示する画像データとして前記ビデオメモリから読み出す画像読み出し手段と
を具備することを特徴とする画像処理装置。
【請求項2】
前記第一のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記第二のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする請求項1又は請求項2に記載の画像処理装置。
【請求項1】
ビデオメモリに記憶された画像データを読み出して表示領域に表示させる画像処理装置において、
前記表示領域に表示する画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する表示画像判定手段と、
前記表示画像判定手段で2ndフィールドの画像データであると判定された場合に、前記表示領域上の座標に対して第一のオフセットを加算する第一のオフセット加算手段と、
前記オフセット加算後の座標に対して所定の座標変換を行う座標変換手段と、
前記ビデオメモリに記憶された画像データがインタレース方式の2ndフィールドの画像データであるか否かを判定する記憶画像判定手段と、
前記記憶画像判定手段で2ndフィールドの画像データであると判定された場合に、前記座標変換手段で座標変換後の座標に対して第二のオフセットを加算する第二のオフセット加算手段と、
前記第二のオフセット加算手段で加算後の座標で示される画像データを前記表示領域上の座標で表示する画像データとして前記ビデオメモリから読み出す画像読み出し手段と
を具備することを特徴とする画像処理装置。
【請求項2】
前記第一のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記第二のオフセットは、1フィールドの画像データの垂直方向の幅に対して半分の幅の値であることを特徴とする請求項1又は請求項2に記載の画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2007−298759(P2007−298759A)
【公開日】平成19年11月15日(2007.11.15)
【国際特許分類】
【出願番号】特願2006−126847(P2006−126847)
【出願日】平成18年4月28日(2006.4.28)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】
【公開日】平成19年11月15日(2007.11.15)
【国際特許分類】
【出願日】平成18年4月28日(2006.4.28)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】
[ Back to top ]