Udostępnij za pośrednictwem


Efekt rozmycia Gaussiana

Użyj efektu rozmycia Gaussian, aby utworzyć rozmycie oparte na funkcji Gaussian na całym obrazie wejściowym.

Możesz użyć tego efektu, aby utworzyć blaski i cienie i użyć złożonego efektu, aby zastosować wynik do oryginalnego obrazu. Jest to przydatne w przetwarzaniu zdjęć dla filtrów, takich jak wyróżnienia i cienie. Możesz użyć danych wyjściowych tego efektu do wprowadzania efektów oświetlenia, takich jak oświetlenie specular lub oświetlenie rozproszone efekty, ponieważ kanał alfa jest rozmyty, a efekty oświetlenia używają kanału alfa do określenia geometrii powierzchni jako mapy wysokości.

Ten efekt jest stosowany przez wbudowany efekt cień.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1GaussianBlur.

Przykładowy obraz

Przed
obraz przed efektem.
Po
obraz po przekształceniu.
ComPtr<ID2D1Effect> gaussianBlurEffect;
m_d2dContext->CreateEffect(CLSID_D2D1GaussianBlur, &gaussianBlurEffect);

gaussianBlurEffect->SetInput(0, bitmap);
gaussianBlurEffect->SetValue(D2D1_GAUSSIANBLUR_PROP_STANDARD_DEVIATION, 3.0f);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(gaussianBlurEffect.Get());
m_d2dContext->EndDraw();

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
Eksmisji w warstwie Standardowa
D2D1_GAUSSIANBLUR_PROP_STANDARD_DEVIATION
Ilość rozmycia, która ma zostać zastosowana do obrazu. Promień rozmycia jądra można obliczyć, mnożąc odchylenie standardowe przez 3. Jednostki zarówno odchylenia standardowego, jak i promienia rozmycia to DIPs. Wartość zero DIPs wyłącza ten efekt całkowicie. Typ to FLOAT.
Wartość domyślna to 3.0f.
Optymalizacja
D2D1_GAUSSIANBLUR_PROP_OPTIMIZATION
Tryb optymalizacji. Aby uzyskać więcej informacji, zobacz Tryby optymalizacji. Typ to D2D1_GAUSSIANBLUR_OPTIMIZATION.
Wartość domyślna to D2D1_GAUSSIANBLUR_OPTIMIZATION_BALANCED.
BorderMode
D2D1_GAUSSIANBLUR_PROP_BORDER_MODE
Tryb używany do obliczania obramowania obrazu, miękkiego lub twardego. Aby uzyskać więcej informacji, zobacz Tryby obramowania.
Typ jest D2D1_GAUSSIANBLUR_BORDER_MODE.
Wartość domyślna to D2D1_BORDER_MODE_SOFT.

Tryby optymalizacji

Nazwa Opis
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED Stosuje optymalizacje wewnętrzne, takie jak wstępne skalowanie na stosunkowo małym promieniu. Używa filtrowania liniowego.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Używa tych samych progów optymalizacji co tryb szybkości, ale używa filtrowania trójliniowego.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Używa tylko optymalizacji wewnętrznych z dużym promieniem rozmycia, gdzie przybliżenia są mniej prawdopodobne, aby być widoczne. Używa filtrowania trójliniowego.

Tryby obramowania

Nazwa Opis
D2D1_BORDER_MODE_SOFT Efekt podpełnia obraz przezroczystymi czarnymi pikselami, ponieważ stosuje jądro rozmycia, co powoduje miękką krawędź.
D2D1_BORDER_MODE_HARD Efekt zaciska dane wyjściowe do rozmiaru obrazu wejściowego. Gdy efekt stosuje jądro rozmycia, rozszerza obraz wejściowy za pomocą przekształcenia obramowania typu dublowanego dla próbek poza granicami wejściowymi.

Mapa bitowa wyjściowa

Wynik tego efektu może być większy niż mapa bitowa wejściowa na podstawie promienia rozmycia i trybu obramowania. Jeśli tryb obramowania jest ustawiony na D2D1_BORDER_MODE_SOFT ize mapy bitowej wyjściowej zwiększa się o rozmiar jądra rozmycia, reprezentowany w pikselach. Ta tabela zawiera równanie, którego można użyć do obliczenia wyjściowej mapy bitowej.

Output bitmap growth (X and Y) = StandardDeviation (DIPs)*6*((User DPI)/96)

Jeśli więc rozmiar obrazu wzrośnie o 10 pikseli w każdym kierunku, lewy górny róg obrazu będzie znajdować się w lokalizacji (-5, -5), podczas gdy prawy dolny będzie wynosić (105, 105).

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Minimalny obsługiwany serwer Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Nagłówek d2d1effects.h
Biblioteka d2d1.lib, dxguid.lib

ID2D1Effect