数字图像

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

彩色图像

任何颜色都有红、绿、蓝三原色组成。用红、绿、蓝三元组的二维矩阵来表示(这样构成了三个通道),抽象出来一起构成了一个三维数组。三元组的每个数值也是在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

彩色图像转换灰度图像相关推荐

  1. 彩色图像和灰度图像之间的转换

    0.图像分类 1.黑白照片(二值照片)->图像中的颜色只有黑和白(0.255) 2.灰度照片->图像颜色取值在0~255,单通道 3.彩色照片->图像颜色取值在0~255,三通道 1 ...

  2. Python OpenCV 彩色图像与灰度图像的转换

    今天是持续写作的第 41 / 100 天. 如果你有想要交流的想法.技术,欢迎在评论区留言. 想不到,今天学习的竟然还是彩色图像与灰度图像的转换.经过前面的学习,你们和我一样,有没有掌握 2 种彩色图 ...

  3. 数字图像处理--彩色图像转灰度图像

    我们日常的环境通常获得的是彩色图像,很多时候我们常常需要将彩色图像转换成灰度图像.也就是3个通道(RGB)转换成1个通道. (1)平均法 最简单的方法当然就是平均法,将同一个像素位置3个通道RGB的值 ...

  4. 彩色图像转灰度图像原理python

    文章目录 彩色图像转灰度图像 数字图像 彩色图像 灰度图像 转换 彩色图像转灰度图像 数字图像 现在我们所接触到的图像绝大多数都是数字图像,图像数字化后,每个像素点就可以看作是一个小方格,每个小方格里 ...

  5. matlab下的彩色图像转换成二值图像并保存

    在matlab平台下,为了得到二值图像,先是用函数im2bw将彩色图像转换成二值图像,然后用imwrite函数生成指定路径的二值图像. 这里用到的例子是将彩色图像(64×64×3 uint8型图像数组 ...

  6. RGB彩色图像、灰度图像

    1.理解RGB彩色图像 ,RGB分量的意义 1.r red,g green,b blue 2.每一种颜色在视觉效果上都可以不同比例的 红 蓝 绿 三种颜色来合成 3.彩色图像的每一个像素,都是用 红蓝 ...

  7. 图像处理基础 || (二) 彩色图像转灰度图像

    彩色图像转灰度图像 文章目录 彩色图像转灰度图像 1. 利用scikit-image将彩色图像转化成灰度图像 2. 利用 Pillow 库完成彩色图像中灰度图像的逐层提取 3. 利用 Pillow 库 ...

  8. 6.Matlab如何将彩色图像转换为灰度图像

    6.Matlab如何将彩色图像转换为灰度图像 声明:本文转自jamin_liu_91.的文章 1.在数字图像中,彩色图像->灰色图像,一般有以下三种方式: 2.下面就以上三种方式,利用Matla ...

  9. Matlab图像处理(1)彩色图像转换为灰度图像(初学必看)

    手把手教你用Matlab实现彩色图像转换为灰度图像 RGB = imread('F:/1/tuxiang.jpg');%将图像读入工作区 Y = rgb2gray(RGB);%将图像灰度化 imsho ...

最新文章

  1. 2021年大数据ELK(十九):使用FileBeat采集Kafka日志到Elasticsearch
  2. 携程数据库高可用架构实践
  3. ABP官方文档翻译 6.1.1 MVC控制器
  4. 如何在Github网页端处理不同分支之间的冲突
  5. .NET Core 如何调试 CPU 爆高?
  6. django的models常用字段、属性
  7. python解释器把python代码一次性翻译成目标代码_Python语言程序设计----【第1周 Python基本语法元素】之1.1 程序设计基本方法...
  8. world: 对比两个文档
  9. php log日志管理,PHP日志LOG类定义与用法示例
  10. 怎么给字符串字段加索引?
  11. a4如何打印双面小册子_小册子打印
  12. idea 编译jar_Flink1.9.2源码编译和使用
  13. 机器学习数学基础学习总结(一)
  14. 关于彻底卸载流氓 “趋势科技防毒网络版客户端”最详细步骤,亲测有效
  15. 一起学ORBSLAM2(9)ORBSLAM的PNP解决方案
  16. 2022电工(初级)考试模拟100题及模拟考试
  17. R语言——单位根检验/平稳性检验
  18. zepto 事件分析2($.on)
  19. 今年计算机考研又炸了?!
  20. Java web 服务器 搭建_搭建一个java web服务端

热门文章

  1. python黑科技:让你无所遁形,附源码!
  2. mysql 中手动设置事务提交
  3. Vue packages version mismatch
  4. 阿里云IOT入门教程(三)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭
  5. 视频号如何打造爆款内容,封面、选题、文案三大维度丨国仁网络
  6. servicecontroller 无法打开计算机 服务,ServiceController似乎无法停止服务
  7. 医疗人工智能前景——医学影像
  8. 使用java、html5以及wPaint实现在线编辑图片并保存到FTP中的功能,在线图片为iis服务
  9. Python图片格式转换,图片压缩
  10. 动态规划---石子游戏