Java中的图像黑点补偿

时间:2015-04-07 19:55:47

标签: java image colors

我一直在使用ColorConvertOp来转换Java中的灰度图像,但是他们注意到有时它们会失去很多中音色并且看起来比它们应该更暗。我调查了一下,发现Photoshop使用黑点补偿(BPC)来弥补这个问题。我找到了一篇关于BPC here的文章,但它对我来说有点技术性。 Java是否使用渲染意图或其他东西原生支持,或者我将不得不弄清楚如何实现文档中解释的算法?我理解BPC的发生是因为绝对黑色在颜色空间内是不同的颜色,但我需要使用BPC来使图像看起来相同。有什么想法吗?

我目前使用以下代码转换为新的色彩空间。

private void convertToColorSpace(ColorSpace colorSpace) {
    RenderingHints hints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    hints.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    hints.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
    ColorConvertOp op = new ColorConvertOp(colorSpace, hints);
    image = op.filter(image, null);
}

注意: ImageMagick不是一个选项,所以请不要将其作为答案。

1 个答案:

答案 0 :(得分:0)

我的解决方案主要基于黑点补偿ISO草案,这意味着它尚未标准化,找到了here。包括变量名称和完整步骤在内的流程定义非常明确。虽然有一个用{c}编写的Little CMS库,但我找不到Java原生的东西,它可能和JNI一起使用。