Bootstrap

RGB图像转为灰度图的几种方法

RGB图像灰度化

RGB图像

我们来看看下面这张图,美不美
你的名字这么好看的图是咋个整出来的呢?哦!原来是这样:一幅图像 I I I由很多个像素点组成的,而每个像素点又包含RGB(red,green,blue)三个通道值,范围是0-255,这样我们就能在计算机上看见彩色图片,画个丑图将就看
在这里插入图片描述

单独提取三个通道试试

RGB三通道

灰度化

怎么使得图像灰度化呢?
需要R=G=B=gray
我们现在列出一些方法来计算这个gray值

一、任选一通道作为gray

g r a y = R gray=R gray=R
or
g r a y = G gray=G gray=G
or
g r a y = B gray=B gray=B

二、RGB中最大值作为gray

g r a y = m a x ( R , G , B ) gray=max(R,G,B) gray=max(R,G,B)

三、RGB中平均值作为gray

g r a y = m e a n ( R , G , B ) gray=mean(R,G,B) gray=mean(R,G,B)

四、RGB中加权平均值作为gray

g r a y = 0.299 ∗ R + 0.578 ∗ G + 0.114 ∗ B gray=0.299 * R+0.578 * G +0.114 * B gray=0.299R+0.578G+0.114B

python+opencv可以调函数

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

MATLAB中的函数是gray=rgb2gray(img)

当然也可以自己写,附上自己写的加权平均数的python代码

def rgb2gray(img):
    b=img[:,:,0].copy()
    g=img[:,:,1].copy()
    r=img[:,:,2].copy()
 
    out = 0.2126 * r + 0.7152 * g + 0.0722 * b
    out = out.astype(np.uint8)
    
    return out 

------------------------------------------------------------------------------------------------------------

结果还是展示一下

六种方法结果

具体的情况选择具体的方法来做~

;