一种高分辨率图像采集与处理装置的制作方法

文档序号:11327456阅读:460来源:国知局
一种高分辨率图像采集与处理装置的制造方法

本发明涉及图像处理、安防、视频监控等相关领域,尤其涉及一种高分辨率图像采集与处理装置。



背景技术:

随着计算机视觉与图像处理技术的不断发展及其应用领域的扩大,人们对于高分辨率、高清晰度视频/图像的需求也不断增大。众所周知,固定分辨率的图像在经过多级放大以后,会出现失真的情况,研究人员针对这种情况,一般有多种改进方案,第一种方案是前端采集的图像分辨率固定不变,在后端处理的时候采取改进插值算法等措施,使得图像在一定程度上可以继续,使图像失真保持在一个可以容忍的范围,但是这种方法的不足之处在于,在图像继续放大到一定倍数的情况下,还会出现噪点,即马赛克现象。另外一种改进方法就是通过提高前端ccd/cmos图像传感器采集图像的分辨率,因为分辨率提高,在同尺寸显示屏幕大小的情况下,每英寸所拥有的像素点数目越多即密度越高,单位像素点就会比较小,图像细节也就会越丰富,所呈现出的清晰度也越高。

目前,传输高分辨率图像多采用串行接口,如lvds(lowvoltagedifferentialsignaling,低电压差分接口)接口,该接口采用差分传输,抗干扰强。每个通道的传输速率可达1gb/s,且传输距离远,可实现高速度、低功耗数据传输。针对视频图像处理的主流开发平台多采用dsp(digitalsignalprocessor)等处理器,若采用上述第二种改进方法,则需要采用具有高带宽视频输入接口的处理器,而众多性能相对较低的应用处理器,其视频输入接口很难满足高分辨率乃至超高分辨率图像传输像素时钟的需求,更无法达到实时处理高分辨率图像的需求。

当前,市场上存在可以直接采集高分辨率图像的fpga处理器,该处理器性能强大,可拥有高达64通道的lvds接口,高带宽,可以采集超高分辨率的图像数据,其内部集成高性能dsp核,也可以进行相关算法处理。然而这种芯片最大的不足在于价格昂贵,对于消费领域的产品来说,难以控制产品成本,且研发难度大。



技术实现要素:

为了克服已有图像处理装置的对高分辨率图像实时处理的能力较差、适用性较差、灵活性较差的不足,本发明提供一种实时处理高分辨率图像、适用性良好、灵活性较高的高分辨率图像采集与处理装置。

本发明解决其技术问题所采用的技术方案是:

一种高分辨率图像采集与处理装置,所述装置包括图像获取模块、lvds串并转换模块、数据映射模块、图像裁剪模块、多路同步模块、通信控制模块、图像处理模块、输出显示模块和外设。

所述图像获取模块,用于配置图像传感器的工作参数;

所述lvds串并转换模块,用于对lvds每个通道数据分别进行解串化,从串行数据流中恢复时钟信号,并解调还原数据;

所述数据映射模块,用于根据lvds高速传输协议,将各个差分通道解析出来的各比特数据进行对齐、解数据帧和组合映射操作;

所述图像裁剪模块,用于对高分辨率图像的裁剪与同步,包括时序控制单元、图像裁剪单元和存储单元;

所述时序控制单元,用于为裁剪出来的图像数据添加行、场信号,控制各个异步fifo读/写操作以及数据选择;

所述图像裁剪单元,用于解析和裁剪上述并行数据,去除图像数据的非有效数据部分,并根据主处理器的视频输入接口所能承受的最大输入时钟或带宽,对各行信号进行分割裁剪操作,最终输出裁剪后的多路小帧图像数据;

所述存储单元,用于实现对图像数据进行缓存,用于对映射模块输出的图像数据进行暂时的存储及缓冲,使用异步fifo缓冲实现,以及对裁剪模块输出的图像数据进行暂时的存储及缓冲;

所述多路同步模块,用于对上述多路小帧图像数的同步操作,将同步后的图像数据在同一时间并行传输给主处理器的视频输入接口;

所述通信控制模块,用于实现各处理器之间的通信;

所述图像处理模块,用于实现图像缩放处理;

所述输出显示模块,用于实现图像显示;

所述外设包括按键控制单元、指示灯、蜂鸣器和串行通信单元。

进一步,所述图像获取模块包括镜头,ccd/cmos图像传感器,图像采集单元;所述镜头是将拍摄景物在传感器上成像的器件,由多片透镜组成;所述ccd/cmos图像传感器是将捕捉到的光源信号转化为数字信号的设备;所述图像采集单元由可编程逻辑器件实现,通过对ccd/cmos图像传感器的工作参数进行配置,采集高分辨率的图像。

再进一步,所述图像获取模块中,所述工作参数包括输出的视频格式、分辨率、帧率、曝光率、增益以及像素输出频率。

更进一步,所述通信控制模块中,主处理器与fpga之间的通信,包括对分辨率和帧率参数配置要求,通信协议选用i2cspi或uart。

本发明的技术构思为:本发明提出使用fpga等可编程逻辑器件对高分辨率图像裁剪的方案,通过fpga对高分辨率图像进行采集、解析、裁剪、同步,以改善主处理器无法采集高分辨率图像的情况,既可以达到实时处理高分辨率图像的需求,又可以降低产品成本。

本发明提供一种基于高分辨率图像裁剪的方法以适应具有低带宽视频输入接口的应用处理器。具体来说,该系统根据应用处理器的视频输入端口所能承受的最大输入时钟频率/带宽,通过fpga(现场可编程门阵列)/pld(可编程逻辑器件)/cpld(复杂可编程逻辑器件)等对高分辨率图像进行解析及裁剪,再经过主处理器(带有isp的多个应用处理器,或者多个isp+带有多路视频输入接口的处理器)对裁剪后的图像进行相关处理,最后输出高清晰度图像,从而改善显示画质,提升用户体验。

本发明的有益效果主要表现在:充分利用fpga的并行处理能力,采用面积换速度、串/并转换等思想,实时处理高分辨率的图像,以适应各类具有视频接口的应用处理器,灵活性好。

附图说明

图1是本发明实施例中采集模块的结构示意图;

图2是本发明实施例中图像裁剪区域示意图;

图3是本发明实施例中高分辨率图像采集/处理装置的功能框图;

图4是本发明实施例中fpga内部功能实现框图;

图5是本发明实施例中待裁剪的原始的h/v信号示意图;

图6是本发明实施例中经过裁剪处理后输出的h/v信号示意图;

图7是本发明实施例中经过裁剪处理后输出的图像数据示意图;

图8是本发明实施例中多路同步原理示意图;

图9是本发明实施例中多路同步模块具体实现流程图;

图10是本发明实施例中经过多路同步模块同步后的h/v信号和图像数据示意图;

图11是本发明实施例中实现面积与速度互换原则实现示意图,

具体实施方式

下面结合附图对本发明作进一步描述。

参照图1~图11,一种高分辨率图像采集与处理装置,包括图像获取模块、lvds串并转换模块、数据映射模块、图像裁剪模块、多路同步模块、通信控制模块、图像处理模块、输出显示模块和外设。

所述图像获取模块,其主要作用是配置图像传感器的工作参数,包括输出的视频格式、分辨率、帧率、曝光率、增益以及像素输出频率等参数。该模块主要包括镜头,ccd/cmos图像传感器,图像采集单元。

镜头是将拍摄景物在传感器上成像的器件,由多片透镜组成,镜头的好坏直接影响采集图像的色彩还原性和层次感,镜头片数越多,成像就越真实。

所述ccd/cmos图像传感器是一种将捕捉到的光源信号转化为数字信号的设备,可以原始数据(rawdata)的格式输出。图像传感器是决定图像质量的最关键因素。

所述图像采集单元也可称为参数设置单元,可由可编程逻辑器件实现。主要通过对ccd/cmos图像传感器的工作参数进行配置,采集高分辨率的图像。

所述lvds串并转换模块由fpga供应商提供的ip核(intellectualpropertycore)完成,主要实现对lvds每个通道数据分别进行解串化,从串行数据流中恢复时钟信号,并解调还原数据。

所述数据映射模块,其主要作用是根据lvds高速传输协议,将各个差分通道解析出来的各比特数据进行对齐、解数据帧、组合映射等操作。该部分主要由ip核完成,最终输出原始的并行数据。

所述图像裁剪模块,其主要作用是实现对高分辨率图像的裁剪与同步。该模块主要包括时序控制单元,图像裁剪单元,存储单元。

所述时序控制单元,其主要作用是为裁剪出来的图像数据添加行、场信号,控制各个异步fifo读/写操作以及数据选择。

所述图像裁剪单元,其主要作用是解析和裁剪上述并行数据(剔除传感器中出来的ob(光学黑区)和dummy(哑元)的数据),去除图像数据的非有效数据部分,并根据主处理器的视频输入接口所能承受的最大输入时钟或带宽,对各行信号进行分割裁剪操作,最终输出裁剪后的多路小帧图像数据。

所述存储单元,其主要作用是实现对图像数据进行缓存。用于对映射模块输出的图像数据进行暂时的存储及缓冲,该部分主要使用异步fifo(firstinfirstout,先进先出队列)缓冲实现,以及对裁剪模块输出的图像数据进行暂时的存储及缓冲,该部分使用同步fifo实现。

所述多路同步模块,其主要作用是实现对上述多路小帧图像数的同步操作,将同步后的图像数据在同一时间并行传输给主处理器的视频输入接口。

所述通信控制模块,其主要作用是各处理器之间的通信。尤其指主处理器(主设备)与fpga(从设备)之间的通信。包括对分辨率、帧率等参数配置要求等等。通信协议可选用i2c(inter-integratedcircuit,i2c总线),spi(serialperipheralinterface),uart(universalasynchronousreceiver/transmitter)等。

所述图像处理模块,其主要作用是实现图像缩放等图像处理算法。

所述输出显示模块,其主要作用是实现图像显示,如液晶显示器或者hdmi等带有视频输出接口的显示设备。

所述外设,主要包括按键控制单元、指示灯、蜂鸣器、串行通信单元等。

如图1所示,为本采集模块的结构示意图,摄像头实际采集帧帧中采集物理区域的大小根据摄像头所处的水平面与采集区域的水平面之间的垂直距离确定,距离越大采集范围越大。

如图2所示,为本发明实施例中图像裁剪区域示意图,根据主处理器的视频输入接口所能承受的最大输入像素时钟fpclk,计算最少需要裁剪的个数s=fp/fpclk,其中,s为整数,fp为原始的像素时钟。图中阴影部分指裁剪出来的相邻两路图像的重叠区域。

值得说明的是,如图2所示,为解决裁剪后小帧图像边界明显、边界颜色差异的问题,对于输出yuv等格式的数据,需要根据码流存放的格式进行裁剪,以便于后端isp进行相关图像处理,因此每路图像的行分辨率(即裁剪长度)并非均匀的m/s。具体来说,每行第一路像素为原始图像的第1到第(m/s+z)个像素,每行第二路像素为原始图像的第(m/s-z)到第(2m/s+z)个像素,每行第三路像素为原始图像的第(2m/s-z)到第(3m/s+z)个像素,…,每行第s路像素为原始图像的第(s-z)到第s个像素,最终,相邻小帧图像边界像素重合,保证不会丢失边界的亮度/色度信息。例如:yuv422(yuyv排列)格式,每个像素点占2个字节,存放的码流顺序为:y0u0y1v1y2u2y3v3,…,则使z取1即可。为方便理解和计算,下文假设每行每路裁剪的像素数均为m/s个,因此下文所有提到的裁剪长度m/s需要分别对应上述实际分割出来的像素数量。

如图3所示,为实现整个高分辨率图像采集/处理装置的功能框图。

该装置及方法的核心部分通过fpga实现,其具体工作方式如下:

实施例1:

如图4所示,为fpga内部功能实现框图,主要模块包括lvds_video_rx模块串并转换模块a,信号映射rx_signal_mapping模块b,裁剪模块c,多路同步模块d。

lvds_video_rx模块a主要由fpga供应商提供的ip核完成,如lattice的iddrx核、altera的atllvds核等。由于各个通道的差分数据传输路径不同(如pcb走线长度等),最终导致通道之间出现传输延迟,因此,必须要根据lvds视频传输的协议,分别对每个差分通道传输的比特流进行解串,该模块正是实现单独通道的解串化,输出多路并行数据,根据对sensor的配置决定数据宽度如8bit或10bit。

rx_signal_mapping模块b也可参考fpga供应商提供的解决方案完成,主要作用是根据lvds高速传输协议,将接收模块对各个差分通道解析出来的数据进行位对齐、解数据帧、组合映射等操作,最终输出标准格式的并行图像数据。

如图5所示,为rx_signal_mapping模块输出的原始的h/v信号;rx_signal_mapping模块将输出m×n分辨率的图像(有效像素数),其中m为水平分辨率,表示水平方向上有m个像素点;n为垂直分辨率,表示垂直方向上有n个像素点(n行),并行raw格式hs/vs分别为原始的行、场信号,fp为该模块输出的原始的像素时钟。

值得说明的是,lvds解串化是一个复杂的任务,fpga供应商提供的ip核并局限于上述两个模块,这里只是根据该装置的特点,列举了其中两个关键模块,比如bit_alignment等模块在这里虽未说明,但也是实现该装置不可或缺的部分,都是实现lvds转并行数据的必要模块。

以上是对本实施例1中实现lvds串并转换的基本组成模块的简要阐述。下面再对如何实现像素级图像裁剪进行详细说明。

所述裁剪模块c主要采用s个异步fifo(afifo)实现,采用边写边读的方式,通过利用fpga内部有限的存储资源,进行逐行逐像素操作,主要采用内部计数的方式,把解串后的数字视频信号进行行同步提取,最终输出s路分辨率为m/s×n的图像。

异步fifo所需的最小深度值计算如下:

上述公式定义如下:

异步fifo深度afifo_depth:指该异步fifo可以存储多少个n位的数据;

写时钟频率w_clk:写操作所遵循的时钟,在每个时钟沿来临时写入数据;

读时钟频率r_clk:读操作所遵循的时钟,在每个时钟沿来临时读出数据;

在写时钟周期里,每b个时钟周期会有a个数据写入afifo;

在读时钟周期里,每y个时钟周期会有x个数据读出afifo。

异步fifo的宽度n:一次读写操作的数据位;

本系统中异步fifo宽度n为10bit;写时钟频率w_clk是读时钟频率r_clk的s倍,即:w_clk=r_clk×s,w_clk=fp,其中,fp为像素时钟;突发长度burst_length=m/s。表示将一行m个10bit像素分成s份,即每包数据量为10m/s比特;每m/s个写时钟周期会有m/s个数据写入afifo,每m/s个读时钟周期也会有m/s个数据读出afifo;

即:

值得说明的是,为准确检测空、满状态,避免不同时钟域中可能出现的亚稳态问题,需要采用格雷码计数方式,那么该异步fifo的最小深度要设置为大于上述深度计算值的2的幂次方。

裁剪单元总体思路如下:

首先根据主处理器的视频输入接口所能承受的最大输入时钟频率,计算出所需要分割的份数s,对水平方向的数据进行裁剪,逐行操作。

该模块一边接收rx_signal_mapping模块输出的图像数据,一边以w_clk(等于fp)的写时钟频率将需要裁剪的该行第1路数据写入buffer,紧接着顺序把buffer中的m/s个10bit并行数据读出;写完该行第1路之后,紧接着开始写入该行第2路数据,…,反复操作。并发地,配置buffer的读时钟r_clk为w_clk的s分频,以读时钟的节拍上述每个buffer进行读操作,此时,读写同时以各自的频率操作。

并发地,计数器单元与控制单元开始工作。

计数器单元的目的是计算该行每小段写入异步fifo的数据量,即保证每行裁剪出来的像素均为m/s个;

时序控制单元的目的是控制各个异步fifo读写指令,并选择写入各个异步fifo的数据,同时该控制单元将产生s路小帧图像对应的行、场信号,以及为s路小帧图像添加对应的帧开始/结束标志。

具体实施流程如下:

第1帧第1行:

裁剪单元先检测到vs的上升沿信号,后检测到hs的上升沿信号(假设行、场信号均是高电平数据有效)。首先当hs上升沿信号来临,开始对afifo_a1进行写操作,同时以写时钟频率的1/s(即r_clk)读出,等到写入m/s个像素,开始跳到下一个异步fifo,读使能保持有效;

同样地,将第m/s+1到第2m/s个像素写入afifo_a2,同时以读时钟r_clk读出;

直到检测到hs的下降沿信号时(此时vs一直是高电平),停止写操作,计数器清零。此时对afifo_as写操作完成,表示一行数据已经全部等份写入s个异步fifo。

此时读操作仍在进行,其中fifo_a1刚好读空;fifo_a2已经读出m(s-1)/s2个数据,即fifo_a2里还有m/s2个数据未读出;fifo_a3已经读出m(s-2)/s2个数据,即fifo_a3还有2m/s2个数据未读出,同样地,此时fifo_as里面还有m(s-1)/s2个数据未读出。按照上述流程对异步fifo进行读写操作,永远不会出现写满的情况。

第1帧第2行:

当再次检测到hs的上升沿信号时,表示已经开始进行下一行图像数据的缓冲,此时再启动写操作,继续用计数器打拍,控制读写指令。同上述第1行的操作流程,陆续向afifo_a1-afifo_as中写数据;

反复操作,直到该裁剪单元检测到vs的下降沿信号时,表示已完成一帧图像的写操作,但此时读操作仍在进行,等到所有afifo都读空,表示已完成一帧图像的读操作。此时,即完成裁剪模块第1帧图像的并行输出。

第2帧:

当裁剪模块再次检测到vs的上升沿信号,后检测到hs的上升沿信号时,启动写操作,分别对应往上述afifo中写数据,开始进行第2帧图像的读写,如此反复,形成整个动态流水线的读写操作。

如图6所示,为经过裁剪模块裁剪后输出的h/v信号效果示意图;

如图7所示,为经过裁剪模块裁剪后输出的图像数据效果示意图;

然而正如图6和图7所示,通过裁剪模块输出的s个小帧图像,输出各帧图像起点不同,显然不是同步输出的。其中,相邻的小帧图像最多会相差1/s行,首个小帧图像与第s个小帧图像最多相差s-1/s行。因此,为保证这s路图像严格同步输出到后端isp模块,就要对这些小帧图像进行多路同步操作。

所述多路同步模块d主要采用(s-1)个同步fifo(sfifo)实现。

该同步fifo的读写时钟相等,等于裁剪单元的异步fifo读时钟,即fp/s;

所述同步fifo宽度分别为10bit,20bit,......,10(s-1)bit;

所述同步fifo最小深度计算公式如下:

如图8所示,为s路图像同步模块实现原理框图。

如图9所示,为s路图像同步具体实施流程图。

结合图8和图9,介绍多路同步模块具体实现的流程如下:

首先将第一路超前的行数据写入sfifo1,等到检测到下一个行信号时,再从sfifo1中读出,两路行数据合并到一起;然后作为下一个超前的行数据,写入sfifo2;检测到第三个行信号上升沿,从sfifo2读出,…,如此反复操作,最终合成高位宽的数据流。

如图8所示,首先将10bita1与10bita2同步,整合成1通道20bita_1_2,其中高10位是a2的图像数据,低10位是a1的图像数据;同样地,将a_1_2与a3整合成1通道30bita_1_2_3,...,直到合成10sbit的数据流;最终同步后的行、场信号会以第s小帧图像的行、场信号为基准。

pix_assign模块的主要作用是同步发送s通道数据流。以每10bit为1个通道,利用fpga的并行处理能力,从低位到高位,同时将上述整合的10sbit分离出s路10bit小帧图像的数据。该模块输出的s路视频完全同步,并行输出到后端isp再进行相关处理。

如图10所示,为s路图像同步后的h/v信号和图像数据效果示意图。

实施例2:

实施例2主要针对超高分辨率图像的采集预处理,主要在裁剪单元和时序控制单元与实施例1存在不一致。

针对超高分辨率图像的采集及处理,由于其数据吞吐量很大,需要的并行像素同步时钟也很大,因此对内部无法支持高读写速率fifo的fpga,需要采用面积速度互换原则。

如图11所示,将原本一个时钟周期完成的较大的逻辑通过合理的切割后,由多个时钟周期完成,用多倍的逻辑资源来实现同样的功能,从而满足数据的吞吐量要求。在该系统中,需将上述实施方式一的裁剪单元中每个异步fifo单元替换成用y个同步fifo,即总共需要s×y个同步fifo替代s个异步fifo。其中,每个同步fifo的读写时钟频率均为fp/y,即采样时钟频率相同,但是相邻采样时钟相位偏移360/y度,其主要目的是保证在每个并行像素时钟fp的上升沿进行采样。

图11中数据选择控制单元的主要作用是完成缓冲区的选择,控制写入/读出的时序以及写入的数据,并生成对应小帧图像的行、场信号。采用这种面积换速度的方法可充分利用fpga的并行性,虽然消耗了更多的内部存储资源,但是降低了寄存器间的传播延时,保证了数据吞吐量不变,同时也提高了系统的稳定性。

实施例2的具体实施流程如下:

首先根据fpga内部fifo能够承受的最大输入时钟,设置y的取值,然后设置这y个同步fifo需要的最小深度值。计算如下:

首先,采用串/并转换的方法,边写边读,将第1个像素存储到sfifo1,第2个像素存储到sfifo2,…,第y个像素存储到sfifoy;第y+1个像素存储到sfifo1,…,直到向同步fifo中写入第m/s个数据,表示完成该行第1路裁剪像素的写入;

对该行下一段数据进行同样的操作,…,直到完成第s路的读写,表示已完成第一行像素的缓冲。其中,在写入上述sfifo的同时,需以占空比为1/y的读使能信号陆续将s路数据读出。

此时,该行第一段的y个同步fifo刚好读空,该行第二段的y个同步fifo均已读出2/y的像素,…,该行第s段的y个同步fifo均已读出1/y的像素;同样地,对剩余行的数据根据同样的流程操作,直到完成第n行的数据读写,表示完成1帧图像在不同时钟域的数据缓冲。反复操作,最终可输出像素点间隔y的s×y路图像数据。

将上述s路y个位宽10bit的并行数据转换为单路位宽为10bit串行数据流,最终输出多路小帧图像。

将上述输出的多路小帧图像数据输出到多路同步模块,该部分实施流程和上述实施方式一中的多路同步模块实施流程相同,不再赘述。

实施例3

实施例3与实施例1相似,都是采取s个异步fifo进行不同时钟域的数据缓冲,主要在时序控制单元与实施方式一存在不一致。实施方式一是对s个异步fifo的进行边写边读操作,实施方式三则采取先写后读的方式。

实施例3的具体实施流程如下:

首先,以w_clk(等于fp)的写时钟频率将需要裁剪的该行第1路数据写入异步fifo,此时读使能置为无效,然后陆续写入该行第2路数据,…,直到写入该行第s路第一个数据时,同时对这s个异步fifo使能读操作,将该行s路图像数据同时读出来,以此保证多路数据的同步。

针对其他行的数据进行同样操作,直到完成第n行第s路的数据读写,表示完成1帧图像在不同时钟域的数据缓冲。反复操作即可输出多路小帧视频。

事实上,实施例3所需要用的s个异步fifo的容量均不相同,其中每行第一个异步fifo所需要的容量最大,其最小深度计算如下:

因此,实施例3中使用的s个异步fifo的总容量比实施例1中的s个异步fifo总容量要大很多,但是实施例3的优点在于s个异步fifo输出的多路数据已经同步,无需多路同步模块,即可直接输出到后端isp。值得一提的是,与实施例3相比,在上述实施例1的多路同步模块中,使用的同步fifo的位宽逐渐加倍,因此在需要裁剪很多路的情况下,同样也会出现占用资源高的情况。但从整个系统的成本及实际应用的角度考虑,不会分成太多路,因此,该装置中的实施例1为优选实施方式。

以上是对本装置的介绍,至此,完成本发明装置及方法的具体实施方式说明。

最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本发明并不限于以上实施例,还可以有许多变形。本领域技术人员应当理解,本发明本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1