一种基于ZYNQ的图像实时显示系统

文档序号:31771736发布日期:2022-10-12 07:05阅读:416来源:国知局
技术简介:
本专利针对CMOS摄像头与显示器帧率不匹配导致的图像撕裂及颜色偏差问题,提出基于ZYNQ的图像实时显示系统。通过PS端与FPGA协同的流水线结构提升处理效率,采用灰度世界算法实现白平衡校正,并设计双内存区域交替读写机制,结合AXI时序优化数据交互,确保图像实时稳定显示。
关键词:图像实时显示,ZYNQ系统,灰度世界算法
一种基于zynq的图像实时显示系统
技术领域
1.本发明属于图像处理及计算机视觉领域,具体涉及一种基于zynq的图像实时显示系统。


背景技术:

2.zynq-7000是xilinx推出的可编程片上系统开发平台,它的本质特征,是组合了一个高性能双核arm cortex-a9处理器和一个传统的可编程逻辑门阵列(field programmable gate array,fpga)逻辑部件。其中,双核arm处理器是处理系统(processing pystem,ps)的核心,fpga逻辑单元和dsp资源是可编程逻辑(programmable logic,pl)的核心。该开发平台上ps和pl的交互通过axi(advanced extensible interface)总线完成互联,实现数据的高速交互。可编程片上系统开发平台不仅具有asic在能耗、性能和兼容性方面的优势,而且具有fpga硬件可编程性的优点。目前,可编程片上系统开发平台在嵌入式图像处理中应用广泛,能满足实时性的需求。
3.随着图像质量的不断提高,图像采集、处理、传输和实时显示所操作的数据量成倍增加,导致图像传输速度缓慢,且在图像实时显示常伴随着图像撕裂、颜色偏差的问题。如果使用单一的arm处理器来解决,其串行处理架构降低了图像的处理速度,如果使用dsp+fpga的方式,则增加了开发难度和成本。
4.终上所述,现有技术问题是:随着图像质量的不断提高,图像采集、处理、传输和实时显示所操作的数据量成倍增加,导致图像传输速度缓慢,且在图像实时显示常伴随着图像撕裂、颜色偏差的问题。


技术实现要素:

5.为了解决上述技术问题,本发明提供一种基于zynq的图像实时显示系统,包括:cmos摄像头、spi总线控制模块、block design系统和显示器,所述block design系统外接cmos摄像头和显示器;所述spi总线控制模块连接cmos摄像头;
6.所述block design系统包括6个ip模块:图像解析和转换模块、灰度处理模块、数据写入内存模块、数据读出内存模块、vga控制模块、hdmi发送模块;
7.所述spi总线控制模块通过spi总线对cmos摄像头初始化和cmos摄像头内置寄存器配置,得到cmos摄像头采集的原始图像帧率为30hz,大小为1920x1080,格式为bayer格式;
8.所述图像解析和转换模块提取cmos摄像头采集的原始图像的每一帧并解析出图像的场同步信号和行同步信号,通过场同步信号和行同步信号使用插值的方法把图像转换为rgb888格式;
9.所述灰度处理模块通过对每一帧图像的三原色进行白平衡处理,得到处理后的图像;
10.所述数据写入内存模块通过axi4总线向ddr3 sdram内存中写入处理后的图像数
据,并通过异步fifo临时缓存图像;
11.所述数据读出内存模块通过axi4总线读出ddr3 sdram内存临时缓存的图像;
12.所述vga控制模块通过vga时序对数据读出内存模块读出的图像进行扫描和同步,然后把同步后的数据发送给hdmi发送模块;
13.所述hdmi发送模块对经过vga控制模块同步后的数据进行编码、直流平衡和串并转换处理,将处理后的图像发送给显示器完成图像显示。
14.优选的,图像解析和转换模块包括:状态机和行列计数器,且图像解析和转换模块分为图像解析和图像转换两个部分,图像解析部分通过状态机解析cmos摄像头中传感器采集的原始图像有效显示的像数,得到行同步信号、场同步信号以及三原色,通过行列计数器对每个像素精准计数,精准控制每个像素;图像转换部分把解析后的图像bayer格式转换为用于显示器显示的rgb888图像格式。
15.进一步的,cmos摄像头采集到的bayer格式的原始图像在1920x1080大小的有效显示区域外预留8圈边缘像素,有效显示区域外的8圈边缘像素用于对采集到的原始图像进行图像增强处理,采用3x3插值的方法在有效显示区域外的边缘像素扩展一圈边缘像素,得到将bayer格式的原始图像转换为用于显示器显示的rgb888格式的图像。
16.优选的,灰度世界算法模块对转换后的图像做进一步的处理,具体为:通过行同步信号和场同步信号对扩展区域进行像素检测,设置三个累加器并清零,每个累加器对应一个原色通道,当扩展区域的图像数据能用于图像有效显示时,三个累加器分别对图像的一帧图像的三原色的一个通道数值进行累加,累加数据除以1920x1080得到每个通道的平均值,进行新一帧图像的白平衡处理,并对三个通道进行合并,重复上述操作直到图像的每一帧都完成白平衡处理。
17.优选的,数据写入内存模块和数据读出内存模块基于zynq的高性能接口hp构建,hp口遵循axi协议,通过添加一个fifo缓存数据写入内存模块写入出的数据,数据读出内存模块读取fifo缓存的数据,当fifo中缓存的图像数据不足一行时,启动axi总线读取ddr3中的数据填充fifo。
18.优选的,数据写入内存模块和数据读出内存模块所访问的内存空间划分为大小相同的区域a和区域b,且区域a和区域b是连续的,在数据的源端引入一个标志信号,当标志信号为高电平时,读取区域a中的图像数据,同时向区域b写入读取的图像数据,当标志信号为低电平时,读取区域b中的图像数据,同时向区域a写入读取的图像数据。
19.优选的,vga控制模块对读出的图像数据进行扫描和同步,更改图像数据参数为1920x1080@60hz,输出图像数据至hdmi发送模块。
20.优选的,hdmi发送模块接收到vga控制模块的输出的图像数据,分别对数据进行8b转10b编码、直流平衡和并串转换,输出至具有hdmi接口的显示器。
21.优选的,设置fifo写端口的时钟和axi总线的同步时钟一致,读端口的时钟和vga控制模块的驱动时钟148.5mhz保持一致,保证该fifo的填充效率大于vga控制模块读取的效率,使得图像能够实时显示。
22.本发明的有益效果:
23.1).采用软硬件协同的设计方法,ps端完成摄像头的初始化和寄存器配置,pl端结合fpga并行处理的优势采用流水线结构,提高数据处理和传输的效率;
24.2).通过图像格式转化在流水线结构的图像解析和转化模块中完成,避免在摄像头内部完成转化时导致采集帧率变慢;
25.3).采用流水线结构中的灰度世界算法模块,为颜色偏差的问题提供了解决方案;
26.4).通过zynq系统中的高性能接口高速访问ps端内存ddr3 sdram,并根据axi时序自主设计了ps端和pl端的数据交互模块,进一步提高数据传输的速率和稳定性。
附图说明
27.图1为本发明图像实时显示系统的整体框架图;
28.图2为本发明原始图像有效边缘3x3插值转换图;
29.图3为本发明3x3插值计算异步fifo流水操作图;
30.图4为本发明数据写入模块和数据读出模块结构图;
31.图5为本发明数据写入模块和数据读出模块访问的内存空间划分区域图。
具体实施方式
32.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
33.如图1所示,一种基于zynq的图像实时显示系统,包括cmos摄像头、spi总线控制、block design系统、显示器,所述的block design系统外接cmos摄像头和显示器,所述block design系统包括6个ip模块:图像解析和转换模块、灰度处理模块、数据写入内存模块、数据读出内存模块、vga控制模块、hdmi发送模块;
34.所述spi总线控制模块通过spi总线对cmos摄像头完成初始化和寄存器的配置,使得cmos摄像头采集的原始图像帧率为30hz,大小为1920x1080;
35.所述图像解析和转换模块接收来自cmos摄像头采集的原始图像数据,然后将原始图像数据解析和转换并发送给灰度世界算法模块;
36.所述灰度世界算法模块接收图像解析和转换模块发送来的图像数据,通过原始灰度算法对图像数据进行灰度处理,然后发送给数据写入内存模块;
37.所述数据写入内存模块通过axi4总线向ddr3 sdram内存中写入图像数据,并通过异步fifo临时缓存图像;
38.所述数据读出内存模块通过axi4总线读出ddr3 sdram内存中的图像数据,并通过异步fifo缓存图像数据,数据在写入内存和读出内存的同时对内存地址分区,解决图像撕裂的问题;
39.所述vga控制模块接收数据读出内存模块中异步异步fifo缓存的的图像数据,通过vga时序对图像进行扫描和同步,然后把同步后的数据发送给hdmi发送模块;
40.所述hdmi发送模块接收经过vga控制模块同步后的图像数据,再发送给显示器完成图像显示。
41.图像解析和转换模块分为图像解析和图像转换两个部分,图像解析的最终目的是解析出摄像头采集的一帧图像并产生行同步信号和场同步信号,作为后续图像处理和传输
的标志信号,使得图像不会跨帧传输,本发明通过状态机把采集的原始图像解析出来并生成行场同步信号,并通过行列计数器对每个像素精准计数以便于控制每个像素;图像转换部分把采集到的原始图像格式转换为用于显示器显示的rgb888图像格式,原始图像格式为bayer格式的一种,bayer格式是一个8bit位宽的单通道像素,需要通过3x3插值把bayer格式的图像转化为rgb888格式,rgb888格式是一个24bit的三通道像素,本发明所使用的cmos摄像头采集到一帧图像除了1920x1080大小的有效显示区域之外,还会预留出8圈的像素用以图像处理,这里采用3x3插值的方法,故在有效显示区域外扩展一圈像素对有效显示区域的边缘像素进行插值计算,如图2所示。
42.在本发明中,3x3插值计算的逻辑实现需要两个异步fifo完成流水操作,如图3所示:构建一个3x3寄存器矩阵用来存储像素,fifo0缓存一帧图像的第一行像素,fifo1缓存一帧图像的第二行像素,一帧图像的第三行像素写入寄存器的第三行(c2、c1、c0),之后fifo0接收fifo1中读出的像素,fifo1接收摄像头采集的像素,当行计数器计数到第2行和第1082行,fifo0和fifo1打开读使能把存储的一行像素写入到寄存器矩阵的第一行和第二行,同时把新传进来的一行像素写入寄存器矩阵的第三行,通过行列计数器计数,每填满一次寄存器矩阵完成一次插值计算;插值计算的过程如下:以rgb11、rgb12、rgb21、rgb22四个像素点为例,rgb11像素点的红色通道值rgb11_r=r11,绿色通道值rgb11_g=(g01+g10+g21+g12)/4,蓝色通道值rgb11_b=(b00+b02+b20+b22)/4;rgb12像素点的红色通道值rgb12_r=(r11+r13)/2,绿色通道值rgb12_g=g12,蓝色通道值rgb12_b=(b02+b22)/2;rgb21像素点的红色通道值rgb21_r=(r11+r31)/2,绿色通道值rgb12_g=g21,蓝色通道值rgb21_b=(b20+b22)/2;rgb22像素点的红色通道值rgb22_r=(r11+r13+r31+r33)/4,绿色通道值rgb22_g=(g12+g21+g32g23)/4,蓝色通道值rgb21_b=b22,其中rgb11代表奇行奇列的像素点,rgb12代表奇行偶列的像素点,rgb21代表偶行奇列的像素点,rgb22代表偶行偶列的像素点,fifo流水操作的像素通过行列计数器的最后一位来判断其奇偶情况去选择对应的公式完成计算,最后把三个通道的值按照r、g、b顺序合并即可得到用于显示的rgb888格式像素。
43.灰度世界算法模块对转换后的图像做进一步的处理,纠正颜色的偏差,适用于色彩比较丰富的场景,并且该模块可以根据实际的应用场景来重构而不影响整体的流水线结构。灰度世界算法的逻辑实现步骤如下:通过行同步信号和场同步信号对扩展区域进行像素检测,得到一帧图像的标志位,设置三个累加器并清零,每个累加器对应一个原色通道,当扩展区域的图像数据能用于图像有效显示时,三个累加器分别对图像的一帧图像的三原色的一个通道数值进行累加,累加数据除以1920x1080得到每个通道的平均值,进行新一帧图像的白平衡处理,并对三个通道进行合并,重复上述操作直到图像的每一帧都完成白平衡处理。
44.在计算三个通道的平均值时,考虑到除数1920x1080是一个固定值,该固定值可近似为约2097152,即2的21次幂,经过误差计算(2097152-1920x1080)/1920x1080,其误差结果仅为1.13%,这样就可以截掉每个通道累加和的低21位,截取剩余的高位即是对应通道的平均值,这种优化方法减少了除法器的调用,总体上节省了资源,提高了算法的处理速度。
45.灰度世界算法的核心公式:以红色通道为例,rnew=red*k/ravg,式中rnew为处理
后的像素中红色通道数据,red是图像解析和转换模块传入的红色通道数据,灰度值k和红色通道的平均值ravg在步骤二中实现。公式的实现通过调用乘法器ip和除法器ip完成,进行乘法器运算会有三个时钟的延迟,故对数据有效信号也要延迟三个时钟,当该通道的计算结果大于阈值255时,直接映射为255。这种处理方式在复杂颜色的场景下效果更明显。
46.数据写入内存模块和数据读出内存模块是基于zynq的高性能接口hp口实现的,该接口用于传输高速数据流,可满足图像实时显示的需求,hp口遵循axi协议,这两个模块在使用axi协议时设置数据的突发长度为256,数据位宽是64bit,同步时钟为250mhz。在数据读出模块中添加一个fifo用来缓存axi总线读出的数据,当fifo中缓存的图像数据不足一行时,启动axi总线读取ddr3中的数据填充fifo,vga控制模块第一次启动并判断出fifo中的图像数据大于一行时即可启动vga的驱动时序,如图4所示。该fifo写端口的时钟和axi总线的同步时钟一致,读端口的时钟和vga控制模块的驱动时钟148.5mhz保持一致,保证该fifo的填充效率大于vga控制模块读取的效率,使得图像能够实时显示。在数据写入模块中添加自行设计的写入的数据,在软件sdk中打开ddr3映射的内存进行查看,对照实际写入的数据是否一致,从而验证该模块的功能,同样的在sdk软件通过c语言向ddr3映射的内存写入数据,然后通过数据读出模块读出其数据进行对照,完成数据读出模块的验证。
47.本发明中,所采用的coms摄像头采集图像的帧率为30hz,而显示器的显示的帧率为60hz,需要对数据写入模块和数据读出模块所访问的内存空间进行划分,区域a和区域b的内存空间大小相同,都是刚好可以存储一帧图像,且区域a和区域b是连续的,另外在数据的源端引入一个标志信号,当标志信号为高电平时,读取区域a中的数同时向区域b写入刚采集的图像数据,同样的,当标志信号为低电平时,读取区域b中的数同时向区域a写入刚采集的图像数据,通过这种方法解决图像在实时显示出现的撕裂问题,如图5所示。
48.vga控制模块对ddr3中读出的图像数据进行扫描和同步,并将代码设计成参数化形式,根据1920x1080@60hz的模式,更改相应的参数,输出vga接口所需要的行同步信号hsync、场同步信号vsync和3通道的rgb图像数据,输出至具有vga接口的显示器。
49.hdmi发送模块接收到vga控制模块的数据后,分别进行8b转10b编码、直流平衡和并串转换,每个通道要进行8b转10b编码和并串转换,编码模块可在xilinx官网下载encoder代码,并转串模块可在vivado中搜索serializer源语实现,最终输出至具有hdmi接口的显示器。这两个模块的设计满足了实际所需显示器接口的需求,最终都能完成图像的实时显示。
50.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!