一种基于FPGA的实时边缘检测系统

专利查询11月前  77


一种基于fpga的实时边缘检测系统
技术领域
1.本发明属于视频图像边缘检测的技术领域,具体的说是主要应用于一些对图像帧数要求较高的人脸识别系统、虹膜识别、手势识别、障碍识别,以及无人驾驶、交通道路上车牌识别等场合的一种基于fpga的实时边缘检测系统。


背景技术:

2.图像边缘可代表图像最本质特征,其携带了许多重要的图像信息,在提取图像边缘时,能够在保留大部分图形信息的境况下,有效地减少数据量。而边缘识别也正是图像处理和机械视觉的基础技术,现如今视频图像数据正朝着高分辨率、高帧数的方向发展,图像数据处理量巨大,因此对处理速度的要求非常严格,这样才能满足图像数据传输的实时性。
3.边缘是数字图像处理中的重要内容,随着边缘检测技术的发展,在边缘检测精度不断提高的同时程序的复杂性也在不断增加,而边缘检测的很多使用场合都要求具有较高的实时性和较低的功耗。在某些重要的场合,利用软件程序实现边缘检测是以往传统的处理手段,如一般处理器例如单片机、dsp,gpu等大多只能对静态或者帧数要求较低的图像完成图像处理,串行结构处理方式已经不能较好地实现高速以及实时性,由于串行执行的特点会导致运算效率过低,丢帧现象普遍,消耗更多的处理时间,因此很难满足速度、精度的要求。


技术实现要素:

4.本发明为解决上述现有技术中存在的不足之处,提出一种基于fpga的实时边缘检测系统,以期能实现对任意图片的高速实时处理,满足图像边缘检测处理的实效性和可靠性要求,同时能降低资源的消耗、加快运算效率。
5.本发明为解决技术问题采用如下技术方案:
6.本发明一种基于fpga的实时边缘检测系统的特点包括:ov5640摄像头模块、ov5640图像获取模块、ov5640配置模块、图像处理模块、axi4流视频输入模块、可变地址多址模块、axi4流视频输出模块、数字视频接口模块、视频时间控制模块、动态时钟模块、axi智能互联模块、hp接口、axi互联模块、gp接口、hdmi接口、ddr3;其中,所述图像处理模块包括:中值滤波模块、sobel边缘检测模块、腐蚀膨胀模块;
7.所述动态时钟模块用于产生全局时钟以控制其余模块,并产生五倍于全局时钟频率的像素时钟以控制数字视频接口模块;
8.在所述全局时钟的控制下,所述ov5640配置模块用于配置ov5640摄像头的初始化状态;
9.所述ov5640摄像头实时采集图像数据并将该数据传输至ov5640图像获取模块;
10.所述ov5640图像获取模块将所接收到的图像数据进行数据位宽的处理,并将处理后的图像数据传输至图像处理模块;
11.所述图像处理模块接收所述图像数据,并利用中值滤波模块、sobel边缘检测模
块、腐蚀膨胀模块分别依次进行中值滤波、sobel边缘检测、腐蚀膨胀操作,得到处理后的图像数据并传输到axi4流视频输入模块;
12.所述axi4流视频输入模块接收所述处理后的图像数据,并转换成axi4流格式的数据后传输至可变地址多址模块中;
13.所述可变地址多址模块通过axi4智能互联模块与hp端口连接,用于高速访问ddr3;同时,所述可变地址多址模块将axi4流格式的图像数据通过写通道转换成axi4内存映射格式的图像数据并存储在ddr3中;并从所述ddr3中读取axi4内存映射格式的图像数据再转换为axi4流格式的图像数据后传输给所述axi4流视频输出模块;
14.在所述全局时钟的控制下,所述视频时间控制模块产生工作时钟;
15.所述axi4流视频输出模块在所述工作时钟的控制下,将所接收的axi4流格式的图像数据转换成视频数据格式的图像数据后发送给数字视频接口模块;
16.在所述像素时钟的控制下,所述数字视频接口模块将所接收到的视频数据格式的图像数据转换成rgb888数据格式的图像数据并传输至hdmi接口;
17.所述hdmi接口用于将rgb888数据格式的图像数据显示到外接的显示屏上;
18.所述gp接口用于所述axi互联模块与外设配置接口的互联,从而依据外设配置接口所连接的显示屏参数对所述动态时钟模块的全局时钟、视频时间控制模块的工作时钟、可变地址多址模块的初始化参数进行配置。
19.本发明所述的一种基于fpga的实时边缘检测系统的特点也在于,所述中值滤波模块包括:三个移位寄存器模块、三个排序模块、一个最大值模块、两个中值模块、一个最小值模块;
20.在第一个全局时钟时,第一移位寄存器模块进行初始化,令三组图像数据data
11
、data
12
、data
13
的值都为0;第二移位寄存器模块也进行时初始化,令三组图像数据data
21
、data
22
、data
23
的值都为0;第三移位寄存器模块也进行初始化,令三组图像数据data
31
、data
32
、data
33
的值都为0;
21.在当前任意第i个全局时钟下,所述第一移位寄存器模块将第一组图像数据data
11
传输给第二移位寄存器模块,同时将第i个全局时钟下存储的三组图像数据data
11
、data
12
、data
13
传输给第一排序模块;
22.在当前任意第i个全局时钟下,第一移位寄存器模块接收所述ov5640图像获取模块传输的一组图像数据,并命名为data_1,并将data
12
赋值给data
11
、将data
13
赋值给data
12
、将data_1赋值给data
13

23.在当前任意第i个全局时钟下,所述第二移位寄存器模块将一组图像数据data
21
传输给第三移位寄存器模块,同时将第i个全局时钟下存储的三组图像数据data
21
、data
22
、data
23
传输给第二排序模块;
24.在当前任意第i个全局时钟下,所述第二移位寄存器模块接收所述第一移位寄存器模块传输的一组图像数据data
11
,并命名为data_2,并将data
22
赋值给data
21
、将data
23
赋值给data
22
、将data_2赋值给data
23

25.在当前任意第i个全局时钟下,所述第三移位寄存器模块将第i个全局时钟下存储的三组图像数据data
31
、data
32
、data
33
传输给第三排序模块;
26.在当前任意第i个全局时钟下,所述第三移位寄存器模块接收所述第二移位寄存
器模块传输的一组图像数据data
21
,并命名为data_3,将data
32
赋值给data
31
、将data
33
赋值给data
32
、将data_3赋值给data
33
;从而由三个移位寄存器模块中所存储的九组图像数据构成一个三行三列的图像数据矩阵;
27.在当前第i+1个全局时钟下,所述第一排序模块将所述第三移位寄存器模块存储的三组图像数据data
11
、data
12
、data
13
进行排序处理,得到最大值max1、中值mid1、最小值min1;
28.在当前第i+1个全局时钟下,所述第二排序模块在将所述第二移位寄存器模块存储的三组图像数据data
21
、data
22
、data
23
进行排序处理,得到最大值max2、中值mid2、最小值min2;
29.在当前第i+1个全局时钟下,所述第三排序模块将所述第一移位寄存器模块存储的三组图像数据data
31
、data
32
、data
33
并进行排序处理,得到最大值max3、中值mid3、最小值min3;
30.在当前第i+2个全局时钟下,所述第一最大值模块对三个最大值max1、max2、max3进行排序处理,得到三个最大值中的最小值max4,并将得到的值max4传输给第二中值模块;
31.在当前第i+2个全局时钟下,所述第一中值模块对所述三个中值mid1、mid2、mid3进行排序处理,得到三个中值中的中值mid4,并将得到的值mid4传输给第二中值模块;
32.在当前第i+2个全局时钟下,所述第一最小值模块对三个最小值min1、min2、min3进行排序处理,得到三个最小值中的最大值min4,并将得到的值min4传输给第二中值模块;
33.在当前第i+3个全局时钟下,所述第二中值模块对接收到的max4、mid4、min4进行排序处理,得到三者的中值mid5并作为滤波后的图像数据后输出给所述sobel边缘检测模块。
34.所述sobel边缘检测模块包括:三个移位寄存器模块、卷积模块、一个梯度模块、一个阈值模块;
35.在第一个全局时钟时,第四移位寄存器模块进行初始化,令三组图像数据image
11
、image
12
、image
13
的值都为0;第五移位寄存器模块也进行初始化,令三组图像数据image
21
、image
22
、image
23
的值都为0;第六移位寄存器模块也进行初始化,令三组图像数据image
31
、image
32
、image
33
的值都为0;
36.在当前第i+4个全局时钟下,所述第四移位寄存器模块传输一组图像数据image
11
给第二移位寄存器模块,同时接收所述中值滤波模块传输的滤波后的一组图像数据,并命名为image_1,并将image
12
赋值给image
11
、将image
13
赋值给image
12
、将image_1赋值给image
13

37.在当前第i+4个全局时钟下,所述第五移位寄存器模块传输一组图像数据image
21
给第三移位寄存器模块,并接收所述第四移位寄存器模块传输的一组图像数据image
11
,并命名为image_1,将image
22
赋值给image
21
、将image
23
赋值给image
22
、将image_2赋值给image
23

38.在当前第i+4个全局时钟下,所述第六移位寄存器模块接收所述第五移位寄存器模块传输的一组图像数据image
21
,并命名为image_3,并将image
32
赋值给image
31
、将image
33
赋值给image
32
、将image_3赋值给image
33
;从而由三个移位寄存器模块中所存储的九组图像数据构成一个三行三列的图像数据矩阵;
39.在当前第i+5个全局时钟下,所述卷积模块接收三行三列的图像数据矩阵并分别与八个方向的sobel算子进行卷积计算,每个全局时钟下进行一次卷积计算,最终经过8个全局时钟后得到八个方向的卷积值g0、g
45
、g
90
、g
135
、g
180
、g
225
、g
270
、g
315

40.在当前第i+13个全局时钟下,所述梯度模块对所述卷积模块得到的八个卷积值g0、g
45
、g
90
、g
135
、g
180
、g
225
、g
270
、g
315
分别进行平方操作处理,得到八个卷积值的平方g
02
、g
452
、g
902
、g
1352
、g
1802
、g
2252
、g
2702
、g
3152

41.在当前第i+14个全局时钟下,所述梯度模块对得到的八个卷积值的平方g
02
、g
452
、g
902
、g
1352
、g
1802
、g
2252
、g
2702
、g
3152
一起进行开根号处理,得到sobel梯度值g;
42.在当前第i+15个全局时钟下,所述阈值模块将所述sobel梯度值g与设定的阈值k进行比较,若梯度值g大于阈值k,则输出“1”作为sobel边缘检测模块的输出并传输给所述腐蚀膨胀模块,否则,输出“0”作为sobel边缘检测模块的输出并传输给腐蚀膨胀模块。
43.与现有技术相比,本发明的有益效果在于:
44.1、本发明采用了xilinx的zynq系列开发板,在该开发板的基础上一种实现了基于fpga的实时边缘检测系统,使得计算结果、速度和资源消耗等与传统进行对比评估,数据传输和计算的时间达到最优,极大地提高了算法的执行效率,能为实时图像处理系统的速度与稳定性提供保障。此外,相较于传统的基于fpga的实时边缘检测系统采用的altera系列开发板,xilinx的zynq系列开发板在高分辨率、高帧数的人脸识别系统、虹膜识别、手势识别等领域中的应用更加广泛、潜力更大。
45.2、本发明采用了新的sobel边缘检测算法,在传统sobel算法计算垂直和水平方向的基础上,额外加入45度、135度、180度、225度、270度、315度六个方向的sobel算子,增加了图像边缘的强度,满足了复杂边缘和高分辨率精度的要求,提高了图像边缘检测效果。
附图说明
46.图1为本发明一种基于fpga的实时边缘检测系统框架图;
47.图2为本发明图像处理模块的流程示意图;
48.图3为本发明3x3图像数据矩阵构成示意图;
49.图4为本发明中值滤波处理流程示意图;
50.图5为本发明八方向sobel边缘检测模块运算示意图;
51.图6为本发明sobel算子与3x3图像矩阵卷积过程示意图;
52.图7为本发明八方向sobel算子示意图。
具体实施方式
53.本实施例中,一种基于fpga的实时边缘检测系统,如图1所示,包括:ov5640摄像头模块、ov5640图像获取模块、ov5640配置模块、图像处理模块、axi4流视频输入模块、可变地址多址模块、axi4流视频输出模块、数字视频接口模块、视频时间控制模块、动态时钟模块、axi智能互联模块、hp接口、axi互联模块、gp接口、hdmi接口、ddr3;其中,图像处理模块包括:中值滤波模块、sobel边缘检测模块、腐蚀膨胀模块;
54.动态时钟模块用于产生全局时钟以控制其余模块,并产生五倍于全局时钟频率的像素时钟以控制数字视频接口模块;
55.在全局时钟的控制下,ov5640配置模块用于配置ov5640摄像头的初始化状态;
56.ov5640摄像头实时采集图像数据并将该数据传输至ov5640图像获取模块;在具体实施中,ov5640摄像头输出的数据格式为rgb565,而数据位宽是8位,因此需要将两次输入的8位数据拼接成一个rgb565的数据格式在该实例中ov5640摄像头实时收集图像的大小为1280*720,单位是像素;
57.ov5640图像获取模块将所接收到的图像数据进行数据位宽的处理,并将处理后的图像数据传输至图像处理模块;在本实施例中,因为axi4流视频输入模块的输入端口为视频流数据,而ov5640摄像头输出的数据为行场同步信号控制的8位数据,这两个端口不可以直接连接,需要先经过数据的转换才能连接,因此本设计通过添加了一个图像采集模块来实现这个数据的转换;
58.如图2所示,图像处理模块接收图像数据,并利用中值滤波模块、sobel边缘检测模块、腐蚀膨胀模块分别依次进行中值滤波、sobel边缘检测、腐蚀膨胀操作,得到处理后的图像数据并传输到axi4流视频输入模块;
59.axi4流视频输入模块接收处理后的图像数据,并转换成axi4流格式的数据后传输至可变地址多址模块中;
60.可变地址多址模块通过axi4智能互联模块与hp端口连接,用于高速访问ddr3;同时,可变地址多址模块将axi4流格式的图像数据通过写通道转换成axi4内存映射格式的图像数据并存储在ddr3中;并从ddr3中读取axi4内存映射格式的图像数据再转换为axi4流格式的图像数据后传输给axi4流视频输出模块;
61.在全局时钟的控制下,视频时间控制模块产生工作时钟;
62.axi4流视频输出模块在工作时钟的控制下,将所接收的axi4流格式的图像数据转换成视频数据格式的图像数据后发送给数字视频接口模块;
63.在像素时钟的控制下,数字视频接口模块将所接收到的视频数据格式的图像数据转换成rgb888数据格式的图像数据并传输至hdmi接口;
64.hdmi接口用于将rgb888数据格式的图像数据显示到外接的显示屏上;
65.gp接口用于axi互联模块与外设配置接口的互联,从而依据外设配置接口所连接的显示屏参数对动态时钟模块的全局时钟、视频时间控制模块的工作时钟、可变地址多址模块的初始化参数进行配置。在具体实施中,处理系统通过gp接口获取外接显示屏id,并根据获取到的id,配置可变地址多址模块的帧缓存空间大小、读通道等以及配置视频时间控制模块的输出的时序参数。
66.腐蚀膨胀模块对接收到的图像数据iii依次进行腐蚀、膨胀操作,其中腐蚀操作的作用是可以使图像数据中的物体缩小或细化,将小于结构元素的图像细节从图像数据中滤除;膨胀操作的作用是可以弥合图像数据中较窄的间断和细长的沟壑,消除小的孔洞,填补轮廓线中的断裂。在具体实践中,腐蚀操作后图像更加精细,在很大程度上抑制了噪声,而进行膨胀操作后,图像的边缘变厚,效果更清晰;
67.在腐蚀膨胀模块进行完腐蚀、膨胀操作后,将得到的数据作为整个图像处理模块的输出数据传输给axi4流视频输入模块。在具体实施中,腐蚀操作实际操作为:用3x3的结构元素扫描图像的每个像素,用结构元素覆盖的二元图像进行“和”操作。如果两者都为1,则结果图像中的像素均为1。否则,它为0。该结果将使二进值图像减少一个圆。在fpga中,为
了提高运行速度,该算法可以用以下公式来实现:
68.p
cor_lin1
=p
11
&p
12
&p
13

69.p
cor_lin2
=p
21
&p
22
&p
23

70.p
cor_lin3
=p
31
&p
32
&p
33

71.p
corrosion
=p
cor_lin1
&p
cor_lin2
&p
cor_lin3

72.同样,膨胀操作实际操作为将图像的每个像素用3x3个结构元素进行扫描,用结构元素覆盖的二元图像进行“或”操作。如果两者都为0,则结果图像中的像素均为0。否则,它为1。该结果将使二进值图像放大一个圆。在fpga中,为了提高运行速度,该算法可以用以下公式来实现:
73.p
exp_lin1
=p
11
|p
12
|p
13

74.p
exp_lin2
=p
21
|p
22
|p
23

75.p
exp_lin3
=p
31
|p
32
|p
33

76.p
expansion
=p
exp_lin1
|p
exp_lin2
|p
exp_lin3

77.在本实施例例中,中值滤波模块包括:三个移位寄存器模块、三个排序模块、一个最大值模块、两个中值模块、一个最小值模块,具体如图4所示;
78.在第一个全局时钟时,第一移位寄存器模块进行初始化,令三组图像数据data
11
、data
12
、data
13
的值都为0;第二移位寄存器模块也进行时初始化,令三组图像数据data
21
、data
22
、data
23
的值都为0;第三移位寄存器模块也进行初始化,令三组图像数据data
31
、data
32
、data
33
的值都为0;
79.在当前任意第i个全局时钟下,第一移位寄存器模块将第一组图像数据data
11
传输给第二移位寄存器模块,同时将第i个全局时钟下存储的三组图像数据data
11
、data
12
、data
13
传输给第一排序模块;
80.在当前任意第i个全局时钟下,第一移位寄存器模块接收ov5640图像获取模块传输的一组图像数据,并命名为data_1,并将data
12
赋值给data
11
、将data
13
赋值给data
12
、将data_1赋值给data
13

81.在当前任意第i个全局时钟下,第二移位寄存器模块将一组图像数据data
21
传输给第三移位寄存器模块,同时将第i个全局时钟下存储的三组图像数据data
21
、data
22
、data
23
传输给第二排序模块;
82.在当前任意第i个全局时钟下,第二移位寄存器模块接收第一移位寄存器模块传输的一组图像数据data
11
,并命名为data_2,并将data
22
赋值给data
21
、将data
23
赋值给data
22
、将data_2赋值给data
23

83.在当前任意第i个全局时钟下,第三移位寄存器模块将第i个全局时钟下存储的三组图像数据data
31
、data
32
、data
33
传输给第三排序模块;
84.在当前任意第i个全局时钟下,第三移位寄存器模块接收第二移位寄存器模块传输的一组图像数据data
21
,并命名为data_3,将data
32
赋值给data
31
、将data
33
赋值给data
32
、将data_3赋值给data
33
;从而由三个移位寄存器模块中所存储的九组图像数据构成一个三行三列的图像数据矩阵;具体如图3所示。
85.在具体实施中,本设计将数据的位宽定义为8位,每行有1024条数据,同时注册两行数据。首先,在使能时钟的作用下,将输入信号延迟一个周期,以此保证数据的同步。其
次,输入并实例化所需的三行数据,通过利用两个移位寄存器模块,可以得到所需的3x3矩阵。在本设计中,三个移位寄存器模块实际上是使用两个ram来实现的,两个ram依次存储图像的前两行的数据。ram1存储第一行的数据,ram0存储第二行的数据,输入的图像数据为第三行。
86.在当前第i+1个全局时钟下,第一排序模块将第三移位寄存器模块存储的三组图像数据data
11
、data
12
、data
13
进行排序处理,得到最大值max1、中值mid1、最小值min1;
87.在当前第i+1个全局时钟下,第二排序模块在将第二移位寄存器模块存储的三组图像数据data
21
、data
22
、data
23
进行排序处理,得到最大值max2、中值mid2、最小值min2;
88.在当前第i+1个全局时钟下,第三排序模块将第一移位寄存器模块存储的三组图像数据data
31
、data
32
、data
33
并进行排序处理,得到最大值max3、中值mid3、最小值min3;
89.在当前第i+2个全局时钟下,第一最大值模块对三个最大值max1、max2、max3进行排序处理,得到三个最大值中的最小值max4,并将得到的值max4传输给第二中值模块;
90.在当前第i+2个全局时钟下,第一中值模块对三个中值mid1、mid2、mid3进行排序处理,得到三个中值中的中值mid4,并将得到的值mid4传输给第二中值模块;
91.在当前第i+2个全局时钟下,第一最小值模块对三个最小值min1、min2、min3进行排序处理,得到三个最小值中的最大值min4,并将得到的值min4传输给第二中值模块;
92.在当前第i+3个全局时钟下,第二中值模块对接收到的max4、mid4、min4进行排序处理,得到三者的中值mid5并作为滤波后的图像数据后输出给sobel边缘检测模块。
93.在具体实施中,sobel滤波模块包括:三个移位寄存器模块、卷积模块、一个梯度模块、一个阈值模块,具体如图5所示。
94.在第一个全局时钟时,第四移位寄存器模块进行初始化,令三组图像数据image
11
、image
12
、image
13
的值都为0;第五移位寄存器模块也进行初始化,令三组图像数据image
21
、image
22
、image
23
的值都为0;第六移位寄存器模块也进行初始化,令三组图像数据image
31
、image
32
、image
33
的值都为0;
95.在当前第i+4个全局时钟下,第四移位寄存器模块传输一组图像数据image
11
给第二移位寄存器模块,同时接收中值滤波模块传输的滤波后的一组图像数据,并命名为image_1,并将image
12
赋值给image
11
、将image
13
赋值给image
12
、将image_1赋值给image
13

96.在当前第i+4个全局时钟下,第五移位寄存器模块传输一组图像数据image
21
给第三移位寄存器模块,并接收第四移位寄存器模块传输的一组图像数据image
11
,并命名为image_1,将image
22
赋值给image
21
、将image
23
赋值给image
22
、将image_2赋值给image
23

97.在当前第i+4个全局时钟下,第六移位寄存器模块接收第五移位寄存器模块传输的一组图像数据image
21
,并命名为image_3,并将image
32
赋值给image
31
、将image
33
赋值给image
32
、将image_3赋值给image
33
;从而由三个移位寄存器模块中所存储的九组图像数据构成一个三行三列的图像数据矩阵;
98.在当前第i+5个全局时钟下,卷积模块接收三行三列的图像数据矩阵并分别与八个方向的sobel算子进行卷积计算,每个全局时钟下进行一次卷积计算,最终经过8个全局时钟后得到八个方向的卷积值g0、g
45
、g
90
、g
135
、g
180
、g
225
、g
270
、g
315

99.在当前第i+13个全局时钟下,梯度模块对卷积模块得到的八个卷积值g0、g
45
、g
90
、g
135
、g
180
、g
225
、g
270
、g
315
分别进行平方操作处理,得到八个卷积值的平方g
02
、g
452
、g
902
、g
1352
、g1802
、g
2252
、g
2702
、g
3152
;在本实施例中,八个方向sobel算子如图7所示。
100.在当前第i+14个全局时钟下,梯度模块对得到的八个卷积值的平方g
02
、g
452
、g
902
、g
1352
、g
1802
、g
2252
、g
2702
、g
3152
一起进行开根号处理,得到sobel梯度值g;在本实施例中,图像数据与sobel算子的计算依据公式g
卷积
=a
3x3图像矩阵
*sobel_x,sobel_x为对应方向的sobel算子,具体运算过程如图6所示。
101.在当前第i+15个全局时钟下,阈值模块将sobel梯度值g与设定的阈值k进行比较,若梯度值g大于阈值k,则输出“1”作为sobel边缘检测模块的输出并传输给腐蚀膨胀模块,否则,输出“0”作为sobel边缘检测模块的输出并传输给腐蚀膨胀模块。
102.在本实施例中,以fpga为开发平台,利用xilinx的zynq系列开发板,对ov5640相机收集的30帧/s、分辨率为1280x720的彩色视频图像进行实时边缘检测算法处理,并且结合中值滤波器sobel边缘检测算法和腐蚀膨胀算法,最后通过hdmi界面进行显示。

技术特征:
1.一种基于fpga的实时边缘检测系统,其特征包括:ov5640摄像头模块、ov5640图像获取模块、ov5640配置模块、图像处理模块、axi4流视频输入模块、可变地址多址模块、axi4流视频输出模块、数字视频接口模块、视频时间控制模块、动态时钟模块、axi智能互联模块、hp接口、axi互联模块、gp接口、hdmi接口、ddr3;其中,所述图像处理模块包括:中值滤波模块、sobel边缘检测模块、腐蚀膨胀模块;所述动态时钟模块用于产生全局时钟以控制其余模块,并产生五倍于全局时钟频率的像素时钟以控制数字视频接口模块;在所述全局时钟的控制下,所述ov5640配置模块用于配置ov5640摄像头的初始化状态;所述ov5640摄像头实时采集图像数据并将该数据传输至ov5640图像获取模块;所述ov5640图像获取模块将所接收到的图像数据进行数据位宽的处理,并将处理后的图像数据传输至图像处理模块;所述图像处理模块接收所述图像数据,并利用中值滤波模块、sobel边缘检测模块、腐蚀膨胀模块分别依次进行中值滤波、sobel边缘检测、腐蚀膨胀操作,得到处理后的图像数据并传输到axi4流视频输入模块;所述axi4流视频输入模块接收所述处理后的图像数据,并转换成axi4流格式的数据后传输至可变地址多址模块中;所述可变地址多址模块通过axi4智能互联模块与hp端口连接,用于高速访问ddr3;同时,所述可变地址多址模块将axi4流格式的图像数据通过写通道转换成axi4内存映射格式的图像数据并存储在ddr3中;并从所述ddr3中读取axi4内存映射格式的图像数据再转换为axi4流格式的图像数据后传输给所述axi4流视频输出模块;在所述全局时钟的控制下,所述视频时间控制模块产生工作时钟;所述axi4流视频输出模块在所述工作时钟的控制下,将所接收的axi4流格式的图像数据转换成视频数据格式的图像数据后发送给数字视频接口模块;在所述像素时钟的控制下,所述数字视频接口模块将所接收到的视频数据格式的图像数据转换成rgb888数据格式的图像数据并传输至hdmi接口;所述hdmi接口用于将rgb888数据格式的图像数据显示到外接的显示屏上;所述gp接口用于所述axi互联模块与外设配置接口的互联,从而依据外设配置接口所连接的显示屏参数对所述动态时钟模块的全局时钟、视频时间控制模块的工作时钟、可变地址多址模块的初始化参数进行配置。2.根据权利要求1所述的一种基于fpga的实时边缘检测系统,其特征是,所述中值滤波模块包括:三个移位寄存器模块、三个排序模块、一个最大值模块、两个中值模块、一个最小值模块;在第一个全局时钟时,第一移位寄存器模块进行初始化,令三组图像数据data
11
、data
12
、data
13
的值都为0;第二移位寄存器模块也进行时初始化,令三组图像数据data
21
、data
22
、data
23
的值都为0;第三移位寄存器模块也进行初始化,令三组图像数据data
31
、data
32
、data
33
的值都为0;在当前任意第i个全局时钟下,所述第一移位寄存器模块将第一组图像数据data
11
传输给第二移位寄存器模块,同时将第i个全局时钟下存储的三组图像数据data
11
、data
12

data
13
传输给第一排序模块;在当前任意第i个全局时钟下,第一移位寄存器模块接收所述ov5640图像获取模块传输的一组图像数据,并命名为data_1,并将data
12
赋值给data
11
、将data
13
赋值给data
12
、将data_1赋值给data
13
;在当前任意第i个全局时钟下,所述第二移位寄存器模块将一组图像数据data
21
传输给第三移位寄存器模块,同时将第i个全局时钟下存储的三组图像数据data
21
、data
22
、data
23
传输给第二排序模块;在当前任意第i个全局时钟下,所述第二移位寄存器模块接收所述第一移位寄存器模块传输的一组图像数据data
11
,并命名为data_2,并将data
22
赋值给data
21
、将data
23
赋值给data
22
、将data_2赋值给data
23
;在当前任意第i个全局时钟下,所述第三移位寄存器模块将第i个全局时钟下存储的三组图像数据data
31
、data
32
、data
33
传输给第三排序模块;在当前任意第i个全局时钟下,所述第三移位寄存器模块接收所述第二移位寄存器模块传输的一组图像数据data
21
,并命名为data_3,将data
32
赋值给data
31
、将data
33
赋值给data
32
、将data_3赋值给data
33
;从而由三个移位寄存器模块中所存储的九组图像数据构成一个三行三列的图像数据矩阵;在当前第i+1个全局时钟下,所述第一排序模块将所述第三移位寄存器模块存储的三组图像数据data
11
、data
12
、data
13
进行排序处理,得到最大值max1、中值mid1、最小值min1;在当前第i+1个全局时钟下,所述第二排序模块在将所述第二移位寄存器模块存储的三组图像数据data
21
、data
22
、data
23
进行排序处理,得到最大值max2、中值mid2、最小值min2;在当前第i+1个全局时钟下,所述第三排序模块将所述第一移位寄存器模块存储的三组图像数据data
31
、data
32
、data
33
并进行排序处理,得到最大值max3、中值mid3、最小值min3;在当前第i+2个全局时钟下,所述第一最大值模块对三个最大值max1、max2、max3进行排序处理,得到三个最大值中的最小值max4,并将得到的值max4传输给第二中值模块;在当前第i+2个全局时钟下,所述第一中值模块对所述三个中值mid1、mid2、mid3进行排序处理,得到三个中值中的中值mid4,并将得到的值mid4传输给第二中值模块;在当前第i+2个全局时钟下,所述第一最小值模块对三个最小值min1、min2、min3进行排序处理,得到三个最小值中的最大值min4,并将得到的值min4传输给第二中值模块;在当前第i+3个全局时钟下,所述第二中值模块对接收到的max4、mid4、min4进行排序处理,得到三者的中值mid5并作为滤波后的图像数据后输出给所述sobel边缘检测模块。3.根据权利要求1所述的一种基于fpga的实时边缘检测系统,其特征是,所述sobel边缘检测模块包括:三个移位寄存器模块、卷积模块、一个梯度模块、一个阈值模块;在第一个全局时钟时,第四移位寄存器模块进行初始化,令三组图像数据image
11
、image
12
、image
13
的值都为0;第五移位寄存器模块也进行初始化,令三组图像数据image
21
、image
22
、image
23
的值都为0;第六移位寄存器模块也进行初始化,令三组图像数据image
31
、image
32
、image
33
的值都为0;在当前第i+4个全局时钟下,所述第四移位寄存器模块传输一组图像数据image
11
给第
二移位寄存器模块,同时接收所述中值滤波模块传输的滤波后的一组图像数据,并命名为image_1,并将image
12
赋值给image
11
、将image
13
赋值给image
12
、将image_1赋值给image
13
;在当前第i+4个全局时钟下,所述第五移位寄存器模块传输一组图像数据image
21
给第三移位寄存器模块,并接收所述第四移位寄存器模块传输的一组图像数据image
11
,并命名为image_1,将image
22
赋值给image
21
、将image
23
赋值给image
22
、将image_2赋值给image
23
;在当前第i+4个全局时钟下,所述第六移位寄存器模块接收所述第五移位寄存器模块传输的一组图像数据image
21
,并命名为image_3,并将image
32
赋值给image
31
、将image
33
赋值给image
32
、将image_3赋值给image
33
;从而由三个移位寄存器模块中所存储的九组图像数据构成一个三行三列的图像数据矩阵;在当前第i+5个全局时钟下,所述卷积模块接收三行三列的图像数据矩阵并分别与八个方向的sobel算子进行卷积计算,每个全局时钟下进行一次卷积计算,最终经过8个全局时钟后得到八个方向的卷积值g0、g
45
、g
90
、g
135
、g
180
、g
225
、g
270
、g
315
;在当前第i+13个全局时钟下,所述梯度模块对所述卷积模块得到的八个卷积值g0、g
45
、g
90
、g
135
、g
180
、g
225
、g
270
、g
315
分别进行平方操作处理,得到八个卷积值的平方g
02
、g
452
、g
902
、g
1352
、g
1802
、g
2252
、g
2702
、g
3152
;在当前第i+14个全局时钟下,所述梯度模块对得到的八个卷积值的平方g
02
、g
452
、g
902
、g
1352
、g
1802
、g
2252
、g
2702
、g
3152
一起进行开根号处理,得到sobel梯度值g;在当前第i+15个全局时钟下,所述阈值模块将所述sobel梯度值g与设定的阈值k进行比较,若梯度值g大于阈值k,则输出“1”作为sobel边缘检测模块的输出并传输给所述腐蚀膨胀模块,否则,输出“0”作为sobel边缘检测模块的输出并传输给腐蚀膨胀模块。

技术总结
本发明公开了一种基于FPGA的实时边缘检测系统,包括:OV5640摄像头、图像处理模块、Axi4流视频输入模块、可变地址多址模块、Axi4流视频输出模块、视频时间控制模块、动态时钟模块、DDR3;其中,Ov5640摄像头模块用于实时收集数据;图像处理模块用于对图像数据加工处理;视频时间控制模块和动态时钟模块用于控制各个模块;Axi4流视频输入模块和Axi4流视频输出模块用于将视频流数据转换成Axi4流格式的数据;可变地址多址模块用于读取和传输DDR3中数据。本发明旨在增强边缘检测系统设计的性能,加快计算速度、降低资源利用率、应用更多实际场景。际场景。际场景。


技术研发人员:杜高明 滕佩佚 李晓雅 张多利 李桢旻 尹勇生
受保护的技术使用者:合肥工业大学
技术研发日:2021.12.06
技术公布日:2022/3/8

最新回复(0)