Convolve matrixeffect
Gebruik het convolve matrixeffect om een willekeurige 2D-kernel toe te passen op een installatiekopie. U kunt dit effect gebruiken om randen, reliëfs te detecteren of een afbeelding te verscherpen.
De CLSID voor dit effect is CLSID_D2D1ConvolveMatrix.
- voorbeeldafbeelding
- eigenschappen van effect
- schaalmodi
- randmodi
- uitvoer bitmap
- vereisten
- Verwante onderwerpen
Voorbeeldafbeelding
In het voorbeeld ziet u de invoer en uitvoer van het convolve matrixeffect met een kernel van 3 x 3.
Voor |
---|
![]() |
Na |
![]() |
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();
Effecteigenschappen
Weergavenaam en indexenumeratie | Beschrijving |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
De grootte van één eenheid in de kernel. De eenheden bevinden zich in (DIPs/kernel-eenheid), waarbij een kerneleenheid de grootte is van het element in de convolutionele kernel. Een waarde van 1 (DIP/kernel-eenheid) komt overeen met één pixel in een afbeelding bij 96 DPI. Het type is FLOAT. De standaardwaarde is 1,0f. |
ScaleMode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
De interpolatiemodus die het effect gebruikt om de afbeelding te schalen naar de bijbehorende lengte van de kerneleenheid. Er zijn zes schaalmodi die variëren in kwaliteit en snelheid. Het type is D2D1_CONVOLVEMATRIX_SCALE_MODE. De standaardwaarde is D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR. |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
De breedte van de kernelmatrix. De eenheden worden opgegeven in kerneleenheden. Het type is UINT32. De standaardwaarde is 3. |
KernelSizey D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
De hoogte van de kernelmatrix. De eenheden worden opgegeven in kerneleenheden. Het type is UINT32. De standaardwaarde is 3. |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
De kernelmatrix die moet worden toegepast op de installatiekopieën. De kernelelementen zijn niet gebonden en worden opgegeven als floats. De eerste set KernelSizeX getallen in float[] komt overeen met de eerste rij in de kernel. De tweede set KernelSizeX getallen komen overeen met de tweede rij, enzovoort tot KernelSizeY- rijen. Het type is FLOAT[]. De standaardwaarde is {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0,0f}. |
Deler D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
De kernelmatrix wordt toegepast op een pixel en vervolgens wordt het resultaat gedeeld door deze waarde. 0 gedraagt zich als een waarde van float epsilon. Het type is FLOAT. De standaardwaarde is 1,0f. |
Vooroordeel D2D1_CONVOLVEMATRIX_PROP_BIAS |
Het effect past de kernelmatrix, de deler toe en vervolgens wordt de vooroordelen toegevoegd aan het resultaat. De vooroordelen zijn niet-gebonden en eenheidsloos. Het type is FLOAT. De standaardwaarde is 0,0f. |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
Hiermee verschuift u de convolutieker van een gecentreerde positie op de uitvoer pixel naar een positie die u links/rechts en omhoog/omlaag opgeeft. De offset wordt gedefinieerd in kerneleenheden. Met enkele offsets en kernelgrootten komen de voorbeelden van de convolutionele kernel niet terecht in een pixelafbeeldingscentrum. De pixelwaarden voor het kernelvoorbeeld worden berekend door bilineaire interpolatie. Het type is D2D1_VECTOR_2F. De standaardwaarde is {0.0f, 0.0f}. |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
Hiermee geeft u op of de convolutieker wordt toegepast op het alfakanaal of alleen op de kleurkanalen. Als u dit instelt op TRUE wordt de convolutieker alleen toegepast op de kleurkanalen. Als u dit instelt op FALSE wordt de convolutionele kernel toegepast op alle kanalen. Het type is BOOL. De standaardwaarde is FALSE. |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
De modus die wordt gebruikt voor het berekenen van de rand van de afbeelding, zacht of hard. Zie Randmodi voor meer informatie. Het type is D2D1_BORDER_MODE. De standaardwaarde is D2D1_BORDER_MODE_SOFT. |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
Of de effectklemmen kleurwaarden tussen 0 en 1 voordat het effect de waarden doorgeeft aan het volgende effect in de grafiek. Het effect klemt de waarden voordat het premultiplt de alfa . Als u dit instelt op TRUE, zal het effect de waarden vastzetten. Als u dit instelt op ONWAAR, zal het effect de kleurwaarden niet klemen, maar andere effecten en het uitvoeroppervlak de waarden mogelijk vastzetten als ze niet van hoge precisie zijn. Het type is BOOL. De standaardwaarde is FALSE. |
Schaalmodi
Opsomming | Beschrijving |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | Steekt het dichtstbijzijnde single point in en gebruikt dat. In deze modus wordt minder verwerkingstijd gebruikt, maar wordt de afbeelding van de laagste kwaliteit uitgevoerd. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | Maakt gebruik van een voorbeeld van vier punten en lineaire interpolatie. Deze modus voert een afbeelding van hogere kwaliteit uit dan de dichtstbijzijnde buurmodus. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | Maakt gebruik van een 16 voorbeeldkubieke kernel voor interpolatie. In deze modus wordt de meeste verwerkingstijd gebruikt, maar wordt een afbeelding met een hogere kwaliteit uitgevoerd. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | Maakt gebruik van vier lineaire steekproeven binnen één pixel voor goede rand antialiassen. Deze modus is geschikt voor het omlaag schalen met kleine hoeveelheden afbeeldingen met een paar pixels. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | Maakt gebruik van anisotropische filtering om een patroon te steekproefen op basis van de getransformeerde vorm van de bitmap. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | Maakt gebruik van een variabele grootte van een kubieke kernel van hoge kwaliteit om een pre-downscale van de afbeelding uit te voeren als omlaag schalen wordt gebruikt in de transformatiematrix. Vervolgens wordt de kubieke interpolatiemodus gebruikt voor de uiteindelijke uitvoer. |
Notitie
Als u geen modus selecteert, wordt het effect standaard D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.
Randmodi
Naam | Beschrijving |
---|---|
D2D1_BORDER_MODE_SOFT | Het effect vult de invoerafbeelding op met transparante zwarte pixels voor steekproeven buiten de invoergrenzen wanneer de convolutionele kernel wordt toegepast. Hiermee maakt u een vloeiende rand voor de afbeelding en in het proces wordt de uitvoer bitmap uitgebreid met de grootte van de kernel. |
D2D1_BORDER_MODE_HARD | Het effect breidt de invoerafbeelding uit met een transformatie van het spiegeltype voor voorbeelden buiten de invoergrenzen. De grootte van de uitvoer bitmap is gelijk aan de grootte van de invoer bitmap. |
Uitvoer bitmap
De grootte van de uitvoer van het effect is afhankelijk van de grootte van de convolutionele kernel, de kernelverschil, de lengte van de kerneleenheid en de instelling van de randmodus.
Eisen
Eis | Waarde |
---|---|
Minimaal ondersteunde client | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Minimaal ondersteunde server | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Rubriek | d2d1effects.h |
Bibliotheek | d2d1.lib, dxguid.lib |