Поделиться через


Эффект гистограммы

Используйте эффект гистограммы для создания гистограммы для входного растрового изображения на основе указанного количества ячеек.

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. Значения за пределами этого диапазона закружаются в диапазоне. Диапазон конкретного контейнера зависит от количества контейнеров. Этот эффект работает с прямыми пикселями растрового изображения. Цветовые каналы входного растрового изображения разделяются на альфа-канал для вычисления этого эффекта.

Отображаемое перечисление имен и индексов Тип и значение по умолчанию Описание
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[]
Только выходное свойство.
Выходной массив.

Селекторы каналов

Перечисление Описание
D2D1_CHANNEL_SELECTOR_R Эффект создает выходные данные гистограммы на основе красного канала.
D2D1_CHANNEL_SELECTOR_G Эффект создает выходные данные гистограммы на основе зеленого канала.
D2D1_CHANNEL_SELECTOR_B Эффект создает выходные данные гистограммы на основе синего канала.
D2D1_CHANNEL_SELECTOR_A Эффект создает выходные данные гистограммы на основе альфа-канала.

Выходные данные

Этот эффект выводит значение FLOAT[] с числом элементов, соответствующим числу указанных ячеек. Каждый элемент в float[] является float. Значение элемента соответствует количеству элементов в этой ячейке.

Комментарии

Примечание

Метод CreateEffect завершается ошибкой , если устройство не поддерживает DirectCompute и возвращает HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Все карты DirectX11 и карты DirectX10, поддерживающие DirectCompute, могут использовать эффект.

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Минимальная версия сервера Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Заголовок d2d1effects.h
Библиотека d2d1.lib, dxguid.lib

ID2D1Effect