gpt4 book ai didi

java - Java中如何实现 "Duotone"效果

转载 作者:行者123 更新时间:2023-12-02 07:39:22 26 4
gpt4 key购买 nike

有没有办法在Java中实现“双色调”效果?

我想做的一个很好的例子是 herehere

我想 BandCombineOp 可能会有所帮助。对我来说,我应该首先将其转换为灰色,然后应用类似阈值效果的东西。但我没能取得好的成果。

我也不明白如何为这种效果设置颜色。

float[][] grayMatrix = new float[][]
{
new float[] {0.3f, 0.3f, 0.3f},
new float[] {0.3f, 0.3f, 0.3f},
new float[] {0.3f, 0.3f, 0.3f},
};

float[][] duoToneMatrix = new float[][]
{
new float[] {0.1f, 0.1f, 0.1f},
new float[] {0.2f, 0.2f, 0.2f},
new float[] {0.1f, 0.1f, 0.1f},
};

BufferedImage src = ImageIO.read(new File("X:\\photoshop_image_effects.jpg"));
WritableRaster srcRaster = src.getRaster();

// make it gray
BandCombineOp bco = new BandCombineOp(grayMatrix, null);
WritableRaster dstRaster = bco.createCompatibleDestRaster(srcRaster);
bco.filter(srcRaster, dstRaster);

// apply duotone
BandCombineOp duoToneBco = new BandCombineOp(duoToneMatrix, null);
WritableRaster dstRaster2 = bco.createCompatibleDestRaster(dstRaster);
duoToneBco.filter(dstRaster, dstRaster2);

BufferedImage result = new BufferedImage(src.getColorModel(), dstRaster2, src.getColorModel().isAlphaPremultiplied(), null);
ImageIO.write(result, "png", new File("X:\\result_duotone.png"));

我的输出enter image description here

最佳答案

据我所知,您正在尝试更改图像的颜色而不更改其 luminosity 。注意与亮度的差异。

无论您的目标是亮度还是光度,您的问题都归结为改变 B、G 和 R 的相对贡献而不改变它们的加权和。您的第一个矩阵通过将 B、G、R 设置为相同的值并仅稍微改变其亮度 (.3+.3+.3 = .9) 来转换为灰度。要使用亮度,请使用

greyMatrix = (.11,.59,.3,
.11,.59,.3,
.11,.59,.3); //note this is for bgr

然后您想要更改它们的相对权重而不更改它们的加权和。首先,请注意,由于灰度转换后,您的 B、G、R 值相同,您可以将矩阵替换为

duoToneMatrix = (0,.3,0,
0,.6,0,
0,.3,0,)

这将是等效的。为了保持亮度,您需要选择 3 个因子,使其总和为 1。这三个因子可以应用于 duoTone 矩阵。系数越大,该颜色的图像就越着色。为了保持亮度,您需要 3 个因子 fb、fg、fr,使得

fb*.11+fg*.59+fr*.3 = 1; //again for bgr

您可以选择因素 fb、fg、fr 来找到您选择的色调。

另请注意,您可以使用一个矩阵来完成此操作。只需组合您已有的两个矩阵即可。

[duoToneMatrix]*[greyMatrix]*vector = ([duoToneMatrix]*[greyMatrix])*vector;

只需计算 duoToneMatrix 和 greyMatrix 的乘积(按该顺序)并一步处理即可。

关于java - Java中如何实现 "Duotone"效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11792999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com