다음을 통해 공유


나선형 매트릭스 효과

임의 2D 커널을 이미지에 적용하려면 나선형 매트릭스 효과를 사용합니다. 이 효과를 사용하여 이미지를 흐리게 하거나, 가장자리를 감지하거나, 엠보를 만들거나, 선명하게 할 수 있습니다.

이 효과에 대한 CLSID는 CLSID_D2D1ConvolveMatrix입니다.

예시 이미지

다음 예시에서는 3 x 3 커널을 사용하여 나선형 매트릭스 효과의 입력 및 출력을 보여줍니다.

이전
효과를 적용하기 전의 이미지.
이후
변환 후의 이미지.
ComPtr<ID2D1Effect> convolveMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ConvolveMatrix, &convolveMatrixEffect);

convolveMatrixEffect->SetInput(0, bitmap);
float matrix[9] = {-1, -1, -1, -1, 9, -1, -1, -1, -1};
convolveMatrixEffect->SetValue(D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(convolveMatrixEffect.Get());
m_d2dContext->EndDraw();

효과 속성

표시 이름 및 인덱스 열거형 설명
KernelUnitLength
D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH
커널에 있는 하나의 단위의 크기입니다. 단위는 (DIP/커널 단위)이며, 여기서 커널 단위는 나선형 커널의 요소 크기입니다. 1(DIP/커널 단위) 값은 이미지의 픽셀 1개를 96 DPI로 표시한 값에 해당합니다.
형식은 부동입니다.
기본값은 1.0f입니다.
Scalemode
D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE
효과를 사용하여 이미지를 해당 커널 단위 길이로 조정하는 데 사용하는 보간 모드입니다. 품질과 속도에 따라 6가지 배율 모드가 있습니다.
형식은 D2D1_CONVOLVEMATRIX_SCALE_MODE입니다.
기본값은 D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR입니다.
KernelSizeX
D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X
커널 행렬의 너비입니다. 단위는 커널 단위로 지정됩니다. 형식은 UINT32입니다.
기본값은 3입니다.
KernelSizeY
D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y
커널 행렬의 높이입니다. 단위는 커널 단위로 지정됩니다. 형식은 UINT32입니다.
기본값은 3입니다.
KernelMatrix
D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX
이미지에 적용할 커널 행렬입니다. 커널 요소는 바인딩되지 않으며 부동으로 지정됩니다.
FLOAT[]의 첫 번째 KernelSizeX 숫자 집합은 커널의 첫 번째 행에 해당합니다. 두 번째 KernelSizeX 숫자 집합은 두 번째 행에 해당하며, KernelSizeY 행까지 계속됩니다..
형식은 FLOAT[]입니다.
기본값은 {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f}입니다.
Divisor
D2D1_CONVOLVEMATRIX_PROP_DIVISOR
커널 행렬을 픽셀에 적용한 다음 결과를 이 값으로 나눕니다.
0은 부동 엡실론의 값으로 동작합니다.
형식은 부동입니다.
기본값은 1.0f입니다.
Bias
D2D1_CONVOLVEMATRIX_PROP_BIAS
이 효과는 커널 행렬, 제수를 적용한 다음 결과에 바이어스를 추가합니다. 바이어스는 바인딩되지 않고 단위가 없습니다. 형식은 부동입니다.
기본값은 0.0f입니다.
KernelOffset
D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET
출력 픽셀의 가운데 위치에서 왼쪽/오른쪽 및 위로/아래로 지정한 위치로 변환 커널을 이동합니다. 오프셋은 커널 단위로 정의됩니다.
일부 오프셋과 커널 크기로 인해 나선형 커널의 샘플이 픽셀 이미지 중앙에 배치되지 않습니다. 커널 샘플의 픽셀 값은 쌍선형 보간을 통해 계산됩니다.
형식은 D2D1_VECTOR_2F입니다.
기본값은 {0.0f, 0.0f}입니다.
PreserveAlpha
D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA
나선형 커널이 알파 채널에 적용되는지 아니면 색 채널에만 적용되는지 여부를 지정합니다.
이 커널을 TRUE로 설정하면 색 채널에만 나선형 커널이 적용됩니다.
이 값을 FALSE로 설정하면 모든 채널에 나선형 커널이 적용됩니다.
유형은 부울입니다.
기본값은 FALSE입니다.
BorderMode
D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE
이미지의 테두리(소프트 또는 하드)를 계산하는 데 사용되는 모드입니다. 자세한 내용은 테두리 모드를 참조하세요.
형식은 D2D1_BORDER_MODE입니다.
기본값은 D2D1_BORDER_MODE_SOFT입니다.
ClampOutput
D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT
효과가 그래프의 다음 효과로 값을 전달하기 전에 색상 값을 0에서 1 사이로 고정할지 여부입니다. 이 효과는 알파를 곱하기 전에 값을 고정합니다.
TRUE로 설정하면 효과가 값을 고정합니다. FALSE로 설정하면 효과는 색 값을 고정하지 않지만, 다른 효과와 출력 표면은 충분히 높은 정밀도가 아닌 경우 값을 고정할 수 있습니다.
유형은 부울입니다.
기본값은 FALSE입니다.

크기 조정 모드

열거형 설명
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR 가장 가까운 단일 점을 샘플링하고 사용합니다. 이 모드는 처리 시간을 줄이지만 가장 낮은 품질의 이미지를 출력합니다.
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR 4점 샘플 및 선형 보간을 사용합니다. 이 모드는 가장 인접한 항목 모드보다 더 높은 품질의 이미지를 출력합니다.
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC 보간을 위해 16 샘플 입방 커널을 사용합니다. 이 모드는 처리 시간이 가장 많이 걸리지만 더 높은 품질의 이미지를 출력합니다.
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR 단일 픽셀 내에서 4개의 선형 샘플을 사용하여 우수한 가장자리 앤티앨리어싱을 구현합니다. 이 모드는 픽셀 수가 적은 이미지의 크기를 조금씩 축소할 때 유용합니다.
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC 이방성 필터링을 사용하여 비트맵의 변형된 모양에 따라 패턴을 샘플링합니다.
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC 변환 행렬에 다운스케일링이 포함된 경우 가변 크기 고품질 입방 커널을 사용하여 이미지의 사전 다운스케일링을 수행합니다. 그런 다음 최종 출력에 입방 보간 모드를 사용합니다.

참고 항목

모드를 선택하지 않으면 효과가 기본적으로 D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR.

테두리 모드

이름 설명
D2D1_BORDER_MODE_SOFT 이 효과는 나선형 커널을 적용할 때 입력 경계를 벗어난 샘플에 대해 입력 이미지를 투명한 검정색 픽셀로 패딩합니다. 이렇게 하면 이미지에 부드러운 가장자리가 생성되고 이 과정에서 출력 비트맵이 커널 크기만큼 확장됩니다.
D2D1_BORDER_MODE_HARD 이 효과는 입력 범위를 벗어난 샘플에 대한 미러 형식 테두리 변환을 사용하여 입력 이미지를 확장합니다. 출력 비트맵의 크기는 입력 비트맵의 크기와 같습니다.

출력 비트맵

효과 출력의 크기는 나선형 커널의 크기, 커널 오프셋, 커널 단위 길이 및 테두리 모드 설정에 따라 달라집니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱]
지원되는 최소 서버 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱]
헤더 d2d1effects.h
라이브러리 d2d1.lib, dxguid.lib

ID2D1Effect