CN114998158B - 一种图像处理方法、终端设备及存储介质 - Google Patents

一种图像处理方法、终端设备及存储介质 Download PDF

Info

Publication number
CN114998158B
CN114998158B CN202210925075.5A CN202210925075A CN114998158B CN 114998158 B CN114998158 B CN 114998158B CN 202210925075 A CN202210925075 A CN 202210925075A CN 114998158 B CN114998158 B CN 114998158B
Authority
CN
China
Prior art keywords
pixel
queue
data
pixel data
pixel position
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.)
Active
Application number
CN202210925075.5A
Other languages
English (en)
Other versions
CN114998158A (zh
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.)
Wuhan Silicon Integrated Co Ltd
Original Assignee
Wuhan Silicon Integrated 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 Wuhan Silicon Integrated Co Ltd filed Critical Wuhan Silicon Integrated Co Ltd
Priority to CN202210925075.5A priority Critical patent/CN114998158B/zh
Publication of CN114998158A publication Critical patent/CN114998158A/zh
Application granted granted Critical
Publication of CN114998158B publication Critical patent/CN114998158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • G06T2207/20032Median filtering

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)

Abstract

本申请公开了一种图像处理方法、终端设备及存储介质,图像处理方法包括:为每个像素位置创建一个地址连续的排序队列空间;将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;在历史图像帧的数量大于或等于预设阈值时,更新填入排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;并分别利用每一个像素位置对应的一个中值数据更新待优化图像帧中每一个像素位置对应的一个像素数据。

Description

一种图像处理方法、终端设备及存储介质
技术领域
本发明涉及图像处理领域,尤其涉及一种图像处理方法、终端设备及存储介质。
背景技术
中值滤波是应用最为广泛的一种非线性统计滤波器,经常用于去除图像或者其它信号中的噪声,其输出为参与滤波的所有数据排序后的中值。在信号处理领域中,中值滤波是一种用于信号平滑、脉冲噪声抑制和边缘保持的非线性信号增强技术。在图像处理领域中,中值滤波对处理随机噪声、脉冲噪声等非常有效。
现有技术中,在中值滤波过程中,对参与中值滤波中的所有数据进行排序时,需要创建待排序数据队列,在排序过程中,需要对数据存储器执行多次读写操作,将存储器中所有数据依次读入到待排序数据至排序队列中,而每一次读写都需要耗费若干个处理器周期,从而导致中值滤波排序的时间复杂度较高。
发明内容
有鉴于此,本申请实施例期望提供一种图像处理方法、终端设备及存储介质,能够提高排序速度,降低中值滤波过程中排序的时间复杂度。
为达到上述目的,本申请的技术方案是这样实现的:
第一方面,本申请实施例提供一种图像处理方法,所述方法包括:
为每个像素位置创建一个地址连续的排序队列空间;
将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;
在所述历史图像帧的数量大于或等于预设阈值时,更新填入所述排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;
分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;并分别利用每一个像素位置对应的一个中值数据更新所述待优化图像帧中每一个像素位置对应的一个像素数据。
第二方面,本申请提供一种终端设备,所述终端设备包括:
创建单元,用于为每个像素位置创建一个地址连续的排序队列空间;
填入单元,用于将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;
更新单元,用于在所述历史图像帧的数量大于或等于预设阈值时,更新填入所述排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;
查找单元,用于分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;
所述更新单元,还用于分别利用每一个像素位置对应的一个中值数据更新所述待优化图像帧中每一个像素位置对应的一个像素数据。
第三方面,本申请实施例提供一种终端设备,所述终端设备包括:处理器、存储器及通信总线;处理器执行存储器存储的运行程序时实现上述图像处理的方法。
第四方面,本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述图像处理的方法。
本申请实施例提供一种图像处理方法、终端设备及存储介质,该方法包括:为每个像素位置创建一个地址连续的排序队列空间;将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;在历史图像帧的数量大于或等于预设阈值时,更新填入排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;并分别利用每一个像素位置对应的一个中值数据更新所述待优化图像帧中每一个像素位置对应的一个像素数据。采用上述实现方案,在利用中值滤波对图像处理的过程中,通过优化图像历史帧数据存储的数据结构,为每个像素位置创建一个地址连续的排序队列空间和帧序队列空间,在将获取的每一个像素位置在待优化图像帧和对应的历史图像帧的一组像素数据填入初始数据队列或第一排序队列的过程中,会根据预设排序顺序对一组像素数据进行排序,获取到的每一个像素位置在历史图像帧中对应的一组像素数据、都是按照预设排序顺序排列好的一个地址连续的排序队列,进而,能够通过帧序队列确定最早填入排序队列的数据,直接对一个地址连续的按照预设排序顺序排列好的排序队列执行移除一个最早数据、移动一组数据、填入一个新数据的操作,确定出一个新的排序队列,进而确定出中值,减少获取每一个像素位置所对应的历史图像帧的一组像素数据时的内存读取次数和重复数据的多次读取问题,以及减少排序过程中对存储空间的读写次数,加快排序速度,从而降低中值滤波过程中排序的时间复杂度。
附图说明
图1为一种示例性地存储S帧图像的像素数据结构示意图;
图2为本申请实施例提供的一种图像处理方法流程图一;
图3为本申请实施例提供的一种示例性地创建的一个地址连续的排序队列空间示意图一;
图4为本申请实施例提供的一种示例性地创建的一个地址连续的排序队列空间示意图二;
图5为本申请实施例提供的一种示例性地创建的一个地址连续的排序队列空间示意图三;
图6为本申请实施例提供的一种图像处理方法流程图二;
图7为本申请实施例提供的一种终端设备1的结构示意图一;
图8为本申请实施例提供的一种终端设备1的结构示意图二。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点及技术内容,下面结合说明书附图及具体实施例对本申请的技术方案做进一步的详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本申请实施例所涉及的术语“第一/第二/第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述以外的顺序实施例。
现有技术中,在图像处理领域,进行中值滤波的过程中采用的排序方法及其平均时间复杂度分别为:插入排序
Figure DEST_PATH_IMAGE001
、希尔排序
Figure DEST_PATH_IMAGE002
、选择排序
Figure DEST_PATH_IMAGE003
,堆排序
Figure DEST_PATH_IMAGE004
、冒泡排序
Figure 961071DEST_PATH_IMAGE003
、快速排序
Figure DEST_PATH_IMAGE005
、归并排序
Figure 737266DEST_PATH_IMAGE005
、计数排序
Figure DEST_PATH_IMAGE006
、桶排序
Figure 238042DEST_PATH_IMAGE006
、基数排序
Figure 570935DEST_PATH_IMAGE006
。其中,n越大,中值滤波的时间复杂度越大。并且,在CPU、FPGA、DSP、ARM等实时系统中,排序过程需要对数据存储器执行多次读写操作,每一次读写需要耗费若干个处理器周期,严重降低执行效率,影响中值滤波的实用性。
目前,现有技术中,在图像处理领域中,为了解决中值滤波过程中时间复杂度高的问题,常见处理方法为:
方法1:在滤波窗口滑动过程中,减少窗口内数据的读取次数:例如,对于待排序的数据队列,每次仅更新移出、移入窗口部分的数据内容,其余部分的数据不重复读取。
方法2:在滤波窗口滑动过程中,减少窗口内数据的排序次数:例如,对上一次已排序好的数据队列,每次移出、移入数据时,仅对当前移出、移入数据执行相应的删除、比较、插入操作,其余已排序好的部分不重复排序。
方法3:利用SIMD(Single Instruction Multiple Data,单指令多数据流)、GPU(Graphic Processing Unit,图形处理单元)等向量或矩阵并行技术,对图像等大规模数据的排序进行并行运算,较少总体耗时。
针对上述现有技术中降低中值滤波时间复杂度的方法,仍然存在以下问题:
在方法1中需要开辟一个待排序的数据队列空间,每次将数据从存储器中读取到该队列空间中,再将该队列空间的数据送入排序单元。
例如,在对一幅大小为M*N图像执行滤波窗口的大小为S*S的空域中值滤波时,由于在图像上逐像素滑动,已滤波的像素数据不需缓存,因此所有像素需共用一个大小为S*S的待排序数据队列空间,其空间复杂度为O(S*S)。
但是,在对该图像序列执行滤波窗口大小为S的时域中值滤波时,由于图像序列是逐帧输入的,通常以S帧图像序列的方式在存储器中缓存,如图1所示,该缓存的图像序列空间大小为M*N*S。由于时域上的中值滤波,需要读取每个像素在S帧图像上的历史数据存入大小为S的待排序数据队列空间,而像素与像素之间的待排序数据队列空间是相互独立的,因此,不能采用方法1中的移出、移入数据的方式减少窗口内数据的读取次数。
在上述方法2中,通常是在上述方法1的基础上实现的,即需要有一个已排序好的数据队列空间。但如前所述,在对图像序列执行滤波窗口大小为S的时域中值滤波时,像素与像素之间的待排序数据队列空间是相互独立的,因此由于前1个像素已排序好的队列,并不能复用于下一个像素,即每个像素均需要对其待排序数据队列空间进行重新排序,因此不能采用方法2中仅对当前移出、移入数据执行相应的删除、比较、插入操作的方式减少窗口内数据的排序次数。
同时,随着滑动窗口的移动,在对已排序好的数据队列执行移出数据的操作,是在能够明确具体的移出数据内容的前提下,其适用于类似图像的空域中值滤波等应用,例如,当滑动窗口在图像上向左移动一个像素时,可明确知道是原滤波窗口中的左侧第1列像素对应的输入图像像素为移出像素,此时只需找到第1列像素在已排序好的数据队列中的位置即可将其删除。但对于时域中值滤波,由于在某个像素的历史数据队列排序时会丢失数据输入的先后顺序信息,从而当新一帧数据到来时,因无法判断在已排序好的数据队列中最早存入的数据的位置而无法确定待移出数据。
上述方法3中,其提到的改进方法并不是适用于所有的计算平台。
为解决上述问题,本申请实施例提供一种图像处理方法,如图2所示,在本申请实施例中,图像处理的方法主要包括:
S101、为每个像素位置创建一个地址连续的排序队列空间。
在本申请实施例中,在进行每个像素位置的像素数据获取之前,需要为每个像素位置创建一个地址连续的排序队列空间,利用创建的排序队列空间存储每个像素位置对应的像素数据。
需要说明的是,每个像素位置的像素数据存储在连续的地址空间中。
在本申请实施例中,为每个像素位置创建一个地址连续的排序队列空间可以是为每个像素位置开辟一个地址连续的存储空间;每个像素的存储空间的存储数量与预设阈值相同;按照像素位置在图像帧中的遍历顺序,将多个像素位置对应的存储空间连续拼接成一个连续的排序队列空间。
在本申请实施例中,为每个像素位置对应的像素数据单独开辟一行存储空间,一个像素位置对应一行存储空间,一行存储空间用于存储一个像素位置对应的像素数据。
需要说明的是,一行存储空间的存储数量和预设的图像帧数量相同。
在本申请实施例中,在为每个像素位置开辟一个地址连续的存储空间之后,可以根据像素位置在图像帧中的遍历顺序,将多个像素位置对应的多个存储空间进行拼接,得到一个地址连续的排序队列空间。
示例性地,对大小为M*N的图像序列执行滤波窗口大小为S的时域中值滤波,需要创建大小为M*N*S的排序队列空间,用于保存每个像素的S帧历史数据,如图3所示,为每一个像素位置开辟一个存储空间,其存储数量与图像帧数相同,假设,有S帧数据,将第一行第一列的第一像素位置的存储空间可以表示为(1,1,1)~(1,1,S),将第一行第二列的第二像素位置的存储空间可以表示为(1,2,1)~(1,2,S),以此类推,直至将第M行第N列的第M*N像素位置的存储空间可以表示为(M,N,1)~(M,N,S),在得到每个像素位置的一个长度为S的存储空间后,按照像素遍历的方式,将多个像素位置对应的存储空间进行拼接,得到创建的排序队列空间。
需要说明的是,排序队列空间的拼接方式可以按照遍历顺序以行和列方式进行拼接,也可以按照遍历方式,以行的方式进行拼接,具体地,可以根据实际情况进行选择,本申请中不做具体的限定。
示例性地,按照遍历方式以行和列的方式进行拼接,如图3所示,将第一行中每个像素位置对应的存储空间进行列拼接形成拼接后的第一行,依次将第二行中每个像素位置对应的存储空间进行列拼接形成拼接后的第二行,依次类推,直至将第M行中每个像素位置对应的存储空间进行列拼接后形成拼接后的第M行,依次将拼接后的第一行、第二行、…、第M行进行行拼接,得到一个排序队列空间。
需要说明的是,排序队列空间上的(i,j,k)代表的是图像上的第i行第j列像素的第k个历史数据。
示例性地,按照遍历方式以行的方式进行拼接,如图4所示,在得到每一个像素位置对应的存储空间后,依次按照遍历顺序先对第一行中每一个像素位置对应的存储空间以行的方式进行拼接,在对第二行中每一个像素位置对应的存储空间进行拼接,依次类推,直至拼接完第M行中每一个像素位置对应的存储空间,得到一个排序队列空间。
需要说明的是,排序队列空间上的(i,j,k)代表的是图像上的第i行第j列像素的第k个历史数据。
在本申请的另一实施例中,为每个像素位置创建一个地址连续的排序队列空间可以是为每个像素位置开辟一个地址连续的存储空间;每个像素的存储空间的存储数量与预设阈值相同;将多个像素位置对应的多个存储空间确定为排序队列空间。
在本申请实施例中,为每个像素位置对应的像素数据单独开辟一个地址连续的存储空间。
需要说明的是,每个像素地址连续的存储空间的存储数量和预设阈值相同。
在本申请实施例中,在为多个像素位置开辟对应的多个存储空间之后,将开辟的多个存储空间确定为排序队列空间。
需要说明的是,一个像素的存储空间的地址是连续的,多个像素之间的存储空间地址可以为不连续的。
示例性地,如图5所示,在图像帧数为S时,(1,1,1)~(1,1,S)为第一像素位置对应的在第1帧到第S帧的存储空间,其长度为S;(1,2,1)~(1,2,S)为第二像素位置处对应的存储空间,长度为S;直至最后一个位置对应的存储空间表示为(M,N,1)~(M,N,S),长度为S。每一个像素的存储空间的地址时连续的,多个像素之间的存储空间的地址可以是不连续。
需要说明的是,排序队列空间上的(i,j,k)代表的是图像上的第i行第j列像素的第k个历史数据。
需要说明的是,排序队列空间的创建方式以及排列顺序不限于本申请中的创建方式以及排列顺序,具体地,可以根据实际情况进行选择,本申请中不做具体的限定。
需要说明的是,本申请中为每一个像素位置开辟的一个存储空间中的地址是连续的。
S102、将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到排序队列空间中,得到每一个像素位置对应的初始排序队列。
在本申请实施例中,在对待优化图像帧中每一个像素位置处的像素数据进行优化时,需要获取到待优化图像帧每一个像素位置对应的历史图像帧中对应位置处的像素数据,将获取到的每一个像素位置在待优化图像帧和对应的历史图像帧中相对应位置处的像素数据确定为一组像素数据。
需要说明的是,历史图像帧是在待优化图像帧之前传入的图像帧,每一个待优化图像帧中的每个位置处的像素数据在历史图像帧中对应的位置处存在一一对应的像素数据,例如,当传入第k帧(待优化图像帧)图像时,是将第k帧(待优化图像帧)图像更新到对历史图像帧数据已排序好的排序队列中,像素在待优化图像帧和历史图像帧中的数据一起组成了一组像素数据。
示例性地,待优化图像帧是由M*N个像素组成,对应的待优化图像帧的历史图像帧也是由M*N个像素组成,在待优化图像帧的第一个位置处的像素数据,对应于待优化图像帧对应的历史图像帧中的第一个像素数据。
在本申请实施例中,通过将一组像素数据中的待填入初始排序队列空间的第一像素数据和已填入初始排序队列空间的第二像素数据之间的比较结果和预设排列顺序,依次将一组像素数据填入初始排序队列空间中,得到每一个像素位置对应的初始排序队列。
在本申请实施例中,在获取到待优化图像帧中每一个像素位置在待优化图像帧对应的历史图像帧中的一组像素数据之后,需要将获取的一组像素数据填入到创建的排序队列空间中。
在本申请实施例中,在将获取的一组像素数据填入到创建的排序队列空间中时,通过将一组像素数据中的待填入排序队列空间的像素数据和已填入排序队列空间的像素数据按照预设的排列顺序依次进行比较,按照预设排列顺序的比较结果依次将一组像素数据填入排序队列空间中,得到每一个像素位置对应的初始排序队列。
需要说明的是,初始排队列中的填入的像素数据是按照一定的排列顺序排列好的一组像素数据。
在本申请实施例中,在对一组像素数据进行排列并填入到初始排序队列中时,为每个像素位置创建一个地址连续的帧队列空间,在得到每一个像素位置对应的排序队列的过程中,按照一组像素数据在排序队列中的排列顺序,将一组像素数据所处的历史图像帧号依次填入帧序队列中,得到每一个像素位置对应的一个帧序队列。
需要说明的是,为每个像素位置创建一个地址连续的帧队列空间的方式和本申请中的创建排序队列空间的方式相同,在这里不再赘述。
需要说明的是,创建帧队列空间的方式不限于本申请中进行创建的方式,除本申请之外的其他的创建方式均属于本申请保护的范围,具体地,可以根据实际情况进行选择,本申请中不做具体的限定。
在本申请实施例中,在进行一组像素数据排列并填入到初始排序队列中时,还需要根据像素数据所对应的帧号创建帧序队列,在对一组像素数据进行排列时,对一组像素数据对应的历史图像帧号进行相对应的排序,并将一组像素数据对应的历史图像帧号填入帧序队列中。
需要说明的是,每一个像素位置对应的一组像素数据中,每个像素数据都分别对应于一个图像帧号,在对一组像素数据进行排序的过程中,对应地会将一组像素数据中每一个像素数据对应的历史图像帧号进行相应的排序,在得到排序后的历史图像帧号后,将排序后的历史图像帧号依次填入帧序队列中,得到每一个像素位置对应的一个帧序队列。
示例性地,在本申请实施例中,对大小为M*N的图像序列执行滤波窗口大小为S的时域中值滤波,首先创建大小为M*N*S的初始排序队列,用于保存每一个像素位置的S帧历史数据,当历史图像帧数小于S帧时,以升序排序为例,假设,第K帧图像上的第(i,j)个像素为Input(i,j,k),初始排序队列中第(i,j)个像素的第k个存储单元为Sort(i,j,k),第k帧图像的图像帧号为ID(k),初始帧序队列中第(i,j)个像素的第k个存储单位为SortID(i,j,k)。
在本申请实施例中,当传入第1帧图像时,依次将第1帧图像上的第(i,j)个像素Input(i,j,1),写入第1帧图像对应的初始排序队列中的第(i,j)个像素的第1个存储单元Sort(i,j,1);与此同时,将第1帧图像的图像帧号ID(1)写入初始帧序队列中的第(i,j)个像素的第1个存储单元SortID(i,j,1)。
当传入第2帧图像时,依次将第2帧图像上的第(i,j)个像素Input(i,j,2)与已填入初始排序队列中的Sort(i,j,1)进行比较,并进行大小排序:若Input(i,j,2)<Sort(i,j,1),则将Sort(i,j,1)写入Sort(i,j,2),并将Input(i,j,2)写入Sort(i,j,1),与此同时,将SortID(i,j,1)写入SortID(i,j,2),将第2帧图像的图像帧号ID(2)写入帧序队列中的第(i,j)个像素的第1个存储单元SortID(i,j,1);若Input(i,j,2)>=Sort(i,j,1),则直接将Input(i,j,2)写入Sort(i,j,2),与此同时,将第2帧图像的图像帧号ID(2)写入帧序队列中第(i,j)个像素的第2个存储单元SortID(i,j,2)。
需要说明的是,当第1帧图像和第2帧图像上的所有像素数据均完成排序后,此时初始数据队列中存储的所有像素均满足Sort(i,j,1)<=Sort(i,j,2)。
当传入第3帧图像时,依次将第3帧图像上的第(i,j)个像素Input(i,j,3)与已填入初始排序队列中的已排序好的Sort(i,j,1)、Sort(i,j,2)进行比较,并进行大小排序:若Input(i,j,3)<Sort(i,j,1),则依次将Sort(i,j,2)写入Sort(i,j,3),将Sort(i,j,1)写入Sort(i,j,2),将Input(i,j,3)写入Sort(i,j,1),与此同时,依次将SortID(i,j,2)写入SortID(i,j,3),将SortID(i,j,1)写入SortID(i,j,2),将第3帧图像的图像帧号ID(3)写入初始帧序队列中的第(i,j)个像素的第1个存储单元SortID(i,j,1);若Input(i,j,3)>=Sort(i,j,1),且Input(i,j,3)<Sort(i,j,2),则依次将Sort(i,j,2)写入Sort(i,j,3),将Input(i,j,3)写入Sort(i,j,2),与此同时,依次将SortID(i,j,2)写入SortID(i,j,3),将第3帧图像的图像帧号ID(3)写入初始帧序队列中的第(i,j)个像素的第2个存储单元SortID(i,j,2);若Input(i,j,3)>=Sort(i,j,1),且Input(i,j,3)>=Sort(i,j,2),则将Input(i,j,3)写入Sort(i,j,3),与此同时,将第3帧图像的图像帧号ID(3)写入初始帧序队列中的第(i,j)个像素的第3个存储单元SortID(i,j,3)。
需要说明的是,当所有图像帧对应的像素数据均完成排序后,此时初始数据队列中所有像素数据均满足Sort(i,j,1)<=Sort(i,j,2)<=Sort(i,j,3)。
以此类推,当传入第k帧图像时(k<=S),依次将第k帧图像上的第(i,j)个像素Input(i,j,k),与已填入初始排序队列中的已排序好的Sort(i,j,1)、Sort(i,j,2)、……、Sort(i,j,k-1)进行比较,并进行大小排序:将Input(i,j,k)依次与Sort(i,j,1)、Sort(i,j,2)、…、Sort(i,j,k-1)进行比较,在比较过程中,若Sort(i,j,m)>=Input(i,j,k)>=Sort(i,j,m-1)(其中m<k),则依次将Sort(i,j,k-1)、Sort(i,j,k-2)、…、Sort(i,j,m)分别写入Sort(i,j,k)、Sort(i,j,k-1)、…、Sort(i,j,m+1),将Input(i,j,k)写入Sort(i,j,m),与此同时,依次将SortID(i,j,k-1)、SortID(i,j,k-2)、…、SortID(i,j,m)分别写入SortID(i,j,k)、SortID(i,j,k-1)、…、SortID(i,j,m+1),将第k帧图像的图像帧号ID(k)写入帧序队列中第(i,j)个像素的第m个存储单元SortID(i,j,m)。
需要说明的是,当所有图像帧所对应的像素数据均完成排序后,此时初始数据队列中存储的所有像素均满足Sort(i,j,1)<=Sort(i,j,2)<=……<=Sort(i,j,k)。
需要说明的是,降序排序的方法和本申请中升序排序的方法相同,具体的,可以参照上述升序排序的具体实现方式,利用降序排序的实现方式在这里不再赘述。
S103、在历史图像帧的数量大于或等于预设阈值时,更新填入初始排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列。
在本申请实施例中,在历史图像帧的数量大于或等于预设阈值时,基于帧序队列,确定出最早填入初始排序队列的第三像素数据和第三像素数据在初始排序队列中的第一存储位置;并将第三像素数据从第一存储位置中移除;将第一像素数据和初始排序队列中除第三像素数据以外的剩余像素数据进行比较,得到比较结果;根据比较结果,在初始排序队列空间中对剩余像素数据进行位置移动,确定出一个空闲的第二存储位置;并将第一像素数据填入第二存储位置中,以得到每一个像素位置对应的第一排序队列。
在本申请实施例中,在将第一像素数据填入创建的排序队列空间中的过程中,当历史图像帧的数量大于或等于预设阈值时,表明排序队列空间中不存在空闲位置,此时,在新的一帧图像数据传入时,需要对填入排序队列空间中的像素数据进行更新。
需要说明的是,在进行排序队列中像素数据更新时,只需要确定出最早填入的排序队列中的像素数据,并将最早填入的像素数据移除。
在本申请实施例中,在确定最早填入的初始排序队列中的像素数据时,基于帧序队列,在帧序队列中找到最早填入的帧序号或帧顺序的位置,即找到了最早填入的像素数据的存储位置,根据存储位置确定出最早填入排序队列的第三像素数据和第一存储位置。
需要说明的是,帧序队列中最早填入的帧序号可以为帧号队列中的最小帧号,将最小帧号对应的排序队列中的像素数据确定为最早填入排序队列的第三像素数据。
在本申请实施例中,在确定出最早填入排序队列的第三像素数据后,将查找出的第三像素数据从第一存储位置移除,将要填入排序队列中的第一像素数据按照预设的排列顺序依次与排序队列空间中的剩余像素数据进行比较,找到要填入的第一像素数据要插入的位置,插入的位置可以在第一存储位置的左边,也可以在第一存储位置的右边,也可以在第一存储位置上,在确定出第一像素数据要插入的位置后,将需要移动的像素数据向左或向右移动,得到一个空闲的第二存储位置,将待填入的第一像素数据填入第二存储位置处,得到第一排序队列。
需要说明的是,当第一像素数据等于第三像素数据时,第二存储位置等于第一存储位置。
需要说明的是,在进行待填入数据与排序队列中的剩余像素数据进行比较时,可以是将待填入的第一像素数据与排序队列中剩余的其他像素数据依次进行比较确定第二位置;也可以是按照分组的方式,将待填入的第一像素数据与移除的第三像素数据进行比较,以第三像素数据的位置为分界线,确定出待填入的第一像素数据的位置在第三像素数据的左边还是右边,再将待填入的第一像素数据与第三像素数据左边的像素数据或右边的像素数据依次进行比较,对需要移动的像素数据进行移动,得到空闲的第二位置。
需要说明的是,在确定待填入第一像素数据在排序队列中的位置时,不限于本申请中进行第二存储位置的确定,具体地,可以根据实际情况进行选择,本申请中的不做具体限定。
需要说明的是,在进行比较的过程中,可以是按照从前向后的遍历方式进行比较,也可以按照从后向前的遍历方式进行比较,具体地,可以根据实际情况进行选择,本申请中不做具体的限定。
需要说明的是,在对排序队列中的像素数据进行调整后,对应的根据排序队列中调整的像素数据的排列顺序,在帧序队列中对调整的像素数据所对应的帧号的顺序作出相应的调整。
示例性地,按照分组的方式进行空闲的第二存储位置的确定时,先根据帧序队列空间中的最小帧号确定出最早填入的排序队列的第三像素数据后,将第一像素数据与第三像素数据进行大小比较,如果确定在第三像素数据的左边,则依次将第一像素数据与第三像素数据左边的像素数据进行比较,在确定出待插入的位置后,移动需要移动的数据,得到一个空闲的第二位置,将第一数据插入到第二存储位置处,并同时更新帧序队列。
示例性地,在本申请实施例中,针对于M*N*S的初始数据队列,当历史图像帧数大于或等于S帧时,以升序排序为例,假设,第k帧图像上的第(i,j)个像素为Input(i,j,k),第k帧图像的图像帧号为ID(k),排序队列中第(i,j)个像素的第k个存储单元为Sort(i,j,k),帧序队列中第(i,j)个像素的第k个存储单位为SortID(i,j,k)。
当传入第k帧图像时(k>s),此时,当有第一像素数据填入排序队列时,需要将排序队列中最早填入的数据移出,此时,可以从当前的SortID(i,j,1)到SortID(i,j,S)中,找到其中最早填入初始帧号队列中的图像帧号或者帧顺序的位置SortID(i,j,ID_earlest),其中ID_earlest∈[1,S],即找到初始数据队列中的待删除的数据Sort(i,j,ID_earlest)。
进一步地,将Input(i,j,k)与排序队列中待删除图像数据Sort(i,j,ID_earlest)进行比较,若Input(i,j,k)<Sort(i,j,ID_earlest),则将Input(i,j,k)依次与Sort(i,j,1)、Sort(i,j,2)、…、Sort(i,j,ID_earlest-1)比较,在比较的过程中,若找到Sort(i,j,m)>=Input(i,j,k)(其中m<ID_earlest),则依次将Sort(i,j,ID_earlest-1)、Sort(i,j,ID_earlest-2)、…、Sort(i,j,m)分别写入Sort(i,j,ID_earlest)、Sort(i,j,ID_earlest-1)、…、Sort(i,j,m+1),将Input(i,j,k)写入Sort(i,j,m);与此同时,依次将SortID(i,j,ID_earlest-1)、SortID(i,j,ID_earlest-2)、…、SortID(i,j,m)分别写入SortID(i,j,ID_earlest)、SortID(i,j,ID_earlest-1)、…、SortID(i,j,m+1),将ID(k)写入SortID(i,j,m);若在比较的过程中,若所有的Sort(i,j,m)均小于Input(i,j,k),其中,m<ID_earlest,则将Input(i,j,k)写入Sort(i,j,ID_earlest);与此同时,将ID(k)写入SortID(i,j,ID_earlest)。
若Input(i,j,k)=Sort(i,j,ID_earlest),则将Input(i,j,k)写入Sort(i,j,ID_earlest),与此同时,将ID(k)写入SortID(i,j,ID_earlest)。
若Input(i,j,k)>Sort(i,j,ID_earlest),将Input(i,j,k)依次与Sort(i,j,ID_earlest+1)、Sort(i,j,ID_earlest+2)、…、Sort(i,j,S)比较,在比较的过程中,若找到Sort(i,j,m)>=Input(i,j,k)(其中m>ID_earlest),则依次将Sort(i,j,ID_earlest+1)、Sort(i,j,ID_earlest+2)、…、Sort(i,j,m-1)分别写入Sort(i,j,ID_earlest)、Sort(i,j,ID_earlest+1)、…、Sort(i,j,m-2),将Input(i,j,k)写入Sort(i,j,m-1);与此同时,依次将SortID(i,j,ID_earlest+1)、SortID(i,j,ID_earlest+2)、…、SortID(i,j,m-1)分别写入SortID(i,j,ID_earlest)、SortID(i,j,ID_earlest+1)、…、SortID(i,j,m-2),将ID(k)写入SortID(i,j,m-1);特别的,若m=ID_earlest+1,即Sort(i,j,ID_earlest+1)>=Input(i,j,k),则将Input(i,j,k)写入Sort(i,j,ID_earlest);与此同时,将ID(k)写入SortID(i,j,ID_earlest)。若在比较过程中,若所有的Sort(i,j,m)均小于Input(i,j,k)(其中m>ID_earlest),则依次将Sort(i,j,ID_earlest+1)、Sort(i,j,ID_earlest+2)、…、Sort(i,j,S)分别写入Sort(i,j,ID_earlest)、Sort(i,j,ID_earlest+1)、…、Sort(i,j,S-1),将Input(i,j,k)写入Sort(i,j,S);与此同时,依次将SortID(i,j,ID_earlest+1)、SortID(i,j,ID_earlest+2)、…、SortID(i,j,S)分别写入SortID(i,j,ID_earlest)、SortID(i,j,ID_earlest+1)、…、SortID(i,j,S-1),将ID(k)写入SortID(i,j,S)。
需要说明的是,降序排序的方法和本申请中升序排序的方法相同,具体的,可以参照上述升序排序的具体实现方式,利用降序排序的方法在这里不再赘述。
S104、分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;并分别利用每一个像素位置对应的一个中值数据更新待优化图像帧中每一个像素位置对应的一个像素数据。
在本申请实施例中,在得到每一个像素位置对应的一个排队队列后,确定每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量,若每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为奇数时,则将每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的一个像素数据确定为每一个像素位置对应的一个中值数据;若每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为偶数时,则将每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的两个数据的平均值确定为每一个像素位置对应的一个中值数据。
示例性地,假设第(i,j)个像素的有效排序序列为Sort(i,j,1)、Sort(i,j,2)、……、Sort(i,j,k),k<=S,当k为奇数时,第(i,j)个像素的中值为Sort(i,j,k/2+1);当k为偶数时,第(i,j)个像素的中值为Sort(i,j,k/2)或者为Sort(i,j,k/2)与Sort(i,j,k/2+1)的平均值。
在本申请实施例中,在确定到每一个像素位置对应的一个中值数据之后,就可以利用确定的该中值数据对待优化图像帧中的每一个像素位置对应的像素数据进行更新。
需要说明的是,上述中值滤波的实现方法可以应用于N维图像序列的时域去噪处理,还可以提高一维信号的中值滤波的速度,其实现方法适用于所有具有相应存储资源的计算平台。
可以理解的是,在本申请实施例中提供的一种图像处理方法中,在利用中值滤波对图像处理的过程中,通过优化图像历史帧数据存储的数据结构,为每个像素位置创建一个地址连续的排序队列空间和帧序队列空间,在将待优化图像帧中每一个像素位置和所对应的历史图像帧的一组像素数据填入初始数据队列或第一排序队列的过程中,会根据预设排序顺序对一组像素数据进行排序,获取到的每一个像素位置在历史图像帧中对应的一组像素数据都是按照预设排序顺序排列好的一个地址连续的排序队列,进而,能够通过帧序队列确定最早填入排序队列的数据,直接对一个地址连续的按照预设排序顺序排列好的排序队列执行移除一个最早数据、移动一组数据、填入一个新数据的操作确定出一个新的排序队列进而确定出中值,减少获取每一个像素位置所对应的历史图像帧的一组像素数据时的内存读取次数和重复数据的多次读取问题,以及减少排序过程中对存储空间的读写次数,加快排序速度,从而降低中值滤波过程中排序的时间复杂度。
基于上述实施例,在本申请中提供的一种图像处理方法,如图6所示,具体包括以下步骤:
步骤1、为每个像素位置创建一个地址连续的排序队列空间和一个地址连续的帧序队列空间;
步骤2、获取每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据;
步骤3、通过将一组像素数据中的待填入初始数据队列的第一像素数据和已填入初始数据队列的第二像素数据进行比较,根据比较结果和预设排列顺序,依次将一组像素数据填入初始数据队列中,得到每一个像素位置对应的初始排序队列;
步骤4、在得到每一个像素位置对应的排序队列的过程中,按照一组像素数据在排序队列中的排列顺序,将一组像素数据所处的历史图像帧号依次填入帧序队列中,得到每一个像素位置对应的一个帧序队列;
步骤5、在历史图像帧的数量大于或等于预设阈值时,基于帧序队列,确定出最早填入排序队列的第三像素数据,移除第三像素数据;
步骤6、将第一像素数据和第三像素数据进行比较,并将需要移动的数据进行移动,确定出第一像素数据待插入的第二存储位置,将第一像素数据填入第二存储位置中,得到每一个像素位置对应的第一排序队列;
步骤7、根据第一排序队列空间中的像素数据的排列顺序更新帧序队列空间中帧号的排列顺序;
步骤8、根据排序队列中存储的数据数量确定出中值数据,利用每一个像素位置对应的一个中值数据更新所述待优化图像帧中每一个像素位置对应的一个像素数据。
基于上述实施例,在本申请实施例中提供的终端设备1,如图7所示,该终端设备1包括:
创建单元10,用于为每个像素位置创建一个地址连续的排序队列空间。
填入单元11,用于将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列。
更新单元12,用于在所述历史图像帧的数量大于或等于预设阈值时,更新填入所述排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列。
查找单元13,用于分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据。
所述更新单元12,还用于分别利用每一个像素位置对应的一个中值数据更新所述待优化图像帧中每一个像素位置对应的一个像素数据。
可选地,创建单元10,还用于为每个像素位置创建一个地址连续的帧队列空间。
填入单元11,还用于在得到每一个像素位置对应的排序队列的过程中,按照一组像素数据在排序队列中的排列顺序,将所述一组像素数据所处的历史图像帧号依次填入帧序队列中,得到每一个像素位置对应的一个帧序队列。
可选地,填入单元11,还用于根据所述一组像素数据中的待填入初始排序队列空间的第一像素数据和已填入所述初始排序队列空间的第二像素数据之间的比较结果和预设排列顺序,依次将所述一组像素数据填入初始排序队列空间中,得到每一个像素位置对应的初始排序队列;
可选地,终端设备1还包括:确定单元,确定单元,用于在所述历史图像帧的数量大于或等于预设阈值时,基于帧序队列,确定出最早填入所述排序队列的第三像素数据和所述第三像素数据在所述排序队列中的第一存储位置。
可选地,终端设备1还包括:移除单元,移除单元,用于将所述第三像素数据从所述第一存储位置中移除。
可选地,终端设备1还包括:比较单元,比较单元,用于将第一像素数据和所述排序队列中除第三像素数据以外的剩余像素数据进行比较,得到比较结果。
可选地,所述确定单元,还用于根据所述比较结果,在所述排序队列空间中对所述剩余像素数据进行位置移动,确定出一个空闲的第二存储位置。
可选地,所述填入单元11,还用于将所述第一像素数据填入所述第二存储位置中,以得到每一个像素位置对应的第一排序队列。
可选地,所述确定单元,还用于确定所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量;若所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为奇数时,则将所述每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的一个像素数据确定为所述每一个像素位置对应的一个中值数据;若所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为偶数时,则将所述每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的两个数据的平均值确定为所述每一个像素位置对应的一个中值数据。
可选地,终端设备1还包括:开辟单元,开辟单元,用于为每个像素位置开辟一个地址连续的存储空间;每个像素的存储空间的存储数量与预设阈值相同。
可选地,终端设备1还包括:拼接单元,所述拼接单元,还用于按照像素位置在图像帧中的遍历顺序,将多个像素位置对应的存储空间连续拼接成一个连续的排序队列空间。
可选地,确定单元,还用于将多个像素位置对应的多个存储空间确定为所述排序队列空间。
本申请实施例提供的一种终端设备,为每个像素位置创建一个地址连续的排序队列空间;将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;在历史图像帧的数量大于或等于预设阈值时,更新填入排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;并分别利用每一个像素位置对应的一个中值数据更新待优化图像帧中每一个像素位置对应的一个像素数据。由此可见,本申请实施例提供的终端设备,在利用中值滤波对图像处理的过程中,通过优化图像历史帧数据存储的数据结构,为每个像素位置创建一个地址连续的排序队列空间和帧序队列空间,在将待优化图像帧中每一个像素位置和所对应的历史图像帧的一组像素数据填入初始数据队列或第一排序队列的过程中,会根据预设排序顺序对一组像素数据进行排序,获取到的每一个像素位置在历史图像帧中对应的一组像素数据、都是按照预设排序顺序排列好的一个地址连续的排序队列,进而,能够通过帧序队列确定最早填入排序队列的数据,直接对一个地址连续的按照预设排序顺序排列好的排序队列执行移除一个最早数据、移动一组数据、填入一个新数据的操作确定出一个新的排序队列进而确定出中值,减少获取每一个像素位置所对应的历史图像帧的一组像素数据时的内存读取次数和重复数据的多次读取问题,以及减少排序过程中对存储空间的读写次数,加快排序速度,从而降低中值滤波过程中排序的时间复杂度。
图8为本申请实施例提供的一种终端设备1的组成结构示意图,在实际应用中,基于上述实施例的同一公开构思下,如图8所示,本实施例的终端设备1包括处理器14、存储器15和通信总线16。
在具体的实施例过程中,上述创建单元10、填入单元11、更新单元12、查找单元13、确定单元、移除单元、比较单元、开辟单元、拼接单元可由位于终端设备1上的处理器14实现,上述处理器14可以为特定用途集成电路(ASIC,Application Specific IntegratedCircuit)、数字信号处理器(DSP,Digital Signal Processor)、数字信号处理图像处理装置(DSPD,Digital Signal Processing Device)、可编程逻辑图像处理装置(PLD,Programmable Logic Device)、现场可编程门阵列(FPGA,Field Programmable GateArray)、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本实施例不作具体限定。
在本申请实施例中,上述通信总线16用于实现处理器14和存储器15之间的连接通信;上述处理器14执行存储器15中存储的运行程序时实现如下的图像处理方法:
为每个像素位置创建一个地址连续的排序队列空间;将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;在历史图像帧的数量大于或等于预设阈值时,更新填入排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;并分别利用每一个像素位置对应的一个中值数据更新待优化图像帧中每一个像素位置对应的一个像素数据。
进一步地,上述处理器14,还用于为每个像素位置创建一个地址连续的帧队列空间,在得到每一个像素位置对应的排序队列的过程中,按照一组像素数据在排序队列中的排列顺序,将所述一组像素数据所处的历史图像帧号依次填入帧序队列中,得到每一个像素位置对应的一个帧序队列。
进一步地,上述处理器14,还用于根据所述一组像素数据中的待填入初始排序队列空间的第一像素数据和已填入所述初始排序队列空间的第二像素数据之间的比较结果和预设排列顺序,依次将所述一组像素数据填入初始排序队列空间中,得到每一个像素位置对应的初始排序队列。
进一步地,上述处理器14,还用于在所述历史图像帧的数量大于或等于预设阈值时,基于帧序队列,确定出最早填入所述排序队列的第三像素数据和所述第三像素数据在所述排序队列中的第一存储位置;并将所述第三像素数据从所述第一存储位置中移除;将第一像素数据和所述排序队列中除第三像素数据以外的剩余像素数据进行比较,得到比较结果;根据所述比较结果,在所述排序队列空间中对所述剩余像素数据进行位置移动,确定出一个空闲的第二存储位置;并将所述第一像素数据填入所述第二存储位置中,以得到每一个像素位置对应的第一排序队列。
进一步地,上述处理器14,还用于确定所述每一个像素位置对应的一个排序队列中存储的数据数量;若所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为奇数时,则将所述每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的一个像素数据确定为所述每一个像素位置对应的一个中值数据;若所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为偶数时,则将所述每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的两个数据的平均值确定为所述每一个像素位置对应的一个中值数据。
进一步地,上述处理器14,还用于为每个像素位置开辟一个地址连续的存储空间;每个像素的存储空间的存储数量与预设阈值相同;并按照像素位置在图像帧中的遍历顺序,将多个像素位置对应的存储空间连续拼接成一个连续的排序队列空间。
进一步地,上述处理器14,还用于为每个像素位置开辟一个地址连续的存储空间;每个像素的存储空间的存储数量与预设阈值相同;将多个像素位置对应的多个存储空间确定为所述排序队列空间。
基于上述实施例,本申请实施例提供一种存储介质,其上存储有计算机程序,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个处理器执行,应用于终端设备中,该计算机程序实现如上述的图像处理方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台图像显示设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种图像处理方法,其特征在于,所述方法包括:
为每个像素位置创建一个地址连续的排序队列空间;
将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;
在所述历史图像帧的数量大于或等于预设阈值时,更新填入所述排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;
分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;并分别利用每一个像素位置对应的一个中值数据更新所述待优化图像帧中每一个像素位置对应的一个像素数据;
其中,所述将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列,包括:
根据所述一组像素数据中的待填入初始排序队列空间的第一像素数据和已填入所述初始排序队列空间的第二像素数据之间的比较结果和预设排列顺序,依次将所述一组像素数据填入初始排序队列空间中,得到每一个像素位置对应的初始排序队列;
所述更新填入所述排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列,包括:
从所述排序队列空间中查找并移除最早填入的第三像素数据;
将第一像素数据依次与除所述第三像素数据以外的剩余像素数据进行比较,得到比较结果;
根据比较结果,在所述排序队列空间中对所述剩余像素数据进行位置移动;并将所述第一像素数据填入所述排序队列空间中空闲的第二存储位置中,以得到每一个像素位置对应的第一排序队列。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为每个像素位置创建一个地址连续的帧队列空间,在得到每一个像素位置对应的排序队列的过程中,按照一组像素数据在排序队列中的排列顺序,将所述一组像素数据所处的历史图像帧号依次填入帧序队列中,得到每一个像素位置对应的一个帧序队列。
3.根据权利要求1所述的方法,其特征在于,所述在所述历史图像帧的数量大于或等于预设阈值时,更新填入所述排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列,包括:
在所述历史图像帧的数量大于或等于预设阈值时,基于帧序队列,确定出最早填入所述排序队列的第三像素数据和所述第三像素数据在所述排序队列中的第一存储位置;并将所述第三像素数据从所述第一存储位置中移除;
将第一像素数据和所述排序队列中除第三像素数据以外的剩余像素数据进行比较,得到比较结果;
根据所述比较结果,在所述排序队列空间中对所述剩余像素数据进行位置移动,确定出一个空闲的第二存储位置;并将所述第一像素数据填入所述第二存储位置中,以得到每一个像素位置对应的第一排序队列。
4.根据权利要求1所述的方法,其特征在于,所述分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据,包括:
确定所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量;
若所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为奇数时,则将所述每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的一个像素数据确定为所述每一个像素位置对应的一个中值数据;
若所述每一个像素位置对应的初始排序队列或第一排序队列中存储的数据数量为偶数时,则将所述每一个像素位置对应的初始排序队列或第一排序队列中,处于中间位置的两个数据的平均值确定为所述每一个像素位置对应的一个中值数据。
5.根据权利要求1所述的方法,其特征在于,所述为每个像素位置创建一个地址连续的排序队列空间,包括:
为每个像素位置开辟一个地址连续的存储空间;每个像素的存储空间的存储数量与预设阈值相同;
按照像素位置在图像帧中的遍历顺序,将多个像素位置对应的存储空间连续拼接成一个连续的排序队列空间。
6.根据权利要求1所述的方法,其特征在于,所述为每个像素位置创建一个地址连续的排序队列空间,所述方法还包括:
为每个像素位置开辟一个地址连续的存储空间;每个像素的存储空间的存储数量与预设阈值相同;
将多个像素位置对应的多个存储空间确定为所述排序队列空间。
7.一种终端设备,其特征在于,所述终端设备包括:
创建单元,用于为每个像素位置创建一个地址连续的排序队列空间;
填入单元,用于将获取的每一个像素位置在待优化图像帧和对应的历史图像帧中的一组像素数据填入到所述排序队列空间中,得到每一个像素位置对应的初始排序队列;
更新单元,用于在所述历史图像帧的数量大于或等于预设阈值时,更新填入所述排序队列空间中的像素数据,得到每一个像素位置对应的第一排序队列;
查找单元,用于分别从每一个像素位置对应的初始排序队列或第一排序队列中查找每一个像素位置对应的一个中值数据;
所述更新单元,还用于分别利用每一个像素位置对应的一个中值数据更新所述待优化图像帧中每一个像素位置对应的一个像素数据;
其中,所述填入单元,还用于根据所述一组像素数据中的待填入初始排序队列空间的第一像素数据和已填入所述初始排序队列空间的第二像素数据之间的比较结果和预设排列顺序,依次将所述一组像素数据填入初始排序队列空间中,得到每一个像素位置对应的初始排序队列;
查找单元,用于从所述排序队列空间中查找并移除最早填入的第三像素数据;
比较单元,用于将第一像素数据依次与除所述第三像素数据以外的剩余像素数据进行比较,得到比较结果;
所述填入单元,还用于根据比较结果,在所述排序队列空间中对所述剩余像素数据进行位置移动;并将所述第一像素数据填入所述排序队列空间中空闲的第二存储位置中,以得到每一个像素位置对应的第一排序队列。
8.一种终端设备,其特征在于,所述终端设备包括:处理器、存储器及通信总线;所述处理器执行存储器存储的运行程序时实现如权利要求1-6任一项所述的方法。
9.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-6任一项所述的方法。
CN202210925075.5A 2022-08-03 2022-08-03 一种图像处理方法、终端设备及存储介质 Active CN114998158B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210925075.5A CN114998158B (zh) 2022-08-03 2022-08-03 一种图像处理方法、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210925075.5A CN114998158B (zh) 2022-08-03 2022-08-03 一种图像处理方法、终端设备及存储介质

Publications (2)

Publication Number Publication Date
CN114998158A CN114998158A (zh) 2022-09-02
CN114998158B true CN114998158B (zh) 2022-10-25

Family

ID=83022270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210925075.5A Active CN114998158B (zh) 2022-08-03 2022-08-03 一种图像处理方法、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN114998158B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117314730B (zh) * 2023-11-28 2024-03-15 进迭时空(杭州)科技有限公司 一种用于加速数字图像处理的中值滤波计算装置及其方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006510236A (ja) * 2002-06-18 2006-03-23 アーデーツエー・オートモテイブ・デイスタンス・コントロール・システムズ・ゲゼルシヤフト・ミツト・ベシユレンクテル・ハフツング ディジタル濾波方法
WO2014021890A1 (en) * 2012-08-01 2014-02-06 Dolby Laboratories Licensing Corporation Percentile filtering of noise reduction gains
CN103269412B (zh) * 2013-04-19 2017-03-08 华为技术有限公司 一种视频图像的降噪方法及装置
CN113256539B (zh) * 2021-07-01 2021-11-02 武汉市聚芯微电子有限责任公司 深度图像的去混叠方法、装置、设备及计算机存储介质
CN114202485A (zh) * 2021-12-16 2022-03-18 北京达佳互联信息技术有限公司 处理图像的方法、装置、电子设备、存储介质及程序产品

Also Published As

Publication number Publication date
CN114998158A (zh) 2022-09-02

Similar Documents

Publication Publication Date Title
CN107533459B (zh) 使用电阻存储器阵列的数据处理方法和单元
US20170069132A1 (en) Graphics Processing Method and System for Processing Sub-Primitives Using Sub-Primitive Indications in a Control Stream
US10210649B2 (en) Graphics processing method and system for processing sub-primitives using cached graphics data hierarchy
CN111008040B (zh) 缓存装置及缓存方法、计算装置及计算方法
CN110956612B (zh) 一种细胞快速计数方法、计算机设备及可读存储介质
CN114998158B (zh) 一种图像处理方法、终端设备及存储介质
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
CN108717571B (zh) 一种用于人工智能的加速方法和装置
CN107705270B (zh) 中值滤波的处理方法和装置、电子设备、计算机存储介质
CN112115801B (zh) 动态手势识别方法、装置、存储介质及终端设备
US10929965B2 (en) Histogram statistics circuit and multimedia processing system
JPH0863355A (ja) プログラム制御装置及びプログラム制御方法
US20240282109A1 (en) Method and apparatus for tensor processing
Bártovský et al. Parallel implementation of sequential morphological filters
CN113015003A (zh) 视频帧缓存方法和设备
KR20210070369A (ko) 3d 이미지 처리 중의 데이터 읽기/쓰기 방법 및 시스템, 저장 매체 및 단말
CN101286226A (zh) 一种缩小图像的数字滤波方法和装置
CN108876701B (zh) 一种基于游程的单次扫描连通域标记方法及其硬件结构
CN108764182B (zh) 一种优化的用于人工智能的加速方法和装置
CN110688055A (zh) 一种大图计算中数据访问方法及系统
CN109800867B (zh) 一种基于fpga片外存储器的数据调用方法
CN110322389B (zh) 池化方法、装置及系统、计算机可读存储介质
CN116091297A (zh) 一种图像连通域标记硬件实现算法
CN1293514C (zh) 一种数字图像的缩放处理系统
US10565674B2 (en) Graphics processing device and graphics processing method

Legal Events

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