• RSS订阅 加入收藏  设为首页
相机软件

图像传感器-RAW格式辨析

时间:2024/5/5 11:37:48   作者:郑士利   来源:正势利   阅读:33   评论:0
内容摘要:图像传感器数据手册里面经常会出现RAW格式,就是原始数据的量化值,就是比如RGB(A,B,C)十进制,然后把A,B,C用一组二进制数表示,比如8位深度,就是0~255量化一个颜色的通道值。1600W种颜色,但还是太少了算算?每个像素占用3字节=24位(8位*3)。总像素数=400*400=160,000像素图像大小=每...

    图像传感器数据手册里面经常会出现RAW格式,就是原始数据的量化值,就是比如RGB(A,B,C)十进制,然后把A,B,C用一组二进制数表示,比如8位深度,就是0~255量化一个颜色的通道值。

图像传感器-RAW格式辨析

1600W种颜色,但还是太少了

算算?

每个像素占用 3 字节 = 24位(8位 * 3)。

总像素数 = 400 * 400 = 160,000 像素

图像大小 = 每个像素所占字节数 * 总像素数 

图像大小 = 3 字节/像素 *160,000 像素 = 480,000 字节

将字节转换为常见的单位,可以得到图像大小为 480,000 字节,约为468.75 KB(1 KB = 1024 字节)。

RGB格式、分辨率为400x400的图像的大小为约468.75 KB。

RAW DATA,可以理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据,是无损的,包含了物体原始的颜色信息等。

RAW数据格式一般采用的是Bayer排列方式,通过滤波光片,产生彩色滤波阵列(CFA),鉴于人眼对绿色波段的色彩比较敏感,Bayer数据格式中包含了50%的绿色信息,以及各25%的红色和蓝色信息。

光线经过镜头,被传感器上的为滤镜分解成一个个单色的光,由传感器记录下每个点的光强度数值,这就得到了RAW数据。把RAW的灰度值转换成图像,是这样的:

图像传感器-RAW格式辨析

不经过后期处理的RAW,就只有这样的黑白马赛克

图像传感器-RAW格式辨析

然后把每个地方的像素显示出来是这样,还是不清晰

接下来这步是猜色:

每个滤光点周围有“规律”地分布其他颜色的滤光点,那么就有可能结合它们的值,判断出光线本来的颜色。

以黄光为例,它由红光和绿光混合而成,那么通过滤光层以后,红点和绿点下面的像素都会有值,但是蓝点下面的像素没有值,因此看一个像素周围的颜色分布——有红色和绿色,但是没有蓝色——就可以推测出来这个像素点的本来颜色应该是黄色。

图像传感器-RAW格式辨析

一个颜色点还原过程

图像传感器-RAW格式辨析

会变成这样

图像传感器-RAW格式辨析

1.人眼观察到的图像 

2.RAW原始图像 

3.Bayer格式输出图像 

4.运用插值计算后输出图像

那就是4步走,运算量都不低啊。


Byer长什么样?

图像传感器-RAW格式辨析

这是我能看到的唯一一个实物的样子

图像传感器-RAW格式辨析

二分之一+二分之一+四分之一除以3不就是三分之一

输入的 RAW Bayer 图像数据转换成 RGB 域的数据。在 RAW 域中,每个像素点只包含 RGB 分量中的一个,这也就是为什么RAW格式大的原因。

按照理想情况,每个像素点有3个值,而实际上,R和B各只有1/4,G有1/2,因此,bayer pattern得到的图像中,实际只有1/3的内容是真实的,其他都是根据先验知识插值得到。这也说明了自然图像中具有大量的冗余信息。

然后插值算法就是下面图的意思,把各个通道的未知值算出来,插进去:

图像传感器-RAW格式辨析

线性插值:在这种插值算法中,缺失的颜色像素将使用其邻近像素的值进行插值。

例如,对于 BGGR Bayer 模式图像,缺失的绿色像素可以通过其周围的四个相邻像素的平均值来得到。对于缺失的红色或蓝色像素,可以使用相邻行或相邻列的值计算。

修正的 bilinear 插值:这是一种更精确的插值算法,它对线性插值进行了改进。

在这种算法中,缺失的颜色像素将使用邻近像素和它们的邻近像素来进行插值。这种算法在处理高畸变图像时可以提供更好的效果。不就是个双线性插值

图像传感器-RAW格式辨析

就是这么多的像素,就为算一个绿B

源图像位置在它附近的2*2区域4个邻近象素的值通过加权平均计算得出的。双线性内插值算法放大后的图像质量较高,不会出现像素值不连续的的情况。然而此算法具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。

图像传感器-RAW格式辨析

还有gradient-corrected linear interpolation,出自微软研究院,该算法被matlab中的demosaic函数所使用。

该算法的主要原理为:在5*5大小的窗口中,利用中心点像素所属颜色的梯度值对其它颜色的插值结果进行补偿。其中,R和B都考虑了上下左右4个方向的梯度;G除了上下左右4个方向,还考虑了4个对角线方向的梯度,这应该是由于G的像素点个数是R和B的2倍,而且人眼对于绿色的敏感度更强。

图像传感器-RAW格式辨析

效果

图像传感器-RAW格式辨析

这个图就更清晰啦

图像传感器-RAW格式辨析

色彩滤波矩阵(CFA)

更多的上面是科普,我们一般是使用传感器,看一个OV2640的输出格式:

Output Formats(8-bit):

. YUV(422/420)/YCbCr422

. RGB565/555

. 8-bit compressed data

. 8-/10-bit Raw RGB data

这里先说这些格式适合用在哪里:

Raw RGB:

适用场景:专业摄影、图像处理和计算机视觉等领域。原始的RGB数据提供了最大的色彩信息和灵活性,在后期处理中可以进行精确的颜色校正、白平衡调整和图像增强等操作。

RGB (RGB565/555):

适用场景:嵌入式系统、显示器驱动和图形处理器等。RGB565和RGB555是对RGB色彩信息的一种压缩表示,适合于有限存储资源或需要高效传输的场景,如嵌入式设备、游戏开发等。

GRB422:

适用场景:视频处理、传输和压缩领域。GRB422格式在视频领域中较为常见,可用于捕获、处理和传输视频数据,同时提供较高的色彩和亮度精度。

YUV (422/420):

适用场景:视频编解码、视频通信和存储等应用。YUV422和YUV420是对彩色图像进行色度抽样的编码格式,能够有效地减少数据量并提供较好的视觉质量,常用于数字视频和图像压缩标准中。

YCbCr (4:2:2):

适用场景:数字视频编码、广播、流媒体和视频会议等。YCbCr 4:2:2是一种常见的视频色彩空间格式,经常用于视频编解码器中,可实现高质量的视频压缩和传输,同时保持较高的图像质量。

Bayer 数据几种常用的类型:

RAW8、RAW10和RAW16是用于表示原始图像数据的格式,它们分别表示每个像素位深度8位、10位16位

一个像素构成方式有很多种:

RGB格式:

红色通道(R):表示像素的红色分量。

绿色通道(G):表示像素的绿色分量。

蓝色通道(B):表示像素的蓝色分量。

例如,对于RGB888格式的像素,每个分量通常占用8位,总共24位(3字节)。

Bayer格式:

红色滤镜通道(R):表示像素使用红色滤镜的亮度。

绿色滤镜通道(G):表示像素使用绿色滤镜的亮度。

蓝色滤镜通道(B):表示像素使用蓝色滤镜的亮度。

在Bayer格式中,每个像素只包含一个颜色通道的信息。

YUV/YCbCr格式:

亮度(Y):表示像素的亮度。

色度蓝(Cb):表示像素的蓝色色度。

色度红(Cr):表示像素的红色色度。

这些格式通常用于视频编码和传输,其中亮度通道(Y)包含了图像的明亮度信息,而色度通道(Cb和Cr)则包含了颜色信息。

灰度格式:

只包含一个通道,表示像素的灰度级别或亮度级别。

例如,对于8位灰度图像,每个像素仅包含8位的灰度信息

具体的RAW看来还得再区分。

通常每个颜色通道(红色、绿色、蓝色)都有特定的位深度(例如,RAW8每个通道8位,RAW10每个通道10位)。

原始RGB数据未经处理,直接表示每个颜色通道的强度。

RAW8:

Raw8即是用8bits表示 G/R/B/G 中的一个分量,而不是使用8bits表示 RG/GB 四个分量。

RAW10:

Raw10就是使用10bit 表示上述的一个 G/R/B/G,但是数据中是16bit 的,高6位没用。


假设我们有一个像素的RAW8数据为(以十进制表示)

红色通道:180

绿色通道:75

蓝色通道:220

1.RAW8格式展开(每个通道8位):

红色通道:180(一进制)转换为二进制为101101002

绿色通道:75(十进制)转换为二进制为010010112

蓝色通道:220(十进制)转换为二进制为110111002

2.RAW10格式展开(每个通道10位)

红色通道:180(十进制)转换为二进制为000000101101002

绿色通道:75(十进制)转换为二进制为0000000010010112

蓝色通道:220(十进制)转换为二进制为:0000000110411002

咋感觉多出来这么多

RAW12:

Raw12 就是使用12bit 表示上述的一个 G/R/B/G,但是数据中是16bit的,高4位没用。

图像传感器-RAW格式辨析

比较

图像传感器-RAW格式辨析

可以看到最后这个最细腻

RGB(RGB565/555):RGB565和RGB555是颜色编码格式,每个像素用16位表示。RGB565使用5位表示红色,6位表示绿色,5位表示蓝色,而RGB555每个颜色通道使用5位。这些格式通常用于显示,因为它们的表示方式紧凑。

每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5位。

图像传感器-RAW格式辨析

565

每个像素用16比特位表示,占2个字节,RGB分量都使用5位(最高位不用)。

图像传感器-RAW格式辨析

555

YUV(422/420):YUV422和YUV420是视频压缩和传输中使用的颜色空间格式。

YUV422每个像素有8位用于亮度(Y),以及8位用于色度蓝(U)和色度红(V)。

YUV420使用色度抽样,通常有8位用于亮度(Y),以及8位共享给色度蓝(U)和色度红(V),但比YUV422有更少的色度信息。

图像传感器-RAW格式辨析

在视频录制中,颜色采样有助于减小文件大小,同时保持最小的视觉差异。


推荐书籍:

《数码相机中的图像传感器和信号处理》

《CMOS图像传感器封装与测试技术》

《CMOS图像传感器集成电路——原理、设计和应用》




标签:图像 传感器 格式 辨析 

逝者如斯,不舍昼夜作者QQ及微信:49922779 点击这里给我发消息

相关评论
QQ交流群:120100441    QQ客服:49922779 闽ICP备01008686号