インテルのみ表示可能 — GUID: hfb1639651400541
Ixiasoft
インテルのみ表示可能 — GUID: hfb1639651400541
Ixiasoft
30.3. Scaler IPの機能の説明
ニアレストネイバー
ニアレストネイバーでは、アップスケール中に出力でこのラインを複数回繰り返すことができるように、入力フィールドの1行を格納するラインバッファーが必要です。ニアレストネイバーのスケーリングでは補間やフィルタリングが行われないため、結果の画像がブロック状になることがあります。
バイリニア
バイリニア・スケーリングは、隣接するピクセル間を補間してニアレスト・ネイバーのスケーリングのブロック状の外観を除去することで、ニアレストネイバーに比べて品質が向上します。バイリニア・スケーリングは、ダウンスケーリング (画像サイズの縮小) よりもアップスケーリング (画像サイズの拡大) に適しています。基本的なバイリニアフィルターのカットオフ周波数は、ダウンスケーリングによって発生する可能性のあるエイリアシング・アーティファクトをすべて除去するには一般に高すぎます。ただし、アップスケールの場合でも、画像のエッジが柔らかくなり、結果が多少ぼやけて見えることがあります。
バイリニア・アルゴリズムは、同じ入力ピクセルを選択して、ニアレストネイバーのアルゴリズムとして各出力ピクセルを作成します。ターゲット入力ピクセルの周囲に2x2ピクセルウィンドウをビルドします。ターゲットピクセルはウィンドウの左上隅にあります。ピクセルは整数の位置にのみ存在するため、floor関数は入力ピクセルの位置 (x と y の値) を計算して整数のインデックスを与えます。ただし、整数インデックスには、小数点以下の位置情報をすべて保持する理想的な位置と比較すると、多少の誤差があります。例えば、floor関数を適用する前の理想値が1.5の場合、 floor関数を適用した後の整数値は1となり、誤差は0.5になります。バイリニア・アルゴリズムは、水平位置誤差値と垂直位置誤差値、それぞれerr h とerr v を使用して係数を作成し、整数ピクセル位置の周囲に作成された2x2ピクセルウィンドウに適用すると、結果として目的の分数位置に効果的に配置されるピクセルが生成されます。方程式は、係数の値がどのように作成され、ピクセルの入力ウィンドウに適用されて出力ピクセルを作成するかを示しています。
考えられるすべてのスケーリング比に対して正確な精度でerr h およびerr v の値を計算するには、数学を実装するハードウェアに無限数の小数ビットが必要です。水平方向と垂直方向の計算に含める小数ビットの数 (それぞれ frac h とfrac v ) をパラメーターを介して指定する必要があります。IPは、frac h の値をHorizontal coefficient fraction bitsパラメーターから取得し、frac v の値をVertical coefficient fraction bitsパラメーターから取得します。必要なレベルの精度を設定すると、方程式は値を示します。
バイリニアフィルターに必要な2x2ピクセルウィンドウを作成するには、バイリニア・アルゴリズムに、入力ビデオの2行を格納するラインバッファーが必要です。
ポリフェーズ
ポリフェーズ・アルゴリズムは最も多くのリソースを必要としますが、最高品質の結果を生成します。このアルゴリズムは、バイリニア・スケーリングに使用される2x2タップフィルターよりも大きい補間フィルターを使用します。選択した係数に応じて、これらのフィルターは周波数応答を改善し、アップスケール時のエッジのぼやけを減らし、ダウンスケール時のエイリアシング・アーティファクトを減らします。フィルターのサイズが大きくなると、垂直ウィンドウを作成するために格納する必要がある入力ビデオラインの数が増え、フィルター計算を実装するためのDSPブロック (乗算器) の使用が増えます。
ポリフェーズ・アルゴリズムは、ニアレストネイバーのスケーリングと同じ初期整数ピクセル位置を使用し、バイリニア・アルゴリズムと同じ方法で位置誤差値を計算します。ただし、これらのエラー値を直接使用してフィルター係数を計算するのではなく、ポリフェーズ・アルゴリズムはエラー値を水平および垂直フィルター係数メモリーへのアドレスとして使用します。係数メモリー内の各アドレスは位相と呼ばれます (その理由は係数選択の項で説明します)。水平位相と垂直位相の数、num_phase h およびnum_phase v をそれぞれパラメーターを介して定義します。 Number of horizontal phasesパラメーターはnum_phase h の値を設定し、Number of vertical phasesパラメーターはnum_phase v の値を設定します。次の式は、各出力ピクセルの水平位相であるphase h 、および垂直位相であるphase v を示します。
水平および垂直スケーリング・フィルター (それぞれnum_taps h およびnum_taps v ) で使用されるタップ数を定義します。タップ数は4から64の任意の値にできます。タップ数を増やすと、より正確なフィルター伝達関数が可能になりますが、余分なDSPブロックの使用率が犠牲になり、垂直フィルターの場合は、垂直サンプルウィンドウの作成に必要なラインバッファー内のブロックメモリーの使用率が増加します。係数メモリー内の各垂直位相または水平位相には、垂直フィルターまたは水平フィルターの各タップごとに1つの係数が含まれます。
スケーラーは、最初に垂直スケーリング関数 (選択されている場合) を実装し、次に水平スケーリング関数 (選択されている場合) を実装します。垂直スケーリングの結果、目的の出力高さを持ち、元の入力幅を保持した中間画像を取得できます。inter[x,j] を中間画像の水平位置xおよび垂直位置jのピクセル値、coeff f v [n] をタップN (phase v から選択) の垂直スケーリング・フィルター係数とすると、次の方程式は、IPによる中間画像の計算方法を示しています。フィルタータップには、0が「最も古い」データ (画像の上端に最も近い)、num_taps v - 1が最新のデータ (画像の下端に最も近い) でインデックス付けされます。
coeff f h [n] がタップN (selected from phase v から選択) の水平スケーリング・フィルター係数である場合、式はIPが中間画像から最終出力画像を計算する方法を示します。フィルタータップには、0が最も古いデータ (画像の左端に最も近い)、num_taps h - 1が最新のデータ (画像の右端に最も近い) で再びインデックス付けされます。