0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

串行器应用之如何将摄像头的RGB或YUV输出转换成RGB数据?

analog_devices 来源:亚德诺半导体 作者:亚德诺半导体 2023-07-07 10:11 次阅读

串行器可以连接并控制摄像头ICADI这类器件包括MAX9257 (带有半双工UART/I²C控制通道)、MAX9259和MAX9263 (两款均带有全双工同步控制通道),MAX9263还支持宽带数字内容保护(HDCP)。本应用笔记介绍如何将摄像头的RGB或YUV输出转换成标准显示器接受的RGB数据。

摄像头输出数据格式 摄像头芯片,例如OmniVisionOV10630,可通过串行器连接。OV10630的接口引脚包括:像素时钟、PCLK、行有效、HREF、帧同步、VSYNC和并行数据位D[9:0],数据位在时钟的上升沿保持稳定。YUV和原始RGB数据格式

CMOS摄像头传感器包括数百万光敏单元,每个单元可响应整个波长的光信号。利用滤光膜使特定传感器仅响应红光、绿光或蓝光信号。相邻的光敏单元通常以拜耳结构的滤色规律排列,绿色滤色片的数量是红色或蓝色滤色片数量的两倍。这种方式用于模拟人眼的感光特性。从左至右、从上至下读取传感器单元输出,原始的RGB数据序列为蓝、绿...蓝、绿 (首行末尾),绿、红...绿、红(第二行末尾),依次类推,如图1所示。

34df02c8-1a53-11ee-962d-dac502259ad0.png

图1. 原始RGB数据排列

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

34eeca0a-1a53-11ee-962d-dac502259ad0.png图2. RGB数据排列

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

34ff0abe-1a53-11ee-962d-dac502259ad0.png

式中,典型的色彩加权为:WR= 0.299,WB= 0.114,WG= 1 - WR- WB= 0.587,归一化值为UMAX,VMAX= 0.615。

对于采用拜耳滤色镜的摄像头传感器,相邻像素的U或V数据大致相同,取决于行索引i和像素索引j (如果采用的规则为相邻颜色)。利用本指南,可根据下式利用RGB数据直接生成YUV数据。

35105ed6-1a53-11ee-962d-dac502259ad0.png偶数行索引i和偶数像素索引j。352022d0-1a53-11ee-962d-dac502259ad0.png偶数行索引i和偶数像素索引j。352fa476-1a53-11ee-962d-dac502259ad0.png对于奇数行索引i和偶数像素索引j。353e07fa-1a53-11ee-962d-dac502259ad0.png对于奇数行索引i和偶数像素索引j。355026a6-1a53-11ee-962d-dac502259ad0.png

偶数行索引i和偶数像素索引j。

35605b3e-1a53-11ee-962d-dac502259ad0.png偶数行索引i和偶数像素索引j。35747a1a-1a53-11ee-962d-dac502259ad0.png对于奇数行索引i和偶数像素索引j。3585395e-1a53-11ee-962d-dac502259ad0.png对于奇数行索引i和偶数像素索引j。359856f6-1a53-11ee-962d-dac502259ad0.png偶数行索引i和偶数像素索引j。35a61926-1a53-11ee-962d-dac502259ad0.png>偶数行索引i和偶数像素索引j。35b94c08-1a53-11ee-962d-dac502259ad0.png对于奇数行索引i和偶数像素索引j。35c7e54c-1a53-11ee-962d-dac502259ad0.png对于奇数行索引i和偶数像素索引j。

为了降低数据速率,利用偶数像素索引的U数据和奇数像素索引的V数据,以及偶数和奇数像素索引的Y数据。压缩后的YUV数据按照图3所示排列发送,即:Y1、U0和V1为像素1的数据;Y2、U2和V1为像素2的数据等。

35d752fc-1a53-11ee-962d-dac502259ad0.png

图3. YUV422数据排列

422表示YV的采样比,4x标准为早期彩色NTSC标准,按照41色度再次采样,所以,图像的色彩分辨率仅为亮度分辨率的四分之一。目前,只有处理非压缩信号的高端设备才会采用44彩色再采样,亮度和彩色信息的分辨率完全相同。

串行器输入格式 ADI串行器的并行接口设计用于24位RGB数据,特别是MAX9259,具有像素时钟位(PCLK)和29个数据位,用于24位RGB以及行同步、场同步和3个控制位。除并行数据接口外,需要把DRS和BWS引脚设置成高电平或低电平,分别选择数据速率和总线宽度。ADI串行器/解串器 MAX9257和MAX9258串行器/解串器(SerDes)具有18位并行输入/输出,适用于YUV数据传输;MAX9259/MAX9260芯片组具有28位并行输入/输出,适用于RGB数据传输;MAX9263/MAX9264 SerDes具有28位并行输入/输出,增加了HDCP功能。此外,MAX9265和MAX9268 28位SerDes带有摄像链路,代替并行输入/输出接口。所有28位ADI串行器和解串器具有相同的并/串数据映射,可互换使用。例如,MAX9259串行器可配合MAX9268解串器使用,传输RGB数据(借助于FPGA)。数据从CMOS摄像头通过串行链路发送至摄像链路接口的显示器。串行器映射 为匹配MAX9268解串器摄像链路的输出接口,并行RGB数据应按照以下信号图映射。图4所示为MAX9268并行位与其摄像链路输出之间的映射,图5所示为相机链路的RGB数据映射。表1所示为MAX9259串行器的对应内容映射。

35e68a1a-1a53-11ee-962d-dac502259ad0.png图4. MAX9268内部并行至输出映射

360f5544-1a53-11ee-962d-dac502259ad0.png图5. 摄像链路内容映射

363c1fe8-1a53-11ee-962d-dac502259ad0.png表1. MAX9259串行器RGB内容位映射

色彩转换:YUV至RGB

FPGA芯片可将压缩(降低数据速率)后的摄像头数据YUV转换成RGB数据,用于MAX9259串行器。采用8位定点运算时,色彩空间转换的公式如下,式2和式3中,Dn和En的n为偶数。

Cn= Yn- 16

Dn= Dn + 1= Un- 128

En= En + 1= Vn + 1- 128

Rn= clip((298 × Cn+ 409 × En+ 128) >> 8)

Gn= clip((298 × Cn- 100 × Dn- 208 × En+ 128) >> 8)

Bn= clip((298 × Cn× 516 × Dn+ 128) >> 8)

式中,>> 8表示“向右移8位”,clip表示“只取最低8位”。

FPGA方案

输入缓冲

输入缓冲电路包括计数器、三个寄存器和组合逻辑,将单字节时钟输入转换成三字节时钟输出,输出时钟速率为输入的一半。组合逻辑仅用于分别使能Y、U和V字节的对应寄存器。

3651db44-1a53-11ee-962d-dac502259ad0.png图6. 输入缓冲电路

时钟开关

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

中间缓冲

格式转换表达式中没有体现硬件电路的延迟。为了从YUV输入生成RGB数据,需要两到三次乘法运算和三到四次加法运算。尽管FPGA逻辑电路(门电路) 的延时只有几个纳秒,但载波传输、加法器、移位乘法器都会导致不同程度的延时,使整体延时增大。为了使延迟最小化,每个常数乘法器均由两个移位输入(代表常数的2个非零最高有效位MSB)的加法器近似。输入的YUV字节速率大约为100MHz时,延迟会跨越相邻像素的定时边界,增大图像噪声。在每个乘法器之后通过中间寄存器来消除扩展延时。 以上提及的YUV至RGB彩色转换已用于ActelProASIC3 A3PN125Z FPGA,图7所示为实现这一FPGA的原理图。

36671b26-1a53-11ee-962d-dac502259ad0.png图7. YUV至RGB转换器的FPGA实现

应用电路

厂家提供的摄像头芯片可能位于PCB子板,图8所示为摄像头子板模块的功能框图。输入包括电源、PWR和晶振时钟(XCLK)。输出信号包含并行数据位(D0..D9)、I²C总线(SDA、SCL)、视频同步(HREF、VSYNC)和像素时钟(PCLK)。

368e88aa-1a53-11ee-962d-dac502259ad0.png图8. 摄像头模块功能框图

图9所示为应用电路的FPGA和串行器芯片的原理图。电路通过两对双绞线组成的串行电缆供电,一对用于传输串行信号,另一对用于供电。独立的LDO电源IC用于串行器和FPGA器件。摄像头模块采用旁路电容,自带LDO电源芯片,进一步降低潜在干扰。FPGA和串行器之间的数据链路采用阻尼电阻

36a6017e-1a53-11ee-962d-dac502259ad0.png

36c633e0-1a53-11ee-962d-dac502259ad0.png图9a. 应用电路的FPGA部分

36e4fa32-1a53-11ee-962d-dac502259ad0.png

37060844-1a53-11ee-962d-dac502259ad0.png

图9b. 应用电路的串行器部分

MAX9259也能够直接连接至摄像头传感器,例如OV10630,以构建更小的摄像头。彩色空间转换FPGA可置于解串器之后。由于这种应用需要摄像链路输出,可直接由MAX9268驱动,所以彩色转换FPGA置于摄像头传感器和串行器(MAX9259)之间。

视频采集示例

图10所示摄像头应用电路也是利用这些摄像头电路搭建的。

371a2fa4-1a53-11ee-962d-dac502259ad0.png

图10. 摄像头应用电路


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CMOS
    +关注

    关注

    58

    文章

    5649

    浏览量

    234965
  • adi
    adi
    +关注

    关注

    144

    文章

    45809

    浏览量

    247980
  • 摄像头
    +关注

    关注

    59

    文章

    4790

    浏览量

    95242
  • 串行器
    +关注

    关注

    0

    文章

    113

    浏览量

    14373
  • 亚德诺
    +关注

    关注

    6

    文章

    4680

    浏览量

    15903

原文标题:串行器应用之如何将摄像头的RGB或YUV输出转换成RGB数据?

文章出处:【微信号:analog_devices,微信公众号:analog_devices】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    《DNK210使用指南 -CanMV版 V1.0》第二十六章 摄像头图像捕获实验

    中看到“较为正常”的图像画面。最后就是在一个循环中不断地获取摄像头输出的图像数据,然后图像在LCD显示屏上进行显示。26.4 运行验证D
    发表于 10-23 10:05

    LT9211C转换器英文手册

    端口 10 位 LVDS 和 24 位 RGB TTL 之间进行转换。 LT9211C对输入的MIPI/LVDS/TTL视频数据进行反串,对数据包进行解码,并将格式化后的视频
    发表于 10-18 13:44 0次下载

    在DRA7xx器件上使用DSS回写管道进行RGBYUV转换

    电子发烧友网站提供《在DRA7xx器件上使用DSS回写管道进行RGBYUV转换.pdf》资料免费下载
    发表于 10-11 11:45 0次下载
    在DRA7xx器件上使用DSS回写管道进行<b class='flag-5'>RGB</b>到<b class='flag-5'>YUV</b><b class='flag-5'>转换</b>

    请问如何将HSPICE和 IBIS两种模型怎么转换成TINA软件中用?

    TI网站里,给出了一些期间的HSPICE和IBIS模型,但是现有的仿真工具 只有TINA这种,请问如何将HSPICE和 IBIS两种模型怎么转换成TINA软件中用? 请高手给予解答。感谢!
    发表于 09-02 07:56

    如何将连接到FPGA的摄像头数据发送到主机PC?

    我正在寻找一种方法,连接到 FPGA 的摄像头数据发送到主机 PC。 摄像头 ---> FPGA ---> FX3 ---> USB 主机 (PC) 我
    发表于 07-05 07:31

    基于FPGA的摄像头心率检测装置设计

    处理:由于摄像头感光元件的噪声是随机产生的且均匀分布在各个像素 点上,所以我们 roi 区域的像素点的同一通道内的数据求平均值即可有效的减 少摄像头感光元件的噪声的影响。 微弱变化
    发表于 07-01 17:58

    请问esp32如何将16进制字符串转换成base64格式?

    请问 esp32 如何将 16进制字符串转换成base64格式
    发表于 06-24 08:35

    YCbCr转换成RGB565,并丢到显示RAM中去,为什么显示的图像不对?

    我现在已经写好了代码,YCbCr转换成RGB565,并丢到显示RAM中去了,但是显示的图像还是不对。不知道哪里出了问题,我TW9912设置的问题还是YCbCr转换成
    发表于 05-11 08:42

    ov5640给到cx3的数据yuv格式的,请问cx3可以转换成mjpg视频流输出吗?

    你好,目前ov5640给到cx3的数据yuv格式的,请问cx3可以转换成mjpg视频流输出吗?
    发表于 02-28 08:17

    嵌入式操作教程:7-1 基于CMOS数字摄像头的灰度转换实验

    和OV2640摄像头,初始化VPIF总线。最后摄像头采集接收数据,灰度转换数据显示在LCD上
    发表于 01-19 14:52

    详解智能座舱内部的各种摄像头

    对于车载摄像头来说,它的特点在于摄像头的安装位置,和ISP处理芯片之间的距离。在2MP以下的摄像头,一般会直接输出YUV格式的图像
    发表于 01-16 09:53 2131次阅读
    详解智能座舱内部的各种<b class='flag-5'>摄像头</b>

    用usb摄像头替换手机前置摄像头可以吗

    将从技术实现、可行性和使用体验三方面,探讨这个问题。 一、技术实现: USB摄像头的连接:USB摄像头通过USB接口与智能手机连接。目前,大部分智能手机都支持USB On-The-Go(OTG)功能,可以智能手机的Micro
    的头像 发表于 01-08 14:11 2094次阅读

    如何将读到的电能寄存中的数字量转换成测量值?

    问题: 我设置了有功电能的阀值寄存,校准了电压和电流,得到的各种功率也是正确的,知道怎么换算成测量值,但是这个电能怎么获取测量值呢?现在读有功电能寄存的值是:1753。 请大神指导一下如何将读到的电能寄存
    发表于 12-26 07:26

    如何将ADC采集的原始数据的序列转换成VisualAnalog中Pattern Loader可以接受的I Only文件,文件格式是怎样的?

    如何将ADC采集的原始数据(从-8192~+8192)的序列转换成VisualAnalog中Pattern Loader可以接受的I Only文件,文件格式是怎样的?主要是用来评估采集卡中ADC的性能。
    发表于 12-15 06:22

    9984的RGB的高八位数据分别连接到DS90C85的输入端,输出显示屏是闪屏状态怎么解决?

    目前情况是按照官方推荐寄存配置的为1024*768的60HZ的vga通道0输入,我想将RGB888转换成3组数据+1组时钟 问题是: 我
    发表于 11-29 06:33