图像灰度化的常用三种方法

        三种灰度化效果不同,我们根据实际需要选择,但一般使用加权平均方法。

1.加权平均值法

        根据我们人类大量的实验,我们发现白色是由大概0.299的红色,0.587的绿色,0.114的蓝色混合而成的,因此最常用的灰度变换公式如下:

        D=0.299\times R+0.587\times G+0.114\times B

        D表示像素点(x,y)经转换后的灰度值,R、G、B为该像素点的三个通道的分量。

代码如下:

import cv2  as cv  
import numpy as np
#读取图片
img = cv.imread("inpaint.png")
h =  img.shape[0]  #图片高
w =  img.shape[1]  #图片宽
#构造一个 与原图大小一样 的黑色图片
grayimg = np.zeros((h,w,3),np.uint8)
 
#灰度化
for i in range(h):  
    for j in range(w):  
        grayimg[i,j] = 0.3 * img[i,j][0] + 0.59 * img[i,j][1] +  0.11 * img[i,j][2]

cv.imshow("img", img)
cv.imshow("grayimg", grayimg)
 
cv.waitKey(0)  

现象如下:

2.取最大值法

        即将彩色图像中R、G、B三个分量中的最大值作为灰度图像的灰度值。

        D=max(R,G,B)

代码如下:

import cv2  as cv  
import numpy as np

img = cv.imread("inpaint.png")
h =  img.shape[0]
w =  img.shape[1]
grayimg = np.zeros((h,w,3),np.uint8)
 
for i in range(h):  
    for j in range(w):  
        grayimg[i,j] = max(img[i,j][0] , img[i,j][1] ,img[i,j][2]) 

cv.imshow("img", img)
cv.imshow("grayimg", grayimg)

cv.waitKey(0)  

3.平均值法

        即对三个颜色分量求平均值得到灰度值:

        D=(R+G+B)/3

代码如下:

import cv2  as cv  
import numpy as np

img = cv.imread("inpaint.png")
h =  img.shape[0]
w =  img.shape[1]
grayimg = np.zeros((h,w,3),np.uint8)
 
for i in range(h):  
    for j in range(w):  
        grayimg[i,j] = (img[i,j][0] + img[i,j][1] +img[i,j][2])/3 

cv.imshow("img", img)
cv.imshow("grayimg", grayimg)
 
cv.waitKey(0)  

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值