Konvolúciós mátrixeffektus
A konvolúciós mátrixeffektus használatával tetszőleges 2D kernelt alkalmazhat egy képre. Ezzel az effektuslal elmoshatja, észlelheti a széleket, domborításokat vagy élesítheti a képeket.
Az effektus CLSID azonosítója CLSID_D2D1ConvolveMatrix.
- példakép
- Effektus tulajdonságai
- méretezési módok
- szegélymódok
- Kimeneti bitkép
- követelmények
- Kapcsolódó témakörök
Példakép
Az alábbi példa a konvolúciós mátrixeffektus bemenetét és kimenetét mutatja be egy 3 x 3 kernellel.
Előtt |
---|
![]() |
Után |
![]() |
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();
Effektus tulajdonságai
Név és index számbavételének megjelenítése | Leírás |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
Egy egység mérete a kernelben. Az egységek (DIP-k/kernelegységek) vannak, ahol a kernelegység a konvolúciós kernel elemének mérete. Az 1 értékű (DIP/kernel egység) egy képpontnak felel meg egy képben 96 DPI-n. A típus FLOAT. Az alapértelmezett érték 1,0f. |
ScaleMode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
Az interpolációs mód, amelyet az effektus a rendszerkép megfelelő kernelegységhosszra történő skálázásához használ. Hat skálázási mód van, amelyek minőségben és sebességben is mozognak. A típus D2D1_CONVOLVEMATRIX_SCALE_MODE. Az alapértelmezett érték a D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR. |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
A kernelmátrix szélessége. Az egységek a kernelegységekben vannak megadva. A típus UINT32. Az alapértelmezett érték 3. |
KernelSizey D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
A kernelmátrix magassága. Az egységek a kernelegységekben vannak megadva. A típus UINT32. Az alapértelmezett érték 3. |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
A rendszerképre alkalmazni kívánt kernelmátrix. A kernelelemek nincsenek határban, és lebegőpontosként vannak megadva. A FLOAT[] KernelSizeX számok első halmaza a kernel első sorának felel meg. A KernelSizeX számok második halmaza a második sornak felel meg, és így tovább KernelSizeY sornak. A típus FLOAT[]. Az alapértelmezett érték a következő: {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f}. |
Osztó D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
A rendszer a kernelmátrixot egy képpontra alkalmazza, majd az eredményt elosztja ezzel az értékkel. A 0 a lebegőpontos epszilon értékeként viselkedik. A típus FLOAT. Az alapértelmezett érték 1,0f. |
Elfogultság D2D1_CONVOLVEMATRIX_PROP_BIAS |
Az effektus a kernelmátrixot, az osztót alkalmazza, majd hozzáadja az torzítást az eredményhez. Az elfogultság határtalan és egység nélküli. A típus FLOAT. Az alapértelmezett érték 0,0f. |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
A konvolúciós kernel eltolása a kimeneti képpont középre igazított pozíciójáról a bal/jobb és a fel/le megadott pozícióra. Az eltolás a kernelegységekben van definiálva. Bizonyos eltolások és kernelméretek miatt a konvolúciós kernel mintái nem fognak pixel képközpontba szállni. A kernelminta képpontértékeinek kiszámítása kétvonalas interpolációval történik. A típus D2D1_VECTOR_2F. Az alapértelmezett érték {0.0f, 0.0f}. |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
Megadja, hogy a konvolúciós kernel az alfa csatornára vagy csak a színcsatornákra van-e alkalmazva. Ha ezt igaz értékre állítja, a konvolúciós kernel csak a színcsatornákra lesz alkalmazva. Ha ezt a HAMIS állítja be, a konvolúciós kernel minden csatornára alkalmazva lesz. A típus BOOL. Az alapértelmezett érték HAMIS. |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
A kép szegélyének kiszámítására használt mód, puha vagy kemény. További információért tekintse meg szegélymódokat. A típus D2D1_BORDER_MODE. Az alapértelmezett érték a D2D1_BORDER_MODE_SOFT. |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
Azt jelzi, hogy az effektus 0 és 1 közé szorítja-e a színértékeket, mielőtt az effektus átadja az értékeket a gráf következő hatásának. Az effektus befogja az értékeket, mielőtt premultiplies az alfa . Ha igaz értékre állítja, az effektus az értékeket fogja szorítani. Ha HAMIS értékre állítja ezt be, az effektus nem fogja be a színértékeket, de más effektusok és a kimeneti felület is rögzítheti az értékeket, ha nem elég nagy pontosságúak. A típus BOOL. Az alapértelmezett érték HAMIS. |
Méretezési módok
Felsorolás | Leírás |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | Mintákat a legközelebbi egy pontot, és használja azt. Ez a mód kevesebb feldolgozási időt használ, de a legalacsonyabb minőségű képet adja ki. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | Négypontos mintát és lineáris interpolációt használ. Ez a mód jobb minőségű képet ad ki, mint a legközelebbi szomszéd mód. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | 16 köbélmintát használ az interpolációhoz. Ez a mód a legtöbb feldolgozási időt használja, de jobb minőségű képet ad ki. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | Egyetlen képponton belül 4 lineáris mintát használ a jó élelsimításhoz. Ez a mód alkalmas arra, hogy kis mennyiségekkel lefelé skálázható néhány képpontos képeken. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | Anizotróp szűréssel mintát vesz a bitkép átalakított alakjának megfelelően. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | Változó méretű, kiváló minőségű köbbél használatával előre leskálázhatja a képet, ha a skálázás részt vesz az átalakítási mátrixban. Ezután a végső kimenethez a köbinterpolációs módot használja. |
Jegyzet
Ha nem jelöl ki módot, az effektus alapértelmezés szerint D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.
Szegélymódok
Név | Leírás |
---|---|
D2D1_BORDER_MODE_SOFT | Az effektus átlátszó fekete képpontokkal párnáztatja a bemeneti képet a bemeneti korlátokon kívüli mintákhoz, amikor a konvolúciós kernelt alkalmazza. Ez egy puha élet hoz létre a képhez, és a folyamat során a kimeneti bitképet a kernel méretével bővíti. |
D2D1_BORDER_MODE_HARD | Az effektus kiterjeszti a bemeneti képet egy tükör típusú szegélyátalakítással a bemeneti korlátokon kívüli mintákhoz. A kimeneti bitkép mérete megegyezik a bemeneti bitkép méretével. |
Kimeneti bitkép
Az effektus kimenetének mérete a konvolúciós kernel méretétől, a kernel eltolásától, a kernelegység hosszától és a szegély mód beállításától függ.
Követelmények
Követelmény | Érték |
---|---|
Minimálisan támogatott ügyfél | Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások] |
Minimálisan támogatott kiszolgáló | Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások] |
Fejléc | d2d1effects.h |
Könyvtár | d2d1.lib, dxguid.lib |