コンボリューション マトリックスの効果
画像に任意の 2D カーネルを適用するには、コンボリューション マトリックスの効果を使用します。 この効果を使用すると、画像のぼかし、エッジ検出、エンボス、シャープ化を行うことができます。
この効果の CLSID は CLSID_D2D1ConvolveMatrix です。
画像の例
次の例は、3 x 3 カーネルでのコンボリューション マトリックスの効果の入力と出力を示しています。
以前 |
---|
クリック後 |
ComPtr<ID2D1Effect> convolveMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ConvolveMatrix, &convolveMatrixEffect);
convolveMatrixEffect->SetInput(0, bitmap);
float matrix[9] = {-1, -1, -1, -1, 9, -1, -1, -1, -1};
convolveMatrixEffect->SetValue(D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(convolveMatrixEffect.Get());
m_d2dContext->EndDraw();
効果のプロパティ
表示名とインデックス一覧 | 説明 |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
カーネル内の 1 ユニットのサイズ。 ユニットは (DIP/カーネル ユニット) で表されます。ここで、カーネル ユニットはコンボリューション カーネル内の要素のサイズです。 値 1 (DIP/カーネル ユニット) は、96 DPI の画像内の 1 ピクセルに対応します。 型は FLOAT です。 既定値は 1.0f です。 |
ScaleMode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
画像を対応するカーネル ユニットの長さにスケーリングするために効果が使用する補間モード。 品質と速度に対応する 6 つのスケール モードがあります。 型は D2D1_CONVOLVEMATRIX_SCALE_MODE です。 既定値は D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR です。 |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
カーネル マトリックスの幅。 ユニットはカーネル ユニットで指定されます。 型は UINT32 です。 既定値は 3 です。 |
KernelSizeY D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
カーネル マトリックスの高さ。 ユニットはカーネル ユニットで指定されます。 型は UINT32 です。 既定値は 3 です。 |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
画像に適用されるカーネル マトリックス。 カーネル要素は境界付けされず、float として指定されます。 FLOAT[] 内の KernelSizeX 番号の最初のセットは、カーネルの最初の行に対応します。 KernelSizeX 番号の 2 番目のセットは、2 番目の行に対応し、KernelSizeY 行まで同様に対応します。 型は FLOAT[] です。 既定値は、{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f} です。 |
除数 D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
カーネル マトリックスがピクセルに適用され、結果がこの値で除算されます。 0 は float イプシロンの値として動作します。 型は FLOAT です。 既定値は 1.0f です。 |
Bias D2D1_CONVOLVEMATRIX_PROP_BIAS |
効果によってカーネル マトリックス、除数が適用され、結果にバイアスが追加されます。 バイアスは無制限でユニットレスです。 型は FLOAT です。 既定値は 0.0f です。 |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFF Standard Edition T |
コンボリューション カーネルを出力ピクセル上の中央の位置から、左/右および上/下に指定した位置にシフトします。 オフセットはカーネル ユニットで定義されます。 一部のオフセットとカーネル サイズでは、コンボリューション カーネルのサンプルはピクセル画像の中心には配置されません。 カーネル サンプルのピクセル値は、バイリニア補間によって計算されます。 型は D2D1_VECTOR_2F です。 既定値は {0.0f, 0.0f} です。 |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRE Standard Edition RVE_ALPHA |
コンボリューション カーネルをアルファ チャネルに適用するか、カラー チャネルのみに適用するかを指定します。 これを TRUE に設定すると、コンボリューション カーネルはカラー チャネルにのみ適用されます。 これを FALSE に設定すると、コンボリューション カーネルはすべてのチャネルに適用されます。 型は BOOL です。 既定値は FALSE です。 |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
画像の境界線を計算するために使用されるモード(ソフトまたはハード)。 詳細については、「境界線モード」を参照してください。 型は D2D1_BORDER_MODE です。 既定値は D2D1_BORDER_MODE_SOFT です。 |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
効果がグラフの次の効果に値を渡す前に、効果がカラー値を 0 から 1 の間にクランプするかどうか。 効果は、アルファを乗算済みにする前に値をクランプします。 これを TRUE に設定すると、効果は値をクランプします。 これを FALSE に設定すると、効果はカラー値をクランプしませんが、精度が十分でない場合は、他の効果と出力サーフェスが値をクランプする場合があります。 型は BOOL です。 既定値は FALSE です。 |
スケール モード
列挙 | 説明 |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | 最も近い単一ポイントをサンプリングし、それを使用します。 このモードでは処理時間は短くなりますが、最も低品質の画像が出力されます。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | 4 ポイント サンプルと線形補間を使用します。 このモードでは、ニアレストネイバー モードよりも高品質の画像が出力されます。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | 補間に 16 サンプル キュービック カーネルを使用します。 このモードでは最も処理時間は長くなりますが、より高品質の画像が出力されます。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | 単一ピクセル内で 4 つの線形サンプルを使用して、優れたエッジ アンチエイリアシングを行います。 このモードは、少ないピクセル数の画像で少しスケールダウンする場合に適しています。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | 変換マトリックスにダウンスケールが関係している場合は、可変サイズの高品質のキュービック カーネルを使用して、画像の事前ダウンスケールを実行します。 次に、最終的な出力にキュービック補間モードを使用します。 |
Note
モードを選択しない場合、効果は既定で D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR になります。
境界線モード
名前 | 説明 |
---|---|
D2D1_BORDER_MODE_SOFT | この効果は、コンボリューション カーネルを適用するときに、入力の境界外にあるサンプルで透明なブラック ピクセルを使用して入力画像を埋め込みます。 これにより、画像のソフト エッジが作成され、プロセス内でカーネルのサイズによって出力ビットマップが拡張されます。 |
D2D1_BORDER_MODE_HARD | この効果は、入力境界外のサンプルのミラー型の境界線変換で入力画像を拡張します。 出力ビットマップのサイズは、入力ビットマップのサイズと等しくなります。 |
出力ビットマップ
効果の出力のサイズは、コンボリューション カーネルのサイズ、カーネル オフセット、カーネル ユニットの長さ、および境界線モードの設定によって異なります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 および Windows 7 [デスクトップ アプリ | Windows ストア アプリ] 用の プラットフォーム更新プログラム |
サポートされている最小のサーバー | Windows 8 および Windows 7 [デスクトップ アプリ | Windows ストア アプリ] 用の プラットフォーム更新プログラム |
ヘッダー | d2d1effects.h |
ライブラリ | d2d1.lib、dxguid.lib |