数字图像处理学习(一):灰度转换(RAW、RGB、YCrCb)

时间:2024-05-21 18:00:49

一、RAW、RGB和YCrCb

在数字图像处理领域,YCbCr是一种常见的图像格式,很多图像处理都是基于YCbCr,包括各种滤波、甚至图像卷积等。

1、RAW

在CMOS图像传感器中,以OV5640为例,其感光阵列如下图:
可以看到,感光阵列由红、绿、蓝三种感光点组成,B只识别蓝色光,R只识别红色光,Gb只识别绿色光,假如将这种每个感光像素点转换成数字信号后直接输出,就得到了RAW格式的图像数据。

这种数据保存了很多原始信息,但是也因为如此,RAW格式数据量比起被压缩的图像格式数据量大很多,但是在精密图像处理中,通常也会使用RAW格式数据,因为这种数据保存了更多的细节

可以参考以下博客:raw图像格式
数字图像处理学习(一):灰度转换(RAW、RGB、YCrCb)

2、RGB

而RGB是RAW格式数据经过一系列处理后得到的图像格式,当然,使用CMOS图像传感器话,传感器内部集成了处理电路,只需要配置寄存器就可以选择输出RAW格式还是RGB格式数据。

人眼能感知的色彩其实是红色、绿色、蓝色三种原色的各种组合,红绿蓝三种颜色的按照不同比例组合最终会呈现出不同的颜色。这种以三原色组合的图像格式是RGB格式,是目前应用最广的图像格式。RGB有很多种格式,常用的有RGB565,一共用16bit就可以表示三种分量;还有RGB888,这一种格式需要24bit的数据来表示,正因为需要的bit数多,所以RGB888能表示的颜色比RGB565要多很多。如果对颜色精细度要求不是很高可以使用RGB565,在很多计算过程中需要使用RGB888

3、YCrCb

而YCbCr,Y代表亮度分量(灰度值),Cb代表蓝色色度分量,Cr代表红色色度分量,我们在灰度图像中,需要的就是其中的Y分量。而YCrCb也有多种格式,444,422,根据具体需求选择,一般选择422格式。

二、RGB转YCrCb

1、计算公式

数字图像处理学习(一):灰度转换(RAW、RGB、YCrCb)
因为Verilog 无法进行浮点运算,所以我们可以将公式中的数值全部扩大256倍,也就意味着所有数都向左移了8位,然后将扩大后的值向右移8位。
数字图像处理学习(一):灰度转换(RAW、RGB、YCrCb)
这样就得到了YcrCb分量,但是无论是VGA接口还是HDMI接口,都有三个颜色通道,因为我们只需要Y分量,所以将Y分量同时送到三个颜色通道。

2、计算过程(注意事项)

从上面公式可以看到,在RGB转YcrCb的过程中,虽然从公式上看起来是一步到位,但是因为我们使用寄存器描述,在实际电路中会有一个数据流的先后顺序(指Y中的乘法、加法和移位三个操作有先后顺序,并且每个操作都要消耗一个时钟,所以一共消耗3个时钟),这三步操作同时对连续数据进行处理, 通过这种方式实现硬件加速的方法称为流水线计,因此公式中的计算需要分为三个步骤:
1、先计算乘法
2、再计算加法;
3、最后进行移位(除法)

这样,最终的数据相当于打了3拍,因此我们需要对行场同步信号也进行打3拍,这样才能保证图像数据和行场同步信号一致。