更改原始图像文件的颜色权重

时间:2012-05-29 19:22:44

标签: java python image-processing rgb

我正在研究望远镜项目,我们正在测试CCD。每当我们拍照时,东西都会略带粉红色,我们需要真正的颜色来正确地对银河物体进行成像。我打算用python或java编写一个小程序来改变颜色权重,但是如何在原始数据文件中访问颜色的权重(它是rgb.bin)?

我们正在使用拜耳矩阵算法将单色文件转换为彩色文件,我想这个问题来自那里,但我想用一个小的色彩校正程序修复它。

谢谢!

4 个答案:

答案 0 :(得分:3)

典型的白平衡问题是由照亮场景的光线构成中不同比例的红色,绿色和蓝色引起的,或传感器对这些颜色的敏感度的差异引起的。这些错误通常是线性的,因此您可以通过乘以误差的倒数来校正它们。

假设您测量的是您希望完全为白色的点,其RGB值为(248,237,236),即粉红色。如果将图像中的每个像素乘以(248 / 248,248 / 237,248 / 236),您将得到正确的平衡。

您应该首先确保您的拜耳滤镜首先产生正确的结果,否则线性误差的基本假设将是不正确的。

答案 1 :(得分:1)

在Java中有一些有用的图像处理功能,尝试使用BufferedImage类,在这里我给你一个Javadoc的链接,你可以用常见格式打开图像并使用BufferedImage来访问每个像素的颜色或灰度级。

BufferedImage

我不懂python。

希望这有帮助!

答案 2 :(得分:1)

您可能想查看Python Imaging Library (PIL)。我将允许您以各种格式加载图像并访问其颜色值。

我不熟悉 rgb.bin 图像格式,但如果“权重”意味着只是调整各种RGB类型值,那么PIL可能值得研究(PIL documentation pdf

请注意PIL正式支持Python v2.7(欢迎页面说v2.6,但它确实是v2.7 - 请参阅下载页面),但是有一个非官方版本的PIL适用于Unofficial Windows Binaries for Python Extension Packages站点提供的Python v3.x。

答案 3 :(得分:1)

如果你的图像是用彩色色调(粉红色调)出现的,那么摄影师的修正方法就是调整图像的白平衡。

在这里有一个很好的讨论实现自动白平衡校正算法:White balance algorithm

由于您已生成包含二进制RGB值的文件,因此我假设您可以将其重新解析为数据结构以供进一步处理。将RGB像素放入缓冲区后,您需要将它们转换为HSB(色调,饱和度,亮度)等效值,因为更改图像的色调基本上是对每个像素的色调进行全局操作。 Java Color类包含用于执行HSB< - > RGB转换的方法。