ヒストグラム効果
ヒストグラム効果を使用して、指定したビン数に基づいて入力ビットマップのヒストグラムを生成します。
この効果の 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));
効果のプロパティ
出力を生成する数式を次に示します。
i は 0 からビンの数まで評価されます。この効果により、0 ~ 1 のピクセル値のヒストグラムが生成されます。 この範囲外の値は、その範囲にクランプされます。 特定のバケットの範囲は、バケットの数によって異なります。 この効果は、直線ビットマップ ピクセルで動作します。 入力ビットマップのカラー チャネルはアルファ チャネルで分割され、この効果が計算されます。
表示名とインデックス列挙 | 型と既定値 | Description |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
ヒストグラムに使用されるビンの数を指定します。 特定のバケットに分類される強度値の範囲は、指定されたバケットの数によって異なります。 |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
ヒストグラムの生成に使用するチャネルを指定します。 この効果には、指定されたチャネルに対応する単一のデータ出力があります。 詳細については、「 チャネル セレクター 」を参照してください。 |
HistogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Output プロパティのみ。 |
出力配列。 |
チャネル セレクター
列挙 | 説明 |
---|---|
D2D1_CHANNEL_SELECTOR_R | この効果により、赤チャネルに基づいてヒストグラム出力が生成されます。 |
D2D1_CHANNEL_SELECTOR_G | この効果により、緑色のチャネルに基づいてヒストグラム出力が生成されます。 |
D2D1_CHANNEL_SELECTOR_B | この効果により、青チャネルに基づいてヒストグラム出力が生成されます。 |
D2D1_CHANNEL_SELECTOR_A | この効果は、アルファ チャネルに基づいてヒストグラム出力を生成します。 |
データ出力
この効果は、指定されたビンの数に対応する要素の数を持つ FLOAT[]を出力します。FLOAT[] 内の各要素は float です。 要素の値は、その bin 内の要素の数に対応します。
解説
注意
デバイスが 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 |