查看: 4322|回复: 2
收起左侧

如何将摄像头RGB/YUV转换成标准显示器数据?

[复制链接]
发表于 2021-9-11 09:02:47 | 显示全部楼层 |阅读模式
      Maxim 串行器可连接并控制摄像头 IC,这类器件包括 MAX9257 (带有半双工 UART/I2C 控制通道)、MAX9259 和 MAX9263 (两款均带有全双工同步控制通道)。MAX9263 还支持宽带数字内容保护(HDCP)。本应用笔记介绍如何将摄像头的 RGB 或 YUV 输出转换成标准显示器接受的 RGB 数据。

3 V' a: {2 M7 S8 s( @: |5 i摄像头输出数据格式) ~3 w  P3 F: p. w& P
摄像头芯片,例如 OmniVision® OV10630,可通过串行器连接。OV10630 的接口引脚包括:像素时钟、PCLK、行有效、HREF、帧同步、VSYNC 和并行数据位 D[9:0]。数据位在时钟的上升沿保持稳定。
  M2 |4 p5 T) x9 D
YUV 和原始 RGB 数据格式4 l0 V; i: t, s4 r5 [; m2 ?
CMOS 摄像头传感器包括数百万光敏单元,每个单元可响应整个波长的光信号。利用滤光膜使特定传感器仅响应红光、绿光或蓝光信号。相邻的光敏单元通常以拜耳结构的滤色规律排列,绿色滤色片的数量是红色或蓝色滤色片数量的两倍。这种方式用于模拟人眼的感光特性。从左至右、从上至下读取传感器单元输出,原始的 RGB 数据序列为蓝、绿 ... 蓝、绿 (首行末尾),绿、红 ... 绿、红(第二行末尾),依次类推,如图 1 所示。

4 l4 I, @  Z2 i; N  D  n* h
图 1. 原始 RGB 数据排列
" u: O8 Y! D; H& C2 L
通过相邻单元内插生成与传感器单元密度相同的 RGB 数据。另外,利用相邻单元的颜色,按照特定的规则可以恢复图像。构成每个像素 RGB 数据组的规则之一是:使用同一行的相邻单元,再加上下一行(或上一行)的绿色相邻单元。内插后的 RGB 数据序列为 ...、红(i-1)、绿(i-1)、蓝(i-1)、红(i)、绿(i)、蓝(i)、红(i+1)、绿(i+1)、蓝(i+1)、... 如图 2 所示。每个像素需要一组 RGB 数据,驱动彩色显示器并保持摄像头传感器的最高分辨率。内插 RGB 数据的亮度分辨率接近于传感器单元的分辨率,但色度分辨率较差。由于人眼对每个像素的灰度要比对像素的色彩分量更为敏感,所以感觉到的分辨率基本与传感器单元分辨率相同。

7 j7 F4 B* g/ n7 T7 y; M
图 2. RGB 数据排列

4 l0 s: n3 H$ K) q( L* b$ k* L$ K$ M7 L; B然而,这种 RGB 数据的内插算法使得数据速率增至三倍。为了降低数据速率,尤其是需要图像传输的场合,可采用 YUV 彩色空间(将模拟彩色电视信号压缩到模拟黑白电视的频带)。在下式中,亮度以 Y 表示,蓝色和亮度之间的色差以 U 表示,红色和亮度之间的色差以 V 表示,

; P4 Y$ m# U* i
[

3 ?' E6 k' s2 Q式中,典型的色彩加权为:WR = 0.299,WB = 0.114,WG = 1 - WR - WB = 0.587,归一化值为 UMAX,VMAX = 0.615。
. b8 r9 R7 ?. D: W( M* P对于采用拜耳滤色镜的摄像头传感器,相邻像素的 U 或 V 数据大致相同,取决于行索引 i 和像素索引 j (如果采用的规则为相邻颜色)。利用本指南,可根据下式利用 RGB 数据直接生成 YUV 数据。

; `& K0 V, U' _. n( n
  ], c5 ]8 A' ?/ d! T$ t6 W
为了降低数据速率,利用偶数像素索引的 U 数据和奇数像素索引的 V 数据,以及偶数和奇数像素索引的 Y 数据。压缩后的 YUV 数据按照图 3 所示排列发送,即:Y1、U0 和 V1 为像素 1 的数据;Y2、U2 和 V1 为像素 2 的数据等。# d+ _6 X' L  p) X: z, c
图 3. YUV422 数据排列
9 }  K. b3 Q; X0 A5 W" U
422 表示 Y:U:V 的采样比,4:x:x 标准为早期彩色 NTSC 标准,按照 4:1:1 色度再次采样,所以,图像的色彩分辨率仅为亮度分辨率的四分之一。目前,只有处理非压缩信号的高端设备才会采用 4:4:4 彩色再采样,亮度和彩色信息的分辨率完全相同。
+ e: N. T; p4 k: e1 E6 z$ E
串行器输入格式% s( E& F6 p9 {$ p/ b, j' F
Maxim 串行器的并行接口设计用于 24 位 RGB 数据,特别是 MAX9259,具有像素时钟位(PCLK)和 29 个数据位,用于 24 位 RGB 以及行同步、场同步和 3 个控制位。除并行数据接口外,需要把 DRS 和 BWS 引脚设置成高电平或低电平,分别选择数据速率和总线宽度。

) }$ ?' E6 E% b4 H8 E8 R  wMaxim 串行器 / 解串器
& t2 K# C  Y- c3 m6 V1 ?$ cMAX9257 和 MAX9258 串行器 / 解串器(SerDes)具有 18 位并行输入 / 输出,适用于 YUV 数据传输;MAX9259/MAX9260 芯片组具有 28 位并行输入 / 输出,适用于 RGB 数据传输;MAX9263/MAX9264 SerDes 具有 28 位并行输入 / 输出,增加了 HDCP 功能。此外,MAX9265 和 MAX9268 28 位 SerDes 带有摄像链路,代替并行输入 / 输出接口。所有 28 位 Maxim 串行器和解串器具有相同的并 / 串数据映射,可互换使用。例如,MAX9259 串行器可配合 MAX9268 解串器使用,传输 RGB 数据(借助于 FPGA)。数据从 CMOS 摄像头通过串行链路发送至摄像链路接口的显示器。

1 G1 C6 J9 D" A* b串行器映射' b: M3 c( Y& @0 Y6 M
为匹配 MAX9268 解串器摄像链路的输出接口,并行 RGB 数据应按照以下信号图映射。图 4 所示为 MAX9268 并行位与其摄像链路输出之间的映射,图 5 所示为相机链路的 RGB 数据映射。表 1 所示为 MAX9259 串行器的对应内容映射。; N7 b4 G' ?7 h4 `2 t0 ^% _# [
图 4. MAX9268 内部并行至输出映射
3 G6 u( |) ]5 `) i
* f0 U& b4 {4 E9 O
) O# L* W+ H( {, w7 W# s8 n) \/ L
图 5. 摄像链路内容映射
; |) P: E1 x' a: W
表 1. MAX9259 串行器 RGB 内容位映射
; x9 d5 k) B0 @# G! o  
            
* W5 K0 M! y+ |- a. [" x色彩转换:YUV 至 RGB
- A& q; S# w. N$ O" S' j% C- xFPGA 芯片可将压缩(降低数据速率)后的摄像头数据 YUV 转换成 RGB 数据,用于 MAX9259 串行器。采用 8 位定点运算时,色彩空间转换的公式如下,式 2 和式 3 中,Dn 和 En 的 n 为偶数。
( u3 f- _" f1 w

5 y8 w5 \3 p7 K5 K) HFPGA 方案
2 _0 y& z7 E" [( i输入缓冲
输入缓冲电路包括计数器、三个寄存器和组合逻辑,将单字节时钟输入转换成三字节时钟输出,输出时钟速率为输入的一半。组合逻辑仅用于分别使能 Y、U 和 V 字节的对应寄存器。
& [: r  C' d8 y, v! v% {' f+ K
图 6. 输入缓冲电路

) L) \" N0 Z) |时钟开关
FPGA 输出像素时钟速率为摄像头像素时钟的一半,用于驱动串行器像素时钟输入。但是,摄像头在初始化之前不会输出像素时钟。解决方案是在 FPGA 内部采用 2:1 时钟复用器(mux)和时钟信号检测器,mux 由时钟信号检测器控制。上电时,mux 的默认时钟来自摄像头的时钟振荡器,使 SerDes 芯片组提供启动摄像头的控制通道。时钟信号检测器对场同步信号脉冲进行计数,经过几个场同步脉冲后,mux 切换到摄像头像素时钟速率的一半。采用高清摄像头传感器时,例如 OV10630,每个场同步周期包含 100k 以上的像素时钟。几个场同步周期足以使摄像头的锁相环(PLL)达到稳定。场同步计数比像素时钟计数的效率高得多,并可节省 FPGA 逻辑单元的资源。

/ _% H# e" F# k6 S; r7 c中间缓冲
格式转换表达式中没有体现硬件电路的延迟。为了从 YUV 输入生成 RGB 数据,需要两到三次乘法运算和三到四次加法运算。尽管 FPGA 逻辑电路(门电路) 的延时只有几个纳秒,但载波传输、加法器、移位乘法器都会导致不同程度的延时,使整体延时增大。为了使延迟最小化,每个常数乘法器均由两个移位输入(代表常数的 2 个非零最高有效位 MSB)的加法器近似。输入的 YUV 字节速率大约为 100MHz 时,延迟会跨越相邻像素的定时边界,增大图像噪声。在每个乘法器之后通过中间寄存器来消除扩展延时。
" _. ^, J  I+ t7 X) L
以上提及的 YUV 至 RGB 彩色转换已用于 Actel® ProASIC3 A3PN125Z FPGA,图 7 所示为实现这一 FPGA 的原理图。
4 f% w$ i* E) c9 b# _0 f+ v1 C! {
) h6 a+ l# {9 t! A9 ?
清晰图像(PDF, 172kB)  
. `( _8 u) D$ h8 I; g+ V
清晰图像(PDF, 180kB)
; S7 i4 t' V) m( V图 7. YUV 至 RGB 转换器的 FPGA 实现
4 y% F3 I- z$ b/ V! ~# a
应用电路
厂家提供的摄像头芯片可能位于 PCB 子板,图 8 所示为摄像头子板模块的功能框图。输入包括电源、PWR 和晶振时钟(XCLK)。输出信号包含并行数据位(D0..D9)、I2C 总线(SDA、SCL)、视频同步(HREF、VSYNC)和像素时钟(PCLK)。
3 O2 \; d  z5 N) |, j
图 8. 摄像头模块功能框图

1 Z8 _/ R  {. Q0 v/ C* j8 T图 9 所示为应用电路的 FPGA 和串行器芯片的原理图。电路通过两对双绞线组成的串行电缆供电,一对用于传输串行信号,另一对用于供电。独立的 LDO 电源 IC 用于串行器和 FPGA 器件。摄像头模块采用旁路电容,自带 LDO 电源芯片,进一步降低潜在干扰。FPGA 和串行器之间的数据链路采用阻尼电阻。
+ E8 g7 H  X- |3 k6 ]- m
[url=][/url]
图 9a. 应用电路的 FPGA 部分
# A2 ]) [% W: w5 T' Z6 O1 v
[url=][/url]
- y: S% Y+ F7 l' p' u  D* F
0 J  s0 |2 _0 t7 f8 T) c4 Y2 _图 9b. 应用电路的串行器部分
4 n' m; S9 o3 P/ N/ t1 K" j3 b& i
MAX9259 也能够直接连接至摄像头传感器,例如 OV10630,以构建更小的摄像头。彩色空间转换 FPGA 可置于解串器之后。由于这种应用需要摄像链路输出,可直接由 MAX9268 驱动,所以彩色转换 FPGA 置于摄像头传感器和串行器(MAX9259)之间。
4 M! S6 z8 Q. j0 S
视频采集示例

& ]- Q: f2 P' ]+ E, p- x
图 10 所示摄像头应用电路也是利用这些摄像头电路搭建的。
  W2 p( _  k: v. g
图 10. 摄像头应用电路

) Q  D4 w4 c* E6 z4 d: M9 t9 w结论
# \$ ]# M* k$ g8 I% i  f: M& l! M4 w8 N本应用笔记介绍 Maxim 的摄像头解串器 IC 与 FPGA 配合工作的典型方案。提供应用原理图和 FPGA 代码,用于现有的参考设计。即将给出本应用笔记的升级版:RAW RGB 至 24 位 RGB FPGA 转换器。
# Q6 X6 I2 l3 V! |# z) B& v
高级模式
B Color Image Link Quote Code Smilies @朋友 |上传

本版积分规则

在线客服

客服电话

欢迎来电咨询

188-9985 8350

微信关注

手机APP程序:
扫码下载访问

微信公众平台:
摄像头之家公众号

微信小程序:
摄像头小程序

返回顶部

QQ|站点统计|小黑屋|手机版|Archiver|摄像头模组论坛网 ( 粤ICP备18155214号 )

Powered by Discuz! X3.4 Licensed© 2001-2013 Comsenz Inc.