专栏首页用户2442861的专栏Python-OpenCV 处理图像(七):图像灰度化处理

Python-OpenCV 处理图像(七):图像灰度化处理

为了加快处理速度,在图像处理算法中,往往需要把彩色图像转换为灰度图像。

0x00. 灰度图

灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度。

灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色深度。

在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值。

0x01. 灰度化的方法

1. 分量法

将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。

F1(i,j) = R(i,j)  F2(i,j) = G(i,j)  F3(i,j) = B(i,j)

代码示例:

import cv2.cv as cv
image = cv.LoadImage('mao.jpg')
b = cv.CreateImage(cv.GetSize(image), image.depth, 1)
g = cv.CloneImage(b)
r = cv.CloneImage(b)
    
cv.Split(image, b, g, r, None)
cv.ShowImage('a_window', r)
    
cv.WaitKey(0)

2. 最大值法

将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。

F(i,j) = max(R(i,j), G(i,j), B(i,j))

代码示例:

image = cv.LoadImage('mao.jpg')
new = cv.CreateImage(cv.GetSize(image), image.depth, 1)
for i in range(image.height):
    for j in range(image.width):
        new[i,j] = max(image[i,j][0], image[i,j][1], image[i,j][2])
cv.ShowImage('a_window', new)
cv.WaitKey(0)

3.平均值法

将彩色图像中的三分量亮度求平均得到一个灰度值。

F(i,j) = (R(i,j) + G(i,j) + B(i,j)) / 3

代码示例:

image = cv.LoadImage('mao.jpg')
new = cv.CreateImage(cv.GetSize(image), image.depth, 1)
for i in range(image.height):
    for j in range(image.width):
        new[i,j] = (image[i,j][0] + image[i,j][1] + image[i,j][2])/3
cv.ShowImage('a_window', new)
cv.WaitKey(0)

4.加权平均法

根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。

F(i,j) = 0.30R(i,j) + 0.59G(i,j) + 0.11B(i,j))

代码示例:

image = cv.LoadImage('mao.jpg')
new = cv.CreateImage(cv.GetSize(image), image.depth, 1)
for i in range(image.height):
    for j in range(image.width):
        new[i,j] = 0.3 * image[i,j][0] + 0.59 * image[i,j][1] +  0.11 * image[i,j][2]
cv.ShowImage('a_window', new)
cv.WaitKey(0)

上面的公式可以看出绿色(G 分量)所占的比重比较大,所以有时候也会直接取G 分量进行灰度化。

代码示例:

image = cv.LoadImage('mao.jpg')
new = cv.CreateImage(cv.GetSize(image), image.depth, 1)
for i in range(image.height):
    for j in range(image.width):
        new[i,j] = image[i,j][1]
cv.ShowImage('a_window', new)
cv.WaitKey(0)

内容来源:https://segmentfault.com/a/1190000003755100

http://www.thinksaas.cn/topics/0/600/600540.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫爬取网易云音乐全部评论

    . 2.接下来就打开控制台找我们要的评论藏在哪里就好了。 我们在http://music.163.com/weapi/v1/resource...

    Awesome_Tang
  • python机器学习实战(一)

    这篇notebook是关于机器学习中监督学习的k近邻算法,将介绍2个实例,分别是使用k-近邻算法改进约会网站的效果和手写识别系统. 操作系统:ubuntu14....

    努力努力再努力F
  • Winserver+Apache+django部署

    winserver2012 + django2.0.1 + apache 部署过程

    Wyc
  • python机器学习实战(二)

    http://www.cnblogs.com/fydeblog/p/7159775.html

    努力努力再努力F
  • python机器学习实战(三)

    这篇博客是关于机器学习中基于概率论的分类方法--朴素贝叶斯,内容包括朴素贝叶斯分类器,垃圾邮件的分类,解析RSS源数据以及用朴素贝叶斯来分析不同地区的态度.

    努力努力再努力F
  • Python实时爬取斗鱼弹幕

    斗鱼提供的文档已经是一年前的了,里面传回的消息内容增加了不少,但整体逻辑还是没变,我这边只取了弹幕里面的昵称和文本内容,其他的消息各位可以先打印出来看了再写正则...

    Awesome_Tang
  • Python爬取京东Iphone X用户评论并绘制词云

    目前京东商城只会展示商品的前100页评论,所以我们能爬取到的评论只有1000条。 不过如果区分下好/差/中评分别爬取的话,理论上应该能保存3000条评论。

    Awesome_Tang
  • Python网易云音乐爬虫进阶篇

    年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论...

    Awesome_Tang
  • 数据分析行业招聘职位分析报告--基于拉勾网

    大数据时代的到来让数据在公司决策上发挥了越来越大的作用,数据分析师也成为了各大企业的标配,那么各大企业又会愿意花多少代价来为数据买单呢?本文将通过从拉勾网爬取到...

    Awesome_Tang
  • 面向对象 "一"

    Wyc

扫码关注云+社区

领取腾讯云代金券