MIPI中的像素格式
我们知道图像传输的时候有各种各样的格式,典型的可以分成YUV和RGB两种色彩空间,我们常用的也是比较容易理解的是三色RGB色彩空间,而YUV实际上只是另一种颜色表示方法,我们来看看百度百科上的解释:
YUV是编译true-color颜色空间(color space)的种类,YUV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
也就是YUV不是按照颜色区分,而是按照亮度,灰度和饱和度对颜色进行分解,这种格式的发明起源于黑白电视到彩色电视的过渡,虽然年代稍微久远,但是现在应用还是非常广泛,因为在很多场合我们可能只需要提取灰度信息,这个时候我们只需要直接提取其中的灰度分量就可以了,而不用从RGB中三个分量转换。
似乎扯得有点远,我们先来看看MIPI中常用的一些数据格式和他们的传输方式:
格式 | 类型 | 数据传输方式 | PHY输出 |
---|---|---|---|
Legacy YUV420 8bit | 0x18 0x1C | odd:2 Pixel 2 Bytes 16 Bits even:2 Pixel 4 Bytes 32 Bits | even: [7:0]U1 [15:8]Y1 [7:0]V1 [15:8]Y2 odd: [7:0]Y1 [15:8]Y2 [7:0]Y3 [15:8]Y4 |
YUV420 10bit | 0x19 0x1D | odd:4 Pixel 5 Bytes 40 Bits even:4 Pixel 10 Bytes 80 Bits | even: [9:0]U1 [19:10]Y1 [9:0]V1 [19:10]Y2 odd: [9:0]Y1 [19:10]Y2 [9:0]Y3 [19:10]Y4 |
YUV422 8bit | 0x1E | 2 Pixel 4 Bytes 32 Bits | [7:0]U1 [15:8]Y1 [7:0]V1 [15:8]Y2 |
YUV422 10bit | 0x1F | 2 Pixel 5 Bytes 40 Bits | [9:0]U1 [19:10]Y1 [9:0]V1 [19:10]Y2 |
RGB888 | 0x24 | 1 Pixel 3 Bytes 24 Bits | [7:0] Blue [15:8] Green [23:16]Red |
RGB666 | 0x23 | 4 Pixel 9 Bytes 72 Bits | [5:0] Blue [11:6] Green [17:12]Red |
RGB565 | 0x22 | 1 Pixel 2 Bytes 16 Bits | [4:0] Blue [10:5] Green [15:11]Red |
RGB555 | 0x21 | -- | [4:0] Blue [9:5] Green [14:10]Red |
RGB444 | 0x20 | -- | [3:0] Blue [7:4] Green [11:8]Red |
RAW8 | 0x2A | --- | Data on [7:0] |
上述表格PHY的输出是参考i.MX上MIPI-CSI的配置给出来的。
从表格中可以看出,不同的数据格式最终数据的码率是不尽相同的,所以当选择了一种格式之后,相应的MIPI时钟应该也是需要重新配置的,这里面牵扯的东西就比较复杂了。不过好歹数据格式这里是有些眉目了。
最后更新于 2019-07-24 22:36:07 并被添加「」标签,已有 4590 位童鞋阅读过。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。