1.灰度图Gray Scale Image 定义

Gray Scale Image 或是 Gray Scale Image,56阶。又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为2用灰度表示的图像称作灰度图。
什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
  1.浮点算法:Gray=R*0.3+G*0.59+B*0.11
  2.整数方法:Gray=(R*30+G*59+B*11)/100
  3.移位方法:Gray =(R*76+G*151+B*28)>>8;
  4.平均值法:Gray=(R+G+B)/3;
  5.仅取绿色:Gray=G;
  通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。

在嵌入式系统中采用灰度图显示可以显著降低显示RAM容量的要求。

参考链接:

(1)http://baike.baidu.com/view/1184366.htm

(2) http://en.wikipedia.org/wiki/Grayscale

【附】RGB图像的各种格式

RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各各位意义如下:
  高字节 低字节
  R R R R R G G G G G G B B B B B

可以组合使用屏蔽字和移位操作来得到RGB各分量的值:

  #define RGB565_MASK_RED 0xF800#define RGB565_MASK_GREEN 0x07E0#define RGB565_MASK_BLUE 0x001FR = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-31G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63B = wPixel & RGB565_MASK_BLUE; // 取值范围0-31#define RGB(r,g,b) (unsigned int)( (r/0x08 << 11) | (g/0x08 << 6) | b/0x08 )#define RGB(r,g,b) (unsigned int)( (r/0x08 << 10) | (g/0x08 << 5) | b/0x08 )

该代码可以解决24位与16位相互转换的问题

RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:
  高字节 低字节
  X R R R R G G G G G B B B B B (X表示不用,可以忽略)
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:

  #define RGB555_MASK_RED 0x7C00#define RGB555_MASK_GREEN 0x03E0#define RGB555_MASK_BLUE 0x001FR = (wPixel & RGB555_MASK_RED) >> 10; // 取值范围0-31G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-31B = wPixel & RGB555_MASK_BLUE; // 取值范围0-31

RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:
  typedef struct tagRGBTRIPLE { 
  BYTE rgbtBlue; // 蓝色分量
  BYTE rgbtGreen; // 绿色分量
  BYTE rgbtRed; // 红色分量
  } RGBTRIPLE;

参考:网络资料。

灰度图Gray Scale Image 或是 Gray Scale Image相关推荐

  1. 【笔记】opencv图像轮廓 获得平均灰度值在原图上画轮廓 观察灰度图的分解

    调整大小: image = cv2.resize(image,dst=None,fx=0.5,fy = 0.5,dsize=None) img = cv2.resize(img,dst=None,fx ...

  2. PIL gray img /灰度图 转OpenCV格式灰度图

    彩色图转换通过cv2.cvtColor(pil_img, cv2.COLOR_RGB2BGR)可以转换,灰度图直接通过数组化即可: pil_img.size  # show  (37, 176) cv ...

  3. matlab将图片转换为灰度图_视频处理之灰度图

    欲观原文,请君移步​mp.weixin.qq.com 灰度图概念 灰度图 ,Gray Scale Image 或是Grey Scale Image,又称灰阶图.把白色与黑色之间按对数关系分为若干等级, ...

  4. 在嵌入式板子ARMv7 上利用neon对彩色图转换为灰度图进行加速

    RGB转GRAY公式如下: 本实验通过对一张1920*1080 分辨率大小RGB彩色图进行灰度图转换测试耗时时间. 测试条件为 嵌入式开发板ssc9381g A7 通过四种转换方式进行耗时对比 结果如 ...

  5. opencv灰度图转伪彩图或彩色图

    一.背景 一般例如红外图像,呈现出来的是灰度图效果,此时每个像素有一个,在0-255内,如果想要观看伪彩图,也就是人工设置的彩色,需要在灰度图的基础上,给它增加RGB三个通道的值,让它变为看起来有红绿 ...

  6. mupdf实现常用图片转换为灰度图pnm

    我要实现的工作是使用mupdf库转换pdf.jpeg.tif等文件为灰度图,转换完成的灰度图存放到内存中,而不是存为文件,在读取到内存中,主要是嵌入式系统中使用.下面是example.c,我加了我理解 ...

  7. Java BufferImage图片处理(获取宽高、图片截取、转换灰度图)

    Java BufferImage图片处理(获取宽高.截取.转换灰度图) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Java读取图片为byte[]数组,或者BufferedImage及互相转 ...

  8. Opencv中除了cv2.cvtColor彩色图转灰度图之外的其他6种方法

    文章目录 1.参考文章: 2.公式集成: 3.代码实现: 4.实验结果: 1.参考文章: https://mp.weixin.qq.com/s/jqVVZbZZRIqVt_Fs7HiUkg 2.公式集 ...

  9. Android 将ARGB图片转换为灰度图

    思路如下: 1.读取or照相,得到一张ARGB图片. 2.转化为bitmap类,并对其数据做如下操作: A通道保持不变,然后逐像素计算:X = 0.3×R+0.59×G+0.11×B,并使这个像素的值 ...

最新文章

  1. Django源码分析4:staticfiles静态文件处理中间件分析
  2. SpringBoot定时任务实现的两种方式介绍
  3. 排列、组合问题(递归)
  4. DNN Navisuite菜单模块原始XML文件的格式
  5. opencv实现图像目标对象区域挖掘
  6. 编写第一个 Hibernate 例子
  7. 基于51单片机的智能路灯照明控制系统proteus仿真原理图程序设计
  8. iOS 多媒体(一)音频播放
  9. 对称密钥与非对称密钥算法
  10. PIC单片机入门教程(四)—— 第一个工程
  11. 2022NISCTF--web
  12. 有用的函数-系统采集
  13. 2021年6月1日TED演讲,早起早睡的人生到底有多精彩?
  14. linux中grep -E参数,linux中grep命令
  15. html文件的模板分离,JS数据模板分离(告别字符串拼接)-template
  16. 教育部最新发布:180所高校本科新增AI课程,138所高校新增大数据课程
  17. mysql怎么创建和调用out参数的存储过程
  18. 2023 研究生考试 倒计时 213天
  19. 2021人才跳槽流动分析报告
  20. 如何对Docker容器进行健康检查

热门文章

  1. Type-c接口各功能简介以及方案分享
  2. <Linux常用开发工具使用(yum、vim、gcc/g++、gdb、make/Makefile等)>——《Linux》
  3. 翌加:抖音带货的具体途径有哪些呢
  4. 手机号码归属地及查询身份证号归属地API可用接口
  5. 卷积神经网络及YOLO算法 相关
  6. 全网采集壁纸360网站全网壁纸
  7. 推广的域名链接在QQ微信被拦截怎么办 微信域名网址防封防屏蔽的解决办法
  8. 微信小程序-----身份证校验
  9. 如何在UE4中制作赛博朋克LED效果
  10. 2021年中国数据中台行业白皮书