灰度图Gray Scale Image 或是 Gray Scale Image
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相关推荐
- 【笔记】opencv图像轮廓 获得平均灰度值在原图上画轮廓 观察灰度图的分解
调整大小: image = cv2.resize(image,dst=None,fx=0.5,fy = 0.5,dsize=None) img = cv2.resize(img,dst=None,fx ...
- PIL gray img /灰度图 转OpenCV格式灰度图
彩色图转换通过cv2.cvtColor(pil_img, cv2.COLOR_RGB2BGR)可以转换,灰度图直接通过数组化即可: pil_img.size # show (37, 176) cv ...
- matlab将图片转换为灰度图_视频处理之灰度图
欲观原文,请君移步mp.weixin.qq.com 灰度图概念 灰度图 ,Gray Scale Image 或是Grey Scale Image,又称灰阶图.把白色与黑色之间按对数关系分为若干等级, ...
- 在嵌入式板子ARMv7 上利用neon对彩色图转换为灰度图进行加速
RGB转GRAY公式如下: 本实验通过对一张1920*1080 分辨率大小RGB彩色图进行灰度图转换测试耗时时间. 测试条件为 嵌入式开发板ssc9381g A7 通过四种转换方式进行耗时对比 结果如 ...
- opencv灰度图转伪彩图或彩色图
一.背景 一般例如红外图像,呈现出来的是灰度图效果,此时每个像素有一个,在0-255内,如果想要观看伪彩图,也就是人工设置的彩色,需要在灰度图的基础上,给它增加RGB三个通道的值,让它变为看起来有红绿 ...
- mupdf实现常用图片转换为灰度图pnm
我要实现的工作是使用mupdf库转换pdf.jpeg.tif等文件为灰度图,转换完成的灰度图存放到内存中,而不是存为文件,在读取到内存中,主要是嵌入式系统中使用.下面是example.c,我加了我理解 ...
- Java BufferImage图片处理(获取宽高、图片截取、转换灰度图)
Java BufferImage图片处理(获取宽高.截取.转换灰度图) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Java读取图片为byte[]数组,或者BufferedImage及互相转 ...
- Opencv中除了cv2.cvtColor彩色图转灰度图之外的其他6种方法
文章目录 1.参考文章: 2.公式集成: 3.代码实现: 4.实验结果: 1.参考文章: https://mp.weixin.qq.com/s/jqVVZbZZRIqVt_Fs7HiUkg 2.公式集 ...
- Android 将ARGB图片转换为灰度图
思路如下: 1.读取or照相,得到一张ARGB图片. 2.转化为bitmap类,并对其数据做如下操作: A通道保持不变,然后逐像素计算:X = 0.3×R+0.59×G+0.11×B,并使这个像素的值 ...
最新文章
- Django源码分析4:staticfiles静态文件处理中间件分析
- SpringBoot定时任务实现的两种方式介绍
- 排列、组合问题(递归)
- DNN Navisuite菜单模块原始XML文件的格式
- opencv实现图像目标对象区域挖掘
- 编写第一个 Hibernate 例子
- 基于51单片机的智能路灯照明控制系统proteus仿真原理图程序设计
- iOS 多媒体(一)音频播放
- 对称密钥与非对称密钥算法
- PIC单片机入门教程(四)—— 第一个工程
- 2022NISCTF--web
- 有用的函数-系统采集
- 2021年6月1日TED演讲,早起早睡的人生到底有多精彩?
- linux中grep -E参数,linux中grep命令
- html文件的模板分离,JS数据模板分离(告别字符串拼接)-template
- 教育部最新发布:180所高校本科新增AI课程,138所高校新增大数据课程
- mysql怎么创建和调用out参数的存储过程
- 2023 研究生考试 倒计时 213天
- 2021人才跳槽流动分析报告
- 如何对Docker容器进行健康检查