CN109803065B - 一种数据处理方法及系统 - Google Patents
一种数据处理方法及系统 Download PDFInfo
- Publication number
- CN109803065B CN109803065B CN201910082671.XA CN201910082671A CN109803065B CN 109803065 B CN109803065 B CN 109803065B CN 201910082671 A CN201910082671 A CN 201910082671A CN 109803065 B CN109803065 B CN 109803065B
- Authority
- CN
- China
- Prior art keywords
- frame
- count value
- image
- data
- cache region
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Image Processing (AREA)
- Image Input (AREA)
Abstract
本发明公开了一种数据处理方法及系统,用于解决对图像数据的写入帧率和读取帧率不匹配而导致的图像分层错位的技术问题。该方法包括:FPGA根据视频帧同步信号为获得的每帧图像添加对应的帧计数值;FPGA按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入双倍速率同步动态随机存储器DDR中的一个缓存区;ARM处理器将至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区;ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,并读取目标缓存区中的图像数据,其中,目标缓存区为在正在写数据的缓存区前最后一个写入数据的缓存区。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法及系统。
背景技术
随着电子技术的快速发展,图像处理技术被广泛的应用于各种场合,例如视频监控、汽车自动驾驶、通信等,因此也对图像处理即获得高质量的图像数据提出了更高的要求,SoC(System on Chip,片上系统或系统级芯片)的出现,为获得高质量的图像数据提供了新思路。
目前,SoC芯片一般包括FPGA(Field-Programmable Gate Array,现场可编程门阵列)+ARM处理器的架构,SoC芯片中对图像进行处理是根据其内部的FPGA和ARM处理器相结合。其中,即FPGA负责对图像进行采集以及处理,处理后的数据在FPGA侧缓存,ARM处理器负责对缓存的数据进行读取并压缩,进而存储至外部存储区,以达到对图像处理的目的。现有技术中,由于FPGA对图像的写入帧率和ARM处理器对图像的读取帧率不匹配,可能导致图像分层错位的情况出现,图像的处理效果较差。
发明内容
本发明实施例提供一种数据处理方法及系统,用于解决对图像数据的写入帧率和读取帧率不匹配而导致的图像分层错位的技术问题。
第一方面,本发明提供一种数据处理方法,应用于数据处理系统,所述数据处理系统包括FPGA和ARM处理器,所述方法包括:
所述FPGA根据视频帧同步信号为获得的每帧图像添加对应的帧计数值,其中,为每帧图像添加的帧计数值用于表明该帧图像在视频流中的帧顺序,每帧图像的帧计数值包括取值相等的起始帧计数值和尾帧计数值,起始帧计数值位于该帧图像的所有像素之前,尾帧计数值位于该帧图像的所有像素之后;
所述FPGA按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入DDR中的一个缓存区,其中,所述DDR分别与所述FPGA和所述ARM处理器连接,所述DDR包括至少三个缓存区;
所述ARM处理器将所述至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区;
所述ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,并读取所述目标缓存区中的图像数据,其中,所述目标缓存区为在所述正在写数据的缓存区前最后一个写入数据的缓存区。
在一种可能的设计中,所述FPGA按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入DDR中的一个缓存区,包括:
所述FPGA按照帧顺序将添加了帧计数值的每帧图像的数据以预定写入顺序分别写入DDR中的一个缓存区时,以将该帧图像的数据覆盖上一帧图像的数据的方式写入一个缓存区。
在一种可能的设计中,对于相邻的两帧图像,前一帧图像的尾帧计数值与后一帧图像的起始帧计数值之间包括冗余数据。
在一种可能的设计中,所述DDR中的每个缓存区包括第一预定地址和第二预定地址,所述第一预定地址用于缓存起始帧计数值,所述第二预定地址用于缓存尾帧计数值。
在一种可能的设计中,所述ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,并读取所述目标缓存区中的图像数据,包括:
所述ARM处理器根据所述预定写入顺序,确定出所述正在写数据的缓存区的前一个缓存区;
所述ARM处理器将确定出的前一个缓存区确定为所述目标缓存区。
在一种可能的设计中,所述ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,包括:
所述ARM处理器判断所述正在写数据的缓存区中的起始帧计数值是否为最小帧计数值,其中,帧计数值按照预定计数间隔循环计数;
若否,所述ARM处理器则将所述正在写数据的缓存区的起始帧计数值减一,以得到参考帧计数值;
所述ARM处理器将包括的起始帧计数值与尾帧计数值均为所述参考帧计数值的缓存区确定为所述目标缓存区。
在一种可能的设计中,所述方法还包括:
若所述正在写数据的缓存区中的起始帧计数值为第一个帧计数值,所述ARM处理器基于循环计数的规则,确定最大帧计数值;
所述ARM处理器将包括的起始帧计数值与尾帧计数值均为所述最大帧计数值的缓存区确定为所述目标缓存区。
在一种可能的设计中,所述方法还包括:
所述ARM处理器获得所述视频流包括的所有帧图像对应的图像数据;
所述ARM处理器按照读取顺序,将从所述DDR中读取的所述视频流包括的所有帧图像对应的图像数据进行处理,以得到与所述视频流对应的视频数据。
在一种可能的设计中,所述ARM处理器按照读取顺序,将从所述DDR中读取的所述视频流包括的所有帧图像对应的图像数据进行处理,以得到与所述视频流对应的视频数据,包括:
若从所述DDR的缓存区中读取的图像数据中包括帧计数值,所述ARM处理器按照读取顺序将每帧图像对应的图像数据中的帧计数值进行丢弃处理,以得到每帧图像对应的原始像素数据;
并根据每帧图像对应的原始像素数据,确定所述视频流对应的视频数据。
第二方面,提供一种数据处理系统,所述数据处理系统包括现场可编程门阵列FPGA和ARM处理器,其中:
所述FPGA用于根据视频帧同步信号为获得的每帧图像添加对应的帧计数值,其中,为每帧图像添加的帧计数值用于表明该帧图像在视频流中的帧顺序,每帧图像的帧计数值包括取值相等的起始帧计数值和尾帧计数值,起始帧计数值位于该帧图像的所有像素之前,尾帧计数值位于该帧图像的所有像素之后;并按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入DDR中的一个缓存区,其中,所述DDR分别与所述FPGA和所述ARM处理器连接,所述DDR包括至少三个缓存区;
所述ARM处理器用于将所述至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区;并根据确定出的正在写数据的缓存区确定目标缓存区,并读取所述目标缓存区中的图像数据,其中,所述目标缓存区为在所述正在写数据的缓存区前最后一个写入数据的缓存区。
在一种可能的设计中,所述FPGA用于:
所述FPGA按照帧顺序将添加了帧计数值的每帧图像的数据以预定写入顺序分别写入DDR中的一个缓存区时,以将该帧图像的数据覆盖上一帧图像的数据的方式写入一个缓存区。
在一种可能的设计中,对于相邻的两帧图像,前一帧图像的尾帧计数值与后一帧图像的起始帧计数值之间包括冗余数据。
在一种可能的设计中,所述DDR中的每个缓存区包括第一预定地址和第二预定地址,所述第一预定地址用于缓存起始帧计数值,所述第二预定地址用于缓存尾帧计数值。
在一种可能的设计中,所述ARM处理器用于:
所述ARM处理器根据所述预定写入顺序,确定出所述正在写数据的缓存区的前一个缓存区;
所述ARM处理器将确定出的前一个缓存区确定为所述目标缓存区。
在一种可能的设计中,所述ARM处理器用于:
所述ARM处理器判断所述正在写数据的缓存区中的起始帧计数值是否为最小帧计数值,其中,帧计数值按照预定计数间隔循环计数;
若否,所述ARM处理器则将所述正在写数据的缓存区的起始帧计数值减一,以得到参考帧计数值;
所述ARM处理器将包括的起始帧计数值与尾帧计数值均为所述参考帧计数值的缓存区确定为所述目标缓存区。
在一种可能的设计中,所述ARM处理器用于:
若所述正在写数据的缓存区中的起始帧计数值为第一个帧计数值,所述ARM处理器基于循环计数的规则,确定最大帧计数值;
所述ARM处理器将包括的起始帧计数值与尾帧计数值均为所述最大帧计数值的缓存区确定为所述目标缓存区。
在一种可能的设计中,所述ARM处理器用于:
所述ARM处理器获得所述视频流包括的所有帧图像对应的图像数据;
所述ARM处理器按照读取顺序,将从所述DDR中读取的所述视频流包括的所有帧图像对应的图像数据进行处理,以得到与所述视频流对应的视频数据。
在一种可能的设计中,所述ARM处理器用于:
若从所述DDR的缓存区中读取的图像数据中包括帧计数值,所述ARM处理器按照读取顺序将每帧图像对应的图像数据中的帧计数值进行丢弃处理,以得到每帧图像对应的原始像素数据;
并根据每帧图像对应的原始像素数据,确定所述视频流对应的视频数据。
在本发明实施例中,SoC芯片中的FPGA可以根据视频帧同步信号为获得的视频流中的每帧图像添加按照帧顺序确定出的帧计数值,其中,为每帧图像添加的帧计数值包括取值相等的起始帧计数值和尾帧计数值,这样,可以明确的确定视频流中图像的帧数以及较为清晰的区分每帧图像,并且,起始帧计数值是位于该帧图像的所有像素之前,尾帧计数值位于该帧图像的所有像素之后,这样可以在不破坏该帧图像数据的情况下独立的区分每帧图像。
FPGA将按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入DDR中的一个缓存区,即将添加了帧计数值的每帧图像写入一个DDR中的一个缓存区中,这样可以每帧图像的数据分区存储,以尽量避免每帧图像之间的数据混淆。且DDR中至少包括三个缓存区,这样的话,可以将每帧图像更好的分区,并且可以尽量将图像数据的写入和读取尽量错开,即使得图像数据的写入和读取尽量在不同的DDR缓存区中进行,以尽量降低在同一个缓存区中同时进行写入和读取而可能造成的读取错位而导致的图像分层错位,提高图像处理的准确性。进一步地,由于一帧图像的起始帧计数值和尾帧计数值是相等的,若一个缓存区中包括的起始帧计数值和尾帧计数值不相等,那么则表明该缓存区中正在写入数据,鉴于此,ARM处理器可以将至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区,再根据该正在写数据的缓存区确定目标缓存区,即确定该正在写数据的缓存区前最后一个写入数据的缓存区,并读取目标缓存区中的图像数据,从而完成从缓存区中的图像数据的读取,如此,则可以避免读数据和写数据的冲突,从而避免图像分层错位的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例中的图像处理的一种应用场景示意图;
图2为本发明实施例中的图像处理的另一种应用场景示意图;
图3为本发明实施例中的图像的处理方法的流程图;
图4为本发明实施例中的未插入帧计数值的视频流的示意图;
图5为本发明实施例中的插入帧计数值的视频流数据的示意图;
图6为本发明实施例中的一种缓存区缓存图像数据的示意图;
图7为本发明实施例中的另一种缓存区缓存图像数据的示意图;
图8为本发明实施例中的又一种缓存区缓存图像数据的示意图;
图9为本发明实施例中的帧缓冲空间的读取帧计数值的示意图;
图10为本发明实施例中的另一帧缓冲空间的读取帧计数值的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
以下对本文中涉及的部分词语进行说明,以便于本领域技术人员理解。
SoC:(System on Chip,片上系统或系统级芯片),系统级芯片的构成可以是系统级芯片控制逻辑模块、微处理器/微控制器CPU(Central Processing Unit,中央处理器)内核模块、数字信号处理器DSP(Digital Signal Processing,数字信号处理)模块、嵌入的存储器模块、和外部进行通讯的接口模块、含有数模/模数的模拟前端模块、电源提供和功耗管理模块。
PL:(Processing Logic,可编辑逻辑),指SoC中的FPGA部分的资源。
PS:(Processing System,处理系统),指SoC中的ARM部分的资源。
如前所述,现有技术中,在将SoC技术应用到图像处理的应用场景时,请参见图1,可以先使用CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)摄像头或者CCD(Charge Coupled Device,电荷耦合装置)摄像头来采集视频流数据,其中,视频流数据中包括至少一帧图像数据,然后SoC中的FPGA获得前述的采集的视频流数据,进而对采集的视频流数据进行相关校正和相应的处理之后存入FPGA内部存储空间中,然后,SoC中的ARM处理器从FPGA内部存储空间中读出视频流数据,进而对视频流数据进行压缩处理以存入外部存储器中。
然而,这样的话,由于CMOS摄像头或者CCD摄像头输出图像的帧率与ARM处理器读出图像的帧率异步,导致存在图像的写入和读出的帧率不匹配出现图像分层错位的问题,也就是说,这样的方式下获得的图像可能出现存入外部存储器的图像是不完整的图像信息。
针对上述问题,现有技术中的是在FPGA接收采集的图像时进行视频帧指针计数,然后根据指针的计数值位宽将视频的指针计数值绑定到多个端口上,然后将通过端口连接ARM,从而ARM通过相应的程序以确定端口对应的寄存器中的帧指针值,以确定当前FPGA正在写入的是哪一帧图像,从而读取出其它最后写入数据的一帧图像,但这样的方式需要使用额外的端口资源。
鉴于此,本发明实施例提供了一种数据处理方法,通过本发明实施例中的方法可以用于解决对图像数据的写入帧率和读取帧率不匹配而导致的图像分层错位的技术问题,且不需要额外的资源,以尽量解决对图像数据读和写冲突的目的,以获得完整的视频流数据,从而提升用户体验。
在介绍完本发明实施例的设计思想之后,下面对本发明实施例中的数据处理方法的技术方案适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本发明实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本发明实施例提供的技术方案。
请参见图2,本发明中的SoC芯片中包括前述的双核cortex-a9 ARM处理器,为了便于对应描述,在后文中称作PS,还包括FPGA,为了便于对应描述,在后文中称作PL,另外,还包括用于控制将数据写入DDR区的DDR控制器以及USB(Universal Serial Bus,通用串行总线)存储器等用于写入PS读出的图像数据的外部存储器。
在具体的实施过程中,请参见图2,当SoC芯片中PL获得CMOS摄像头/CCD摄像头采集的视频流之后,通过处理模块对采集的视频流进行校正处理以及依据CMOS摄像头/CCD摄像头输出的视频流的视频帧同步信号产生帧计数值,然后将当前的帧计数值嵌入该帧图像数据中,进而PL将处理后的视频流数据通过VDMA(video direct memory access,视频直接内存访问)一帧图像接着一帧图像的写入DDR缓存区中,进而PS通过DDR控制器读取DDR缓存区即图2中的DDR中的1到n个缓存区的图像数据,从而获得完整的图像数据。
下面结合说明书附图介绍本发明实施例提供的技术方案。
请参见图3,本发明实施例提供一种数据处理方法,该方法可以由前述的SoC芯片执行。该方法的具体流程描述如下。
步骤301:FPGA根据视频帧同步信号为获得的每帧图像添加对应的帧计数值,其中,为每帧图像添加的帧计数值用于表明该帧图像在视频流中的帧顺序,每帧图像的帧计数值包括取值相等的起始帧计数值和尾帧计数值,起始帧计数值位于该帧图像的所有像素之前,尾帧计数值位于该帧图像的所有像素之后。
本发明实施例提供的数据处理方法可以由SoC芯片执行,例如该SoC可以是ZYNQ7020芯片、ZYNQ7000芯片等SoC芯片,为了更好的对本发明实施例中提供的方法进行说明,后文中将以SoC芯片是ZYNQ7020芯片来对本发明实施例提供的方法进行说明。进一步地,该方法应用于数据处理系统,该系统包括FPGA、ARM处理器以及与该系统连接的DDR,其中,DDR通过SoC中的内部通道例如AXI-HP、AXI4-stream、AXI-GP等等和DDR控制器与SoC中的FPGA和ARM处理器连接。
如前所述,ZYNQ7020芯片中的FPGA可以依据CMOS摄像头/CCD摄像头输出的视频流的视频帧同步信号产生帧计数值,从而可以为获得的视频流数据中的每帧图像添加对应的帧计数值。其中,为每帧图像添加的帧计数值用于表明该帧图像在视频流的顺序,例如,当前的帧计数值为15,则确定出该帧图像是在PS获得对应的视频流中的第15帧图像。
具体的,确定添加帧计数值的方式是依据CMOS摄像头/CCD摄像头输出的视频流的视频帧同步信号产生帧计数值,当下一帧视频帧同步信号来后,帧计数值自动加1,依次循环累加,当达到帧计数值的最大值之后,又从帧计数值的最小值开始,在本发明实施例中,帧计数值的最大值的确定的方式可以为根据帧计数值的数据的位宽来确定,例如,假设帧计数值的位宽为16bit,则可以确定出帧计数值的取值范围是0-65535,也就是说,当视频流的当前一帧图像的帧计数值到达65535之后,下一帧图像的帧计数值为0,依次循环。
在具体的实施过程中,当FPGA根据视频帧同步信号确定出当前一帧图像的当前帧计数值之后,可以为该帧图像添加对应的当前帧计数值,具体的,可以在该帧图像的所有像素之前添加起始帧计数值,以及可以在该帧图像所有像素之后添加对应的尾帧计数值,且添加的尾帧计数值和起始帧计数值的取值是相同的。
在具体的实施过程中,本发明实施例中向每帧图像添加当前帧计数值的方法如下,具体的,未添加当前帧计数值的某帧图像如图4所示,其中,图4中的Clock用于表示时钟信号,tuser用于表示该帧图像的起始标记信号,tlast用于表示该帧图像的结束标记信号,tvalid用于表示该帧图像数据有效的标记信号,tdata用于该帧图像的像素数据,tdata旁边的[15:0]用于表示该帧图像的像素数据的位宽,具体的,因为CMOS摄像头采集的视频流数据是随着时钟信号Clock一个像素接着一个像素的输出,且PL将视频流数据的也是一个像素接着一个像素的写入到DDR的缓冲空间中的即图4中的data0、data1、data2……data为一帧图像的像素数据。
进一步地,当PL在对图像数据进行处理,具体的,请参见图5,在视频流数据中的某帧图像数据中的data0即第一个像素之前添加当前的帧计数值,在图5中嵌入当前的帧计数值为0,也就是说该帧图像是其对应的视频流中的第一帧图像,进一步地,还可以在该帧图像数据中的datan即最后一个像素之后添加当前的帧计数值,在本发明实施例中,考虑到为了更好的将视频流中的相邻的两帧图像进行区分,对于相邻的两帧图像,还可以前一帧图像的尾帧计数值与后一帧图像的起始帧计数值之间嵌入冗余数据,例如图5中的在前一帧图像的尾帧计数值的0和后一帧图像帧计数值1之间,嵌入有冗余数据。这样的话,在根据帧计数值写入视频流数据的基础上,还增加了确定将视频流数据一帧图像和另一帧的区分的准确性。
步骤302:FPGA按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入双倍速率同步动态随机存储器DDR中的一个缓存区,其中,DDR分别与FPGA和ARM处理器连接,DDR包括至少三个缓存区。
如前所述,ZYNQ7020芯片中的PL可以获取采集的视频流数据的采集视频帧率,例如25HZ,然后ZYNQ7020芯片中的PS确定出对前述得到视频流数据进行读取的进而进行压缩的压缩视频帧率,例如30HZ,进而判断前述的采集视频帧率和压缩视频帧率是否相同,当采集视频帧率与压缩视频帧率不相同时,也就是说,当针对视频流的写的帧率小于读的帧率时,确定DDR缓存区中包括至少三个缓存区,这样的话,可以避免出现当当前时刻正在进行写缓存区A,读缓存区B,但是下一个时刻去写缓存区B时,缓存区B没有被读完,即出现同时读写缓存区B中图像数据的情况。另外,需要说明的是,本发明实施例中将以DDR缓存区为三个来进行本发明实施例中的方法进行说明。
在本发明实施例中,当获得图像数据之后,通过VDMA(video direct memoryaccess,视频直接内存访问)将图像数据写入DDR缓存区中的三个缓存区中,为了便于描述,分别称为缓存区1、缓存区2、缓存区3,具体的,缓存区1、缓存区2以及缓存区3中每个缓存区可以缓存一帧图像数据。进一步地,为了便于理解,请参见图6,如图6所示为将图像数据写入DDR缓存区之后,DDR中的三个缓存区中当前存储的图像数据,其中,start用于表示嵌入一帧图像第一个像素数据之前的帧计数值,且该帧计数值位于任一缓存区的第一预定地址空间,为了便于描述,后文中将第一预定地址空间简称为第一预定地址,last用于表示嵌入一帧图像的最后一个像素数据之后的帧计数值,且该帧计数值位于缓存区的第二预定地址空间,为了便于描述,后文中将第二预定地址空间简称为第二预定地址,分别用start和last后面的数字1、2、3来表示为第几个缓存区的帧计数值,当然,还可以用其它的方式来表示,本发明实施例中不做限制。
在具体的实施过程中,请参见图7,PL通过VDMA将图像数据写入缓存区1、缓存区2以及缓存区3时的写入方式是依次将图像数据写入缓存区1、缓存区2以及缓存区3,当在缓存区3将一帧图像数据写入之后,下一帧的图像写入缓存区1,也就是按照预定写入顺序写入图像数据,进一步地,写入下一帧的图像数据的方式是将该帧图像数据覆盖缓存区1中原有的一帧图像数据从而写入缓存区1中的,因而,可能会出现在缓存区1中出现新写入一帧的帧计数值和缓存区原先的帧计数值在同一缓存区内,即出现一半为正在写入的图像数据,一半为原先写入的图像数据。
进一步地,在每帧图像的所有像素的之前添加的当前时刻的帧计数值随该帧图像数据写入某一个缓存区的第一预定地址,则第一预定地址的start值得到更新,但是在读取的当前时刻,视频流数据的该帧视频数据没有流到最后一个像素时,即对应的缓存区中的第二预定地址的last值不会被更新,从而会出现某一个缓存区的第一预定地址和第二预定地址的帧计数值start与last不相等的情况。
例如,如图8所示,假设在第一时刻缓存区1写入的是帧计数值为0时的一帧图像数据,缓存区2写入的是帧计数值为1时的一帧图像数据,缓存区3写入的是帧计数值为2时的一帧图像数据,那么,在第一时刻中最后写入的一帧图像数据为帧计数值为2对应的一帧图像数据,当再次向缓存区1写入的是帧计数值为3时的一帧图像数据时,获取该时刻的缓存区1、缓存区2和缓存区3中的图像数据,则此时刻缓存区1的图像数据为3、data1、data2、data3…data n、0,也就是说,在该时刻缓存区1中帧计数值为3的一帧图像数据正在写入。
步骤303:ARM处理器将至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区。
步骤304:ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,并读取目标缓存区中的图像数据,其中,目标缓存区为在正在写数据的缓存区前最后一个写入数据的缓存区。
在本发明实施例中,当ZYNQ7020芯片中的PL可以通过DDR控制器读取每个缓存区中的起始帧计数值和尾帧计数值,例如,读取图6或图7中所示start1、start2、start3和last1、last2、last3的值,然后判断每个缓存区中的起始帧计数值和尾帧计数值是否相等,从而将起始帧计数值和尾帧计数值不相等的缓存区确定为正在写入的添加了帧计数值的一帧图像的数据的缓存区。
在具体的实施过程中,为了便于描述,PL将正在写入的添加了帧计数值的一帧图像的数据的缓存区称作正在写的缓存区,具体的,当确定出正在写的缓存区之后,则可以确定出最后一个写入数据的缓存区,本发明实施例中将最后一个写完数据的缓存区称作目标缓存区,进一步地,确定目标缓存区的方法可以是根据获得的正在的写的缓存区的帧计数值来确定目标缓存区,还可以是根据将处理后的视频流数据写入缓存区的顺序,确定目标缓存区。
在一种可能的实施方式中,PL可以根据确定出的正在写的缓存区的起始帧计数值确定出目标缓存区,具体的,PL可以判断正在写的缓存区的起始帧计数值是否为最小帧计数值,若确定出正在写的缓存区的起始帧计数值不为最小帧计数值,则可以获得正在写的缓存区的起始帧计数值减一的起始帧计数值,为了便于描述,将正在写的缓存区的起始帧计数值减一的起始帧计数值称作参考帧计数值,然后将包括的起始帧计数值与尾帧计数值均为参考帧计数值的缓存区确定为目标缓存区,这样的确定方式,可以清晰的知晓正在写的读和正在写的帧计数值对应不同的图像,以较为准确的避免读写冲突。
例如,假设帧计数值的取值范围为0-65535,且确定出正在写的缓存区的起始帧计数值为146,则首先判断出146不为0,进一步地,可以确定出146减1为145,则确定出起始帧计数值和尾帧计数值均为145的缓存区为目标缓存区。
进一步地,当确定出正在写的缓存区的起始帧计数值为最小帧计数值时,则可能存在两种情况,一种情况为刚开始写入图像数据,一种情况为帧计数值已经基于循环计数的规则循环了一圈,即已经写入图像数据,针对刚开始写入图像数据的情况,其它缓存区还未写入图像数据,因而此时不读数据,进一步地,针对帧计数值已经基于循环计数的规则循环了一圈的情况,则可以基于循环计数的规则,确定最大帧计数值,其中,帧计数规则为帧计数值按照预定计数间隔循环计数,然后PL将包括的起始帧计数值与尾帧计数值均为最大帧计数值的缓存区确定为所述目标缓存区。
例如,请参见图10,以帧计数值的取值范围为0-65535为例,当出现帧计数值处于最大值65535之后,下一帧的图像的帧计数值为0,在该时刻,帧计数值为零的图像正在写入缓存区2,其尾帧计数值还未写入缓存区中,则确定该缓存区为正在写的缓存区,根据循环计数的规则,可以确定出最大帧计数值为65535,则确定最后写入图像数据的为帧计数值为65535对应的缓存区,从而确定出目标缓存区。
在一种可能的实施方式中,可以根据将处理后的视频流数据写入缓存区的预定写入顺序,确定出正在写的缓存区对应的前一个缓存区,以将前一个缓存区确定为目标缓存区,然后PL读取目标缓存区中的所有数据。在本发明实施例中,将处理后的视频流数据写入缓存区的预定写入顺序为可以为缓存区1、缓存区2、缓存区3、缓存区1,依次循环。具体的,可以参见图9所示,若正在写的区域是缓存区1,则可以确定出目标缓存区为3,若正在写的区域是缓存区2,则可以确定出目标缓存区为1,若正在写的区域是缓存区3,则可以确定出目标缓存区为2。这样的话,不需要再对帧计数值进行判断,仅仅依据缓存区的写入顺序则可以较为准确快速的确定出目标缓存区,从而避免出现与PS写入一帧图像数据出现在一个缓存区的情况,进而可以在不需要使用其它资源来处理图像读写冲突的问题,节约了使用资源,且因为不需要使用其它资源,从而提高了处理图像读写冲突的效率。
在具体的实施过程中,PL获得视频流包括的所有帧图像对应的图像数据,其中,该图像数据可以为不包括帧计数值的图像数据,进一步地,PL按照读取顺序,将从DDR中读取的视频流包括的所有帧图像对应的图像数据进行处理,具体的,考虑到是为了获取完整的视频流数据,则可以在读取目标缓存区中的图像数据时,不读取目标缓存区中的帧计数值,进一步地,若从DDR的缓存区中读取的图像数据中包括帧计数值,则PL按照读取顺序将每帧图像对应的图像数据中的帧计数值进行丢弃处理,以得到每帧图像对应的原始像素数据,并根据每帧图像对应的原始像素数据,确定所述视频流对应的视频数据。这样的方式,可以较为准确对帧计数值进行丢弃处理,以获得较为完整的视频流数据,也就是说,可以对所有的帧计数值一起进行处理,这样的话,可以集中处理,以提高效率。
所以,通过上述方法,在本发明实施例中,SoC芯片中的FPGA可以根据视频帧同步信号为获得的视频流中的每帧图像添加按照帧顺序确定出的帧计数值,其中,为每帧图像添加的帧计数值包括取值相等的起始帧计数值和尾帧计数值,这样,可以明确的确定视频流中图像的帧数以及较为清晰的区分每帧图像,并且,起始帧计数值是位于该帧图像的所有像素之前,尾帧计数值位于该帧图像的所有像素之后,这样可以在不破坏该帧图像数据的情况下独立的区分每帧图像。
FPGA将按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入DDR中的一个缓存区,即将添加了帧计数值的每帧图像写入一个DDR中的一个缓存区中,这样可以每帧图像的数据分区存储,以尽量避免每帧图像之间的数据混淆。且DDR中至少包括三个缓存区,这样的话,可以将每帧图像更好的分区,并且可以尽量将图像数据的写入和读取尽量错开,即使得图像数据的写入和读取尽量在不同的DDR缓存区中进行,以尽量降低在同一个缓存区中同时进行写入和读取而可能造成的读取错位而导致的图像分层错位,提高图像处理的准确性。进一步地,由于一帧图像的起始帧计数值和尾帧计数值是相等的,若一个缓存区中包括的起始帧计数值和尾帧计数值不相等,那么则表明该缓存区中正在写入数据,鉴于此,ARM处理器可以将至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区,再根据该正在写数据的缓存区确定目标缓存区,即确定该正在写数据的缓存区前最后一个写入数据的缓存区,并读取目标缓存区中的图像数据,从而完成从缓存区中的图像数据的读取,如此,则可以避免读数据和写数据的冲突,从而避免图像分层错位的问题。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据处理方法,应用于数据处理系统,其特征在于,所述数据处理系统包括现场可编程门阵列FPGA和ARM处理器,所述方法包括:
所述FPGA根据视频帧同步信号为获得的每帧图像添加对应的帧计数值,其中,为每帧图像添加的帧计数值用于表明该帧图像在视频流中的帧顺序,每帧图像的帧计数值包括取值相等的起始帧计数值和尾帧计数值,起始帧计数值位于该帧图像的所有像素之前,尾帧计数值位于该帧图像的所有像素之后;
所述FPGA按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入双倍速率同步动态随机存储器DDR中的一个缓存区,其中,所述DDR分别与所述FPGA和所述ARM处理器连接,所述DDR包括至少三个缓存区;
所述ARM处理器将所述至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区;
所述ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,并读取所述目标缓存区中的图像数据,其中,所述目标缓存区为在所述正在写数据的缓存区前最后一个写入数据的缓存区。
2.如权利要求1所述的方法,其特征在于,所述FPGA按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入DDR中的一个缓存区,包括:
所述FPGA按照帧顺序将添加了帧计数值的每帧图像的数据以预定写入顺序分别写入DDR中的一个缓存区时,以将该帧图像的数据覆盖上一帧图像的数据的方式写入一个缓存区。
3.如权利要求1所述的方法,其特征在于,对于相邻的两帧图像,前一帧图像的尾帧计数值与后一帧图像的起始帧计数值之间包括冗余数据。
4.如权利要求1所述的方法,其特征在于,所述DDR中的每个缓存区包括第一预定地址和第二预定地址,所述第一预定地址用于缓存起始帧计数值,所述第二预定地址用于缓存尾帧计数值。
5.如权利要求1-4任一所述的方法,其特征在于,所述ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,包括:
所述ARM处理器根据所述预定写入顺序,确定出所述正在写数据的缓存区的前一个缓存区;
所述ARM处理器将确定出的前一个缓存区确定为所述目标缓存区。
6.如权利要求1-4任一所述的方法,其特征在于,所述ARM处理器根据确定出的正在写数据的缓存区确定目标缓存区,包括:
所述ARM处理器判断所述正在写数据的缓存区中的起始帧计数值是否为最小帧计数值,其中,帧计数值按照预定计数间隔循环计数;
若否,所述ARM处理器则将所述正在写数据的缓存区的起始帧计数值减一,以得到参考帧计数值;
所述ARM处理器将包括的起始帧计数值与尾帧计数值均为所述参考帧计数值的缓存区确定为所述目标缓存区。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
若所述正在写数据的缓存区中的起始帧计数值为最小帧计数值,所述ARM处理器基于循环计数的规则,确定最大帧计数值;
所述ARM处理器将包括的起始帧计数值与尾帧计数值均为所述最大帧计数值的缓存区确定为所述目标缓存区。
8.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
所述ARM处理器获得所述视频流包括的所有帧图像对应的图像数据;
所述ARM处理器按照读取顺序,将从所述DDR中读取的所述视频流包括的所有帧图像对应的图像数据进行处理,以得到与所述视频流对应的视频数据。
9.如权利要求8所述的方法,其特征在于,所述ARM处理器按照读取顺序,将从所述DDR中读取的所述视频流包括的所有帧图像对应的图像数据进行处理,以得到与所述视频流对应的视频数据,包括:
若从所述DDR的缓存区中读取的图像数据中包括帧计数值,所述ARM处理器按照读取顺序将每帧图像对应的图像数据中的帧计数值进行丢弃处理,以得到每帧图像对应的原始像素数据;
并根据每帧图像对应的原始像素数据,确定所述视频流对应的视频数据。
10.一种数据处理系统,其特征在于,所述数据处理系统包括现场可编程门阵列FPGA和ARM处理器,其中:
所述FPGA用于根据视频帧同步信号为获得的每帧图像添加对应的帧计数值,其中,为每帧图像添加的帧计数值用于表明该帧图像在视频流中的帧顺序,每帧图像的帧计数值包括取值相等的起始帧计数值和尾帧计数值,起始帧计数值位于该帧图像的所有像素之前,尾帧计数值位于该帧图像的所有像素之后;并按照帧顺序将添加了帧计数值的每帧图像依次以预定写入顺序分别写入双倍速率同步动态随机存储器DDR中的一个缓存区,其中,所述DDR分别与所述FPGA和所述ARM处理器连接,所述DDR包括至少三个缓存区;
所述ARM处理器用于将所述至少三个缓存区中包括的起始帧计数值和尾帧计数值不相等的缓存区确定为正在写数据的缓存区;并根据确定出的正在写数据的缓存区确定目标缓存区,并读取所述目标缓存区中的图像数据,其中,所述目标缓存区为在所述正在写数据的缓存区前最后一个写入数据的缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910082671.XA CN109803065B (zh) | 2019-01-28 | 2019-01-28 | 一种数据处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910082671.XA CN109803065B (zh) | 2019-01-28 | 2019-01-28 | 一种数据处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109803065A CN109803065A (zh) | 2019-05-24 |
CN109803065B true CN109803065B (zh) | 2021-02-26 |
Family
ID=66560472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910082671.XA Active CN109803065B (zh) | 2019-01-28 | 2019-01-28 | 一种数据处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109803065B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112785973B (zh) * | 2019-11-05 | 2022-07-15 | 西安诺瓦星云科技股份有限公司 | 图像拼接方法及装置 |
CN111815451B (zh) * | 2020-07-20 | 2024-05-07 | 南京艾科朗克信息科技有限公司 | 一种基于fpga的证券柜台报单表项快速访问方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202761A (en) * | 1984-11-26 | 1993-04-13 | Cooper J Carl | Audio synchronization apparatus |
JP2000092348A (ja) * | 1998-09-10 | 2000-03-31 | Mitsubishi Electric Corp | フレームシンクロナイザ |
US7161615B2 (en) * | 2001-11-30 | 2007-01-09 | Pelco | System and method for tracking objects and obscuring fields of view under video surveillance |
CN101833513B (zh) * | 2010-04-22 | 2012-11-21 | 瑞斯康达科技发展股份有限公司 | 一种数据帧的读取方法、装置 |
CN102625110B (zh) * | 2012-03-30 | 2014-08-20 | 天津天地伟业物联网技术有限公司 | 视频数据的缓存系统及缓存方法 |
CN103269421B (zh) * | 2013-05-23 | 2016-05-18 | 广东威创视讯科技股份有限公司 | 视频图像的降帧方法和系统 |
CN105898507B (zh) * | 2016-05-30 | 2019-04-16 | 广东威创视讯科技股份有限公司 | 一种视频信号同步方法及装置 |
CN107040784B (zh) * | 2017-03-22 | 2020-12-15 | 深圳市中航世星科技有限公司 | 一种视频缓冲处理方法、系统和装置 |
-
2019
- 2019-01-28 CN CN201910082671.XA patent/CN109803065B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109803065A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7719579B2 (en) | Digital camera architecture with improved performance | |
CN109803065B (zh) | 一种数据处理方法及系统 | |
CN106294234A (zh) | 一种数据传输方法及装置 | |
US20170289646A1 (en) | Multi-camera dataset assembly and management with high precision timestamp requirements | |
US7849277B2 (en) | Bank controller, information processing device, imaging device, and controlling method | |
CN106776374B (zh) | 一种基于fpga的高效数据缓冲方法 | |
CN116684659A (zh) | Bmc芯片的视频输出控制模块、方法、设备和服务器 | |
CN113596549B (zh) | 基于不同参考时钟的音视频同步方法、装置和计算机设备 | |
US10719458B2 (en) | Data transfer device, image processing device, and imaging device | |
CN111416923A (zh) | 图像处理器和图像处理方法 | |
CN113286174A (zh) | 视频抽帧方法、装置、电子设备、计算机可读存储介质 | |
CN110636219B (zh) | 一种视频数据流的传输方法及装置 | |
US20200327638A1 (en) | Connected component detection method, circuit, device and computer-readable storage medium | |
GB2428931A (en) | Imaging serial interface ROM | |
CN111459879A (zh) | 一种数据处理方法和片上系统 | |
US20190324646A1 (en) | Memory access device, image-processing device, and imaging device | |
US9723231B2 (en) | Image data processing apparatus and method therefor for pixel data | |
CN116226018A (zh) | 一种数据解码结构 | |
US20070008414A1 (en) | Serial camera interface | |
US9367496B2 (en) | DMA transfer device and method | |
CN109660743B (zh) | 一种制冷型红外热像仪高动态范围成像的实现方法 | |
CN112882657B (zh) | 数据读取方法及装置、存储介质、电子装置 | |
CN111787184B (zh) | 相机系统 | |
US20140092273A1 (en) | Device and method for processing image, and imaging device | |
CN111080508A (zh) | 一种基于dma的gpu子图像处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |