次の方法で共有


コンボリューション マトリックスの効果

画像に任意の 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

ID2D1Effect