Dela via


Convolve-matriseffekt

Använd convolve-matriseffekten för att tillämpa en godtycklig 2D-kernel på en bild. Du kan använda den här effekten för att sudda ut, identifiera kanter, prägla eller slipa en bild.

CLSID för den här effekten är CLSID_D2D1ConvolveMatrix.

Exempelbild

Exemplet här visar indata och utdata för konvolvematriseffekten med en kernel på 3 x 3.

Före
bilden före effekten.
Efter
bilden efter transformen.
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();

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
KernelUnitLength
D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH
Storleken på en enhet i kerneln. Enheterna finns i (DIP:er/kernelenhet), där en kernelenhet är storleken på elementet i konvolutionskärnan. Värdet 1 (DIP/kernelenhet) motsvarar en bildpunkt i en bild vid 96 DPI.
Typen är FLOAT.
Standardvärdet är 1,0f.
ScaleMode
D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE
Interpolationsläget som effekten använder för att skala bilden till motsvarande längd på kernelenheten. Det finns sex skalningslägen som varierar i kvalitet och hastighet.
Typen är D2D1_CONVOLVEMATRIX_SCALE_MODE.
Standardvärdet är D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.
KernelSizeX
D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X
Bredden på kernelmatrisen. Enheterna anges i kernelenheter. Typen är UINT32.
Standardvärdet är 3.
KernelSizeY
D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y
Höjden på kernelmatrisen. Enheterna anges i kernelenheter. Typen är UINT32.
Standardvärdet är 3.
KernelMatrix
D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX
Den kernelmatris som ska tillämpas på avbildningen. Kernelelementen är inte avgränsade och anges som flyttal.
Den första uppsättningen KernelSizeX- tal i FLOAT[] motsvarar den första raden i kerneln. Den andra uppsättningen KernelSizeX- tal motsvarar den andra raden och så vidare upp till KernelSizeY rader.
Typen är FLOAT[].
Standardvärdet är {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f}.
Divisor
D2D1_CONVOLVEMATRIX_PROP_DIVISOR
Kernelmatrisen tillämpas på en pixel och sedan divideras resultatet med det här värdet.
0 beter sig som ett värde för float epsilon.
Typen är FLOAT.
Standardvärdet är 1,0f.
Fördom
D2D1_CONVOLVEMATRIX_PROP_BIAS
Effekten tillämpar kernelmatrisen, divisorn och sedan läggs biasen till i resultatet. Bias är obundna och enhetslösa. Typen är FLOAT.
Standardvärdet är 0,0f.
KernelOffset
D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET
Flyttar konvolutionskärnan från en centrerad position på utdatapixel till en position som du anger till vänster/höger och upp/ned. Förskjutningen definieras i kernelenheter.
Med vissa förskjutningar och kernelstorlekar hamnar inte convolution-kernelexemplen på ett bildpunktsbildcenter. Pixelvärdena för kernelexemplet beräknas med bilinearinterpolation.
Typen är D2D1_VECTOR_2F.
Standardvärdet är {0.0f, 0.0f}.
PreserveAlpha
D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA
Anger om convolution-kerneln tillämpas på alfakanalen eller endast färgkanalerna.
Om du ställer in detta på TRUE- tillämpas konvolutionskärnan endast på färgkanalerna.
Om du ställer in detta på FALSE- tillämpas invecklingskärnan på alla kanaler.
Typen är BOOL.
Standardvärdet är FALSE.
BorderMode
D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE
Det läge som används för att beräkna bildens kantlinje, mjuk eller hård. Mer information finns i kantlinjelägen.
Typen är D2D1_BORDER_MODE.
Standardvärdet är D2D1_BORDER_MODE_SOFT.
ClampOutput
D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT
Om effekten klämmer ihop färgvärden till mellan 0 och 1 innan effekten skickar värdena till nästa effekt i diagrammet. Effekten klämmer fast värdena innan den premultiplies alfa .
Om du ställer in detta på TRUE klämmer effekten fast värdena. Om du ställer in detta på FALSE kommer effekten inte att klämma in färgvärdena, men andra effekter och utdataytan kan klämma fast värdena om de inte har tillräckligt hög precision.
Typen är BOOL.
Standardvärdet är FALSE.

Skalningslägen

Uppräkning Beskrivning
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR Exempel på den närmaste enskilda punkten och använder den. I det här läget används mindre bearbetningstid, men den lägsta kvalitetsbilden matas ut.
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR Använder ett fyrpunktsexempel och linjär interpolation. Det här läget ger en bild av högre kvalitet än närmaste grannläge.
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC Använder en 16-exempelkubik kernel för interpolering. Det här läget använder mest bearbetningstid, men ger en bild av högre kvalitet.
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR Använder 4 linjära exempel inom en enda pixel för bra kantutjämning. Det här läget är bra för att skala ned med små mängder på bilder med några bildpunkter.
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC Använder anisotropisk filtrering för att prova ett mönster enligt bitmappens transformerade form.
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC Använder en kubikkärn med variabel storlek av hög kvalitet för att utföra en förskala avbildningen om nedskalning ingår i transformeringsmatrisen. Använder sedan kubikinterpoleringsläget för de slutliga utdata.

Not

Om du inte väljer ett läge kommer effekten som standard att D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.

Kantlinjelägen

Namn Beskrivning
D2D1_BORDER_MODE_SOFT Effekten fyller ut indatabilden med transparenta svarta bildpunkter för exempel utanför indatagränsen när den tillämpar involutionskärnan. Detta skapar en mjuk kant för bilden och expanderar i processen utdatabitmappen efter kernelns storlek.
D2D1_BORDER_MODE_HARD Effekten utökar indatabilden med en kantlinjetransformering av speglingstyp för exempel utanför indatagränserna. Storleken på utdatabitmappen är lika med storleken på indatabitmappen.

Utdatabitmapp

Storleken på effektens utdata beror på storleken på konvolutionskärnan, kernelförskjutningen, kernelenhetens längd och inställningen för kantlinjeläge.

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect