Effetto con matrice di convoluzione
Usare l'effetto matrice convolve per applicare un kernel 2D arbitrario a un'immagine. È possibile usare questo effetto per sfocatura, rilevare bordi, rilievo o affilare un'immagine.
Il CLSID per questo effetto è CLSID_D2D1ConvolveMatrix.
- Immagine di esempio
- Proprietà dell'effetto
- Modalità di scalabilità
- Modalità bordo
- Bitmap di output
- Requisiti
- Argomenti correlati
Immagine di esempio
L'esempio seguente mostra l'input e l'output dell'effetto matrice convolve con un kernel 3 x 3.
Prima di |
---|
Dopo |
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();
Proprietà dell'effetto
Enumerazione del nome visualizzato e dell'indice | Descrizione |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
Dimensioni di un'unità nel kernel. Le unità si trovano in (unità DIP/kernel), dove un'unità kernel è la dimensione dell'elemento nel kernel di convoluzione. Il valore 1 (unità DIP/kernel) corrisponde a un pixel in un'immagine a 96 DPI. Il tipo è FLOAT. Il valore predefinito è 1,0f. |
Scalemode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
Modalità di interpolazione usata dall'effetto per ridimensionare l'immagine alla lunghezza dell'unità kernel corrispondente. Esistono sei modalità di scala che vanno in qualità e velocità. Il tipo è D2D1_CONVOLVEMATRIX_SCALE_MODE. Il valore predefinito è D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR. |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
Larghezza della matrice del kernel. Le unità sono specificate nelle unità kernel. Il tipo è UINT32. Il valore predefinito è 3. |
KernelSizeY D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
Altezza della matrice del kernel. Le unità sono specificate nelle unità kernel. Il tipo è UINT32. Il valore predefinito è 3. |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
Matrice del kernel da applicare all'immagine. Gli elementi del kernel non sono delimitati e vengono specificati come float. Il primo set di numeri KernelSizeX in FLOAT[] corrisponde alla prima riga del kernel. Il secondo set di numeri KernelSizeX corrisponde alla seconda riga e così via fino alle righe KernelSizeY . Il tipo è FLOAT[]. Il valore predefinito è {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f}. |
Divisore D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
La matrice del kernel viene applicata a un pixel e quindi il risultato viene diviso per questo valore. 0 si comporta come valore di float epsilon. Il tipo è FLOAT. Il valore predefinito è 1,0f. |
Pregiudizi D2D1_CONVOLVEMATRIX_PROP_BIAS |
L'effetto applica la matrice del kernel, il divisore e quindi la distorsione viene aggiunta al risultato. Il pregiudizio non è associato e non è unitario. Il tipo è FLOAT. Il valore predefinito è 0,0f. |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFF edizione Standard T |
Sposta il kernel di convoluzione da una posizione centrata sul pixel di output a una posizione specificata da sinistra/destra e su/giù. L'offset è definito nelle unità kernel. Con alcuni offset e dimensioni del kernel, i campioni del kernel di convoluzione non verranno spostati su un centro immagini pixel. I valori pixel per l'esempio del kernel vengono calcolati dall'interpolazione bilineare. Il tipo è D2D1_VECTOR_2F. Il valore predefinito è {0.0f, 0.0f}. |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRE edizione Standard RVE_ALPHA |
Specifica se il kernel di convoluzione viene applicato al canale alfa o solo ai canali di colore. Se si imposta questa opzione su TRUE , il kernel di convoluzione viene applicato solo ai canali di colore. Se si imposta questa opzione su FAL edizione Standard il kernel di convoluzione viene applicato a tutti i canali. Il tipo è BOOL. Il valore predefinito è FALSE. |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
Modalità utilizzata per calcolare il bordo dell'immagine, morbido o rigido. Per altre informazioni, vedi Modalità bordo. Il tipo è D2D1_BORDER_MODE. Il valore predefinito è D2D1_BORDER_MODE_SOFT. |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
Indica se l'effetto blocca i valori di colore su tra 0 e 1 prima che l'effetto passi i valori all'effetto successivo nel grafico. L'effetto blocca i valori prima di premoltiplicare l'alfa . Se si imposta questa proprietà su TRUE, l'effetto bloccherà i valori. Se si imposta questa opzione su FAL edizione Standard, l'effetto non blocca i valori dei colori, ma altri effetti e la superficie di output potrebbero bloccare i valori se non sono sufficientemente precisi. Il tipo è BOOL. Il valore predefinito è FALSE. |
Modalità di scalabilità
Enumerazione | Descrizione |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | Campiona il singolo punto più vicino e lo usa. Questa modalità usa meno tempo di elaborazione, ma restituisce l'immagine di qualità più bassa. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | Usa un campione a quattro punti e l'interpolazione lineare. Questa modalità restituisce un'immagine di qualità superiore rispetto alla modalità vicina più vicina. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | Usa un kernel cubico di esempio 16 per l'interpolazione. Questa modalità usa il tempo di elaborazione più elevato, ma restituisce un'immagine di qualità superiore. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | Usa 4 campioni lineari all'interno di un singolo pixel per un buon anti-aliasing dei bordi. Questa modalità è utile per ridurre le dimensioni di piccole quantità nelle immagini con pochi pixel. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | Usa il filtro anisotropico per campionare un modello in base alla forma trasformata della bitmap. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | Usa un kernel cubico di dimensioni variabili di alta qualità per eseguire una pre-riduzione della scala dell'immagine se il ridimensionamento è coinvolto nella matrice di trasformazione. Usa quindi la modalità di interpolazione cubica per l'output finale. |
Nota
Se non si seleziona una modalità, per impostazione predefinita l'effetto viene D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.
Modalità bordo
Nome | Descrizione |
---|---|
D2D1_BORDER_MODE_SOFT | L'effetto inserisce l'immagine di input con pixel neri trasparenti per campioni esterni ai limiti di input quando applica il kernel di convoluzione. In questo modo viene creato un bordo morbido per l'immagine e nel processo viene espansa la bitmap di output in base alle dimensioni del kernel. |
D2D1_BORDER_MODE_HARD | L'effetto estende l'immagine di input con una trasformazione del bordo di tipo mirror per campioni esterni ai limiti di input. Le dimensioni della bitmap di output sono uguali alle dimensioni della bitmap di input. |
Bitmap di output
Le dimensioni dell'output dell'effetto dipendono dalle dimensioni del kernel di convoluzione, dall'offset del kernel, dalla lunghezza dell'unità kernel e dall'impostazione della modalità bordo.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Server minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Intestazione | d2d1effects.h |
Libreria | d2d1.lib, dxguid.lib |