彩色图像转换灰度图像

article/2025/8/30 1:21:17

数字图像

     现在我们所接触到的图像绝大多数都是数字图像,图像数字化后,每个像素点就可以看作是一个小方格,每个小方格里面存储的就是图像的像素信息。如果把一副数字图像抽象出来,就是一个二维矩阵(灰度图)或者三维矩阵(彩色图)

彩色图像

     任何颜色都有红、绿、蓝三原色组成。用红、绿、蓝三元组的二维矩阵来表示(这样构成了三个通道),抽象出来一起构成了一个三维数组。三元组的每个数值也是在0-255之间,0表示相应的基色在该像素中没有,而255表示相应的基色在该像素中取得最大值。通过调节每个通道数灰度值的亮度,从而对三个通道中的三种基色进行不同搭配,进而构成了五颜六色的彩色世界!!我们可以把这三种基色(红、绿、蓝)看成三种颜料,每一个颜色通道里面的灰度等级看成每种颜料的调色板,灰度等级越大,那么对应的通道中的颜色就越接近三种基色。例如一个8bit的彩色图片,灰度等级为0~255,如果第0通道(R)里面灰度等级为255,这个通道显示的色板就是红色,如果灰度等级小于255,那个红色就会越来越淡,到0的时候就表示红色这个基色在0通道里面没有了,依次类推,第1通道(G)、第2通道(B)也是这个原理,然后将这三种色板的基色重叠在一起,就好比三种基色颜料混合在一起,这样就构成了彩色图像。

灰度图像

     每个像素的亮度用一个数值来表示,取值范围0-255,0表示黑、255表示白,其他值表示处于黑白之间的灰度,抽象出来构成了一个二维数组。灰度图像就没有色彩了,他的颜色是介于黑色到白色。255表示白色,0表示黑色,灰度等级处于之间就表示成不同等级的灰色。

图像转换

     彩色图像转换成灰度图像最基本的就是考虑怎么去分配三个通道里面的灰度等级,如果单纯直接将R通道里面的灰度值全部拿出来,也会构成一个灰度图像,同理,拿出G通道、B通道的拿出来,也是一副灰度图像,但是我们一般不这样做。查阅官方手册后,我们可以思考,通过以下几种方法来转换彩色图像的三个通道的灰度值:

    浮点算法:Gray=0.299R+0.587G+0.114B

    整数方法:Gray=(R30+G59+B*11)/100

    移位方法:Gray=(R28+G151+B*77)>>8

    平均值法:Gray=(R+G+B)/3

    最大值法:Gray = max(R,G,B)

    最小值法:Gray = min(R,G,B)

    仅取绿色:Gray=G

    上面公式中的R、G、B表示这三个通道里面的灰度值。为什么会出现这样不同的比例转换呢?因为我们人的眼睛对颜色的敏感程度是不一样的,我们对绿色更加敏感,其次是红色,最后是蓝色。所以对不同通道里的灰度值进行加权,加权后得到的灰度值就是我们转换后的灰度图的灰度值,所以这样得到的灰度图像更符合我们人眼的直观映像。转换后存到对应的二维数组里面,这个数组就是转换后的灰度图像抽象意义上的二维数组,显示出来就是一副灰度图像。这就是彩色图像转换成灰度图像的原理。

编写图像彩色空间转换灰度图像算法

(1)导包,读取图片,划分三个通道值;

(2)采用三通道的平均值、最大值、最小值、经典的加权和OpenCV库的cvtColor函数转换作为最终灰度图像的值;

a. 创建储存图片矩阵,求平均值、最大值、最小值、经典的加权转换和cvtColor函数结果;

b. 通过imshow显示图片;

c.用原RGB图片经处理后得到以下图片;

 

结论:在使用加权公式计算的结果与OpenCV内置函数的结果基本上一样,故两者最为接近,用最大值生成的图片比较明亮,平均值居中,最小值较暗。

(3)用Numpy内置函数优化程序代码,提高其运行速度。

a. 使用time库对优化的代码进行计时;

 

b.通过imshow显示图片并加入监听“ESC”,点击时撤销全部图片;

 

c.优化图片与for循环生成的数据一致;

d.对比显示两者之间运行速度;

结论:用Numpy中矩阵运算对数据进行处理比传统用for循环一个个像素的赋值处理运行速度得到了明显地提升,充分说明了Numpy在矩阵运算处理方面的优越性。

参考资料:https://blog.csdn.net/qq_44820108/article/details/121702791


http://chatgpt.dhexx.cn/article/VabicSvU.shtml

相关文章

Python灰度图像彩色化

1️⃣作业要求 给定一幅灰度图像,使用任意方法将其变成一幅彩色图像,并尽量使得添加的色彩显得较为真实。 2️⃣核心代码 这里我们是直接调用了eccv16和siggraph17的模型,运行程序时会自动下载这两个model文件,然后经过对图像的…

matlab 绘制灰度图

matlab 将矩阵中不同数值所对应的区域用 不同深度的灰度图画出来,不显示坐标轴标签,并设置在画布上全屏显示。 if 1close allrng (7)mask_allrand(256,256)*10;mask_allround(mod(mask_all,2));mask_allsort(mask_all);mask_all(1:100,1:50)0;mask_all(…

matlab读取一幅灰度图,Matlab处理灰度图

作业2:通过图像分析的方法对如下图像进行分析,获取颗粒特性参数。具体参数包括图像中的颗粒个数,颗粒面积,颗粒等效直径,非球形颗粒的长/短轴,非球形颗粒的方位。 图1 待处理颗粒图像 步骤: (1)…

python灰度图

任务描述 背景   真彩色图像和灰度图像是数字图像的两种常见类型,如下图所示,左图是真彩色图像,右图是灰度图像。    在真彩色图像中,像素颜色是 RGB 颜色,每个颜色包含 R、G、B 三个颜色分量。而在灰度图像中&…

图像处理--灰度图

灰度图 灰度图,Gray Scale Image 或是Grey Scale Image,又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶。 灰度图定义 什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点…

OpenCV(三)彩色图灰度化、通道分离、单通道反差处理(灰度图)、多通道反差处理(彩色图)

目录 一、彩色图灰度化 1、主要函数cvtColor()介绍 2、代码 3、效果 二、通道分离 1、向量介绍 2、总代码 3、效果 三、单通道(灰度图)反差处理 1、单通道向量访问 2、代码 3、效果 四、多通道(彩色图)反差处理(彩色图的反差处理) 1、多…

灰度图与RGB图

1.灰度图 灰度图就是单通道图像,而单通道图是指维度数为2的图像。 而灰度就是没有色彩,RGB色彩分量全部相等(可将这点与下文的RGB图进行对比)。那么灰度图的每个像素点就只有一个值表示颜色,像素值的范围就是[0~255]。…

ER图、ERD图

ER图、ERD图 1. 什么是ERD1.1 举例 2. ERD符号指南2.1 实体2.2 属性2.3 主键2.4 外键2.4 关系2.5 基数2.5.1 一对一的基数的例子2.5.2 一对多的基数的例子2.5.3 多对多的基数的例子 3.概念、逻辑和物理数据模型3.1 概念数据模型3.2 逻辑数据模型3.3 物理数据模型 4.如何绘制ER图…

2.2.2 ER图

2.2.2 ER图 关系型数据库提供了SQL语言,使应用程序开发人员与数据库管理和维护人员能够与数据库进行交互。但是在创建数据库和数据表之前,需要对数据库中的数据表进行设计,并能够正确设计出各数据表之间的关联关系。 通常使用ER图&#xf…

【系统架构】ER图的画图规范和优化点

文章目录 什么是ER图ER图的画图规范组成部分步骤注意 实例 第三弹,讲讲ER图的画图规范以及优化点 什么是ER图 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型 ER图…

学好er图

一、什么是er图? ​ 1、 实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器,独立于DBMS的ER图模型。 通常将它简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型…

ER图学习笔记(附各个图型的举例,实战案例)

ER图常用图形如下: ER图图形含义详解 实体(长方体): 实体字面意思就是实际存在的,例如商品,货物,用户。 属性(椭圆): 属性我们不陌生,就是一个…

enterprise architect绘画ER图

ER图的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance…

数据库ER图

ER图的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance…

java er图_ER图与UML图

ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型 构成E-R图的基本要素是实体、属性和联系,其表示…

ER图符号含义

ER图在数据库设计中经常用到,用于表示数据库各个表之间的关系。 设计的时候,我个人用到的主要是下图中的两个: Many:一对多 一个数据源对应多个数据库表 One:一对一 一个度量对应一个display设置,一对一…

ER图

文章转载自「开发者圆桌」 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并…

如何画数据库ER图

一、ER图基本概念 ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。 1、实体(entity) 即数据模型中的数据对象(即数据表),用长方体来表示&…

ER图详解及实例

文章目录 ER图基本概念ER图实例 ER图基本概念 ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。 实体(entity): 即数据模型中的数据对象(即数据表&…

什么是E-R图

E-R图,也称为实体关系图,用于显示实体集之间的关系。它提供了一种表示实体类型、属性和连接的方法;用来描述现实世界的概念模型。ER模型是数据库的设计或蓝图,将来可以作为数据库来实现。 在E-R图中,实体集是一组相似的…