图像处理的第一步操作基本都是进行灰度化,二灰度化的方式都很多种,可以根据自己的具体需要进行参数调整,基本分为四大种,分别为YUV亮度灰度化最大值灰度化平均值灰度化Gamma校正灰度化
1.Gamma校正灰度化
原理如下计算公式:
            Gray=R2.2+(1.5G)2.2+(0.6B)2.21+1.52.2+0.62.22.2Gray=\sqrt[2.2]{\frac{R^{2.2}+(1.5G)^{2.2}+(0.6B)^{2.2}}{1+1.5^{2.2}+0.6^{2.2}}}Gray=2.21+1.52.2+0.62.2R2.2+(1.5G)2.2+(0.6B)2.2​​
  注意这里的2.2次方和2.2次方根,RGB颜色值不能简单直接相加,而是必须用2.2次方换算成物理光功率。因为RGB值与功率并非简单的线性关系,而是幂函数关系,这个函数的指数称为Gamma值,一般为2.2,而这个换算过程,称为Gamma校正。

import cv2
import numpy as np
import math
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文def Gamma_GRAY(picture_path):  #Gamma校正灰度化:Gray=# 读取图像img = cv2.imread(picture_path)# 获取图像尺寸h, w = img.shape[0:2]# 自定义空白单通道图像,用于存放灰度图gray = np.zeros((h, w), dtype=img.dtype)# 对原图像进行遍历,然后分别对B\G\R按比例灰度化for i in range(h):for j in range(w):a = img[i, j, 2] ** (2.2) + 1.5 * img[i, j, 1] ** (2.2) + 0.6 * img[i, j, 0] ** (2.2)  # 分子b = 1 + 1.5 ** (2.2) + 0.6 ** (2.2)  # 分母gray[i, j] = pow(a / b, 1.0 / 2.2)  # 开2.2次方根gray = cv2.cvtColor(gray, cv2.COLOR_BGR2RGB)  # BGR转换为RGB显示格式,方便通过matplotlib进行图像显示plt.imshow(gray)plt.title('Gamma校正灰度化')plt.axis('off')  # 关闭坐标轴  设置为on则表示开启坐标轴plt.show()  # 显示图像

2.平均值灰度化
原理: 对B、G、R三通道像素求取平均值作为灰度值,公式为:
            gray=(B+G+R)/3gray=(B+G+R)/3gray=(B+G+R)/3

def Avrage_GRAY(picture_path):  #平均值灰度化:对B、G、R三通道像素求取平均值作为灰度值,公式为:gray=(B+G+R)/3# 读取图像img = cv2.imread(picture_path)# 获取图像尺寸h, w = img.shape[0:2]# 自定义空白单通道图像,用于存放灰度图gray = np.zeros((h, w), dtype=img.dtype)# 对原图像进行遍历,然后分别对B\G\R按比例灰度化for i in range(h):for j in range(w):gray[i, j] = (int(img[i, j, 0]) + int(img[i, j, 1]) + int(img[i, j, 2])) / 3  # 求3通道像素的平均值作为灰度值gray = cv2.cvtColor(gray, cv2.COLOR_BGR2RGB)  # BGR转换为RGB显示格式,方便通过matplotlib进行图像显示plt.imshow(gray)plt.title('平均值灰度化')plt.axis('off')  # 关闭坐标轴  设置为on则表示开启坐标轴plt.show()  # 显示图像

3.最大值灰度化
原理:以B、G、R通道中最大的像素作为整体像素,公式为:
            B=G=R=max([B,G,R])B=G=R=max([B,G,R])B=G=R=max([B,G,R])

def Max_GRAY(picture_path):  #最大值灰度化:以B、G、R通道中最大的像素作为整体像素,公式为:B=G=R=max([B,G,R])#读取图像img = cv2.imread(picture_path)# 获取图像尺寸h, w = img.shape[0:2]# 自定义空白单通道图像,用于存放灰度图gray = np.zeros((h, w), dtype=img.dtype)# 对原图像进行遍历,然后分别对B\G\R按比例灰度化for i in range(h):for j in range(w):gray[i, j] = max(img[i, j, 0], img[i, j, 1], img[i, j, 2])  # 求3通道中最大的值gray = cv2.cvtColor(gray, cv2.COLOR_BGR2RGB)  # BGR转换为RGB显示格式,方便通过matplotlib进行图像显示plt.imshow(gray)plt.title('最大值灰度')plt.axis('off')  # 关闭坐标轴  设置为on则表示开启坐标轴plt.show()  # 显示图像

4.YUV亮度灰度化
原理:根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应,以这个亮度值表达图像的灰度值。公式为:
            Y=0.3R+0.59G+0.11BY=0.3R+0.59G+0.11BY=0.3R+0.59G+0.11B

def Cv2_GRAY(picture_path):  # YUV亮度灰度处理:Y=0.3R+0.59G+0.11B#读取图像img=cv2.imread(picture_path)gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#BGR转换为灰度print(gray.shape)img= cv2.cvtColor(gray,cv2.COLOR_BGR2RGB)#BGR转换为RGB显示格式plt.imshow(img)plt.title('灰度处理')plt.axis('off')#关闭坐标轴  设置为on则表示开启坐标轴plt.show()#显示图像return gray

图像处理(一)图像灰度化的三种方式相关推荐

  1. 图像灰度化的三种方式

    目录 一.为什么要图像灰度化 二.灰度化的主要方法 2.1取通道最大值 2.2平均值法 2.3加权法 三.示例 一.为什么要图像灰度化 目前很多的图像算法都是基于灰度图像的,比如特征点提取,特征点匹配 ...

  2. 图像灰度化的三种方法(matlab、C++、Python实现)

    灰度化处理就是将一幅色彩图像转化为灰度图像的过程.彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程.灰度值大的像素点比较亮(像素值最大为255,为 ...

  3. 图像处理(灰度化的三种方式)

    图像给灰度化的原理,通过将得到的彩色图像转化为单色图的过程为灰度化. 将得到的彩色图像进行转化,简单的说就是将彩色图像转化为黑白(亮度)图像,灰度得到范围为0-255. 灰度化的好处: 通过将彩色图像 ...

  4. 【opencv学习笔记】第五篇:访问图像中像素的三种方式、ROI区域图像叠加和图像混合

    1. 访问图像中像素的三种方式 任何图像处理算法,都是从操作每个像素开始的.在OpenCV中,提供了三种访问每个像素的方法. 方法1:指针访问:C操作符[] 方法2:迭代器iterator 方法3:动 ...

  5. 【python图像处理】图像灰度化处理、图像灰度线性变换、图像灰度非线性变换

    一.图像灰度化处理 1.最大值灰度处理方法 2.平均灰度处理方法 3.加权平均灰度处理方法 二.图像灰度线性变换 1.图像灰度上移变换 2.图像对比度增强变换 3.图像对比度减弱变换 4.图像灰度反色 ...

  6. matlab实现彩色图像灰度化的三种方法

    一.概要 将彩色图像转换为灰度图像的过程称为灰度化处理. 对于图像而言,灰度化处理就是使彩色的R,G,B分量值相等的过程. 灰度化处理的方法主要有如下3种: 最大值法:使R,G,B的值等于3值中最大的 ...

  7. python图像处理之图像灰度化

    灰度化 预备知识 在了解图像处理的基本操作之前,我们需要知道关于图像的一些基本知识.我们这里所说的图像处理实质上是数字图像处理,因为计算机只能对数字信号进行处理,因此存储在计算机中的图像都是实际图像经 ...

  8. SpringMVC--国际化的三种方式详解(AcceptLanguageLocaleResolver、SessionLocaleResovler、CookieLocaleResolver)

    国际化概述 基于浏览器请求的国际化实现 新建实体类 package pers.zhang.entity;/*** @author zhang* @date 2019/11/28 - 11:34*/ p ...

  9. 图像灰度化的常用三种方式及其实现

    第一次写blog,还请各位同仁多多指正,万分感谢! 图像灰度化的常用三种方法有: 1.分量法(本文以B通道为例):将彩×××像的R.G.B三分量的亮度之一作为灰度图像灰度值 Gray=B or Gra ...

  10. CUDA精进之路(三):图像处理——图像灰度化、灰度直方图统计

    引言 在大部分的图像处理程序中,其中必不可少的一步就是对传入的彩图进行灰度处理,将三个通道的RGB图片转化为单通道的Gray图,而对于灰度图进行直方图统计同样是观察检测图像特征的常用方法.在OpenC ...

最新文章

  1. DNN 数据访问策略 (转)
  2. junit5_使用Junit测试名称
  3. 出现authentication mode=Windows/错误解决办法
  4. 【论文解读】OneNet:一阶段的端到端物体检测器,无需NMS
  5. The SDK platform-tools version ((23)) is too old to check APIs compiled with API 26;
  6. php mysql 随机字符串_MySQL_Mysql 自定义随机字符串的实现方法,前几天在开发一个系统,需要 - phpStudy...
  7. 【Java深入研究】10、红黑树
  8. html5 图片上传 预览
  9. 0代码隐藏GroupedTableView上边多余的间隔
  10. python3.7中Gluonts与Mxnet安装问题
  11. arcsde 10.2 for oracle 安装,ArcSDE 10.2 for Oracle 12C安装注意事项
  12. 【笔记整理】电磁场复习——麦克斯韦四个方程组
  13. H3CSE园区-LLDP技术
  14. python图像识别教程pdf_如何使用Python进行PDF图片识别OCR
  15. genetic heterogeneity 遗传异质性
  16. 2017年计算机二级有什么好处,2017年计算机二级考试备考的五大法宝
  17. HUAWEI 机试题:统计射击比赛成绩
  18. 前端如何修改网页的标题栏图标和名称
  19. 并发编程(十)ThreadPoolExecutor源码分析、拒绝策略、队列、示例代码
  20. uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

热门文章

  1. java s_java中\s什么意思?
  2. 2012r2备域控服务器搭建,Windows Server 2012 R2域控制器部署
  3. 浙大PAT甲级 1080
  4. 求职类App原型制作分享-Part-time Clouds
  5. nexus上传Jar包Anti cross-site request forgery token mismatch
  6. iOS 关于接入海康视频SDK的步骤
  7. ubuntu 测试硬盘读写速度
  8. 日志过滤工具 LogViewer Pro
  9. RANSAC算法理解
  10. 5分钟学会双拼 双拼输入法 最简单的双拼入门教学 图文教程