전단 색
전단은 다른 색 구성 요소에 비례하는 양만큼 색 구성 요소를 늘리거나 줄입니다. 예를 들어, 빨간색 구성 요소가 파란색 구성 요소 값의 1/2만큼 증가된 변환을 고려합니다. 이러한 변환에서 색상(0.2, 0.5, 1)은 (0.7, 0.5, 1)이 됩니다. 새 빨간색 구성 요소는 0.2 + (1/2)(1) = 0.7입니다.
다음 예제에서는 파일 ColorBars4.bmp Image 개체를 생성합니다. 그런 다음 코드는 선행 단락에서 설명한 전단 변환을 이미지의 각 필셀에 적용합니다.
Image image(L"ColorBars4.bmp");
ImageAttributes imageAttributes;
UINT width = image.GetWidth();
UINT height = image.GetHeight();
ColorMatrix colorMatrix = {
1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
0.5f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
imageAttributes.SetColorMatrix(
&colorMatrix,
ColorMatrixFlagsDefault,
ColorAdjustTypeBitmap);
graphics.DrawImage(&image, 10, 10, width, height);
graphics.DrawImage(
&image,
Rect(150, 10, width, height), // destination rectangle
0, 0, // upper-left corner of source rectangle
width, // width of source rectangle
height, // height of source rectangle
UnitPixel,
&imageAttributes);
다음 그림에서는 왼쪽의 원본 이미지와 오른쪽의 전단 이미지를 보여 줍니다.
다음 표에서는 전단 변환 전후에 네 개의 막대에 대한 색 벡터를 보여 줍니다.
Original | 전단됨 |
---|---|
(0, 0, 1, 1) | (0.5, 0, 1, 1) |
(0.5, 1, 0.5, 1) | (0.75, 1, 0.5, 1) |
(1, 1, 0, 1) | (1, 1, 0, 1) |
(0.4, 0.4, 0.4, 1) | (0.6, 0.4, 0.4, 1) |