Share via


히스토그램 효과

히스토그램 효과를 사용하여 지정된 수의 bin에 따라 입력 비트맵에 대한 히스토그램을 생성합니다.

이 효과에 대한 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에서 bin 수로 평가됩니다. 이 효과는 0에서 1 사이의 픽셀 값에 대한 히스토그램을 생성합니다. 이 범위를 벗어난 값은 범위로 고정됩니다. 특정 버킷의 범위는 버킷 수에 따라 달라집니다. 이 효과는 직선 비트맵 픽셀에서 작동합니다. 입력 비트맵의 색 채널은 이 효과를 계산하기 위해 알파 채널로 나뉩니다.

표시 이름 및 인덱스 열거형 형식 및 기본값 Description
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
Uint32
256
히스토그램에 사용되는 bin 수를 지정합니다. 특정 버킷에 속하는 강도 값의 범위는 지정된 버킷 수에 따라 달라집니다.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
히스토그램을 생성하는 데 사용되는 채널을 지정합니다. 이 효과에는 지정된 채널에 해당하는 단일 데이터 출력이 있습니다. 자세한 내용은 채널 선택기를 참조하세요.
히스토그램아웃푸트
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
출력 속성만 해당합니다.
출력 배열입니다.

채널 선택기

열거형 설명
D2D1_CHANNEL_SELECTOR_R 이 효과는 빨간색 채널을 기반으로 히스토그램 출력을 생성합니다.
D2D1_CHANNEL_SELECTOR_G 효과는 녹색 채널을 기반으로 히스토그램 출력을 생성합니다.
D2D1_CHANNEL_SELECTOR_B 효과는 파란색 채널을 기반으로 히스토그램 출력을 생성합니다.
D2D1_CHANNEL_SELECTOR_A 이 효과는 알파 채널을 기반으로 히스토그램 출력을 생성합니다.

데이터 출력

이 효과는 지정된 bin 수에 해당하는 요소 수와 함께 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

ID2D1Effect