所以我有一个项目,通过算法改变argb值,手动将图像转换为黑白图像。我已经尝试对RGB值进行平均,然后我得到了几乎完全灰度的图像,但仍然有一些颜色的暗示。任何人都有任何算法示例可以手动将RGB格式的像素转换为灰度级吗?
这是我到目前为止所做的事情:
//Apply the filter
reds = ((reds+greens+blues)/3);
greens = ((reds+greens+blues)/3);
blues = ((reds+greens+blues)/3);
答案 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就是一个。