Sdílet prostřednictvím


Efekt histogramu

Pomocí efektu histogramu vygenerujte histogram vstupního rastrového obrázku na základě zadaného počtu intervalů.

CLSID pro tento efekt je CLSID_D2D1Histogram.

Příklad

Před
obrázek před efektem.
Graf výstupních dat histogramu
obrázek po transformaci.
ComPtr<ID2D1Effect> histogramEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Histogram, &histogramEffect);

histogramEffect->SetInputEffect(0, m_2DAffineTransformEffectRight.Get());
histogramEffect->SetValue(D2D1_HISTOGRAM_PROP_CHANNEL_SELECT, D2D1_CHANNEL_SELECTOR_G);

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

// The histogram data is only available once the effect has been 'drawn'.
int histogramBinCount;

HRESULT hr = histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_NUM_BINS, &histogramBinCount);

float *histogramData = new float[histogramBinCount];
hr = histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT, 
                               reinterpret_cast<BYTE*>(histogramData), 
                               histogramBinCount * sizeof(float));

Vlastnosti efektu

Tady je rovnice pro vygenerování výstupu.

rovnici k vygenerování výstupu efektu histogramu.

i se vyhodnotí z 0 na počet intervalů. Efekt vygeneruje histogram pro hodnoty pixelů v rozmezí od 0 do 1. Hodnoty mimo tento rozsah jsou uchycené na rozsah. Rozsah konkrétního kontejneru závisí na počtu kbelíků. Tento efekt funguje na rovných rastrových pixelech. Barevné kanály vstupního rastrového obrázku jsou rozděleny alfa kanálem pro výpočet tohoto efektu.

Zobrazovaný název a výčet indexu Typ a výchozí hodnota Popis
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Určuje počet intervalů použitých pro histogram. Rozsah hodnot intenzity, které spadají do konkrétního kontejneru, závisí na počtu zadaných kontejnerů.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Určuje kanál použitý k vygenerování histogramu. Tento efekt má jeden datový výstup odpovídající zadanému kanálu. Další informace najdete v tématu selektory kanálu.
HistogramOutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Pouze výstupní vlastnost.
Výstupní pole.

Selektory kanálů

Výčet Popis
D2D1_CHANNEL_SELECTOR_R Efekt vygeneruje výstup histogramu na základě červeného kanálu.
D2D1_CHANNEL_SELECTOR_G Efekt vygeneruje výstup histogramu na základě zeleného kanálu.
D2D1_CHANNEL_SELECTOR_B Efekt vygeneruje výstup histogramu na základě modrého kanálu.
D2D1_CHANNEL_SELECTOR_A Efekt vygeneruje výstup histogramu na základě alfa kanálu.

Výstup dat

Tento efekt vypíše hodnotu FLOAT[] s počtem prvků odpovídajících počtu zadaných intervalů. Každý prvek v float[] je float. Hodnota prvku odpovídá počtu prvků v daném intervalu.

Poznámky

Poznámka

Metoda CreateEffect selže, pokud zařízení nepodporuje DirectCompute a vrátí hodnotu HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Efekt můžou použít všechny karty DirectX11 a karty DirectX10, které podporují DirectCompute.

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