看了网上很多人说有个灰度公式,可以直接遍历每个像素,并把每个像素中的rgb换成如下值即可:
P = 0.299 × R e d + 0.587 × G r e e n + 0.114 × B l u e P=0.299\times Red +0.587\times Green+0.114\times Blue P=0.299×Red+0.587×Green+0.114×Blue
注意,这里需要给每个像素的r、g、b都换成这个P值
这里用js试一下
function makeGray() {
#遍历图片中每一个像素
for (var pixel of img.values()) {
#获得每个像素所含rgb的平均值
avg = (pixel.getRed() + pixel.getGreen() + pixel.getBlue())/3;
#使用公式得到P值
P =(0.299*pixel.getRed() +0.587* pixel.getGreen() + 0.114*pixel.getBlue())
#把rgb每个颜色的亮度都换成P值
pixel.setGreen(P)
pixel.setRed(P)
pixel.setBlue(P)
}
将像素中每一点的rgb值设为rgb三个值的平均值。
a v g = ( R e d + G r e e n + B l u e ) ÷ 3 avg=(Red+Green+Blue)\div 3 avg=(Red+Green+Blue)÷3
这里使用js测试
function makeGray() {
#遍历图片中每一个像素
for (var pixel of img.values()) {
#获得每个像素所含rgb的平均值
avg = (pixel.getRed() + pixel.getGreen() + pixel.getBlue())/3;
#把rgb每个颜色的亮度都换成平均值
pixel.setGreen(avg )
pixel.setRed(avg )
pixel.setBlue(avg )
}
结果如下
Reference:
1.Ashley Taylor ‘Introduction to Computing Principles’.