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

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

3天内不再提示

基于FPGA和DSP技术实现3D视频的系统设计

电子设计 来源:世界产品与技术 作者:Witold Kaczurba 2021-03-19 09:28 次阅读

视频系统,目前已经深入消费应用的各个方面,在汽车、机器人工业领域日益普遍。其在非消费应用中的增长主要源于HDMI标准以及更快、更高效的DSPFPGA的出现。

本文将概要讨论利用模拟或HDMI摄像机实现立体视觉(3D视频)的各种要求。文章将描述一个基于FPGA的系统,它将两个视频流结合成一个3D视频流,通过HDMI 1.4发射器进行传输,同时还要介绍一个基于DSP的系统,与通常需从两台摄像机接收数据相比,该系统可以节省DMA带宽。另外,本文还将描述一种方法,该方法可以实现一种并排格式,可供3D摄像机或要求3D视频的系统使用。

概述

立体视觉要求使用两台摄像机,二者相距大约5.5厘米,这是人类双眼之间的典型间距,如图1所示。

图1 支架上的两台摄像机(已针对立体视觉对齐)

图2所示高级功能框图使用了采用相同视频标准的两台同步摄像机、两个视频解码器和一个FPGA。为了确保完全一致的帧速率,摄像机必须行锁定到共同的参考时序。如果没有同步,不使用外部存储器,就不可能将输出组合起来并存储为完整的视频帧。

图2 高级功能框图

图3显示两个行锁定视频流被合并成一个立体图像。图4显示,如果不将整个视频帧保存在外部存储器中,则异步视频流无法合并。

图3 合并两个同步视频流

图4 如果不使用外部存储器,则无法合并异步视频流

然后,两台同步摄像机的输出由 视频解码器(如 ADV7181D、ADV7182 或 ADV7186 用于模拟摄像机)进行数字化处;也可由 HDMI receivers (如 ADV7610或ADV7611 ,用于数字摄像机)进行数字化处理。

视频解码器和HDMI接收器都采用内部锁相环(PLL)在其输出总线上产生时钟和像素数据。这意味着,在数字化模拟视频,或者接收HDMI流时,将为两台摄像机产生两个独立的时钟域。另外,两个视频流可能存在对齐误差。这些时序差异和对齐误差必须在后端器件(如FPGA)中进行补偿,先将数据带至共同的时钟域,然后再将两个视频图像结合成单个立体视频帧。然后,通过一个支持3D的HDMI 1.4HDMI接收器(如 ADV7511 或 ADV7513—也可以将其提供给DSP(如 ADSP-BF609 Blackfin® 处理器)—以便进一步处理。

时钟架构

视频解码器有两种完全不同的时钟源,具体取决于其是否锁定。当视频PLL被锁定至输入同步信号时——水平同步(视频解码器)或TMDS时钟(HDMI)——结果会产生一个锁定至输入视频源的时钟。当视频失锁时,或者当PLL处于强制自由运行模式时,视频PLL不会锁定至输入同步信号,结果会产生一个锁定至晶振时钟的时钟输出。另外,时钟可能不会在复位后输出,因为LLC时钟驱动器在复位后设置为高阻抗模式。

因此,如果系统有两个或多个始于视频解码器或HDMI接收器的视频路径,即使将同一晶振时钟提供给两个视频解码器或HDMI接收器,仍会有两个不同频率、不同相位的不同时钟域,因为每个器件都会基于自己的PLL产生自己的时钟。

带锁定视频解码器的同步系统

典型的立体视频使用两个视频源,其中,每个视频解码器都会锁定至输入视频信号,并会基于输入水平同步或TMDS时钟产生自己的时钟。当两台摄像机同步——或行锁定至同一参考时序时——分帧线将始终对齐。由于两个独立的视频解码器会收到相同的水平同步信号,因此,像素时钟将拥有相同的像素时钟频率。这样,就可以将两条数据路径带入同一个时钟域,如图5所示。

图5 同步至同一参考源的两台摄像机。两个视频解码 器都会收到同一同步信号,因此,它们也会锁定

异步视频系统

不幸的是,其中一个视频解码器可能因视频源信号质量欠佳而失锁,如图6所示;或者,摄像机因视频链路断开而失去同步性,如图7所示。这会在两条数据路径中导致不同的频率,结果又会导致进入后端中的数据量不对称。

图6 带未锁定视频解码器的行锁定摄像机

图7 带锁定视频解码器的未锁定摄像机

视频失锁可以通过使用一个中断(SD视频解码器为SD_UNLOCK,分量视频解码器为CP_UNLOCK,或HDMI接收器中的TMDSPLL_LCK寄存器)来检测,该中断会在一定延迟后介入。视频解码器集成了不稳定水平同步平滑机制,因此,视频失锁的检测可能需要两三行。该延迟可通过控制FPGA中的失锁来减少。

时钟三态模式

在设计FPGA时钟资源时,必须知道,默认情况下,许多视频解码器和HDMI产品在复位后将时钟和数据线路置为三态模式。因此,LLC像素时钟不适用于同步复位。

两条视频流中的数据对齐误差

为了简化系统并减少合并两幅图像所需存储器,到达FPGA的数据应进行同步,以使来自第一台摄像机的第M 行第N个 像素与来自第二台摄像机的第M 行第N个 像素同时收到。

在FPGA输入端,这可能很难实现,因为两条视频路径可能具有不同的延迟:行锁定摄像机可能输出存在对齐误差的行,不同的连接长度可能加大对齐误差,而视频解码器则可能带来可变启动延迟。受这些延迟影响,采用行锁定摄像机的系统会有一些存在对齐误差的像素。

行锁定摄像机对齐误差

即使是行锁定摄像机也可能输出存在对齐误差的视频行。图8显示来自两台摄像机的CVBS输出端的垂直同步信号。一台摄像机(同步主机)为第二台摄像机(同步从机)提供行锁定信号。380 ns的对齐误差是清楚可见的。图9展示的是这些摄像机输出端的视频解码器传输的数据。可以看到11个像素的位移。

图8 行锁定视频摄像机之间的380 ns视频对齐误差

图9 数字域中未补偿的11个像素的视频对齐误差

不同的连接长度

所有电气连接都会带来传播延迟,因此,要确保两条视频路径具有相同的轨道和电缆长度。

视频解码器/HDMI接收器延迟

所有视频解码器都会带来可能因启用的功能而异的延迟。另外,有些视频器件含有可能增加随机启动延迟的因素——如深色FIFO。采用视频解码器的典型立体系统的随机启动延迟大约为5个像素时钟。含有HDMI发射器和接收器的系统(如图10所示)的随机启动延迟可能为40个像素时钟左右。

图10 流水线延迟测量设置

对齐误差补偿

图11所示系统中,一个视频解码器对来自各摄像机的模拟信号进行数字化处理。各视频路径的数据和时钟是独立的。两条视频路径都连接至FIFO,后者对输入数据进行缓冲,以补偿数据对齐误差。在输出数据时,FIFO使用来自其中一个解码器的共用时钟。在锁定系统中,两条数据路径应具有完全相同的时钟频率,以确保在摄像机行锁定且视频解码器锁定的情况下,不会出现FIFO溢出或下溢现象。

通过启用或禁用FIFO输出,控制模块可以维持FIFO电平以尽量减少像素对齐误差。如果采取了正确的补偿措施,则FPGA模块的输出应为与第一个像素对齐的两条数据路径。然后该数据提供给FPGA后端,以生成3D格式。

图11 使用数字FIFO来重新对齐视频图像

对齐误差测量

两个数字化数据流之间的对齐误差可以在视频FIFO输出端进行测量,其方法是使用一个单一时钟计数器,该计数器在输入信号之一的垂直同步(VS)脉冲上复位。图12所示两个视频流(vs_a_in和vs_b_in)的对齐误差为4个像素。计数器使用列表1中所示方法测量对齐误差。计数从VS1的上升沿开始,并在VS2的上升沿终止。

如果一个帧的总像素长度是已知的,则可以通过从帧长中减去计数值,从而算出负偏斜(VS2位于VS1之前)。该负值应在偏斜超过像素帧长的一半时计算。结果应用来重新对齐FIFO中存储的数据。

图12 对齐误差测量

列表1 简单对齐误差测量(Verilog®)。

module misalign_measurement(

input wire reset,

input wire clk_in,

input wire vs_a_in,

input wire vs_b_in,

output reg [15:0] misalign,

output reg ready);

reg [15:0] cnt;

reg cnt_en, cnt_reset;

reg vs_a_in_r, vs_b_in_r;

assign vs_a_rising = vs_a_in 》 vs_a_in_r;

assign vs_b_rising = vs_b_in 》 vs_b_in_r;

always @(posedge clk_in)

begin

vs_a_in_r 《= vs_a_in;

vs_b_in_r 《= vs_b_in;

end

always @(posedge clk_in)

if (reset)

begin

{ ready, cnt_en } 《= 2‘b00;

misalign 《= 0;

end else begin

if ((vs_a_in == 1’b0) && (vs_b_in == 1‘b0))

{ ready, cnt_reset } 《= 2’b01;

else

cnt_reset 《= 1‘b0;

/* beginning */

if (vs_a_rising && vs_b_rising)

begin

misalign 《= 0;

{ ready, cnt_en } 《= 2’b10;

end

else if ((vs_a_rising 》 vs_b_in) || (vs_b_rising 》 vs_a_in))

{ ready, cnt_en } 《= 2‘b01;

/* ending */

if ((cnt_en == 1’b1) && (vs_a_rising || vs_b_rising))

begin

{ ready, cnt_en } 《= 2‘b10;

misalign 《= vs_a_rising ? (-(cnt + 1)) : (cnt + 1);

end

end

always @(posedge clk_in) /* counter */

if ((cnt_reset) || (reset))

cnt 《= 0;

else if (cnt_en)

cnt 《= cnt + 1;

endmodule

从两个对齐视频流生成3D视频

一旦像素、行和帧数据都真正同步,FPGA可以将视频数据转换成3D视频流,如图13所示。

图13 用于实现3D格式的简化架构

输入数据由共用时钟读入存储器。同步时序分析仪检查输入的同步信号,并抽取视频时序,包括水平前后沿长度、垂直前后沿、水平和垂直同步长度、水平有效行长、垂直有效行数和同步信号极化。将该信息与当前水平和垂直像素位置一起传给同步时序再发生器,这样可以生成经修改的时序,以便支持所需3D视频结构。新生成的时序应延迟,以确保FIFO含有所需数据量。

并排3D视频

对存储器要求最低的架构是并排格式,只需要一个两行缓冲器(FIFO)即可存储来自两个视频源的行内容。并排格式的宽度应为原始输入模式的两倍。为此,应使用一个双倍时钟来为拥有双倍水平行长度的再生同步时序提供时钟。用于为后端提供时钟的双倍时钟将以双倍速率清空第一个FIFO和第二个FIFO,这样即可并排显示图像,如图14所示。并排图像如图15所示。

图14 使用简单的FPGA行缓冲器来并排合并两幅图像

图15 视频时序下的并排576p图像

结论

ADI公司的解码器和HDMI产品以及简单的后处理技术可以打造出真正的立体3D视频,并为其传输提供条件。如本文所示,用简单的数字模块,无需使用昂贵的存储器,即可实现3D视频。这种系统可用于需要3D视觉的任何类型的系统中,从简单的摄像机,到基于ADSP-BF609 DSP的可以跟踪物体及其距离的专业系统。

作者简介

Witold Kaczurba [witold.kaczurba@analog.com],是ADI公司高级电视部(爱尔兰利默里克)资深应用工程师,负责支持解码器和HDMI产品。他从波兰弗罗茨瓦夫理工大学毕业并获得电气工程硕士学位后,于2007年加入ADI公司。学生期间,他曾为小型电子和IT公司工作,后来作为工读生加入ADI公司(爱尔兰),随后成为应用工程师。

责任编辑:gt

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

    关注

    553

    文章

    7965

    浏览量

    348417
  • FPGA
    +关注

    关注

    1627

    文章

    21685

    浏览量

    602323
  • 机器人
    +关注

    关注

    210

    文章

    28266

    浏览量

    206722
收藏 人收藏

    评论

    相关推荐

    FPGA+DSP架构的视频处理系统设计详解

    系统采用基于FPGADSP协同工作进行视频处理的方案,实现视频采集、处理到传输的整个过程。
    发表于 10-23 15:35 6361次阅读
    <b class='flag-5'>FPGA+DSP</b>架构的<b class='flag-5'>视频</b>处理<b class='flag-5'>系统</b>设计详解

    [讨论]FPGA培训—基于FPGADSP系统设计与实现

    架构、嵌入式系统、实时操作系统、数字信号处理、图像与视频处理和数字通信等,可以实现片上课程理念。七、教学大纲基于Xilinx FPGA
    发表于 07-21 09:20

    FPGA培训—基于FPGADSP系统设计与实现

    架构、嵌入式系统、实时操作系统、数字信号处理、图像与视频处理和数字通信等,可以实现片上课程理念。七、教学大纲基于Xilinx FPGA
    发表于 07-21 09:22

    基于FPGADSP视频处理系统设计

      本系统采用基于FPGADSP协同工作进行视频处理的方案,实现视频采集、处理到传输的整个过程
    发表于 06-19 06:12

    基于DSP+FPGA视频处理模块的设计与实现

    的重点是以DSP+FPGA为核心的视频处理模块的设计与实现,可以完成多路视频的切换选择输出控制和视频缩放显示的功能,同时具备通信控制等功能。
    发表于 06-20 06:34

    为什么说FPGA主导了3D视频处理市场?

    和Neytiri对世界美好的愿望和共同的追求,使双方互相看到了地球人和纳威人之间不可分割的联系,而观众则通过先进的3D视频处理技术,观赏到了3D电影的逼真效果,感受到这部电影带来的震撼
    发表于 08-06 08:26

    如何通过合成两条视频流来提供3D视频

    一种基于FPGADSP技术实现3D视频系统的设计
    发表于 06-02 06:06

    什么是声卡3D环绕立体声系统/3D立体声系统

    什么是声卡3D环绕立体声系统/3D立体声系统 3D环绕立体声系统:从八十年代
    发表于 02-05 13:49 2082次阅读

    FPGA正掀起3D电视新潮流

    FPGA正在3D电视中大显身手。各大OEM厂商都采用FPGA支持3D显示屏设计,而领先的相机和摄像机制造商则用FPGA
    发表于 01-18 07:36 682次阅读

    Lattice将在CES 2013上展示基于LatticeECP3的实时3D视频转换器

    莱迪思将在CES 2013上展示3D Impact Media的基于低密度LatticeECP3 FPGA的实时3D 视频转换器Realit
    发表于 12-18 08:53 1736次阅读

    基于FPGA系统通过合成两条视频流来提供3D视频

    基于FPGA系统通过合成两条视频流来提供3D视频
    发表于 01-07 15:00 10次下载

    2D3D视频自动转换系统

    完成系统界面的设置及控制、显示等功能,其DSP处理器实现图像分割和渲染等核心算法,实现了1个高效的2D
    发表于 03-06 14:20 1次下载
    2<b class='flag-5'>D</b>到<b class='flag-5'>3D</b><b class='flag-5'>视频</b>自动转换<b class='flag-5'>系统</b>

    基于FPGADSP系统实现3D视频

    本文将概要讨论利用模拟或HDMI摄像机实现立体视觉(3D视频)的各种要求。文章将描述一个基于FPGA系统,它将两个
    的头像 发表于 04-09 08:50 3025次阅读

    华为基于AI技术实现3D图像数字服务

    华为3D建模服务(3D Modeling Kit)是华为在图形图像领域又一技术开放,面向有3D模型、动画制作等能力诉求的应用开发者,基于AI技术
    的头像 发表于 08-12 14:50 4884次阅读

    基于FPGA系统结合了两个视频流以提供3D视频

    本文概述了使用模拟或HDMI摄像机实现立体视觉(3D视频)的要求。它描述了一个基于 FPGA系统,该
    的头像 发表于 02-02 15:09 1863次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>系统</b>结合了两个<b class='flag-5'>视频</b>流以提供<b class='flag-5'>3D</b><b class='flag-5'>视频</b>