一种基于fpga对图像数据进行分割处理和显示的方法
【技术领域】
[0001]本发明涉及图像信号处理技术领域,特别涉及一种FPGA对大图像进行实时分割处理的方法。
【背景技术】
[0002]近年来,随着人们对高清画质的不断追求,数字camera技术得以快速发展。Camerasensor的像素也越来越高,达到上千万甚至上亿像素的sensor已经出现,如DSMC公司的推出的DSMC数码摄影摄像机,已经具有26000万像素。采用这种包含上千万甚至上亿像素的sensor所摄录图像,就可以取得名副其实的高品质,高清晰度的大图像。
[0003]然而目前市场上,采用现有技术生产的主流的DSP处理器却无法处理包含如此高像素的大图像,这样也就无法使用主流的DSP进行大图像的处理。如何进行ISP处理并完美显示包含上千万甚至上亿像素的大图像是目前数字图像处理的一个瓶颈。
[0004]业界对于这类的问题的通常解决方法主要是,对主流DSP处理器存储容量扩展,即在原来的DSP处理器的基础上外挂存储设备。当进行大图像处理时,先把一帧图像存到所连接的存储设备,然后再以分割读取的方法来处理图像。用这种方法处理的图像,第一,除却分割读取处理图像所需的时间,还增加了将整个高像素图像存入存储设备的时间,其结果是这种方法存在明显的实时性差的缺点,完全不能在实时性要求高的场合使用;第二,所需要连接的外加存储设备,如DDR2,DDR3等,其本身的设计也比较复杂,增加存储设备除了会增加成本外,也增加了整个图像处理系统的操控和维护的复杂性。
【发明内容】
[0005]本发明所要解决的技术问题是,通过进行图像数据分割和处理,降低大图像对DSP处理器的处理能力的要求,实现使用目前的主流DSP处理器进行高像素的大图像处理。
[0006]为了解决上述问题,本发明提供一种基于FPGA对图像数据进行分割、处理和显示的方法。
[0007]本发明提出一种基于FPGA对图像数据进行分割处理和显示的方法,其步骤包括:
[0008]I)根据摄录的一帧图像数据和DSP最大数据处理能力决定FPGA分割后图像的大小;
[0009]2)编写FPGA的分割程序;
[0010]3)传输数据;
[0011]4)图像数据逐行连续地存储到FPGA内部的memory中;
[0012]5)按分割程序设定,进行图像分割,将存入的每行图像数据平均分割成数个小行图像数据,为每个小行添加行消隐数据;
[0013]6)按分割程序设定,若干的小行数据组成一小帧图像数据,FPGA为每个小帧添加场消隐数据;
[0014]7)小帧图像数据按照DSP接口时序,传送到DSP ;
[0015]8)完成数据传输;
[0016]9) DSP将接受到的图像数据进行ISP处理;
[0017]10)处理后的图像数据通过网口传送到PC ;
[0018]11)重复步骤3?步骤9,对该帧图像的所有后续行数据进行逐行分割、处理和传送;
[0019]12)PC接受到所有数据后,进行图像拼接,最终显示输出一幅完整的经过ISP处理的图像;
[0020]可选的,所述方法以帧图像数据的行作为单位实行逐一分割、处理,最终拼接后完成显不;
[0021]可选的,步骤I中所述的分割是将帧图像等分成若干小帧图像的集合,每个小帧不超过DSP最大处理能力;
[0022]可选的,步骤2中所述分割程序确定了分割后小帧图像的尺寸,即行、列数;
[0023]可选的,步骤3中所述数据传输有效信号包括行有效信号和场有效信号;
[0024]可选的,步骤4中所述FPGA内部的memory分为两个FIFO区域,FIFOO和FIFOl,以乒乓操作的方式轮流作为图像数据的暂存区域,其数据写入和读出的顺序均为先进先出的方式;
[0025]优选的,所述乒乓操作是指:最初,FIFOO先开始存储数据,此时FIFOl空置;当FIFOO数据写满时,则由FIFOl继续存储,此时FIFOO进行读操作;随后,当FIFOl数据写满时,则再换成由FIFOO进行数据存储,而FIFOl进行读操作;以此往复;
[0026]可选的,步骤5中所述的平均分割是指FPGA按分割程序设定将存入数据分割成数个相等长度的小行数据,行消隐数据被添加在每个小行数据结束之后;
[0027]可选的,步骤6中,按分割程序设定确定小帧图像的列数,在小帧图像数据结束后添加场消隐数据;
[0028]优选的,所述的行消隐数据和场消隐数据均满足DSP的VPIF接口时序要求。
[0029]由于目前市场上,以主流的DSP处理器的处理能力与高像素camera sensor的需求之间滞后,现有技术生产的DSP处理器无法处理包含如此高像素的大图像,这样也就无法使用主流的DSP进行大图像的处理。通常解决方法主要是,对主流DSP处理器存储容量扩展,即在原来的DSP处理器的基础上再连接或外挂存储设备。当进行大图像处理时,先把一帧图像整个存到所连接的存储设备,然后再以分割读取的方法来处理图像。用这种方法处理的图像,第一,除却分割读取处理图像所需的时间,还增加了将整个高像素图像存入存储设备的时间,其结果是这种方法存在明显的实时性差的缺点,完全不能在实时性要求高的场合使用;第二,所需要连接的外加存储设备,如DDR2,DDR3等,其本身的设计也比较复杂,增加存储设备除了会增加成本外,也增加了整个图像处理系统的操控和维护的复杂性。
[0030]本发明提供的方法是利用FPGA内部的memory,只需对一帧图像中的每个行-line的图像数据进行乒乓存储,继而分割处理等份的小行,按然后传送到DSP中,针对pixel做进一步的图像信号处理-1SP0DSP处理后的line图像再通过网口传送到电脑上,拼接成一幅完整的图像。
[0031]FPGA:Field — Programmable Gate Array,即现场可编程门阵列,它是在 PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的。现场可编程门阵列(FPGA)是可编程器件,其逻辑是通过向内部静态存储单元加载编程数据来实现的,FPGA允许无限次的编程。
[0032]乒乓操作是应用于数据流控制的处理方法。乒乓操作的处理流程为:输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区。在第一个周期,将输入的数据流缓存到“数据暂存单元I”;在第二个周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据暂存单元2”,同时将“数据暂存单元I”的第一个周期数据通过“输出数据选择单元”的选择,输送到“数据处理单元”读走进行处理;在第三个周期,通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据暂存单元1”,同时将“数据暂存单元2”的第二个周期数据通过“输出数据选择单元”的选择,输送到“数据处理单元”进行处理。如此循环。
[0033]本发明方法对一行图像数据的处理步骤如图1所示,a)根据已知的摄录图像的像素值和所使用的DSP的最大处理能力确定FPGA需要将原始图像分割成的DSP可以处理的小帧图像的尺寸,并设定FPGA程序;b)当Camera sensorl接受到I2C总线13的信号后,发送一帧图像数据;c)当V_sync:帧有效信号和H_sync:行有效信号为高电位:5a和6a时,FPGA2对Camera sensorl的第一行图像数据11,存储到FPGA2内部的memory中,再分割处理成若干小行图像数据12,以先进先出的乒乓存储方式按照DSP处理器3的VPIF接口时序,发送到DSP处理器3上,如图2所示;d)当V_sync:帧有效信号和H_sync:行有效信号为低电位:5b和6b时,表明一个由FPGA分割的小帧图像发送完毕,开始由DSP处理器3对所接受到的小帧图像数据进行图像信号处理ISP ;e)DSP处理器3处理完该行图像数据后,通过网口 7传送到PC4上。
[0034]对于一帧完整图像,需要重复本发明方法,继续循环往复地,对剩余行数据进行顺序逐行地存储、分割、发送、处理和传送,直到PC4接受到一帧完整图像数据后,再进行图像拼接,把分割处理后的行图像数据拼接成一个完整的图像并显示出来。
[0035]其中FPGA的乒乓操作步骤为:首先,在FPGA中例化2个先进先出队列FIFO的存储区域:FIF00和FIF01,用来对写入和读出摄录图像的每行数据进行乒乓操作。当一行写完后,根据FPGA已设定的程序分割成小行,再读出到DSP处理器。具体步骤如图3所示,首先状态a,先对存储区域清零充值;接着由FIFOO先开始存储,将每行数据依次写入:F0W-1,此时FIFOl空置;当FIFOO数据写满时,进入状态b,则由FIFOl继续存储,FIFOO按先进先出的次序,根据FPGA已设定的程序将写入的行数据分割成的小行,在执行读操作:F0F/F1W-2,将数据读入DSP处理器;随后,当FIFOl数据写满时,则再换成由FIFOO进行数据存储,而FIFOl进行分割和读操作,将数据读入DSP处理器:R)W/FlR-3,此时为状态c ;以此往复,当按照FPGA已设定的程序的一小帧数据完全通过2个FIFO的存储区域读入DSP处理器后为状态d。
[0036]本发明方法适合处理各种尺寸超过DSP最大处理能力的摄录图像,灵活性好。因为FPGA具有现场编程的能力,所以可以针对不同超出DSP最大处理尺寸的大帧图像找到合适的分割次数,以达到处理时间和DSP利用率的最佳方案,并实时通过FPGA编程付诸实施。虽然,由于FPGA刚开始乒乓存储操作时有一半的存储区域空置,如FIF01,所以会损失部分存储继而读出到DSP的时间,但由此造成的实时性延迟也仅限于此,最多不超过原始帧图像一行数据的延迟,其实时性依旧是远好于需要整帧图像数据读入再进行处理的通常的解决方法。采用本发明方法不仅处理图像的实时性较业界的通常解决方法能够大幅度提高,而且不需要进行DSP的硬件增配,不需要使用外部的存储设备,大大降低了成本,同时也减少了整个图像处理系统的操控和维护的复杂性。
【附图说明】
[0037]图1是本发明方法的行图像数据处理步骤示意图。
[0038]图2是本发明方法的时序示意图。
[0039]图3是本发明方法FPGA的乒乓操作步骤示意图。
[004
0]图4是本发明方法图像数据分割示意图。
【具体实施方式】
[0041]为使本发明的内容更加清楚易懂,以下结合说明书附图,对本发明的内容作进一步说明。当然本发明并不局限于该具体实施例,本领域内的技术人员所熟知的一般替换也涵盖在本发明的保护范围内。
[0042]其次,本发明利用示意图进行详细的表述,在详述本发明实例时,为了便于说明,示意图不依照一般比例局部放大,不应以此作为对本发明的限定。
[0043]本发明提供一种基于FPGA对图像数据进行分割处理和显示的方法,其步骤包括:
[0044]I)根据摄录的一帧图像数据和DSP最大数据处理能力决定FPGA分割后图像的大小;
[0045]2)编写FPGA的分割程序;
[0046]3)传输数据;
[0047]4)图像数据存储到FPGA内部的memory中;
[0048]5)按分割程序设定,进行图像分割,将存入的每行图像数据平均分割成数个小行图像数据,为每个小行添加行消隐数据;
[0049]6)按分割程序设定,若干的小行数据组成一小帧图像数据,FPGA为每个小帧添加场消隐数据;
[0050]7)小帧图像数据按照DSP接口时序,传送到DSP ;
[0051]8)完成数据传输;
[0052]9) DSP将接受到的图像数据进行ISP处理;
[0053]10)处理后的图像数据通过网口传送到PC ;
[0054]11)重复步骤3?步骤9,对该帧图像的所有后续行数据进行逐行分割、处理和传送;
[0055]12)PC接受到所有数据后,进行图像拼接,最终显示输出一幅完整的经过ISP处理的图像。
[0056]下面以具体实施例对本发明进行阐述。
[0057]首先,详细说明图像数据分割的确定原则。
[0058]本实施例中所涉及的是一帧5120x3408个pixel的大图像。而所选用的DSP处理器,其最大处理能力为2048x1536个pixel。可见,所述的图像超出DSP处理器的最大处理能力。
[0059]按照本发明提供的方法,需要先根据原始图像的像素值和所使用的DSP的最大处理能力确定FPGA需要将原始图像分割成的DSP可以处理的小帧图像的尺寸。关于小帧图像的尺寸,需要兼顾分割处理所需的时间以及DSP处理能力的利用率,还有后续拼接图像时对称拼接较为方便等因素,同时不能超过DSP最大处理能力的限制。在此基础上确定最优方案。本实施例中,综合上述分析确定分割次数的最优方案为16次:即将从Camera sensor得到的原始图像分割处理成16个小帧图像。然后,编写相应的FPGA的分割程序。
[0060]接着,详细说明图像数据的存储和分割过程。
[0061]本实施例将原始图像的行像素5120pixel分成4个小行,即每小行有5120/4=1280pixelo再设定每小帧包含852小行,即每次DSP处理的小帧图像大小为1280x852pixelo这样就是把原始的5120x3408pixel的大图像分成16个1280x852pixel的小图,具体分割示意图如图4。实际上每个1280x852pixel的小图相当于原始图像的213行,即5120x213pixel,接着,按照这个分割方案开始存储数据,先将大图像的第一个完整的行存储到FPGA的memory中,当下第二个行数据开始存储时,把第一个行数据分割成4个长度为1280的小行数据,按先进先出的顺序,以乒乓操作的方式,按照DSP处理器的VPIF接口时序,一一发送到DSP处理器。
[0062]本实施例中FPGA的乒乓操作具体为:在FPGA中例化2个先进先出队列FIFO的存储区域,FIFOO和FIFOl,每个FIFO最大存储像素为5120。首先对存储区域清零,然后由FIFOO开始存储,行数据先写入FIF00,此时FIFOl空置;当FIFOO数据写满时,转由FIFOl继续存储,而FIFOO根据FPGA已设定的程序将写入的行数据分割成的小行,再进行读操作,将小行数据读入DSP处理器;随后,当FIFOl数据写满时,则再换成由FIFOO进行数据存储,而FIFOl进行相同的分割和读操作,将小行数据读入DSP处理器;以此往复。
[0063]如此连续数据存储和发送,直到发送852个小行。至此,一个小帧图像,即1/16的原始图像发送完毕。然后由DSP做ISP图像信号处理。需要注意的是,分割后小帧图像,其数据的大小为1280x852pixel,没有超过DSP处理器的最大的行处理能力:2048xl536pixel。
[0064]下面详细说明图像数据的从FPGA到DSP的发送时序。
[0065]如图2所示,场有效数据V_sync和行有效数据H_sync信号共同决定FPGA读到DSP的数据是否有效:在场有效数据V_sync和行有效数据H_sync信号都在高电位的时段,从FPGA读到DSP的行数据有效;在场有效数据V_sync在高电位,而行有效数据H_sync信号在低高电位的时段,为行数据处理时段,从FPGA读到DSP的数据无效;在场有效数据V_sync和行有效数据H_sync信号都在低电位的时段,为由所有从FPGA读到DSP的行数据所组成的帧图像数据传送完毕后V_Sync信号的复位时段。
[0066]实际操作中以第一个FIFO存储区域的数据发送为例:a) V_sync和H_sync都在高电位,开始进行数据发送山)时段A为发送第一个小行数据到DSP所需时间,在本实施例为发送第一个1280pixel所需时间,该行数据以行消隐数据结尾;C)H_synC转到低电位,时段Q为存储后续数据所需的时间,在本实施例中由于FPGA被例化为2个FIFO的存储区域,则为存储第三个1280pixel的小行数据所需的时间;d)重复上述步骤,直到第852个小行,时段A’为发送第852个小行所需的时间,该行已场消隐数据结尾;e)此时V_sync转到低电位,时段P为V_Sync信号的复位时段,表示这小帧图像数据发送完毕。
[0067]DSP处理在接收完一小帧图像后进行ISP处理,然后通过网口传送到PC上。本实施例中,需要如此重复16次。当PC接受到16个小帧图像数据,即一帧完整图像后,便开始进行图像拼接工作,把分割的图像拼接成一个完整的图像显示。
【主权项】
1.一种基于FPGA对需由DSP进行ISP处理的图像数据进行分割处理和显示的方法,其步骤包括: 1)根据摄录的一帧图像数据和DSP最大数据处理能力决定FPGA分割后图像的大小; 2)编写FPGA的分割程序; 3)传输数据; 4)图像数据逐行连续地存储到FPGA内部的memory中; 5)按分割程序设定,进行图像分割,将存入的每行图像数据平均分割成数个小行图像数据,为每个小行添加行消隐数据; 6)按分割程序设定,若干的小行数据组成一小帧图像数据,FPGA为每个小帧添加场消隐数据; 7)小帧图像数据按照DSP接口时序,传送到DSP; 8)完成数据传输; 9)DSP将接收到的图像数据进行ISP处理; 10)处理后的图像数据通过网口传送到PC; 11)重复步骤3?步骤9,对该帧图像的所有后续行数据进行逐行分割、处理和传送; 12)PC接受到所有数据后,进行图像拼接,最终显示输出一幅完整的经过ISP处理的图像。2.如权利要求1所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,所述方法以帧图像数据的行作为单位实行逐一分割、处理,最终拼接后完成显示。3.如权利要求1所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,步骤I中所述的分割是将帧图像等分成若干小帧图像的集合,每个小帧不超过DSP最大处理能力。4.如权利要求1所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,步骤2中所述分割程序确定了分割后小帧图像的尺寸,即行、列数。5.如权利要求1所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,步骤3中所述数据传输有效信号包括行有效信号和场有效信号。6.如权利要求1所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,步骤4中所述FPGA内部的memory分为两个FIFO区域,FIFOO和FIFOl,以乒乓操作的方式轮流作为图像数据的暂存区域,其数据写入和读出的顺序均为先进先出的方式。7.如权利要求6所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,所述乒乓操作是指:最初,FIFOO先开始存储数据,此时FIFOl空置;当FIFOO数据写满时,则由FIFOl继续存储,此时FIFOO进行读操作;随后,当FIFOl数据写满时,则再换成由FIFOO进行数据存储,而FIFOl进行读操作;以此往复。8.如权利要求1所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,步骤5中所述的平均分割是指FPGA按分割程序设定将存入数据分割成数个相等长度的小行数据,行消隐数据被添加在每个小行数据结束之后。9.如权利要求1所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,步骤6中,按分割程序设定确定小帧图像的列数,在小帧图像数据结束后添加场消隐数据。10.如权利要求6或8所述的一种基于FPGA对图像数据进行分割处理和显示的方法,其特征在于,所述的行消隐数据和场消隐数据均满足DSP的VPIF接口时序要求。
【专利摘要】本发明提供一种基于FPGA对图像数据进行分割处理和显示的方法,根据所摄录的一帧图像的像素数据和DSP最大数据处理能力决定FPGA分割后图像的大小;利用FPGA内部memory存储,并将原始图像的行信号平均分割成若干小行后发送到DSP处理器;由DSP进行ISP处理;最后传送到PC进行图像拼接,显示输出一幅完整的经过ISP处理的图像。本发明方法适合处理各种尺寸图像,灵活性好,具有良好的实时性,使DSP处理器能够处理超过其最大处理能力的大图像,而不需要使用外部的存储设备,大大降低了成本,减少了整个图像处理系统的操控和维护的复杂性。
【IPC分类】H04N5/262
【公开号】CN104902193
【申请号】CN201510253984
【发明人】叶红磊, 蒋亮亮, 王勇, 王凯, 高猛
【申请人】上海集成电路研发中心有限公司, 成都微光集电科技有限公司
【公开日】2015年9月9日
【申请日】2015年5月19日