Convolve 행렬 효과
임의 2D 커널을 이미지에 적용하려면 convolve 행렬 효과를 사용합니다. 이 효과를 사용하여 이미지를 흐리게 하거나, 가장자리를 감지하거나, 엠보를 만들거나, 선명하게 할 수 있습니다.
이 효과에 대한 CLSID는 CLSID_D2D1ConvolveMatrix.
예제 이미지
다음 예제에서는 3 x 3 커널을 사용하여 convolve 행렬 효과의 입력 및 출력을 보여줍니다.
전에 |
---|
효과 앞에 이미지를 ![]() |
후 |
변환 후 이미지를 ![]() |
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/커널 단위)은 96DPI의 이미지에서 1픽셀에 해당합니다. FLOAT 형식입니다. 기본값은 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}입니다. |
제수 D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
커널 행렬은 픽셀에 적용된 다음 결과는 이 값으로 나뉩니다. 0은 float 엡실론의 값으로 동작합니다. FLOAT 형식입니다. 기본값은 1.0f입니다. |
바이어스 D2D1_CONVOLVEMATRIX_PROP_BIAS |
효과는 커널 행렬, 수차를 적용한 다음 바이어스가 결과에 추가됩니다. 바이어스는 바인딩되지 않고 단위가 없습니다. FLOAT 형식입니다. 기본값은 0.0f입니다. |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
출력 픽셀의 가운데 위치에서 왼쪽/오른쪽 및 위/아래로 지정한 위치로 변환 커널을 이동합니다. 오프셋은 커널 단위로 정의됩니다. 일부 오프셋 및 커널 크기의 경우, 컨볼루션 커널의 샘플은 픽셀 이미지 센터에 배치되지 않습니다. 커널 샘플의 픽셀 값은 쌍선형 보간을 통해 계산됩니다. 형식이 D2D1_VECTOR_2F. 기본값은 {0.0f, 0.0f}입니다. |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
컨볼루션 커널이 알파 채널에 적용되는지 아니면 색 채널에만 적용되는지 여부를 지정합니다. 이 값을 true 설정하면 컨볼루션 커널이 색 채널에만 적용됩니다. 이 값을 false 설정하면 모든 채널에 나선형 커널이 적용됩니다. BOOL 유형입니다. 기본값은 FALSE입니다. |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
소프트 또는 하드 이미지의 테두리를 계산하는 데 사용되는 모드입니다. 자세한 내용은 테두리 모드 참조하세요. 형식이 D2D1_BORDER_MODE. 기본값은 D2D1_BORDER_MODE_SOFT. |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
효과가 그래프의 다음 효과에 값을 전달하기 전에 효과가 색 값을 0에서 1 사이로 고정하는지 여부입니다. 이 효과는 알파를 미리 곱하기 전에 값을 고정합니다. TRUE로 설정하면 효과가 값을 고정합니다. FALSE로 설정하면 효과는 색 값을 고정하지 않지만, 다른 효과와 출력 표면은 충분히 높은 정밀도가 아닌 경우 값을 고정할 수 있습니다. BOOL 유형입니다. 기본값은 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 |