Delen via


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

In het voorbeeld ziet u de invoer en uitvoer van het convolve matrixeffect met een kernel van 3 x 3.

Voor
de afbeelding vóór het effect.
Na
de afbeelding na de transformatie.
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

ID2D1Effect-