Efek matriks convolve
Gunakan efek matriks konvolve untuk menerapkan kernel 2D arbitrer ke gambar. Anda dapat menggunakan efek ini untuk mengaburkan, mendeteksi tepi, timbul, atau mempertajam gambar.
CLSID untuk efek ini CLSID_D2D1ConvolveMatrix.
Contoh gambar
Contoh di sini menunjukkan input dan output efek matriks convolve dengan kernel 3 x 3.
Sebelumnya |
---|
![]() |
Sesudahnya |
![]() |
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();
Properti efek
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
Ukuran satu unit dalam kernel. Unit berada di (UNIT DIP/kernel), di mana unit kernel adalah ukuran elemen dalam kernel konvolusi. Nilai 1 (unit DIP/kernel) sesuai dengan satu piksel dalam gambar pada 96 DPI. Jenisnya adalah FLOAT. Nilai defaultnya adalah 1,0f. |
ScaleMode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
Mode interpolasi yang digunakan efek untuk menskalakan gambar ke panjang unit kernel yang sesuai. Ada enam mode skala yang berkisar dalam kualitas dan kecepatan. Jenisnya D2D1_CONVOLVEMATRIX_SCALE_MODE. Nilai defaultnya adalah D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR. |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
Lebar matriks kernel. Unit ditentukan dalam unit kernel. Jenisnya adalah UINT32. Nilai defaultnya adalah 3. |
KernelSizey D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
Tinggi matriks kernel. Unit ditentukan dalam unit kernel. Jenisnya adalah UINT32. Nilai defaultnya adalah 3. |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
Matriks kernel yang akan diterapkan ke gambar. Elemen kernel tidak dibatasi dan ditentukan sebagai float. Kumpulan nomor KernelSizeX pertama di FLOAT[] sesuai dengan baris pertama dalam kernel. Kumpulan nomor KernelSizeX kedua sesuai dengan baris kedua, dan seterusnya hingga baris KernelSizeY . Jenisnya adalah FLOAT[]. Nilai defaultnya adalah {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f} . |
Pembavis D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
Matriks kernel diterapkan ke piksel dan kemudian hasilnya dibagi dengan nilai ini. 0 berulah sebagai nilai float epsilon. Jenisnya adalah FLOAT. Nilai defaultnya adalah 1,0f. |
Bias D2D1_CONVOLVEMATRIX_PROP_BIAS |
Efeknya menerapkan matriks kernel, pembagi, dan kemudian bias ditambahkan ke hasilnya. Bias tidak terbatas dan tidak bersatu. Jenisnya adalah FLOAT. Nilai defaultnya adalah 0,0f. |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
Menggeser kernel konvolusi dari posisi terpusat pada piksel output ke posisi yang Anda tentukan kiri/kanan dan atas/bawah. Offset didefinisikan dalam unit kernel. Dengan beberapa offset dan ukuran kernel, sampel kernel konvolusi tidak akan mendarat di pusat gambar piksel. Nilai piksel untuk sampel kernel dihitung oleh interpolasi bilinear. Jenisnya D2D1_VECTOR_2F. Nilai defaultnya adalah {0.0f, 0.0f}. |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
Menentukan apakah kernel konvolusi diterapkan ke saluran alfa atau hanya saluran warna. Jika Anda mengatur ini ke TRUE , kernel konvolusi hanya diterapkan ke saluran warna. Jika Anda mengatur ini ke FALSE , kernel konvolusi diterapkan ke semua saluran. Jenisnya adalah BOOL. Nilai defaultnya adalah FALSE. |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
Mode yang digunakan untuk menghitung batas gambar, lembut atau keras. Lihat Mode batas untuk informasi selengkapnya. Jenisnya D2D1_BORDER_MODE. Nilai defaultnya adalah D2D1_BORDER_MODE_SOFT. |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
Apakah efek menjepit nilai warna ke antara 0 dan 1 sebelum efek meneruskan nilai ke efek berikutnya dalam grafik. Efek menjepit nilai sebelum premultiplies alfa . Jika Anda mengatur ini ke TRUE, efek akan menjepit nilai. Jika Anda mengatur ini ke FALSE, efek tidak akan menjepit nilai warna, tetapi efek lain dan permukaan output dapat menjepit nilai jika tidak memiliki presisi yang cukup tinggi. Jenisnya adalah BOOL. Nilai defaultnya adalah FALSE. |
Mode skala
Enumeration | Deskripsi |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar kualitas terendah. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | Menggunakan sampel empat titik dan interpolasi linier. Mode ini menghasilkan gambar berkualitas lebih tinggi daripada mode tetangga terdekat. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | Menggunakan 16 sampel kernel kubik untuk interpolasi. Mode ini menggunakan waktu pemrosesan terbanyak, tetapi menghasilkan gambar berkualitas lebih tinggi. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | Menggunakan 4 sampel linier dalam satu piksel untuk anti-aliasing tepi yang baik. Mode ini baik untuk menurunkan skala dengan jumlah kecil pada gambar dengan beberapa piksel. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | Menggunakan pemfilteran anisotropic untuk mengambil sampel pola sesuai dengan bentuk bitmap yang diubah. |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | Menggunakan ukuran variabel kernel kubik berkualitas tinggi untuk melakukan pra-downscale gambar jika downscaling terlibat dalam matriks transformasi. Kemudian menggunakan mode interpolasi kubik untuk output akhir. |
Catatan
Jika Anda tidak memilih mode, efek akan default ke D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.
Mode batas
Nama | Deskripsi |
---|---|
D2D1_BORDER_MODE_SOFT | Efek menyatukan gambar input dengan piksel hitam transparan untuk sampel di luar batas input saat menerapkan kernel konvolusi. Ini menciptakan tepi lembut untuk gambar, dan dalam prosesnya memperluas bitmap output berdasarkan ukuran kernel. |
D2D1_BORDER_MODE_HARD | Efek memperluas gambar input dengan transformasi batas jenis cermin untuk sampel di luar batas input. Ukuran bitmap output sama dengan ukuran bitmap input. |
Bitmap output
Ukuran output efek tergantung pada ukuran kernel konvolusi, offset kernel, panjang unit kernel, dan pengaturan mode batas.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Pembaruan Windows 8 dan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows] |
Server minimum yang didukung | Pembaruan Windows 8 dan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows] |
Header | d2d1effects.h |
Pustaka | d2d1.lib, dxguid.lib |
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk