CN107527317A - 基于图像处理的数据传输*** - Google Patents

基于图像处理的数据传输*** Download PDF

Info

Publication number
CN107527317A
CN107527317A CN201710587357.8A CN201710587357A CN107527317A CN 107527317 A CN107527317 A CN 107527317A CN 201710587357 A CN201710587357 A CN 201710587357A CN 107527317 A CN107527317 A CN 107527317A
Authority
CN
China
Prior art keywords
data
transmission system
buffer
data transmission
memory device
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.)
Granted
Application number
CN201710587357.8A
Other languages
English (en)
Other versions
CN107527317B (zh
Inventor
邵晓鹏
宗靖国
程思
刘小敏
安凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201710587357.8A priority Critical patent/CN107527317B/zh
Publication of CN107527317A publication Critical patent/CN107527317A/zh
Application granted granted Critical
Publication of CN107527317B publication Critical patent/CN107527317B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Input (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种基于图像处理的数据传输***,包括:硬件层设备,用于预处理相机拍摄的图像形成图像数据并所述图像数据缓存至第一缓存设备;内核层设备,用于提取所述图像数据并分级存放至多个第二缓存设备;应用层设备,用于从所述第二缓存设备中提取所述图像数据,并以实现图像数据的传输。采用本发明实施例提供的基于图像处理的数据传输***,实现了图像数据在内存中传输效率的明显提升,满足了大规模图像数据及时处理的需求。

Description

基于图像处理的数据传输***
技术领域
本发明涉及图像处理领域,尤其涉及一种基于图像处理的数据传输***。
背景技术
图像采集***经过多年发展,已经在军事、医疗、工业等领域获得举足轻重的地位。随着集成电路规模的不断提高,图像采集***正朝向高分辨率、高帧率、高集成度、高可靠性的方向发展,因此,需要处理的数据量越来越大。
在图像数据处理的过程中,数据的传输效率,尤其是图像数据在不同存储设备之间的传递效率,是影响图像采集***整体工作效率的重要因素之一。因此,如何选取应用于图像处理领域中的数据传输方法和***,进而实现提高图像数据在采集***中的传输效率,是一个亟待解决的问题。
发明内容
因此,为解决现有技术存在的技术缺陷和不足,本发明提出一种基于图像处理的数据传输***。
本发明实施例提供一种基于图像处理的数据传输***,包括:
硬件层设备,用于预处理相机拍摄的图像形成图像数据并将所述图像数据缓存至第一缓存设备;
内核层设备,用于提取所述图像数据并分级存放至多个第二缓存设备;
应用层设备,用于从所述第二缓存设备中提取所述图像数据,以实现图像数据从所述硬件层设备到所述应用层设备的传输。
在本发明的一种实施方式中,所述硬件层设备包括依次电连接的FPGA、多个CSI接口、SFMC、多个IDMA寄存器、及所述第一缓存设备,其中:
所述FPGA用于预处理相机拍摄的图像形成图像数据,并通过所述多个CSI接口将所述图像数据发送至所述SFMC;
所述SFMC用于缓存经述多个CSI接口发送的所述图像数据,并将所述图像数据同时发送至所述多个IDMA寄存器;
所述多个IDMA寄存器用于分别存储与所述CSI接口匹配的图像数据,并将所述图像数据发送至所述第一缓存设备。
在本发明的一种实施方式中,所述FPGA还用于预处理相机拍摄的图像形成头信息,所述头信息用于对相机拍摄的图像进行解析并与所述图像数据整合形成数据块。
在本发明的一种实施方式中,所述第一缓存设备为基于V4L2框架搭建的缓存器V4L2_buffer。
在本发明的一种实施方式中,所述应用层设备包括内存和硬盘接口,所述内存用于接收所述第二缓存设备中的所述图像数据,并通过所述硬盘接口将所述图像数据发送至电连接所述硬盘接口的硬盘。
在本发明的一种实施方式中,所述硬盘接口为SATA接口。
在本发明的一种实施方式中,所述内存还用于向所述第二缓存设备提供地址,以供所述第二缓存设备将其存储的所述图像数据拷贝至与所述地址匹配的存储区域。
在本发明的一种实施方式中,所述内存具体用于提供虚拟堆内存,并将与所述虚拟堆内存对应的指针发送至所述第二缓存设备。
在本发明的一种实施方式中,所述虚拟堆内存是通过调用在C语言中的内存分配函数malloc函数而获取的。
在本发明的一种实施方式中,所述第二缓存设备存储的所述图像数据是通过调用在C语言中的内存拷贝函数memcpy函数而实现将其拷贝至所述内存的。
采用本发明实施例提供的基于图像处理的数据传输***,实现了图像数据在内存中传输效率的明显提升,满足了大规模图像数据及时处理的需求。
通过以下参考附图的详细说明,本发明的其它方面和特征变得明显。但是应当知道,该附图仅仅为解释的目的设计,而不是作为本发明的范围的限定,这是因为其应当参考附加的权利要求。还应当知道,除非另外指出,不必要依比例绘制附图,它们仅仅试图概念地说明此处描述的结构和流程。
附图说明
下面将结合附图,对本发明的具体实施方式进行详细的说明。
图1为本发明实施例提供的一种基于图像处理的数据传输***结构示意图;
图2为本发明实施例提供的一种基于V4L2框架的内存数据流向示意图;
图3为现有技术中的内存数据传输映射方法示意图;
图4为本发明实施例提供的内存数据传输映射方法示意图;
图5为本发明实施例提供的内存数据在硬件设备中的传输过程示意图;
图6为本发明实施例提供的一种基于图像处理的数据传输***对图像数据调度的流程示意图;
图7为本发明实施例提供的一种由DMA控制器DMAC来控制DMA传输的流程图;
图8为本发明实施例提供的一种ARM芯片与FPGA芯片的连接结构示意图;
图9为本发明实施列提供的一种数据块的结构示意图;
图10为本发明实施例提供的另一种基于图像处理的数据传输***;
图11为本发明实施例提供的一种CSI接口在Gated Mode时的工作时序图;
图12为本发明实施例提供的一种CSI接口在Non-Gated Mode时的工作时序图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
实施例一
请参见图1,图1为本发明实施例提供的一种基于图像处理的数据传输***结构示意图,该***包括:
硬件层设备,用于预处理相机拍摄的图像形成图像数据并将所述图像数据缓存至第一缓存设备;
内核层设备,用于提取所述图像数据并分级存放至多个第二缓存设备;
应用层设备,用于从所述第二缓存设备中提取所述图像数据,以实现图像数据从所述硬件层设备到所述应用层设备的传输。
进一步地,在上述实施方式的基础上,所述硬件层设备包括依次电连接的FPGA(Field-Programmable Gate Array,现场可编程门阵列)、多个CSI接口(COMS SensorInterface,相机串行接口)、SFMC(Sensor Multifile Controller,传感器多线程控制器)、多个IDMA(Image Direct Memory Access,图像直接内存存取)寄存器、及所述第一缓存设备,其中:
所述FPGA用于预处理相机拍摄的图像形成图像数据,并通过所述多个CSI接口将所述图像数据发送至所述SFMC;
所述SFMC用于缓存经述多个CSI接口发送的所述图像数据,并将所述图像数据同时发送至所述多个IDMA寄存器;优选地,所述多个IDMA寄存器中的任意一个均包括FIFO存储器。
所述多个IDMA寄存器用于分别存储与所述CSI接口匹配的图像数据,并将所述图像数据发送至所述第一缓存设备。
在其中一个实施方式中,CSI接口可用于收集视频输出设备的数据。SFMC是CSI接口与IDMAC之间的一个缓冲区,能够将多路(例如两路)CSI通道数据同时送给IDMAC。
在其中的一个实施方式中,每一帧通过CSI的数据通过SFMC的映射寄存器能够映射到多个(例如4个)IDMAC数据接收通道中的一个通道,并且每一个DMA(Direct MemoryAccess,直接内存存取)数据接收通道都有一个独立的FIFO存储器,可以通过AHB(AdvancedHigh Performance Bus)总线将图像数据搬运到缓冲区中。
进一步地,在上述实施方式的基础上,所述FPGA还用于预处理相机拍摄的图像形成头信息,所述头信息用于对相机拍摄的图像进行解析并与所述图像数据整合形成数据块。具体的解析工作一般由后端图像解析***进行。本实施方式形成的数据块,有利于后端解析***解析不同分辨率的图像,一种具体的数据块的详细结构信息在后续实施例中有详细解释,在此不再赘述。
进一步地,在上述实施方式的基础上,所述第一缓存设备为基于V4L2框架搭建的缓存器V4L2_buffer。优选地,这种内存的属性是DMA缓存。
V4L2(Video4Linux2)是Linux内核中关于视频设备的驱动框架,为上层(应用层)应用访问底层(内核层)的视频设备提供了统一接口。底层可以通过DMA(Direct MemoryAccess,直接内存存取)的方式从硬件接口获取数据。一般来说,V4L2框架中为了方便对内存进行管理,防止CPU的Cache缓存不一致的情况发生,一般使用一致性的DMA缓存。
当一个任务(进程)执行***调用而陷入内核代码中执行时,则称该进程处于内核运行态(内核态)。在内核态下,CPU可执行任何指令。当进程在执行用户任务代码时,则称其处于用户运行态(用户态)。用户态不能访问内核空间,包括代码和数据。
在V4L2框架下,对于硬件接口数据的获取是由内核层的驱动实现的,主要过程为内核申请DMA一致性缓存,通过DMA方式从I/O接口获取数据。具体过程请参见图2,图2为本发明实施例提供的一种基于V4L2框架的内存数据流向示意图。在输入模式的情况下,检测到有数据,即可开始接收数据。在输出模式的情况下,数据接收完毕,可以给用户使用。在用户空间获取数据后,应用程序即可使用该数据。
应用层需要对数据进行处理或者存储,因此应用层通过IOCTL:VIDIOC_DQBUF获取内核层数据,IOCTL:VIDIOC_QBUF把缓冲区放入到空闲队列。具体地,应用程序从视频采集输出队列中取出已含有采集数据的帧缓冲区。函数为ioctl(fd_v4l,VIDIOC_DQBUF,,&buf),应用程序处理该帧缓冲区的原始视频数据。VIDIOC_DQBUF为ioctl函数的一个参数。一个缓冲区可以有三种状态:
第一种状态:在驱动的传入队列中,驱动程序将会对此队列中的缓冲区进行处理,用户空间通过IOCTL:VIDIOC_QBUF把缓冲区放入到队列。对于一个视频捕获设备,传入队列中的缓冲区是空的,驱动会往其中填充数据;
第二种状态:在驱动的传出队列中,这些缓冲区已由驱动处理过,对于一个视频捕获设备,缓存区已经填充了视频数据,正等用户空间来认领;
第三种状态:用户空间状态的队列,已经通过IOCTL:VIDIOC_DQBUF传出到用户空间的缓冲区,此时缓冲区由用户空间拥有,驱动无法访问。
在现有技术中,对内核态内存的访问方式主要有两种:
方式一:read和write,是基本帧IO访问方式,通过read读取每一帧数据,数据需要在内核和用户之间拷贝,这种方式访问速度可能会非常慢。具体实现过程是用户层将指针传给内核层之后,使用copy_to_user函数将内核层内存复制给应用层内存。
方式二:内存映射缓存区,在内核空间开辟缓存区,应用层通过mmap函数***调用将内核空间缓存区映射到用户地址空间。被mmap函数映射的区域可以是DMA区域,也可以是vmalloc函数创建的虚拟缓存区,也可以是IO缓存(例如硬件FIFO)。在其中的一个实施方式中,CameraSensor捕捉到图像数据通过并口传输到CAMIF(camera interface),CAMIF可以对图像数据进行调整(翻转、裁剪和格式转换等)。然后DMA控制器设置DMA通道请求AHB将图像数据传到分配好的DMA缓冲区。待图像数据传输到DMA缓冲区之后,mmap操作把缓冲区映射到用户空间,应用就可以直接访问缓冲区的数据。
经过大量测试,结果为通过read调用底层copy_to_user函数至应用层速度为38MB/s。mmap后内存拷贝(memcpy)速度约为67MB/s(同时在向SSD硬盘中写入数据,在IMX6Q平台下测试)。具体的映射过程请参见图3,图3为现有技术中的内存数据传输映射方法示意图。
进一步地,在上述实施方式的基础上,所述应用层设备包括内存和硬盘接口,所述内存用于接收所述第二缓存设备中的所述图像数据,并通过所述硬盘接口将所述图像数据发送至电连接所述硬盘接口的硬盘。
进一步地,在上述实施方式的基础上,所述硬盘接口为SATA接口。
进一步地,在上述实施方式的基础上,所述内存还用于向所述第二缓存设备提供地址,以供所述第二缓存设备将其存储的所述图像数据拷贝至与所述地址匹配的存储区域。
在本发明提供的一个实施方式中,所述内存具体用于提供虚拟堆内存,并将与所述虚拟堆内存对应的指针发送至所述第二缓存设备。
在本发明提供的一个实施方式中,所述虚拟堆内存是通过调用在C语言中的内存分配函数malloc函数而获取的。
在本发明提供的一个实施方式中,所述第二缓存设备存储的所述图像数据是通过调用在C语言中的内存拷贝函数memcpy函数而实现将其拷贝至所述内存的。
在本发明提供的一个实施方式中,在用户空间通过malloc()函数在堆上申请连续虚拟内存,将用户空间的指针传人内核空间,在内核空间使用memcpy()函数将数据拷贝到该地址,也就是将数据拷贝至应用层。这种做法不需要mmap()调用。经过大量实验,采用mmap方式的内存拷贝(memcpy)速度约为67MB/s(同时在向SSD硬盘中写入数据,在IMX6Q平台下测试)。而使用本发明提供的方式,则可以将速度提升为82MB/s左右,数据传输效率有明显提升。
根据V4L2现有驱动框架,将图像数据的信息存储在结构体struct v4l2_buffer中,具体的一种实现方式可以为:
在本实施方式中,index为缓存编号,type为视频捕获模式,bytesused为缓存中已使用空间大小,flags为缓存当前状态(常见值有V4L2_BUF_FLAG_MAPPED、V4L2_BUF_FLAG_QUEUED或V4L2_BUF_FLAG_DONE,分别代表当前缓存已经映射、缓存可以采集数据、缓存可以提取数据),timestamp为时间戳,sequence为缓存序号,memory为缓存使用方式,offset为当前缓存与内存区起始地址的偏移,length为缓存大小,reserved用于保留给用户使用。
在本发明提供的实施方式中,将reserved传入用户空间地址,input传入需要从内核空间中取出数据的长度,在程序请求数据时,将地址和长度传入,一种具体的具体实现为:
struct v4l2_buffer buf;
//获取数据时
buf.Reserved=(__u32)user_pointer;//user_pointer为用户空间地址
buf.Input=len;//len为需要拷贝的长度
ioctl(csi_fd,VIDIOC_DQBUF,&buf);//申请数据,将buf传入内核层
ioctl(csi_fd,VIDIOC_QBUF,&buf);//申请结束
相应的在内核层中,需要对应的驱动支持,对于驱动,具体的,在用户空间调用IOCTL:VIDIOC_DQBUF时,内核层会调用到static int mxc_v4l_dqueue(cam_data*cam,struct v4l2_buffer*buf)函数。调用memcpy函数将数据拷贝至应用层:
memcpy((char*)buf->reserved,virframedata,buf->input),其中virframedata定义为static char virframedata[VIR_FRAME_DATA_BYTE_NUM],是定义在静态存储区的内存。请参见图4,图4为本发明实施例提供的内存数据传输映射方法示意图。本发明实施例通过内存拷贝的方式将数据从内核层的DMA缓存拷贝至应用层的虚拟内存(例如,可以为ARM上的DDR3)中。采用本发明实施例提供的基于图像处理的数据传输***,实现了图像数据在内存中传输效率的明显提升,满足了大规模图像数据及时处理的需求。
实施例二
本实施例对本发明实施例提供的内存理机制及数据的调度过程做详细说明。
FPGA将图像数据发送至CSI接口后,将触发DMA过程的中断,DMA控制器将数据从I/O缓冲区直接搬运至内存中,随后应用程序读图像数据信息以进行数据进行复原。需要保存数据时,将复原的数据写入硬盘中,同时可以对内存中的数据进行处理并送至HDMI显示。请参考图5,图5为本发明实施例提供的内存数据在硬件设备中的传输过程示意图。
Linux对内存的管理比较灵活,***会充分利用所有的内存资源,将近期从硬盘中调用过的数据写入内存,再次需要使用数据时,可直接从内存中读取,减少数据读取时间,该方式能够提高Linux***数据访问能力。综上所述,Linux***更能发挥硬件资源的性能。
Linux通常会将空闲的物理内存作为高速缓冲,例如Linux内核为了减少对磁盘的物理操作,会在物理内存中开辟一片区域,该区域被称为页高速缓存Cache。Cache的主要作用是作为数据中转站,把磁盘内数据复制到这片区域供应用程序调用,从而大大减少程序对磁盘的访问,提高数据的交换速度。
Linux***中的内存可分为物理内存和虚拟内存,物理内存是***板载的硬件资源,如DDR2/DDR3等,其大小由这些硬件资源决定,具有较高的访问速度。而虚拟内存是***外设的硬件资源,用于克服物理内存不足,具体地,***会在磁盘内开辟出一片空间,称之为交换空间Swap Space。***利用交换空间虚拟出一块逻辑内存,这块内存被称为虚拟内存。当物理内存不足时,内核会将暂时不用的数据信息(内存块)移到交换空间,将释放的内存用以其他目的,当需要这部分数据信息时会重新从交换空间移入物理内存。
请参考图6,图6为本发明实施例提供的一种基于图像处理的数据传输***对图像数据调度的流程示意图。在IDMAC数据传输阶段,首先,FPGA将图像数据通过CSI接口发送给ARM芯片,本实施例采用的ARM芯片i.MX6Q有两个CSI接口,它们都连接在SMFC(SensorMultifile Controller,传感器多线程控制器)上,SFMC是CSI接口与IDMAC(Image DMAController,图像DMA控制器)之间的一个缓冲区,能够将两路CSI通道数据同时送给IDMAC。通过SFMC的映射寄存器,每一帧CSI数据能够映射到4个IDMAC通道其中的一个通道,并且每一个DMA通道都有一个独立的FIFO,可以通过AHB(Advanced High Performance Bus)总线将数据搬运到所有外设缓冲区。
通常,在一个应用中,数据搬运过程耗费CPU较多的时间,占用CPU大量资源,极易降低***性能。本发明实施例采用的DMA的方式可以实现外设与***内存之间的数据交换,而不占用CPU资源,避免CPU执行实际的数据传输任务,而去执行其他任务,从而大大提高***的处理性能。请参考图7,图7为本发明实施例提供的一种由DMA控制器DMAC来控制DMA传输的流程图。
在内核及用户内存数据传输阶段,接下来Linux内核会申请一片内存作为数据的缓冲区Buffer,IDMAC将数据搬运到这片缓冲区内。内核通过函数申请内存后,建立三个队列对该部分内存进行管理:struct list_head ready_q;struct list_head done_q;struct list_head working_q;
这三个队列分别称为ready队列、done队列和working队列。首先,IDMAC将数据搬运到一片缓冲区Buffer后,DMA产生中断,调用回调函数,具体可以如下:
static void camera_callback(u32mask,void*dev){
……
if(done_frame->buffer.flags&V4L2_BUF_FLAG_QUEUED){
done_frame->buffer.flags|=V4L2_BUF_FLAG_DONE;
done_frame->buffer.flags&=~V4L2_BUF_FLAG_QUEUED;
/*Added to the done queue*/
list_del(cam->working_q.next);
list_add_tail(&done_frame->queue,&cam->done_q);
/*Wake up the queue*/
cam->enc_counter++;
wake_up_interruptible(&cam->enc_queue);
}else
pr_err("ERROR:v4l2capture:camera_callback:"
"buffer not queued\n");
}
……
}
回调函数将填充有数据的Buffer从working队列移到done队列中,同时将ready队列中一块可用的Buffer放入working队列;应用程序会调用ioctl(fd,VIDIOC_DQBUF,&buf)函数获取一块已经填充图像数据的Buffer,复制完Buffer内的数据后,调用ioctl(fd,VIDIOC_QBUF,&buf)将这块Buffer重新放入ready队列中循环使用。通过这个机制,能不断地将图像数据从I/O缓冲区搬运到内存中,通过设计多块Buffer,保证数据能够有效循环;另外,由于FPGA发送CSI数据帧的速率会有一定的波动,每帧数据会占用一个Buffer,若Buffer数量过少,则导致数据无Buffer可写入,CPU等待空闲Buffer后才会响应DMA中断,进而导致后续到达I/O缓冲区的数据丢失,因此,申请多块Buffer能够降低数据丢帧,一定程度上增加了***的带宽。
应用程序将数据从内核内存中搬运到应用层内存中,并且这两部分分别处于不同的物理内存中,然后应用程序对每一帧数据进行解析、分类,将这一帧数据按照最初传递的原始图像参数进行恢复,将恢复的原始数据通过write()函数写入硬盘文件中。在内存搬运过程中,应用程序利用memcpy()函数进行两块内存之间的数据交换,是一种有效的搬运方式。
利用memcpy()函数进行数据搬运时,需要对内存进行映射。内存映射,简言之就是将应用层的一段内存区域与内核空间内的内存区域建立一种关系,用户可以使用应用层指针对内核内存进行读写。这种方案对于内核层与应用层之间进行大量数据传输操作来说,效率是非常高的。mmap()函数是Linux***下的一个调用函数,能够将同一片内存区域映射到不同的应用层,实现多个进程间的内存共享;而且进程可以将不同文件映射到地址空间,不用调用read()、write()等函数就可以对其进行访问。mmap()函数并不分配实际物理内存,只是将文件映射到调用进程的地址空间里,消耗虚拟内存,此时就可以用memcpy()函数进行写文件操作。
图像数据搬运的现有技术是将内核层中的内存映射到应用层,在应用层中实现memcpy()操作,而本发明实施例提供的技术方案,利用***调用,将应用层中内存的地址传到内核层,在内核层中实现memcpy()操作。与现有技术相比而言,而本发明实施例提供的技术方案在内核中实现memcpy()操作,因为内核具有较高的权限及效率,因此,数据搬运效率比现有技术提高15%左右。
实施例三
本实施例实在实施例一及实施例二的基础上对本发明的原理及实现方式作进一步的说明。在本实施例中,具体的,本发明实施例提供的基于图像处理的数据传输***包括FPGA和ARM芯片,即FPGA通过CSI接口与ARM芯片相连。在一种实施方式中,经过相机拍摄后的信号需转换成TTL信号以便FPGA进行处理。在一种实施方式中,具体可由DS90CR288A芯片将相机拍摄后的信号转化成TTL信号,优选地,TTL信号包括行信号与场信号。DS90CR288A芯片接收到通过CameraLink接口传输的信号(如LVDS信号)后,将其中的数据线和时钟线(例如,4对数据线及1对时钟线)转换为28位并行的TTL信号,其中包括24位数据信号、1位行信号HSYNC、1位场信号VSYNC、1位数据有效信号及1位扩展信号;转换完成后,DS90CR288A芯片将TTL信号传输至FPGA芯片。随后,所述FPGA预处理相机拍摄的图像形成图像数据,具体地,FPGA可将其中的24位数据信号进行编码;获取每个数据帧的第一个有效像素在源图像中的位置信息;通过统计已发送的数据块的数目以获取源图像的CSI帧号信息;在场信号有效期间,通过统计行信号拉高的次数以获取源图像的行分辨率信息;在行信号有效期间;通过统计场信号有效数据的个数以获取源图像的场分辨率信息;通过计算一定时间内场信号的有效次数以获取源图像的帧率信息;通过比较源图像的当前像素值与当前像素最大值以获取源图像的像素最大值信息;通过比较源图像的当前像素值与当前像素最小值以获取源图像的像素最小值信息;
此外,由于ARM芯片还通过3个GPIO接口连接到FPGA芯片,具体请参见图8,图8为本发明实施例提供的一种ARM芯片与FPGA芯片的连接结构示意图,FPGA芯片通过检测3个GPIO接口来判断当前图像的采样位深信息,其中,当3个GPIO接口的状态为000时,表示当前图像的采样位深为8位,当3个GPIO接口的状态为001时,表示当前图像的采样位深为10位,当3个GPIO接口的状态为010时,表示当前图像的采样位深为12位,当3个GPIO接口的状态为100时,表示当前图像的采样位深为14位,当3个GPIO接口的状态为101时,表示当前图像的采样位深为16位,当3个GPIO接口的状态为110时,表示当前图像的采样位深为8位,当3个GPIO接口的状态为111时,表示当前图像的采样位深为8位,若采样位深为8位,则后面的有效数据单字节为一个像素数据,若采样位深为其他,则双字节表示一个像素数据;
在获取上述信息后,FPGA芯片将上述信息作为头信息并与图像数据整合形成数据块,该数据块为根据后端传输端口定义的固定大小的数据包,若一帧图像不足以填充一个数据包时,则用后一帧图像的前一部分图像数据进行填充,以此类推。
具体地,请参见图9,图9为本发明实施列提供的一种数据块的结构示意图;其中,第一单元为帧头信息,为固定值36’h01,用于表示第一行的开始;第二单元为CSI帧号信息,用于表示该数据帧的排列序号;第三单元为帧率信息,用于后端控制源图像的播放速率;第四单元为行分辨率信息、第五单元为场分辨率信息,用于后端进行解析以还原为源图像;第六单元为采样位深信息、第七单元为像素最大值信息、第八单元为像素最小值信息,用于表征后端显示源图像时的显示效果;第九单元为位置信息,表征每个数据帧的第一个有效像素在源图像中的位置信息,作为后端解析数据块时起始位置;第十单元为图像数据;其中,第二单元至第九单元为头信息部分。
请参见图10,图10为本发明实施例提供的另一种基于图像处理的数据传输***;其中,FPGA芯片通过CSI接口将数据块传输至ARM芯片;其中,CSI接口主要包含五个信号:Clock,Data_en,Vsync,Hsync,Data;CSI接口有两种工作模式:Gated Mode,Non-GatedMode;当CSI接口工作在Gated Mode时,其工作时序请参见图11,图11为本发明实施例提供的一种CSI接口在Gated Mode时的工作时序图,其中,Vsync用于指示每一帧起始,Hsync用于指示每一行起始,在Clock的下降沿对数据进行采样;当CSI接口工作在Non-Gated Mode时,其工作时序请参见图12,图12为本发明实施例提供的一种CSI接口在Non-Gated Mode时的工作时序图。在本发明的实施例中,采用CSI接口的Gated Mode工作模式。
ARM芯片通过CSI接口接收到FPGA芯片传输的数据块后,根据每个数据帧的第一个有效像素在源图像中的位置信息、源图像的CSI帧号信息、源图像的行分辨率信息及源图像的场分辨率信息,将图像数据解析为独立的每一帧图像,并按顺序进行存储或者传输;FPGA芯片在传输数据时要告知ARM芯片当前帧为CSI接口接收的第几帧,以及每帧数据第一个有效像素在原始图像中的位置,即使数据丢失,也能根据数据头的信息恢复出原始图像;此外,ARM芯片还根据采样位深信息、源图像的像素最大值信息及源图像的像素最小值信息,使得源图像的显示效果达到最佳。
本发明实施例提供的一种基于图像处理的数据传输***,在源图像传输过程中,FPGA先将源图像由TTL信号形成携带特定信息的数据块,再通过ARM芯片解析所述数据块以还原为源图像,通过这种方式实现了任意分辨率的相机采集到的信息都可以在后端的固定传输端口中进行传输,实现了自适应分辨率,扩大了图像数据处理***的应用范围。
综上,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制,本发明的保护范围应以所附的权利要求为准。

Claims (10)

1.一种基于图像处理的数据传输***,其特征在于,包括:
硬件层设备,用于预处理相机拍摄的图像形成图像数据并将所述图像数据缓存至第一缓存设备;
内核层设备,用于提取所述图像数据并分级存放至多个第二缓存设备;
应用层设备,用于从所述第二缓存设备中提取所述图像数据,以实现图像数据从所述硬件层设备到所述应用层设备的传输。
2.如权利要求1所述的数据传输***,其特征在于,所述硬件层设备包括依次电连接的FPGA、多个CSI接口、SFMC、多个IDMA寄存器、及所述第一缓存设备,其中:
所述FPGA用于预处理相机拍摄的图像形成图像数据,并通过所述多个CSI接口将所述图像数据发送至所述SFMC;
所述SFMC用于缓存经述多个CSI接口发送的所述图像数据,并将所述图像数据同时发送至所述多个IDMA寄存器;
所述多个IDMA寄存器用于分别存储与所述CSI接口匹配的图像数据,并将所述图像数据发送至所述第一缓存设备。
3.如权利要求2所述的数据传输***,其特征在于,所述FPGA还用于预处理相机拍摄的图像形成头信息,所述头信息用于对相机拍摄的图像进行解析并与所述图像数据整合形成数据块。
4.如权利要求3所述的数据传输***,其特征在于,所述第一缓存设备为基于V4L2框架搭建的缓存器V4L2_buffer。
5.如权利要求4所述的数据传输***,其特征在于,所述应用层设备包括内存和硬盘接口,所述内存用于接收所述第二缓存设备中的所述图像数据,并通过所述硬盘接口将所述图像数据发送至硬盘。
6.如权利要求5所述的数据传输***,其特征在于,所述硬盘接口为SATA接口。
7.如权利要求5所述的数据传输***,其特征在于,所述内存还用于向所述第二缓存设备提供地址,以供所述第二缓存设备将其存储的所述图像数据拷贝至与所述地址匹配的存储区域。
8.如权利要求7所述的数据传输***,其特征在于,所述内存具体用于提供虚拟堆内存,并将与所述虚拟堆内存对应的指针发送至所述第二缓存设备。
9.如权利要求8所述的数据传输***,其特征在于,所述虚拟堆内存是通过调用在C语言中的内存分配函数malloc函数而获取的。
10.如权利要求9所述的数据传输***,其特征在于,所述第二缓存设备存储的所述图像数据是通过调用在C语言中的内存拷贝函数memcpy函数而实现将其拷贝至所述内存的。
CN201710587357.8A 2017-07-18 2017-07-18 基于图像处理的数据传输*** Active CN107527317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710587357.8A CN107527317B (zh) 2017-07-18 2017-07-18 基于图像处理的数据传输***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710587357.8A CN107527317B (zh) 2017-07-18 2017-07-18 基于图像处理的数据传输***

Publications (2)

Publication Number Publication Date
CN107527317A true CN107527317A (zh) 2017-12-29
CN107527317B CN107527317B (zh) 2020-11-10

Family

ID=60748361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710587357.8A Active CN107527317B (zh) 2017-07-18 2017-07-18 基于图像处理的数据传输***

Country Status (1)

Country Link
CN (1) CN107527317B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228490A (zh) * 2018-01-26 2018-06-29 武汉精测电子集团股份有限公司 一种基于pcie卡高速数据传输的驱动方法
CN109671012A (zh) * 2018-12-11 2019-04-23 北京像素软件科技股份有限公司 图形引擎中的数据处理方法及装置
CN109800181A (zh) * 2018-12-12 2019-05-24 深圳市景阳科技股份有限公司 一种基于磁盘的数据写入方法、数据写入装置及终端设备
CN110248227A (zh) * 2019-06-19 2019-09-17 福州瑞芯微电子股份有限公司 一种高效的影像显示方法和装置
CN110728773A (zh) * 2019-10-15 2020-01-24 百度在线网络技术(北京)有限公司 一种图像存储的方法、装置和电子设备
CN111327758A (zh) * 2018-12-17 2020-06-23 中兴通讯股份有限公司 摄像头共享方法及装置
CN111447370A (zh) * 2020-05-19 2020-07-24 Oppo广东移动通信有限公司 摄像头访问方法、访问装置、终端设备及可读存储介质
CN111586488A (zh) * 2020-06-09 2020-08-25 创新奇智(北京)科技有限公司 一种视频流处理方法、装置、电子设备及存储介质
CN112307527A (zh) * 2019-08-01 2021-02-02 周兴昌 一种传输数据的方法及结构
CN112422832A (zh) * 2020-11-20 2021-02-26 展讯通信(天津)有限公司 图像数据的传输方法、移动终端及存储介质
CN113066431A (zh) * 2021-03-09 2021-07-02 昀光微电子(上海)有限公司 一种数据传输设备、方法
CN115185711A (zh) * 2022-09-06 2022-10-14 湖北芯擎科技有限公司 基于虚拟摄像头的数据交互方法、装置、电子设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2893844Y (zh) * 2005-09-23 2007-04-25 厦门火炬福大显示技术有限公司 一种可显示彩***图像的场致发射显示器集成驱动电路
CN201928358U (zh) * 2010-12-13 2011-08-10 交通运输部公路科学研究所 基于双摄像机的车载视频拼接装置
CN102780892A (zh) * 2011-05-09 2012-11-14 株式会社3D诺里 三维图像处理方法及实施该方法的便携式三维显示设备
CN104333762A (zh) * 2014-11-24 2015-02-04 成都瑞博慧窗信息技术有限公司 一种视频解码方法
CN105827942A (zh) * 2015-09-24 2016-08-03 维沃移动通信有限公司 一种快速拍照方法及电子设备
CN106231246A (zh) * 2016-07-21 2016-12-14 重庆大学 电梯轿厢内高清视频采集传输分析装置及工作方法、以及视频采集分析特征点方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2893844Y (zh) * 2005-09-23 2007-04-25 厦门火炬福大显示技术有限公司 一种可显示彩***图像的场致发射显示器集成驱动电路
CN201928358U (zh) * 2010-12-13 2011-08-10 交通运输部公路科学研究所 基于双摄像机的车载视频拼接装置
CN102780892A (zh) * 2011-05-09 2012-11-14 株式会社3D诺里 三维图像处理方法及实施该方法的便携式三维显示设备
CN104333762A (zh) * 2014-11-24 2015-02-04 成都瑞博慧窗信息技术有限公司 一种视频解码方法
CN105827942A (zh) * 2015-09-24 2016-08-03 维沃移动通信有限公司 一种快速拍照方法及电子设备
CN106231246A (zh) * 2016-07-21 2016-12-14 重庆大学 电梯轿厢内高清视频采集传输分析装置及工作方法、以及视频采集分析特征点方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228490A (zh) * 2018-01-26 2018-06-29 武汉精测电子集团股份有限公司 一种基于pcie卡高速数据传输的驱动方法
CN109671012A (zh) * 2018-12-11 2019-04-23 北京像素软件科技股份有限公司 图形引擎中的数据处理方法及装置
CN109800181A (zh) * 2018-12-12 2019-05-24 深圳市景阳科技股份有限公司 一种基于磁盘的数据写入方法、数据写入装置及终端设备
CN111327758A (zh) * 2018-12-17 2020-06-23 中兴通讯股份有限公司 摄像头共享方法及装置
WO2020125572A1 (zh) * 2018-12-17 2020-06-25 中兴通讯股份有限公司 摄像头共享方法及装置
CN111327758B (zh) * 2018-12-17 2022-08-02 中兴通讯股份有限公司 摄像头共享方法及装置
CN110248227A (zh) * 2019-06-19 2019-09-17 福州瑞芯微电子股份有限公司 一种高效的影像显示方法和装置
CN112307527A (zh) * 2019-08-01 2021-02-02 周兴昌 一种传输数据的方法及结构
CN110728773A (zh) * 2019-10-15 2020-01-24 百度在线网络技术(北京)有限公司 一种图像存储的方法、装置和电子设备
CN111447370B (zh) * 2020-05-19 2021-07-27 Oppo广东移动通信有限公司 摄像头访问方法、访问装置、终端设备及可读存储介质
CN111447370A (zh) * 2020-05-19 2020-07-24 Oppo广东移动通信有限公司 摄像头访问方法、访问装置、终端设备及可读存储介质
CN111586488A (zh) * 2020-06-09 2020-08-25 创新奇智(北京)科技有限公司 一种视频流处理方法、装置、电子设备及存储介质
CN112422832A (zh) * 2020-11-20 2021-02-26 展讯通信(天津)有限公司 图像数据的传输方法、移动终端及存储介质
CN112422832B (zh) * 2020-11-20 2022-07-15 展讯通信(天津)有限公司 图像数据的传输方法、移动终端及存储介质
CN113066431A (zh) * 2021-03-09 2021-07-02 昀光微电子(上海)有限公司 一种数据传输设备、方法
CN115185711A (zh) * 2022-09-06 2022-10-14 湖北芯擎科技有限公司 基于虚拟摄像头的数据交互方法、装置、电子设备及介质
CN115185711B (zh) * 2022-09-06 2023-10-10 湖北芯擎科技有限公司 基于虚拟摄像头的数据交互方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN107527317B (zh) 2020-11-10

Similar Documents

Publication Publication Date Title
CN107527317A (zh) 基于图像处理的数据传输***
CN101267361B (zh) 一种基于零拷贝技术的高速网络数据包捕获方法
EP2871580B1 (en) Programmed input/output mode
US6868087B1 (en) Request queue manager in transfer controller with hub and ports
US10146468B2 (en) Addressless merge command with data item identifier
US20240143392A1 (en) Task scheduling method, chip, and electronic device
CN112948293A (zh) 一种多用户接口的ddr仲裁器及ddr控制器芯片
CN114399035A (zh) 搬运数据的方法、直接存储器访问装置以及计算机***
TW200945033A (en) Memory allocation and access method and device using the same
US9846662B2 (en) Chained CPP command
US9703739B2 (en) Return available PPI credits command
US10448020B2 (en) Intelligent MSI-X interrupts for video analytics and encoding
CN115328832B (zh) 一种基于pcie dma的数据调度***与方法
US9804959B2 (en) In-flight packet processing
US20110283068A1 (en) Memory access apparatus and method
RU2643622C1 (ru) Вычислительный модуль
US20140146067A1 (en) Accessing Configuration and Status Registers for a Configuration Space
CN112637602B (zh) 一种jpeg接口及数字图像处理***
US9990307B1 (en) Split packet transmission DMA engine
CN109800035A (zh) 一种算法集成服务框架***
US9548947B2 (en) PPI de-allocate CPP bus command
US11770215B2 (en) Transceiver system with end-to-end reliability and ordering protocols
CN114399034B (zh) 用于直接存储器访问装置的数据搬运方法
Walsch Architecture and prototype of a real-time processor farm running at 1 MHz
US9699107B2 (en) Packet engine that uses PPI addressing

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