Sdílet prostřednictvím


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

Příklad zde ukazuje vstup a výstup konvolve maticového efektu s jádrem 3 x 3.

Před
obrázek před efektem.
Po
obrázek po transformaci.
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

ID2D1Effect