Compartir a través de


Efecto de histograma

Use el efecto de histograma para generar un histograma para el mapa de bits de entrada en función del número especificado de intervalos.

El CLSID de este efecto es CLSID_D2D1Histogram.

Ejemplo

Antes
la imagen antes del efecto.
Gráfico de los datos de salida del histograma
la imagen después de la transformación.
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));

Propiedades de efecto

Esta es la ecuación para generar la salida.

la ecuación para generar la salida del efecto de histograma.

i se evalúa de 0 al número de cubos. El efecto genera un histograma para los valores de píxeles entre 0 y 1. Los valores fuera de este intervalo se fijan en el intervalo. El intervalo de un cubo determinado depende del número de cubos. Este efecto funciona en píxeles de mapa de bits rectos. Los canales de color del mapa de bits de entrada se dividen por el canal alfa para calcular este efecto.

Enumeración de índice y nombre para mostrar Tipo y valor predeterminado Descripción
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Especifica el número de cubos usados para el histograma. El intervalo de valores de intensidad que se encuentran en un cubo determinado depende del número de cubos especificados.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Especifica el canal usado para generar el histograma. Este efecto tiene una salida de datos única correspondiente al canal especificado. Consulta selectores de canales para obtener más información.
HistogramOutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Solo propiedad de salida.
Matriz de salida.

Selectores de canales

Enumeración Descripción
D2D1_CHANNEL_SELECTOR_R El efecto genera la salida del histograma en función del canal rojo.
D2D1_CHANNEL_SELECTOR_G El efecto genera la salida del histograma en función del canal verde.
D2D1_CHANNEL_SELECTOR_B El efecto genera la salida del histograma en función del canal azul.
D2D1_CHANNEL_SELECTOR_A El efecto genera la salida del histograma en función del canal alfa.

Salida de datos

Este efecto genera un float[], con el número de elementos correspondientes al número de contenedores especificados. Cada elemento de FLOAT[] es un valor float. El valor del elemento corresponde al número de elementos de ese intervalo.

Observaciones

Nota

Se produce un error en el método CreateEffect si el dispositivo no admite DirectCompute y devuelve HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Todas las tarjetas DirectX11 y DirectX10 que admiten DirectCompute pueden usar el efecto.

Requisitos

Requisito Valor
Cliente mínimo admitido Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows]
Servidor mínimo admitido Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows]
Encabezado d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect