0

因此,我有一个项目可以通过使用算法更改 argb 值来手动将图像转换为黑白。我试过平均 RGB 值,我得到了一个几乎完全灰度的图像,但它仍然有颜色的暗示。有人有任何算法示例可以手动将 aRGB 中的像素转换为灰度吗?

这是我到目前为止一直在做的事情:

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

2 回答 2

4

看起来您正在更改右侧的输入,同时期望其值保持不变。为什么不使用这个?

reds = (reds + greens + blues) / 3;
greens = reds;
blues = reds;
于 2013-02-24T15:00:26.333 回答
2

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

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

几年前,这曾经是很容易找到的信息,但现在我找不到太多的来源。 维基百科关于灰度的条目就是其中之一。

于 2013-02-24T20:20:45.377 回答