CN118154452A - 一种基于fpga的3×3均值滤波图像处理的装置 - Google Patents

一种基于fpga的3×3均值滤波图像处理的装置 Download PDF

Info

Publication number
CN118154452A
CN118154452A CN202410260320.4A CN202410260320A CN118154452A CN 118154452 A CN118154452 A CN 118154452A CN 202410260320 A CN202410260320 A CN 202410260320A CN 118154452 A CN118154452 A CN 118154452A
Authority
CN
China
Prior art keywords
pixel
sum
current filtering
row
point
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.)
Pending
Application number
CN202410260320.4A
Other languages
English (en)
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.)
Borunte Robot Co Ltd
Original Assignee
Borunte Robot Co Ltd
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 Borunte Robot Co Ltd filed Critical Borunte Robot Co Ltd
Priority to CN202410260320.4A priority Critical patent/CN118154452A/zh
Publication of CN118154452A publication Critical patent/CN118154452A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)

Abstract

本发明涉及一种基于FPGA的3×3均值滤波图像处理的装置,包括:数字信号处理器和中间存储单元;所述数字信号处理器获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和,存储至所述中间存储单元;所述数字信号处理器从中间存储单元获取第二当前滤波像素点及其同一列的两相邻的行像素总和,并计算其总和作为该第二当前滤波像素点的矩阵像素总和;以该第二当前滤波像素点的矩阵像素总和计算其像素平均值,以该像素平均值作为该第二当前滤波像素点的像素值并输出。利用本发明基于FPGA的3×3均值滤波图像处理的装置进行3×3均值滤波图像处理,具有占用DSP资源较少、避免FPGA芯片的功耗过大的优点。

Description

一种基于FPGA的3×3均值滤波图像处理的装置
技术领域
本发明涉及图像处理技术领域,特别是涉及一种基于FPGA的3×3均值滤波图像处理的装置。
背景技术
随着人们对人工智能化的要求不断提高,对机器人快速、准确实现重建场景、感知环境、规划路径、自动驾驶等方面的3D视觉的应用要求也相应提高。在这些场景中,三维重建技术成为了关键技术之一,三维重建包括图像获取、图像去噪、立体匹配等步骤。其中,均值滤波是对图像进行去噪处理的方法,是三维重建中重要的一步。这是因为图像数据在传输过程中会产生噪点,若少了均值滤波这一步骤,立体匹配的结果就不够准确,最终影响三维重建结果的准确性。
请参阅图1,在计算机数字图像处理程序中,数字图像数据可以用M行N列的图像像素矩阵来表示,如a11、a12、a13…amn分别表示图像像素矩阵上的像素点及其像素值。均值滤波是指将图像上的像素点依次作为滤波像素点,以滤波像素点为中心设置一个n×n均值滤波矩阵,该矩阵包括了滤波像素点本身和其周围的临近像素点,再将该矩阵中的所有像素点的像素值的平均值来代替滤波像素点的像素值。一般选用3×3均值滤波矩阵,使均值滤波处理后的图像能够有效降噪的同时也保证一定的清晰度。如在图1中,以a22作为滤波像素点时,则,以a22作为滤波像素点设置的3×3均值滤波矩阵包括a11、a12、a13、a21、a22、a23、a31、a32、a33共9个像素点,并计算该像素点a22对应的均值滤波后的像素值A22此外,由于位于图像边界上的边界像素点,如a11周围的像素点不足以构成3×3均值滤波矩阵,则在对图像进行均值滤波处理时还会对边界像素点进行特殊的处理,例如将边界像素点的均值滤波像素值直接设置为该边界像素点未经均值滤波处理的像素值。
FPGA(Field Programmable Gate Array)是一种具有可编程特性的集成电路,可实现对数据的并行计算。请参阅图2,其为现有技术基于FPGA的3×3均值滤波图像处理装置图,包括:图像数据缓存单元1、分配器2、延时器3和数字信号处理器4,所述图像数据缓存单元1包括多个FIFO(First In First Out)缓存器,FIFO是一种先进先出缓存器,并不需要外部的读写地址而是通过自动的加一操作来控制读写,其特点是只能按写入顺序读出数据,适合对数据进行流水线操作。每个FIFO用于缓存图像像素矩阵中的一行数据,其中,所述图像数据缓存单元1与存储有图像像素矩阵的外部数据模块通过数据传输通道连接,外部数据模块向图像数据缓存单元1按行逐一输入图像像素矩阵的像素数据。所述分配器2用于判断所述滤波像素点在图像像素矩阵上的位置,根据像素点的位置将像素点的像素值数据分配至执行不同算法的数字信号处理器4。所述延时器3能使需要进行算术运算的数据位于同一时钟周期内,以确保数字信号处理器4中的计算能够顺利进行。所述数字信号处理器4(DSP,Digital Signal Processing),用于实现同一时钟周期内的数据的各种算术运算,并将运算结果按输入顺序输出到外部数据模块中,生成与图像像素矩阵对应的均值滤波矩阵,像素点在均值滤波均值中的位置与在图像像素矩阵中的位置相同。
现有技术中,请参阅图3,上述基于FPGA的3×3均值滤波图像处理装置对图像像素数据进行3×3均值滤波处理的步骤为:
外部数据模块的图像像素矩阵像素点的像素值按行逐一输入至图像数据缓存单元1中,并且每一行像素点的像素值存储在一FIFO缓存器中。
将像素点逐一作为当前滤波像素点,在分配器2中判断当前滤波像素点是否为边界像素点。
若是边界像素点,则直接将该当前滤波像素点的像素值输出到外部数据模块中对应的均值滤波矩阵的位置。
若不是边界像素点,则通过分配器2判断缓存器中是否存储完成以该当前滤波像素点为中心的3x3矩阵。
若存储未完成,则分配器2继续判断等待存储完成。若存储完成,则首先在图像滤波存储单元1中用拼接符将该当前滤波像素点及在图像像素矩阵上位置相邻的8个像素点进行拼接,形成以该当前滤波像素点为中心的3×3矩阵,然后在数字信号处理器4中执行:从缓存器中获取以该当前滤波像素点为中心的3x3矩阵的像素值,并计算其总和作为其矩阵像素总和SUM。其中,通过延时器3对参与计算的像素值和中间计算结果进行延时处理,使数据处于同一时钟周期。如,将当前滤波像素点a22以及当前滤波像素点相邻的8个像素点(a11、a12、a13、a21、a23、a31、a32、a33)用拼接符拼接构造形成3×3矩阵,并依次对应为所述3×3矩阵内的像素值数据,用下列公式计算以当前滤波像素点为中心的矩阵像素值总和SUM,其中,在同一条公式中的数据在参与计算之前经过延时器3的延时处理处于同一时钟周期:
在数字信号处理器中继续以该当前滤波像素点的矩阵像素总和SUM计算其像素平均值A,如
在图像滤波存储单元1中该像素平均值A作为该当前滤波像素点的像素值并输出到外部数据模块对应的均值滤波矩阵位置。
对输入进来的像素点逐一重复以上处理步骤,直至图像像素矩阵中的所有像素点完成均值滤波处理,生成图像像素矩阵对应的均值滤波矩阵。
然而,现有技术的方法存在占用了较多的DSP(数字信号处理器)资源的问题。当占用DSP资源过多,会使整个FPGA芯片的功耗增大,从而造成整个硬件模块的功耗增大,如果此时设备散热不好,在一定的高温条件下,会使芯片及设备功能异常,无法进行工作。此外,DSP资源是有限的,图像三维重建的各个模块的运算都在FPGA芯片中执行,均值滤波只是图像三维重建中的其中一个模块,当均值滤波模块占用了较多的DSP资源时,三维重建中的立体匹配等其他模块则无法调用足够多的DSP资源,导致其他模块无法拓展更多的功能。
发明内容
基于此,本发明的目的在于,提供一种DSP资源占用较少的基于FPGA的3×3均值滤波图像处理的装置,包括:数字信号处理器和中间存储单元;
图像像素矩阵的像素点逐一作为第一当前滤波像素点;
所述数字信号处理器获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和;
所述中间存储单元逐一存储该第一当前滤波像素点的行像素总和;逐一存储的像素点对应的行像素总和将在所述中间存储单元中形成图像行像素总和矩阵;
中间存储单元中的行像素总和按存储顺序逐一作为当前滤波行像素总和,当前滤波行像素总和对应的像素点为第二当前滤波像素点;
中间存储器判断其存储的当前滤波行像素总和在同一列的两相邻的行像素总和是否存储完成;若否,则中间存储单元继续判断等待存储完成;若是,则所述数字信号处理器从所述中间存储单元获取该第二当前滤波像素点及其同一列的两相邻的行像素总和,并计算其总和作为该第二当前滤波像素点的矩阵像素总和;
以该第二当前滤波像素点的矩阵像素总和计算其像素平均值;以该像素平均值作为该第二当前滤波像素点的像素值并输出。
本发明所述的基于FPGA的3×3均值滤波图像处理的装置,利用该装置进行3×3均值滤波图像处理,具有占用DSP资源较少、避免FPGA芯片的功耗过大的优点。
进一步地,还包括分配器;所述分配器逐一获取图像像素矩阵的像素点的像素值,在图像像素矩阵的像素点逐一作为第一当前滤波像素点之后,所述分配器判断该第一当前滤波像素点是否为左边界或右边界像素点;
若否,则所述数字信号处理器从分配器获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和;
若是,则所述数字信号处理器以该第一当前滤波像素点的像素值×2,加上其同一行的相邻像素点的像素值,作为该第一当前滤波像素点的行像素总和。
对左、右边界像素点也进行3×3均值滤波,减少了图像中的噪声和细节,使整幅图像整体较为平滑。
进一步地,在中间存储器判断其存储的当前滤波行像素总和在同一列的两相邻的行像素总和已存储完成后,所述分配器判断该第二当前滤波像素点是否为上边界或下边界像素点;
若否,所述数字信号处理器从所述中间存储单元获取该第二当前滤波像素点及其同一列的两相邻的行像素总和,并计算其总和作为该第二当前滤波像素点的矩阵像素总和;
若是,则所述数字信号处理器将该第二当前滤波行像素总和×2的结果,加上其同一列的相邻像素点的行像素总和,作为该第二当前滤波像素点的矩阵像素总和。
对上、下边界像素点也进行3×3均值滤波,减少了图像中的噪声和细节,使整幅图像整体较为平滑。
进一步地,还包括移位寄存器,在所述数字信号处理器以该第一当前滤波像素点的像素值×2,加上其同一行的相邻像素点的像素值,作为该第一当前滤波像素点的行像素总和之前,所述移位寄存器先将该第一当前滤波像素点的像素值左移一位,得到该第一当前滤波像素点的像素值×2的结果;
在将该第二当前滤波行像素总和×2的结果,加上其同一列的相邻像素点的行像素总和,作为该第二当前滤波像素点的矩阵像素总和之前,所述移位寄存器将该第二当前滤波行像素总和左移一位,得到该第二当前滤波行像素总和×2的结果。
左移一位的操作消耗的计算资源较少,既节省资源消耗又能提高计算效率。
进一步地,还包括延时器;在所述数字信号处理器从分配器获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和之前,所述延时器对第一当前滤波像素点及其同一行中左边相邻两像素点的像素值进行延时打拍处理;
在所述数字信号处理器以该第一当前滤波像素点的像素值×2,加上其同一行的相邻像素点的像素值,作为该第一当前滤波像素点的行像素总和之前,所述延时器对该第一当前滤波像素点的像素值或该第一当前滤波像素点相邻像素点的像素值进行延时打拍处理。数据延迟至同一时钟周期能够确保计算器能执行计算的操作。
进一步地,所述中间存储单元存储该第一当前滤波像素点的行像素总和包括:根据写入标志存储第一当前滤波像素点的行像素总和,其中,将数字信号处理器完成计算时生成的相加结果有效信号设置为写入标志。这样设置能够使FPGA中的时钟周期设计更为紧凑,提高计算效率。
进一步地,所述数字信号处理器以该第二当前滤波像素点的矩阵像素总和计算其像素平均值包括:对该第二当前滤波像素点的矩阵像素总和先扩大倍,再向右移n位,其中,n为输入像素点数据的位宽。
用扩大和移位操作代替除法操作能够减少对计算器资源的占用。
进一步地,所述分配器判断该第一当前滤波像素点是否为左边界或右边界像素点包括:在像素点的像素值按行逐一输入至分配器时,分配器对图像像素矩阵的列数和行数进行计数;当列计数为1时,则判断对应像素点为左边界点;当列计数为N时,则判断对应像素点为右边界点,同时对行的数量进行计数,每当列计数为N时,行计数+1,并重新从1开始对列计数。
进一步地,所述分配器判断该第二当前滤波像素点是否为上边界或下边界像素点包括:当行计数结果为1时,所述分配器判断第二当前滤波像素点为上边界点;当行计数结果为M时,所述分配器判断第二当前滤波像素点为下边界点。用计数的方式来判断像素点在图像像素矩阵的位置更加准确方便。
为了更好地理解和实施,下面结合附图详细说明本发明。
附图说明
图1为现有技术图像像素矩阵和均值滤波矩阵的示意图;
图2为现有技术基于FPGA的3×3均值滤波图像处理装置图;
图3为现有技术基于FPGA的3×3均值滤波处理的装置的处理流程图;
图4为现有技术基于FPGA的3×3均值滤波处理的装置对图像像素数据的处理流程图;
图5为本发明的基于FPGA的3×3均值滤波图像处理装置的示意图;
图6为本发明的基于FPGA的3×3均值滤波图像处理装置的处理步骤S11~S15的流程图;
图7为本发明的基于FPGA的3×3均值滤波图像处理装置的处理步骤S21~S26的流程图;
图8为本发明的根据图像像素矩阵计算得到均值滤波矩阵的流程示意图。
具体实施方式
针对现有技术的方法占用DSP资源较多的问题,本发明技术人员作如下分析:
如图4,在FPGA中,外部数据模块存储的图像像素矩阵的数据输入到图像数据缓存单元的顺序是a11、a12、a13…a1n、a21、a22、a23…a2n…amn,这样按行逐个地输入,也需要逐个地输出。由于以滤波像素点为中心的3×3矩阵内的9个像素值输入的顺序并不连续,无法直接将3×3矩阵内的9个像素值直接读取出来,因此,现有技术在计算当前滤波像素点的像素值总和SUM时,需要将不同行的像素值数据存储在图像数据缓存单元中不同的FIFO缓存器中,以读出连续3行的像素值数据。同时,为了避免数据的时序混乱,确保每次参与计算的数据都是以当前滤波像素值为中心的3×3矩阵内的数据,还需要等待连续3行FIFO缓存器中数据存储完成,并使用拼接符将9个像素值拼接构造形成3×3矩阵后,才开始进行计算。由于每次参与矩阵像素值总和SUM的相加计算的有9个像素值,因此相应需要设计使用8个加法算术运算符“+”。在FPGA中,使用的算术运算符“+”越多,对DSP资源的占用也越多。
基于此,本发明提供一种能够减少使用加法算术运算符“+”以减少DSP资源占用的基于FPGA的3×3均值滤波图像处理装置。以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
请参阅图5~图7,图5为本发明的基于FPGA的3×3均值滤波图像处理装置的示意图;图6~7为本发明的FPGA的3×3均值滤波图像处理装置的处理流程图。
本发明的基于FPGA的3×3均值滤波图像处理装置包括分配器10、延时器20、数字信号处理器31、移位寄存器32和中间存储单元40。
所述分配器10逐一接收来自外部数据模块存储的图像像素矩阵的像素数据,当开始处理图像数据时,图像像素矩阵的像素数据逐一作为滤波像素点。所述分配器10用于判断所述滤波像素点在图像像素矩阵上的位置,根据所述滤波像素点的位置将像素点的像素值数据分配至数字信号处理器31执行对应的算法。
所述延时器20使需要进行算术运算的数据处于同一时钟周期内,以确保计算能够顺利进行。
所述数字信号处理器31(DSP,Digital Signal Processing)可以对处于同一时钟周期内的数据执行各种算术运算操作。所述移位寄存器32用于执行移位运算。移位运算是指小数点位置不发生变化,数据相对于小数点左移或右移n位,相当于数据扩大或缩小2n倍。运算结果按输入顺序输出到外部数据模块中,生成与图像像素矩阵对应的均值滤波矩阵,像素点在均值滤波均值中的位置与在图像像素矩阵中的位置相同。
所述中间存储单元40包括至少3个中间存储器42,所述中间存储器42为FIFO(First In First Out)缓存器,用于缓存数字信号处理器31计算得到的行像素总和。其中,所述行像素总和是指以滤波像素点为中心的同一行中左右相邻两像素点的像素值的总和,行像素总和在图像像素矩阵上的位置与其对应的滤波像素点图像像素矩阵上的位置相同,形成图像行像素总和矩阵。
本发明基于FPGA的3×3均值滤波图像装置对图像像素进行均值滤波处理的步骤为:
步骤S11:分配器10按行逐一获取外部数据模块的图像像素矩阵像素点的像素值。
图像像素矩阵的像素点按进入分配器10的顺序逐一作为第一当前滤波像素点进行以下操作:
步骤S12:在分配器10中判断该第一当前滤波像素点是否为左边界或右边界像素点;若否,则依序执行步骤S13A和S14A;若是,则依序执行步骤S13B和S14B。
具体地,步骤S12包括:在像素点的像素值按行逐一输入至分配器10时,分配器10对像素点的个数进行计数,由于图像数据用M行N列的图像像素矩阵表示,每一行像素点的个数即图像像素矩阵的列数。当列计数为1时,则判断对应像素点为左边界点;当列计数为N时,则判断对应像素点为右边界点,同时对行的数量进行计数,每当列计数为N时,行计数+1,并重新从1开始对列计数。
步骤S13A:用延时器20对第一当前滤波像素点及其同一行中左边相邻两像素点的像素值进行延时打拍处理。如,a22作为第一当前滤波像素点,当a23输入分配器10时,延时器20对a21打两拍,即延迟两个时钟周期;延时器20对a22打一拍,即延迟一个时钟周期。
步骤S14A:数字信号处理器31从分配器10和延时器20获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和。如,对于第一当前滤波像素点a22以及第一当前滤波像素点左右相邻的2个像素点(a21、a23),用下列公式计算以第一当前滤波像素点a22为中心的行像素总和S:S22=a21+a22+a23。可见,计算第一当前滤波像素点的行像素总和S的过程中只需要使用2个加法算术运算符“+”,对DSP资源占用较小。
其中,数字信号处理器31对不同数据执行计算操作的前提是数据都处于同一时钟周期内,而a21、a22、a23的像素值数据是逐一输入的,分别位于3个连续的不同时钟周期内,因此需要在步骤S14A之前执行步骤S13A,使参与计算的数据都处于同一时钟周期内,以确保数字信号处理器31能够执行计算操作。
步骤S13B:延时器20对该第一当前滤波像素点或该第一当前滤波像素点的相邻像素点的像素值进行延时打拍处理。
具体地,该第一当前滤波像素点若是左边界像素点,延时器20对该第一当前滤波像素点的像素值进行延时打拍处理;若是右边界像素点,延时器20对相邻像素点的像素值进行延时打拍处理。
步骤S14B:移位寄存器32将该第一当前滤波像素点的像素值×2,数字信号处理器31以该第一当前滤波像素点的像素值×2的结果,加上其同一行的相邻像素点的像素值,作为该第一当前滤波像素点的行像素总和。如,S11=a11×2+a12
用移位寄存器32将第一当前滤波像素点的像素值x2具体是将第一当前滤波像素点的像素值左移一位。在计算机数字图像处理程序中,像素值的数据用二进制的数据表示,因此对数据左移一位的操作相当于对数据进行×2的计算。左移一位的操作消耗的计算资源较少,既节省资源消耗又能提高计算效率。
实际上,对左边界或右边界像素点计算行像素总和的思路与非边界点的计算思路相同,该第一当前滤波像素点的像素值×2相当于将该第一当前滤波像素点的像素值作为其中1个相邻像素点的像素值的数值,从而实现该第一当前滤波像素点的像素值与2个相邻像素点的像素值相加。
对于图像像素矩阵中的边界,技术人员发现,由于图像像素矩阵中的左边界或右边界像素点在同一行中只有1个相邻像素点,当左边界或右边界像素点作为滤波像素点时,无法根据图像像素矩阵中的像素点的像素值直接计算得到第一当前滤波像素点的行像素总和S,如果按现有技术处理直接将第一当前滤波像素点作为边界像素点的均值滤波结果,最终得到的图像的边界区域会出现不自然的过渡的情况,这样的结果并不理想;因此,本发明通过步骤S12首先区分出图像像素矩阵中的左右边界像素点,然后通过步骤S13B和S14B对边界的像素值×2处理,避免边界过渡不自然的情况。
步骤S15:中间存储单元40存储该第一当前滤波像素点的行像素总和,按输入顺序逐一存储的像素点对应的行像素总和将在所述中间存储单元40中形成可供读取的图像行像素总和矩阵。具体地,在中间存储单元40中,根据写入标志对第一当前滤波像素点的行像素总和S执行写入操作,写入顺序与像素值按行逐一输入至分配器10的顺序对应相同。所述写入标志是中间存储单元40开始执行写入操作的依据。在一些实施例中,将数字信号处理器完成计算时生成的相加结果有效信号设置为所述的写入标志。如执行S22=a21+a22+a23的计算中,所述写入标志具体就是数字信号处理器31得到S22结果时的所产生的有效信号,这标志着计算完成得到相加结果,达到写入存储器的条件。将数字信号处理器31完成计算时生成的相加结果有效信号设置为所述的写入标志,能够使FPGA中的时钟周期设计更为紧凑,提高计算效率。
在一些实施例中,数据在中间存储单元40中的流转关系如下:图像像素矩阵上的第一行像素点的行像素总和存储在一中间存储器42a中,当第一行像素点的行像素总和存储完成时,这一行的所有行像素总和逐一读出并存储在另一中间存储器42b中,此时,下一行像素点的行像素总和的结果继续存储在中间存储器42a中,以此类推,确保不同行的像素点对应的行像素总和数据存储在不同的中间存储器42中。这样设置能够使数字信号处理器31在同一时钟周期下同时读取出所需的不同行数据进行计算,提高计算的效率。
通过上述步骤S11-S15,独立逐一计算出每个图像像素点的行像素总和,并形成图像行像素总和矩阵。然后再通过以下步骤S21-S26,独立根据行像素总和矩阵的数据,计算每个图像像素点的平均值。
步骤S21:将中间存储单元40的行像素总和按存储顺序逐一作为当前滤波行像素总和,当前滤波行像素总和对应的像素点为第二当前滤波像素点。
步骤S22:中间存储单元40判断其存储的当前滤波行像素总和在同一列的相邻行像素总和是否存储完成。若是,则执行步骤S23;若否,则中间存储单元40继续判断等待存储完成。具体地,中间存储单元40判断其是否接收到该当前滤波行像素总和在同一列的相邻行像素总和的写入标志。若中间存储单元40接收到该第二当前滤波像素点的同一列的相邻像素点对应的行像素总和的写入标志,说明该第二当前滤波像素点在同一列的相邻像素点已完成行像素总和的计算,此时数字信号处理器31可读取全部对应的行像素总和数据;若在中间存储单元40中没有接收到相应的行像素总和的写入标志,说明该第二当前滤波像素点的同一列的相邻像素点还未完成行像素总和的计算,此时数字信号处理器31还不能读取到全部对应的行像素总和数据。在另一些实施例中,根据分配器10的计数结果判断中间存储单元40存储的当前滤波行像素总和在同一列的相邻行像素总和是否存储完成。
步骤S23:在分配器10判断该第二当前滤波像素点是否为上边界或下边界像素点。若否,则执行步骤S24A;若是,则执行步骤S24B。具体地,根据第二当前滤波像素点行计数的结果进行判断,当行计数结果为1时,则判断第二当前滤波像素点为上边界点;当行计数结果为M时,则判断第二当前滤波像素点为下边界点。
步骤S24A:数字信号处理器31从中间存储单元40获取该第二当前滤波像素点及其同一列的两相邻的行像素总和,并计算其总和作为该第二当前滤波像素点的矩阵像素总和。如对于第二当前滤波像素点a22的行像素总和S22以及在同一列上下相邻的2个像素点(S12、S32),用下列公式计算以第二当前滤波像素点a22为中心的矩阵像素总和:SUM22=S12+S22+S32。由于S12、S22、S32分别位于3个中间存储器42中,因此,计算时只需同时读出3个中间存储器42中对应的S12、S22、S32数据并由数字信号处理器31进行计算,无需进行延时操作。此过程中需要使用2个加法算术运算符“+”。
步骤S24B:移位寄存器32将该当前滤波行像素总和×2,并在数字信号处理器31中将该当前滤波行像素总和×2的结果,加上其同一列的相邻像素点的行像素总和,作为该第二当前滤波像素点的矩阵像素总和。如,用公式表示为:SUM11=S11×2+S21
其中,本发明执行步骤S23~S24B的原因是:图像像素矩阵中的上边界或下边界像素点在同一列中只有1个相邻像素点,对应的行像素总和也只有1个相邻行像素总和。当上边界或下边界像素点作为滤波像素点时,中间存储单元40中的行像素总和数据不足以直接计算得到第二当前滤波像素点的矩阵像素总和SUM。
实际上,上边界或下边界像素点计算矩阵像素总和的思路与非边界点的计算思路相同,该第二当前滤波像素点的行像素总和×2相当于将第二当前滤波像素点的行像素总和作为其中1个相邻像素点的行像素总和,从而实现该第二当前滤波像素点的像素值与2个相邻像素点的像素值相加。此外,上边界或下边界像素点计算矩阵像素总和的思路也与左边界或右边界像素点的计算思路相同。
步骤S25:在数字信号处理器31和移位寄存器32中,以该第二当前滤波像素点的矩阵像素总和计算其像素平均值,以该像素平均值作为该第二当前滤波像素点的像素值并输出到外部数据模块对应的图像像素矩阵位置,形成均值滤波矩阵。
由于在FPGA上直接对SUM除以9进行除法运算需要的数字信号处理器31资源较大,因此本发明中,采用扩大一定数值再移位的运算方式代替除法运算,以减少对资源的占用。具体地,对该第二当前滤波像素点的矩阵像素总和SUM先扩大倍,再向右移n位(相当于除以2n),得到的结果即为该第二当前滤波像素点的像素平均值A。其中,n为输入像素点数据的位宽,具体可以是16、32、64等。在本实施例中,为了提高图像均值滤波数据的精确度,采用位宽为32的像素点数据进行滤波处理,得到精确度达到小数点后3位的图像均值滤波的数据。
在一些实施例中,步骤S11~S15和步骤S21~S25并行运算。需要说明的是,两者并行运算时,第一当前滤波像素点和第二当前滤波像素点不是图像像素矩阵中的同一像素点。步骤S11~S15和步骤S21~S25并行运算实际是步骤S21~S25对第二当前滤波像素点进行计算的同时,步骤S11~S15对步骤S21~S25后续的像素点数据进行预处理。如,步骤S21~S25对应的第二当前滤波像素点是a11,步骤S11~S15并行运算对应的第一当前滤波像素点可以是a22
在FPGA的处理过程中,中间存储单元40中存储的数据被读空后,如果存储器仍然执行读出的操作,会导致读出的数据有误。对数据进行预处理,可以提高计算效率,避免中间存储单元40中还未写入新的计算数据就执行读出操作。
在一些实施例中,在第一当前滤波像素点和第二当前滤波像素点不是图像像素矩阵中的同一像素点时,可同时执行步骤S21~S24以及步骤S25的操作,步骤S21~S24可看作是步骤S25的预处理,以提高计算效率。
使用本发明的基于FPGA的3×3均值滤波图像处理的方法最多只需要4个加法算术运算符“+”,下面介绍本发明的所需加法算术运算符较少的原理:
请参阅图8,其为本发明的根据图像像素矩阵计算得到均值滤波矩阵的流程示意图。在本发明中,首先获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和,存储在中间存储单元40中对应的图像像素矩阵位置。如,以a22为第一当前滤波像素点,行像素总和S22=a21+a22+a23。在这个过程中,每个滤波像素点的行像素总和对应参与计算的像素值数据只有3个,相应只需要用到2个加法算术运算符“+”;当数据是左边界或右边界时只需要使用当中的1个加法算术运算符“+”。由于计算图像像素矩阵像素点的行像素总和过程中,算法是固定的,只是像素点的像素值数据在变化,依次得到S11、S12、S13…S1n、S21、S22、S23…S2n…Smn的计算结果。因此,完成整幅图像的矩阵像素点对应的行像素总和最多只需要用到2个加法算术运算符“+”。
同理,以第二当前滤波像素点的行像素总和加上其同一列的两相邻像素点的行像素总和,作为该第二当前滤波像素点的矩阵像素总和,如,以a22为第二当前滤波像素点,矩阵像素总和SUM22=S12+S22+S32。在这个过程中,完成对应的矩阵像素总和最多也只需要用到2个加法算术运算符“+”;当数据是上边界或下边界时只需要使用当中的1个加法算术运算符“+”。
因此,用本发明的方法完成整幅图像矩阵像素总和的计算过程最多只需要用到4个加法算术运算符“+”,所占用的DSP资源较少。最后,对矩阵像素总和SUM除以9即得到3×3滤波矩阵的平均值A。
相对于现有技术,本发明的基于FPGA的3×3均值滤波图像处理的装置和方法最多只需要使用4个加法算术运算符“+”,减少了DSP资源的占用,避免结合其他模块实现功能需求时FPGA芯片的功耗过大而造成损坏。进一步,本发明无需等待像素数据拼接也能对像素数据进行计算,提高了计算效率。本发明对图像的边界像素点也进行3×3均值滤波,减少了图像中的噪声和细节,使整幅图像整体较为平滑。此外,本发明对图像像素矩阵上的不同像素点进行均值滤波时,求行像素和、求矩阵像素总和以及求像素平均值的步骤可以同步执行,提高了计算效率。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,则本发明也意图包含这些改动和变形。

Claims (9)

1.一种基于FPGA的3×3均值滤波图像处理的装置,其特征在于,包括:
数字信号处理器和中间存储单元;
图像像素矩阵的像素点逐一作为第一当前滤波像素点;
所述数字信号处理器获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和;
所述中间存储单元逐一存储该第一当前滤波像素点的行像素总和;逐一存储的像素点对应的行像素总和将在所述中间存储单元中形成图像行像素总和矩阵;
中间存储单元中的行像素总和按存储顺序逐一作为当前滤波行像素总和,当前滤波行像素总和对应的像素点为第二当前滤波像素点;
中间存储器判断其存储的当前滤波行像素总和在同一列的两相邻的行像素总和是否存储完成;若否,则中间存储单元继续判断等待存储完成;若是,则所述数字信号处理器从所述中间存储单元获取该第二当前滤波像素点及其同一列的两相邻的行像素总和,并计算其总和作为该第二当前滤波像素点的矩阵像素总和;
以该第二当前滤波像素点的矩阵像素总和计算其像素平均值;以该像素平均值作为该第二当前滤波像素点的像素值并输出。
2.根据权利要求1所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于:还包括分配器;所述分配器逐一获取图像像素矩阵的像素点的像素值,在图像像素矩阵的像素点逐一作为第一当前滤波像素点之后,所述分配器判断该第一当前滤波像素点是否为左边界或右边界像素点;
若否,则所述数字信号处理器从分配器获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和;
若是,则所述数字信号处理器以该第一当前滤波像素点的像素值×2,加上其同一行的相邻像素点的像素值,作为该第一当前滤波像素点的行像素总和。
3.根据权利要求2所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于:在中间存储器判断其存储的当前滤波行像素总和在同一列的两相邻的行像素总和已存储完成后,所述分配器判断该第二当前滤波像素点是否为上边界或下边界像素点;
若否,所述数字信号处理器从所述中间存储单元获取该第二当前滤波像素点及其同一列的两相邻的行像素总和,并计算其总和作为该第二当前滤波像素点的矩阵像素总和;
若是,则所述数字信号处理器将该第二当前滤波行像素总和×2的结果,加上其同一列的相邻像素点的行像素总和,作为该第二当前滤波像素点的矩阵像素总和。
4.根据权利要求3所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于:还包括移位寄存器,在所述数字信号处理器以该第一当前滤波像素点的像素值×2,加上其同一行的相邻像素点的像素值,作为该第一当前滤波像素点的行像素总和之前,所述移位寄存器先将该第一当前滤波像素点的像素值左移一位,得到该第一当前滤波像素点的像素值×2的结果;
在将该第二当前滤波行像素总和×2的结果,加上其同一列的相邻像素点的行像素总和,作为该第二当前滤波像素点的矩阵像素总和之前,所述移位寄存器将该第二当前滤波行像素总和左移一位,得到该第二当前滤波行像素总和×2的结果。
5.根据权利要求4所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于:还包括延时器;
在所述数字信号处理器从分配器获取第一当前滤波像素点及其同一行中左右相邻两像素点的像素值,并计算其总和作为该第一当前滤波像素点的行像素总和之前,所述延时器对第一当前滤波像素点及其同一行中左边相邻两像素点的像素值进行延时打拍处理;
在所述数字信号处理器以该第一当前滤波像素点的像素值×2,加上其同一行的相邻像素点的像素值,作为该第一当前滤波像素点的行像素总和之前,所述延时器对该第一当前滤波像素点的像素值或该第一当前滤波像素点相邻像素点的像素值进行延时打拍处理。
6.根据权利要求1至5任一项所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于:所述中间存储单元存储该第一当前滤波像素点的行像素总和包括:根据写入标志存储第一当前滤波像素点的行像素总和,其中,将数字信号处理器完成计算时生成的相加结果有效信号设置为写入标志。
7.根据权利要求6所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于:
所述数字信号处理器以该第二当前滤波像素点的矩阵像素总和计算其像素平均值包括:对该第二当前滤波像素点的矩阵像素总和先扩大倍,再向右移n位,其中,n为输入像素点数据的位宽。
8.根据权利要求7所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于,所述分配器判断该第一当前滤波像素点是否为左边界或右边界像素点包括:在像素点的像素值按行逐一输入至分配器时,分配器对图像像素矩阵的列数和行数进行计数;当列计数为1时,则判断对应像素点为左边界点;当列计数为N时,则判断对应像素点为右边界点,同时对行的数量进行计数,每当列计数为N时,行计数+1,并重新从1开始对列计数。
9.根据权利要求8所述的基于FPGA的3×3均值滤波图像处理的装置,其特征在于,所述分配器判断该第二当前滤波像素点是否为上边界或下边界像素点包括:当行计数结果为1时,所述分配器判断第二当前滤波像素点为上边界点;当行计数结果为M时,所述分配器判断第二当前滤波像素点为下边界点。
CN202410260320.4A 2024-03-07 2024-03-07 一种基于fpga的3×3均值滤波图像处理的装置 Pending CN118154452A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410260320.4A CN118154452A (zh) 2024-03-07 2024-03-07 一种基于fpga的3×3均值滤波图像处理的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410260320.4A CN118154452A (zh) 2024-03-07 2024-03-07 一种基于fpga的3×3均值滤波图像处理的装置

Publications (1)

Publication Number Publication Date
CN118154452A true CN118154452A (zh) 2024-06-07

Family

ID=91298071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410260320.4A Pending CN118154452A (zh) 2024-03-07 2024-03-07 一种基于fpga的3×3均值滤波图像处理的装置

Country Status (1)

Country Link
CN (1) CN118154452A (zh)

Similar Documents

Publication Publication Date Title
CN108681984B (zh) 一种3*3卷积算法的加速电路
JP3019787B2 (ja) 動きベクトル検出装置
US8254728B2 (en) Method and apparatus for two dimensional image processing
US20060002471A1 (en) Motion estimation unit
US5696836A (en) Motion estimation processor architecture for full search block matching
CN108073549B (zh) 卷积运算装置及方法
JP2001229378A (ja) 画像演算装置
CN114219699B (zh) 匹配代价处理方法及电路和代价聚合处理方法
Cadenas et al. Parallel pipelined array architectures for real-time histogram computation in consumer devices
JP4527674B2 (ja) 動き検出処理装置および方法
CN107679117B (zh) 一种全场稠密点快速匹配系统
CN114677261B (zh) 一种视差处理电路和视差处理系统及其方法
CN118154452A (zh) 一种基于fpga的3×3均值滤波图像处理的装置
WO2021031154A1 (zh) 神经网络的特征图装载方法及设备
CN114897665A (zh) 可配置实时视差点云计算装置及方法
KR100246033B1 (ko) 고속 실시간 처리 움직임 추정을 위한 연산방법 및 이를 위한 연산장치
Kazmi et al. FPGA based compact and efficient full image buffering for neighborhood operations
CN110602426B (zh) 一种视频图像边缘提取系统
US7365751B2 (en) Texture processor
JP2004145493A (ja) マッチング演算回路
JPH06309349A (ja) プログラム制御のプロセッサ
JP7242235B2 (ja) 画像処理装置および画像処理方法
KR20200068255A (ko) 저전력 고속 변위지도 생성 방법 및 장치
CN118152330A (zh) 一种可重构计算装置、卷积计算方法和电子设备
CN117314730A (zh) 一种用于加速数字图像处理的中值滤波计算装置及其方法

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination