RAW RGB与RGB

网上关于RGB Raw data的介绍的比较混乱,现整理了一下给大家发出来,

先看看网上的一种说法“摄像头的数据输出格式一般分为CCIR601、CCIR656、RAW RGB等格式,此处说的RGB格式应该就是CCIR601或CCIR656格式。而RAW RGB格式与一般的RGB格式是有区别的。”

大嘴评述:这里的摄像头严格来说应该是传感器(sensor),个人觉得CCIR601和CCIR656更应该看做是一种标准和计算方式,而不应该是数据格式,这里我觉得有些误导,不必生就,具体关于CCIR601和CCIR656感兴趣的朋友请自行查阅资料,这里只做简单介绍。

我们知道,Sensor的感光原理是通过一个一个的感光点对光进行采样和量化,但在Sensor中,每一个感光点只能感光RGB中的一种颜色。所以,通常所说的30万像素或130万像素等,指的是有30万或130万个感光点。每一个感光点只能感光一种颜色。

但是,要还原一个真正图像,需要每一个点都有RGB三种颜色,所以,对于CCIR601或656的格式,在Sensor模组的内部会有一个ISP模块,会将Sensor采集到的数据进行插值和特效处理,例如:如果一个感光点感应的颜色是R,那么,ISP模块就会根据这个感光点周围的G、B感光点的数值来计算出此点的G、B值,那么,这一点的RGB值就被还原了,然后在编码成601或656的格式传送给Host。

而RGB RAW格式的Sensor则是将每个感光点感应到的RGB数值直接传送给Host,由Host来进行插值和特效处理。由此可见RGB RAW DATA才是真正的原始数据。

RGB RAW DATA是指原始的数据,单个pixle只能感应一种颜色。

如果这个原始数据的排列格式是 RGRG/GBGB排列的,我们叫做 Bayer pattern(这个最最常见)。所以 Bayer RGB是属于 RGB RAW data的,但是 RGB RAW data不一定是bayer pattern,不同厂家的sensor,其RGB RAW DATA排列是不同的, 不过对于我们来说不必过于关心扫描格式,反正厂家都会提供API.

下图是找到了一个从14bit RGB RAW DATA获取10bitRGB RAW DATA的简单示意流程图,

【10bit Raw RGB: 就是说用10bit 去表示一个R, G, 或者B, 通常的都是用8bit 的. 所以你后面处理时要把它转换为8bit 的, 比较简单的方法就是将低两位去掉, 因为低两位的信号代表范围很小(0~3), 所以可以忽略不计的. 当然, 你也可以根据转换表去转换, 那比较复杂.】

传感器原始图像格式:Bayer <wbr>RGB <wbr>和RGB <wbr>RAW
### Raw RGBRGB565的区别 Raw RGB RGB565 是两种不同的图像表示存储方式,它们在位深度、颜色精度以及存储需求方面存在显著差异。 #### 1. 位深度颜色通道 Raw RGB 通常指的是未压缩的 RGB 数据格式,它使用完整的位深度来表示每个颜色通道(红、绿、蓝)。例如,常见的 Raw RGB 格式可能为 24 位(8 位红色 + 8 位绿色 + 8 位蓝色),这意味着每种颜色都有 256 种可能的强度值[^1]。因此,Raw RGB 提供了更高的颜色精度更丰富的色彩表现能力。 相比之下,RGB565 是一种压缩的颜色格式,使用 16 位来表示一个像素的颜色信息。具体来说,RGB565 分配 5 位给红色通道、6 位给绿色通道、5 位给蓝色通道。这种分配方式是为了更好地匹配人眼对绿色的敏感度。由于位数减少,RGB565 的每个颜色通道只能表示有限的颜色强度:红色蓝色各有 32 种强度值,而绿色有 64 种强度值[^1]。 #### 2. 存储需求 Raw RGB 的高位深度导致其需要更多的存储空间来保存图像数据。例如,对于一个 4x4 像素的图像,如果使用 Raw RGB(24 位),则需要 \(4 \times 4 \times 3 = 48\) 字节的存储空间。然而,如果使用 RGB565,则只需要 \(4 \times 4 \times 2 = 32\) 字节的存储空间。因此,在存储效率方面,RGB565 明显优于 Raw RGB。 #### 3. 应用场景 Raw RGB 格式的高精度使其更适合需要高质量图像的应用场景,例如专业摄影、视频编辑以及需要精确颜色表示的科学计算任务。另一方面,RGB565 因为其较低的存储需求良好的视觉效果,常用于嵌入式系统、移动设备以及其他资源受限的环境中[^2]。 #### 示例代码 以下是一个简单的 Python 示例,展示如何将 Raw RGB 转换为 RGB565: ```python def rgb_to_rgb565(r, g, b): # 将 8 位 RGB 转换为 5 位或 6 位 r = (r >> 3) & 0x1F # 红色取高 5 位 g = (g >> 2) & 0x3F # 绿色取高 6 位 b = (b >> 3) & 0x1F # 蓝色取高 5 位 return (r << 11) | (g << 5) | b # 合并为 16 位 RGB565 # 示例转换 raw_rgb = (255, 128, 64) # 原始 RGBrgb565_value = rgb_to_rgb565(*raw_rgb) print(f"RGB565 Value: {rgb565_value:04X}") ``` ### 总结 Raw RGB RGB565 在图像表示存储中各有优劣。Raw RGB 提供更高的颜色精度更丰富的色彩表现,但需要更多的存储空间;而 RGB565 则通过降低位深度来减少存储需求,适合资源受限的环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值