チュートリアル: インテル® IPP 9.0 による画像の回転とブラー

インテル® IPP 画像処理の基本

このセクションでは、インテル® IPP の画像処理で使用される基本的な概念について説明します。

画像の表現

画像はピクセルのラインとして表現できます。画像形式に応じて、1 つのピクセルで 1 つ以上の整数値または浮動小数点値を保持できます。画像の各行には同じ数のピクセルが含まれます。画像ステップは、画像の連続するラインの始点間の距離に等しい値 (バイト単位) です。

対象領域 (ROI) の処理

ほとんどのインテル® IPP 画像処理関数は、画像全体だけでなく、画像内の領域も操作できます。画像の対象領域 (ROI) は、画像の一部または画像全体の矩形領域です。ROI 処理をサポートするインテル® IPP 関数には、名前に R 記述子が含まれています。

以下の図に示すように、画像の ROI は、サイズと画像の原点からのオフセットにより定義されます。画像の原点は左上隅で、x 値は右向き (左から右) に増加し、y 値は下向き (上から下) に増加します。

関数データの初期化

ほとんどのインテル® IPP 関数は、メモリー割り当てを実行しません。また、アルゴリズム実行のために事前に計算された値を保存する (または一時データを保持する) 外部メモリーバッファーは必要ありません。必要なバッファーのサイズを取得するには、次の補助関数を使用します。

関数 説明
<processing function>GetSize <processing function>Init によって初期化される事前に計算したデータ構造のバッファーサイズを取得します。
<processing function>GetBufferSize 処理関数に渡される一時バッファーのサイズを取得します。

画像境界タイプの設定

多くの画像処理アルゴリズムは、浮動小数点 (x, y ) 座標でピクセルをサンプリングして、中間画像または出力画像を計算します。 画質を向上するには、隣接ピクセルを使用してサンプリングしたピクセル値を計算するフィルターを適用します。つまり、以下の図に示すように、3x3 フィルターカーネルを使用して (8 つの隣接ピクセルを使用して) サイズ 6x6 の画像を取得するには、サイズ 8x8 の画像が必要になります。

フィルター操作は画像サイズを縮小します。画像サイズを保持して画像の境界ピクセルを処理するには、画像を拡張する必要があります。インテル® IPP には、さまざまなタイプの境界処理が用意されています。

複製された境界
境界ピクセルはソース画像のエッジピクセルから複製されます。
定数の境界
すべての境界ピクセルの値は定数に設定されます。
透明な境界
ソース画像から逆変換された場所を含むデスティネーション・ピクセルは処理されません。
メモリーの境界
ソース画像の境界ピクセルはメモリーのソース画像ピクセルから取得されます。
組み合わせ境界
透明な境界とメモリーの境界の組み合わせが適用されます。

インテル® IPP 関数の境界処理手法を設定するには、borderType (または border) パラメーターと borderValue パラメーターを使用します。 特定の関数でサポートしている境界タイプのリストは、『インテル® IPP リファレンス・マニュアル』を参照してください。

戻る次へ