加工中的自然色混合

时间:2018-11-16 18:09:20

标签: image image-processing colors processing

我试图通过将两张不透明且有色的照片彼此叠加,自然地在一张照片(大象)上混合绿色,在另一张照片(船上)上混合红色。尽管两张照片均以相同的突出度出现,但在运行程序并可以观察到两种颜色时,红色色调(因为这是最后应用的色调)更为占优势,并且无论哪种色调,图像中都没有可辨别的黄色。先申请。如果有人知道如何在处理过程中自然地混合颜色,我很想听听您的建议。我也不想简单地使用黄色作为最后的色调。谢谢!

PImage elephant;
PImage ship;
void setup(){
   size(695,473);
   elephant = loadImage("elephantRider.png");
   ship = loadImage("ship.jpg");
   ship.filter(OPAQUE);
   elephant.filter(OPAQUE);
}
void draw(){
   background(255);
   tint(0,255,0, 127);
   image(elephant, 0,0);
   tint(255,0,0,127);
   image(ship, 0,0); 
}

1 个答案:

答案 0 :(得分:0)

将处理视为绘画。您现在所要做的有点像在屏幕上绘制一种颜色,然后在第一种颜色之上绘制另一种颜色。

相反,您要做的是之前将两种颜色混合在一起,然后将结果绘制到屏幕上。可以将这两种颜料混合在一起以产生新的颜色。

您可以通过取两种颜色的平均值来完成此操作,如下所示:

PImage img;

void setup() {
  size(695, 473);
  img = loadImage("image.jpg");
}

void draw() {
  background(255);

  //green
  tint(0, 255, 0, 127);
  image(img, width/2, height/2, 50, 50);

  float blendedRed = (0 + 255) / 2;
  float blendedGreen = (255 + 0) / 2;
  float blendedBlue = (0 + 0) / 2;

  // blended
  tint(blendedRed, blendedGreen, blendedBlue, 127);
  image(img, mouseX, mouseY, 50, 50);
}

该示例有些人为,因为平均值很微不足道,但是这种方法适用于任何颜色。

如果您想要更高级的内容,请注意颜色平均是一个非常高级的主题。谷歌搜索“色彩平均”可能是一个不错的开始。