Konvolve maticový efekt
Pomocí konvolve maticového efektu použijte libovolné 2D jádro na obrázek. Tento efekt můžete použít k rozostření, rozpoznávání okrajů, embosů nebo zaostření obrázku.
CLSID pro tento efekt je CLSID_D2D1ConvolveMatrix.
- příklad obrázku
- vlastnosti efektu
- režimy škálování
- režimy ohraničení
- výstupní rastrový obrázek
- požadavky na
- související témata
Příklad obrázku
Příklad zde ukazuje vstup a výstup konvolve maticového efektu s jádrem 3 x 3.
Před |
---|
![]() |
Po |
![]() |
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();
Vlastnosti efektu
Zobrazovaný název a výčet indexu | Popis |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
Velikost jedné jednotky v jádru. Jednotky jsou v jednotkách (DIPs/kernel), kde jednotka jádra je velikost prvku v jádru konvoluce. Hodnota 1 (jednotka DIP/jádro) odpovídá jednomu pixelu na obrázku při rozlišení 96 DPI. Typ je FLOAT. Výchozí hodnota je 1,0f. |
ScaleMode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
Režim interpolace, který efekt používá ke škálování obrázku na odpovídající délku jednotky jádra. Existuje šest režimů škálování, které jsou v rozsahu kvality a rychlosti. Typ je D2D1_CONVOLVEMATRIX_SCALE_MODE. Výchozí hodnota je D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR. |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
Šířka matice jádra. Jednotky jsou zadané v jednotkách jádra. Typ je UINT32. Výchozí hodnota je 3. |
KernelSizeY D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
Výška matice jádra. Jednotky jsou zadané v jednotkách jádra. Typ je UINT32. Výchozí hodnota je 3. |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
Matice jádra, která se má použít na image. Prvky jádra nejsou vázané a jsou určené jako plovoucí. První sada KernelSizeX čísla v float[] odpovídá prvnímu řádku jádra. Druhá sada KernelSizeX čísla odpovídají druhému řádku a tak dále až KernelSizeY řádky. Typ je FLOAT[]. Výchozí hodnota je {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0,0f}. |
Dělitel D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
Matice jádra se použije na pixel a výsledek se vydělí touto hodnotou. 0 se chová jako hodnota float epsilon. Typ je FLOAT. Výchozí hodnota je 1,0f. |
Zaujatost D2D1_CONVOLVEMATRIX_PROP_BIAS |
Účinek použije matici jádra, dělitel a potom se k výsledku přidá předsudky. Předsudky jsou nevázané a bez jednotkové. Typ je FLOAT. Výchozí hodnota je 0,0f. |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
Posune konvoluční jádro ze středové pozice na výstupním pixelu na pozici, kterou zadáte doleva/doprava a nahoru/dolů. Posun je definován v jednotkách jádra. S některými posuny a velikostmi jader nebudou vzorky konvolučního jádra přistály na střed obrázku pixelu. Hodnoty pixelů pro vzorek jádra se počítají bilineární interpolací. Typ je D2D1_VECTOR_2F. Výchozí hodnota je {0.0f, 0.0f}. |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
Určuje, zda se konvoluční jádro použije na alfa kanál nebo pouze barevné kanály. Pokud nastavíte hodnotu TRUE se konvoluční jádro použije pouze na barevné kanály. Pokud nastavíte hodnotu FALSE se pro všechny kanály použije konvoluční jádro. Typ je BOOL. Výchozí hodnota je FALSE. |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
Režim použitý k výpočtu ohraničení obrázku, měkkého nebo pevného. Další informace najdete v režimech ohraničení. Typ je D2D1_BORDER_MODE. Výchozí hodnota je D2D1_BORDER_MODE_SOFT. |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
Určuje, zda efekt upne hodnoty barev mezi 0 a 1 před tím, než efekt předá hodnoty dalšímu efektu v grafu. Efekt uchytí hodnoty před tím, než premultipluje alfa . Pokud nastavíte hodnotu TRUE, efekt uchytne hodnoty. Pokud nastavíte hodnotu NEPRAVDA, efekt neuchytne hodnoty barev, ale jiné efekty a výstupní povrch mohou upnout hodnoty, pokud nejsou dostatečně vysoké přesnosti. Typ je BOOL. Výchozí hodnota je FALSE. |
Režimy škálování
Výčet | Popis |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | Vzorkuje nejbližší jeden bod a použije ho. Tento režim používá méně času zpracování, ale vypíše nejnižší kvalitu obrázku. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | Používá čtyřbodový vzorek a lineární interpolaci. Tento režim vypíše obrázek s vyšší kvalitou, než je režim nejbližšího souseda. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | Pro interpolaci se používá 16 vzorové krychlové jádro. Tento režim používá nejvíce času zpracování, ale výstupy image s vyšší kvalitou. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | Používá 4 lineární vzorky v jednom pixelu pro dobrý anti-aliasing okrajů. Tento režim je vhodný pro vertikální snížení kapacity o malé množství na obrázcích s několika pixely. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | Používá anisotropní filtrování k vzorkování vzorku podle transformovaného tvaru rastrového obrázku. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | Pomocí proměnné velikosti vysoce kvalitního krychlového jádra provede obrázek před snížením kapacity, pokud je snížení kapacity zapojeno do transformační matice. Pak použije režim krychlové interpolace pro konečný výstup. |
Poznámka
Pokud režim nevyberete, efekt se ve výchozím nastavení D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.
Režimy ohraničení
Jméno | Popis |
---|---|
D2D1_BORDER_MODE_SOFT | Efekt vloží vstupní obrázek s průhlednými černými pixely pro vzorky mimo vstupní hranice, když použije konvoluční jádro. Tím se vytvoří měkký okraj obrázku a v procesu se rozbalí výstupní rastrový obrázek o velikost jádra. |
D2D1_BORDER_MODE_HARD | Efekt rozšíří vstupní obrázek o transformaci ohraničení zrcadlového typu pro vzorky mimo vstupní hranice. Velikost výstupního rastrového obrázku se rovná velikosti vstupního rastrového obrázku. |
Výstupní rastrový obrázek
Velikost výstupu efektu závisí na velikosti jádra konvoluce, posunu jádra, délky jednotky jádra a nastavení režimu ohraničení.
Požadavky
Požadavek | Hodnota |
---|---|
Minimální podporovaný klient | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Minimální podporovaný server | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Záhlaví | d2d1effects.h |
Knihovna | d2d1.lib, dxguid.lib |