我们日常的环境通常获得的是彩色图像,很多时候我们常常需要将彩色图像转换成灰度图像。也就是3个通道(RGB)转换成1个通道。
(1)平均法
最简单的方法当然就是平均法,将同一个像素位置3个通道RGB的值进行平均。
I(x,y) = 1/3 * I_R(x,y) +1/3 * I_G(x,y)+ 1/3 * I_B(x,y)

原始图像:

import cv2
import numpy as np
lenna = cv2.imread("lenna.png")
row, col, channel = lenna.shape
lenna_gray = np.zeros((row, col))
for r in range(row):for l in range(col):lenna_gray[r, l] = 1 / 3 * lenna[r, l, 0] + 1 / 3 * lenna[r, l, 1] + 1 / 3 * lenna[r, l, 2]cv2.imshow("lenna_gray", lenna_gray.astype("uint8"))
cv2.waitKey()


(2)最大最小平均法
取同一个像素位置的RGB中亮度最大的和最小的进行平均。`

I(x,y) = 0.5 * max(I_R(x,y), I_G(x,y), I_B(x,y))+ 0.5 * min(I_R(x,y), I_G(x,y), I_B(x,y))for r in range(row):for l in range(col):lenna_gray[r, l] = 1 / 2 * max(lenna[r, l, 0], lenna[r, l, 1], lenna[r, l, 2]) + 1 / 2 * min(lenna[r, l, 0],                                                                                lenna[r, l, 1],                                                                               lenna[r, l, 2])cv2.imshow("lenna_maxmin", lenna_gray.astype("uint8"))
cv2.waitKey()


(3)加权平均法
I(x,y) = 0.3 * I_R(x,y) +0.59 * I_G(x,y)+ 0.11 * I_B(x,y)
这是最流行的方法。几个加权系数0.3,0.59,0.11是根据人的亮度感知系统调节出来的参数,是个广泛使用的标准化参数。

for r in range(row):for l in range(col):lenna_gray[r, l] = 0.11 * lenna[r, l, 0] + 0.59 * lenna[r, l, 1] + 0.3 * lenna[r, l, 2]cv2.imshow("lenna_weighted", lenna_gray.astype("uint8"))
cv2.waitKey()


(4)二值图像
不严谨的时候,我们也可以把灰度图称为黑白图像,实际上除了灰度图,还有一种图像叫二值图,也就是灰度只有0和255,这才是“真正的黑白图像”,因为0代表黑色,255代表白色。我们设定一个阈值T,当某像素点的灰度值大于T时,设定该像素点的值为255,当小于T时,设定为0。

lenna_binary = np.zeros_like(lenna_gray)
threshold = 100
for r in range(row):for l in range(col):if lenna_gray[r, l] >= threshold:lenna_binary[r, l] = 255else:lenna_binary[r, l] = 0cv2.imshow("lenna_binary", lenna_binary.astype("uint8"))
cv2.waitKey()


(5)反转图像
反转图像也很简单:s = 255-r。反转图像特别适用于增强暗色图像中的白色或灰色细节。

x_ray = cv2.imread("x_ray.png", 0)row, col = x_ray.shapex_ray_inverse = np.zeros_like(x_ray)for r in range(row):for l in range(col):x_ray_inverse[r, l] = 255 - x_ray[r, l]
cv2.imshow("x_ray", x_ray)
cv2.imshow("x_ray_inverse", x_ray_inverse)
cv2.waitKey()

补充:

参考文章:
https://blog.csdn.net/saltriver/article/details/79677116?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162046582416780262570149%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162046582416780262570149&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-79677116.first_rank_v2_pc_rank_v29&utm_term=%E7%81%B0%E5%BA%A6%E5%9B%BE%E7%9A%84%E8%BD%AC%E6%8D%A2&spm=1018.2226.3001.4187

RGB图转为灰度图的方法相关推荐

  1. RGB图像转为灰度图

    最后结论: Grey = (R*38 + G*75 + B*15)>> 7 代码 #include <cv.h> #include <highgui.h>using ...

  2. 【OpenCV】将RGB图像转为灰度图

    基本思路: 1.  输入RGB(彩色)图像 2.  处理图像 3.  输出GRAY(灰度)图像 这里将处理图像过程单独写成一个函数,供主函数调用 1 void RGB2GRAY(IplImage* s ...

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

    RGB图像灰度化 RGB图像 我们来看看下面这张图,美不美 这么好看的图是咋个整出来的呢?哦!原来是这样:一幅图像 I I I由很多个像素点组成的,而每个像素点又包含RGB(red,green,blu ...

  4. cv2 inrange灰度图_Python opencv将图片转为灰度图的方法示例

    这篇文章主要介绍了python opencv将图片转为灰度图的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 使用ope ...

  5. CAD模型转为点云模型/三维点云转为灰度图

    一.三维模型转变为点云模型 (1)导入三维模型 首先准备好三维模型文件,笔者所使用的为.stl文件.在工具栏中找到File–>Open,选择三维模型文件点击打开,即可在CC中看到带转换的三维模型 ...

  6. 学习RGB配色,灰度图

    原文: http://www.16xx8.com/photoshop/jiaocheng/2015/139574.html 从RGB色转为灰度色算法: 一.基础  对于彩色转灰度,有一个很著名的心理学 ...

  7. opencv 学习笔记——读入一张图片,并将其转为灰度图

    读入一张RGB彩色图片,并将其转为灰度图 源码如下: #include <opencv2\highgui\highgui.hpp> #include <opencv2/opencv. ...

  8. OpenCV4Android中NDK开发(二)---图片转为灰度图

    前言 上一篇文章已经介绍了OpenCV的环境配置<OpenCV4Android中NDK开发(一)--- OpenCV4.1.0环境搭建>,今天这篇我们就来直接进行实战,先做最简单的传入图像 ...

  9. 如何二值图转化为灰度图_木工真空吸附雕刻机如何用精雕5.21把精雕图模型转为灰度图...

    随着数控雕刻机的普及,用户们对雕刻图纸的需求量越来越大.目前中国主流的雕刻图纸制作软件是北京精雕,也就是常说的精雕图.因不同的需要,很多人习惯使用灰度图来进行雕刻.本文无锡酬信雕刻机厂家小编以精雕5. ...

最新文章

  1. Jconsole远程监控Tomcat
  2. java连接sqlserver数据简单操作
  3. 机器学习之单变量线性回归(Linear Regression with One Variable)
  4. PyTorch 实现 Mask-RCNN
  5. [九度][何海涛] 跳台阶
  6. 员工管理系统---SpringBoot
  7. Extjs4开发中的一些问题
  8. STM32——DMA
  9. python文本分词_【Python】使用jieba对文本进行分词
  10. Android merge 标签学习笔记
  11. 1026 逃跑的拉尔夫
  12. 宽带认证客户端_cisco PPPOE 服务端与客户端 配置命令
  13. Python Decorator 的来龙
  14. CVE和CWE的区别
  15. STM32F40xxx 系列芯片引脚图
  16. 高中数学基础01:集合与函数
  17. 双非长沙理工排名飙升176反超吉大,湖大连续2年超哈工大 | US News 2023
  18. fuchsia Zircon Hypervisor:调测手段
  19. 数据分析的日常工作——如何成为不被追着要数据的数据分析师?
  20. Linux文件系统性能优化

热门文章

  1. 《铸梦之路》帧同步卡牌放置手游(斗罗大陆武魂觉醒、上古王冠)
  2. 2020年四川省大型舞台艺术创作申报材料流程及申请奖励补助
  3. 系统架构演变和远程调用
  4. 101条计算机经典名言(英汉对照版)
  5. 计算机什么是符号健,在电脑健盘上怎么打:符号
  6. linux服务器 qsub .pbs 提交作业 无特殊报错,但是提交不上的 bug
  7. C语言旅途之输出N的M次方的后三位数
  8. 什么是APS?APS+MES如何解决生产难题?
  9. 第 4 篇、Linux操作基础 | 计算机组成
  10. 壞壞老婆VS傻傻老公