ヒストグラム効果
ヒストグラム効果を使用して、指定されたビン数に基づいて入力ビットマップのヒストグラムを生成します。
この効果の CLSID はCLSID_D2D1Histogram。
例
以前は |
---|
効果の前に画像を ![]() |
ヒストグラム出力データのグラフ |
変換後にイメージを ![]() |
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));
Effect プロパティ
出力を生成する数式を次に示します。
式を
i は、0 からビンの数まで評価されます。この効果により、0 ~ 1 のピクセル値のヒストグラムが生成されます。 この範囲外の値は、範囲にクランプされます。 特定のバケットの範囲は、バケットの数によって異なります。 この効果は、直線のビットマップ ピクセルで動作します。 入力ビットマップのカラー チャネルはアルファ チャネルで除算され、この効果が計算されます。
表示名とインデックス列挙 | 型と既定値 | 形容 |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
ヒストグラムに使用されるビンの数を指定します。 特定のバケットに分類される強度値の範囲は、指定されたバケットの数によって異なります。 |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
ヒストグラムの生成に使用するチャネルを指定します。 この効果には、指定されたチャネルに対応する 1 つのデータ出力があります。 詳細については、「チャネル セレクターの」を参照してください。 |
HistogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] 出力プロパティのみ。 |
出力配列。 |
チャネル セレクター
列挙 | 形容 |
---|---|
D2D1_CHANNEL_SELECTOR_R | この効果は、赤いチャネルに基づいてヒストグラムの出力を生成します。 |
D2D1_CHANNEL_SELECTOR_G | この効果により、緑色のチャネルに基づいてヒストグラムの出力が生成されます。 |
D2D1_CHANNEL_SELECTOR_B | この効果により、青色のチャネルに基づいてヒストグラムの出力が生成されます。 |
D2D1_CHANNEL_SELECTOR_A | この効果により、アルファ チャネルに基づいてヒストグラム出力が生成されます。 |
データ出力
この効果は、指定されたビンの数に対応する要素の数を持つ FLOAT[] を出力します。FLOAT[] 内の各要素は float です。 要素の値は、そのビン内の要素の数に対応します。
備考
手記
デバイスが DirectCompute をサポートせず、HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES を返す場合、CreateEffect メソッドは失敗します。 DirectCompute をサポートするすべての DirectX11 カードと DirectX10 カードで効果を使用できます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
サポートされている最小サーバー | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
ヘッダ | d2d1effects.h |
図書館 | d2d1.lib、dxguid.lib |