Faltungsmatrixeffekt
Verwenden Sie den konvolvierten Matrixeffekt, um einen beliebigen 2D-Kernel auf ein Image anzuwenden. Sie können diesen Effekt verwenden, um Unschärfen zu erkennen, Kanten, Ränder zu erkennen oder ein Bild zu schärfen.
Die CLSID für diesen Effekt ist CLSID _ D2D1ConvolveMatrix.
- Beispielbild
- Effect-Eigenschaften
- Skalierungsmodi
- Rahmenmodi
- Ausgabebitmap
- Anforderungen
- Zugehörige Themen
Beispielbild
Das hier gezeigte Beispiel zeigt die Eingabe und Ausgabe des konvolviven Matrixeffekts mit einem 3 x 3-Kernel.
| Vorher |
|---|
![]() |
| Nach |
![]() |
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();
Effect-Eigenschaften
| Anzeigename und Indexenumeration | BESCHREIBUNG |
|---|---|
| KernelUnitLength D2D1 _ CONVOLVEMATRIX _ PROP _ KERNEL _ UNIT _ LENGTH |
Die Größe einer Einheit im Kernel. Die Einheiten befinden sich in (DIPs/Kerneleinheit), wobei eine Kerneleinheit die Größe des Elements im Konvolutionskernel ist. Der Wert 1 (DIP/Kerneleinheit) entspricht einem Pixel in einem Bild mit 96 DPI. Der Typ ist FLOAT. Der Standardwert ist 1,0f. |
| Scalemode D2D1 _ CONVOLVEMATRIX _ PROP _ SCALE _ MODE |
Der Interpolationsmodus, den der Effekt verwendet, um das Bild auf die entsprechende Länge der Kerneleinheit zu skalieren. Es gibt sechs Skalierungsmodi, die in Qualität und Geschwindigkeit reichen. Der Typ ist der _ CONVOLVEMATRIX-SKALIERUNGSMODUS D2D1. _ _ Der Standardwert ist D2D1 _ CONVOLVEMATRIX _ SCALE _ MODE _ LINEAR. |
| KernelSizeX D2D1 _ CONVOLVEMATRIX _ PROP _ KERNEL _ SIZE _ X |
Die Breite der Kernelmatrix. Die Einheiten werden in Kerneleinheiten angegeben. Der Typ ist UINT32. Der Standardwert ist 3. |
| KernelSizeY D2D1 _ CONVOLVEMATRIX _ PROP _ KERNEL _ SIZE _ Y |
Die Höhe der Kernelmatrix. Die Einheiten werden in Kerneleinheiten angegeben. Der Typ ist UINT32. Der Standardwert ist 3. |
| KernelMatrix D2D1 _ CONVOLVEMATRIX _ PROP _ KERNEL _ MATRIX |
Die Kernelmatrix, die auf das Image angewendet werden soll. Die Kernelelemente sind nicht gebunden und werden als float-Elemente angegeben. Der erste Satz von KernelSizeX-Zahlen in FLOAT [ ] entspricht der ersten Zeile im Kernel. Die zweite Gruppe von KernelSizeX-Zahlen entspricht der zweiten Zeile und so weiter bis zu KernelSizeY-Zeilen. Der Typ ist [ ] FLOAT. Der Standardwert ist {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f}. |
| Divisor D2D1 _ CONVOLVEMATRIX _ PROP _ DIVISOR |
Die Kernelmatrix wird auf ein Pixel angewendet, und dann wird das Ergebnis durch diesen Wert geteilt. 0 verhält sich wie der Wert float epsilon. Der Typ ist FLOAT. Der Standardwert ist 1,0f. |
| Verzerrung (Bias) D2D1 _ CONVOLVEMATRIX _ PROP _ BIAS |
Der Effekt wendet die Kernelmatrix, den Divisor an, und dann wird die Verzerrung zum Ergebnis hinzugefügt. Der Bias ist ungebunden und unitlos. Der Typ ist FLOAT. Der Standardwert ist 0,0f. |
| KernelOffset D2D1 _ CONVOLVEMATRIX _ PROP _ KERNEL _ OFFSET |
Verschiebt den Konvolutionskernel von einer zentrierten Position auf dem Ausgabepixel in eine Position, die Sie links/rechts und nach oben/unten angeben. Der Offset wird in Kerneleinheiten definiert. Bei einigen Offsets und Kernelgrößen werden die Convolutionskernel-Beispiele nicht in ein Pixelbildcenter gelandet. Die Pixelwerte für das Kernelbeispiel werden durch bilineare Interpolation berechnet. Der Typ ist D2D1 _ VECTOR _ 2F. Der Standardwert ist {0,0f, 0,0f}. |
| PreserveAlpha D2D1 _ CONVOLVEMATRIX _ PROP _ PRESERVE _ ALPHA |
Gibt an, ob der Konvolutionskernel auf den Alphakanal oder nur auf die Farbkanäle angewendet wird. Wenn Sie dies auf TRUE festlegen, wird der Konvolutionskernel nur auf die Farbkanäle angewendet. Wenn Sie dies auf FALSE festlegen, wird der Konvolutionskernel auf alle Kanäle angewendet. Der Typ ist BOOL. Der Standardwert ist FALSE. |
| BorderMode D2D1 _ CONVOLVEMATRIX _ PROP _ BORDER _ MODE |
Der Modus, der verwendet wird, um den Rahmen des Bilds zu berechnen, soft oder hard. Weitere Informationen finden Sie unter Rahmenmodi. Der Typ ist D2D1 _ BORDER _ MODE. Der Standardwert ist D2D1 _ BORDER _ MODE _ SOFT. |
| ClampOutput D2D1 _ CONVOLVEMATRIX _ _ PROP-KLAMMERAUSGABE _ |
Gibt an, ob der Effekt Farbwerte auf zwischen 0 und 1 klammert, bevor der Effekt die Werte an den nächsten Effekt im Diagramm übergibt. Der Effekt klammert die Werte vor der Prämultiplierung des Alpha-. Wenn Sie dies auf TRUE festlegen, klammert der Effekt die Werte. Wenn Sie dies auf FALSE festlegen, klammert der Effekt die Farbwerte nicht, aber andere Effekte und die Ausgabeoberfläche können die Werte klammern, wenn sie nicht hoch genug sind. Der Typ ist BOOL. Der Standardwert ist FALSE. |
Skalierungsmodi
| Enumeration | Beschreibung |
|---|---|
| D2D1 _ CONVOLVEMATRIX _ SCALE _ MODE _ NEAREST _ NEIGHBOR | Probieren Sie den nächstgelegenen einzelnen Punkt aus, und verwendet diesen. Dieser Modus verwendet weniger Verarbeitungszeit, gibt jedoch das Bild mit der niedrigsten Qualität aus. |
| D2D1 _ CONVOLVEMATRIX _ SCALE _ MODE _ LINEAR | Verwendet eine Vier-Punkt-Stichprobe und lineare Interpolation. Dieser Modus gibt ein Bild mit höherer Qualität als der nächste Nachbarmodus aus. |
| D2D1 _ CONVOLVEMATRIX _ SCALE MODE _ _ KUBISCH | Verwendet einen kubischen Kernel mit 16 Beispielen für die Interpolation. In diesem Modus wird die meiste Verarbeitungszeit verwendet, aber es wird ein Bild mit höherer Qualität ausgegeben. |
| D2D1 _ CONVOLVEMATRIX _ SCALE _ MODE _ MULTI _ SAMPLE _ LINEAR | Verwendet vier lineare Stichproben innerhalb eines einzelnen Pixels für ein gutes Edge-Antialiasing. Dieser Modus eignet sich gut für das Herunterskalierung um kleine Mengen auf Bildern mit wenigen Pixeln. |
| D2D1 _ CONVOLVEMATRIX _ SCALE MODE _ _ ANISOTROP | Verwendet die Anisotrope Filterung, um ein Muster entsprechend der transformierten Form der Bitmap abzubilden. |
| D2D1 _ CONVOLVEMATRIX _ SCALE _ MODE _ HIGH _ QUALITY _ CUBIC | Verwendet einen kubischen Kernel variabler Größe, um das Bild vorab herunterzuskalieren, wenn die Transformationsmatrix eine Downskalierung umfasst. Verwendet dann den kubischen Interpolationsmodus für die endgültige Ausgabe. |
Hinweis
Wenn Sie keinen Modus auswählen, wird standardmäßig D2D1 _ CONVOLVEMATRIX _ SCALE MODE LINEAR _ _ verwendet.
Rahmenmodi
| Name | BESCHREIBUNG |
|---|---|
| D2D1 _ BORDER _ MODE _ SOFT | Der Effekt aufgefüllt das Eingabebild mit transparenten schwarzen Pixeln für Stichproben außerhalb der Eingabegrenzen, wenn der Konvolutionskernel angewendet wird. Dadurch wird ein weicher Rand für das Bild erstellt, und im Prozess wird die Ausgabebitmap um die Größe des Kernels erweitert. |
| D2D1 _ BORDER _ MODE _ HARD | Der Effekt erweitert das Eingabebild um eine Rahmentransformation des Spiegeltyps für Stichproben außerhalb der Eingabegrenzen. Die Größe der Ausgabebitmap entspricht der Größe der Eingabebitmap. |
Ausgabebitmap
Die Größe der Ausgabe des Effekts hängt von der Größe des Konvolutionskernels, dem Kerneloffset, der Länge der Kerneleinheit und der Einstellung für den Rahmenmodus ab.
Requirements (Anforderungen)
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) | Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps] |
| Unterstützte Mindestversion (Server) | Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps] |
| Header | d2d1effects.h |
| Bibliothek | d2d1.lib, dxguid.lib |

