次の方法で共有


シャーリングの色

傾斜を使用すると、ある色成分が、別の色成分に比例した量だけ増加または減少されます。 たとえば、赤の成分が青の成分の値の半分だけ増加する変換を考えてみましょう。 このような変換を行うと、色 (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);

次の図は、左側の元の画像と右側のせん断イメージを示しています。

4 つの色付きバーを示す図。次に、異なる色の同じバー

次の表は、せん断変換の前後の 4 つのバーの色ベクトルを示しています。

変更元 傾斜後
(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)