手动将图像像素从彩色ARGB转换为灰度ARGB

时间:2013-02-24 14:54:49

标签: java algorithm grayscale argb

所以我有一个项目,通过算法改变argb值,手动将图像转换为黑白图像。我已经尝试对RGB值进行平均,然后我得到了几乎完全灰度的图像,但仍然有一些颜色的暗示。任何人都有任何算法示例可以手动将RGB格式的像素转换为灰度级吗?

这是我到目前为止所做的事情:

            //Apply the filter
            reds = ((reds+greens+blues)/3);
            greens = ((reds+greens+blues)/3);
            blues = ((reds+greens+blues)/3);

2 个答案:

答案 0 :(得分:4)

看起来你正在改变右手边的输入,同时期望它的值保持不变。为什么不用这个?

reds = (reds + greens + blues) / 3;
greens = reds;
blues = reds;

答案 1 :(得分:2)

我一直认为,由于我们的眼睛对红色,绿色和蓝色波长的敏感度不同,因此应使用以下方法计算灰度:

(int) (0.299 * red + 0.587 * green + 0.114 * blue)

多年前,这曾经很容易找到,但现在我找不到太多的资料来源。 Wikipedia's entry on grayscale就是一个。