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
- egenskaper för effekt
- Skalningslägen
- kantlinjelägen
- bitmapp för utdata
- Krav
- Relaterade ämnen
Exempelbild
Exemplet här visar indata och utdata för konvolvematriseffekten med en kernel på 3 x 3.
Före |
---|
![]() |
Efter |
![]() |
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 |