一种图像非本地滤波的方法及装置与流程

文档序号:11775783阅读:189来源:国知局
一种图像非本地滤波的方法及装置与流程

本发明涉及图像处理领域,尤其涉及一种图像非本地滤波的方法及装置。



背景技术:

由于成像系统、传输介质和记录设备等的不完善,数字图像在形成、传输和记录的过程中,往往会受到多种噪声的污染,这些噪声会对图像造成亮、暗点的干扰,极大降低了图像质量,影响图像复原、分割、特征提取、图像识别等后续工作。目前通常会采用对图像进行滤波从而消除图像噪声。

如今的图像去噪算法充分利用了多个图像特性以提高去噪算法效率,如双边滤波算法、非本地滤波算法、对偶滤波算法等。非本地滤波是图像滤波中一项非常重要的技巧,当今很多效果较好的算法基本上都会用到非本地滤波的技巧。

现有技术中,对于非本地滤波,通常选取较大的邻域,然后计算邻域中每个像素的模板距离,但是模板距离越大的像素对滤波的影响越小,而且图像中像素点非常的多,若要计算邻域中每个像素的模板距离计算量大、计算过程复杂。



技术实现要素:

有鉴于此,本发明实施例公开了一种图像非本地滤波的方法及装置,减少了非本地滤波时邻域中像素点的个数,降低了计算的复杂度,提高了计算效率。

本发明公开的一种图像非本地滤波的方法,包括:

获取目标图像中的任意一点作为待滤波像素点,将所述待滤波像素点放入到第一集合中,并将所述待滤波像素点作为目标像素点;

计算所述目标像素点与相邻的多个像素点之间的模板距离;

判断得到的各个模板距离是否小于本次迭代预设的距离阈值;

将小于本次迭代预设的距离阈值的模板距离对应的像素点加入到第一集合中;

判断是否达到预设的迭代次数;

若未达到预设的迭代次数,将所述第一集合中本次迭代新加入的像素点作为目标像素点,并返回执行所述计算所述目标像素点与相邻的多个像素点之间的模板距离;若达到了预设的迭代次数,将所述第一集合作为所述待滤波像素点的邻域,对所述待滤波像素点进行非本地滤波处理。

可选的,本次迭代预设的距离阈值小于上次迭代预设的距离阈值。

可选的,所述将小于预设的本次距离阈值的模板距离对应的像素点依据预设的第一规则加入到第一集合中,包括:

将小于本次迭代预设的距离阈值的模板距离对应的像素点放入到第二集合中;其中,所述第二集合为经过初始化后得到的空集合;

将所述第二集合中所有的像素点加入到所述第一集合中。

可选的,所述将所述第一集合作为所述待滤波像素点的邻域,对所述待滤波像素点进行滤波,包括:

计算所述第一集合中所有像素点与所述待滤波像素点的模板距离;

依据所述第一集合中所有像素点与所述待滤波像素点的模板距离以及预设的非本地滤波规则,计算所述待滤波像素点的非本地滤波结果。

可选的,所述相邻的多个像素点为与所述目标像素点相邻的4个或者8个像素点。

可选的,所述将所述待滤波像素点放入到第一集合中之前还包括:

将所述第一集合初始化以使所述第一集合为空集合。

本发明实施例还提供了一种图像非本地滤波的装置,所述装置包括:

目标像素点定义单元,用于获取目标图像中的任意一点作为待滤波像素点,将所述待滤波像素点放入到第一集合中,并将所述待滤波像素点作为目标像素点;

模板距离计算单元,用于计算所述目标像素点与相邻的多个像素点之间的模板距离;

第一判断单元,用于判断得到的各个模板距离是否小于本次迭代预设的距离阈值;

像素点添加单元,用于将小于本次迭代预设的距离阈值的模板距离对应的像素点加入到第一集合中;

第二判断单元,用于判断是否达到预设的迭代次数;

返回执行单元,用于若未达到预设的迭代次数,将所述第一集合中本次迭代新加入的像素点作为目标像素点,并返回执行所述计算所述目标像素点与相邻的多个像素点之间的模板距离;

滤波处理单元,用于若达到了预设的迭代次数,将所述第一集合作为所述待滤波像素点的邻域,对所述待滤波像素点进行非本地滤波处理。

可选的,本次迭代预设的距离阈值小于上次迭代预设的距离阈值。

可选的,像素点添加单元,包括:

第一像素点添加子单元,用于将小于本次迭代预设的距离阈值的模板距离对应的像素点放入到第二集合中;其中,所述第二集合为经过初始化后得到的空集合;

第二像素点添加子单元,用于将所述第二集合中所有的像素点加入到所述第一集合中。

可选的,所述滤波处理单元,包括:

模板距离计算子单元,用于计算所述第一集合中所有像素点与所述待滤波像素点的模板距离;

滤波结果计算子单元,用于依据所述第一集合中所有像素点与所述待滤波像素点的模板距离以及预设的非本地滤波规则,计算所述待滤波像素点的非本地滤波结果。

本实施例中,在对图像中任意像素点进行滤波之前,可以获取目标图像中的任意一点作为待滤波像素点,将待滤波像素点放入到第一集合中,并将待滤波像素点作为目标像素点,计算目标像素点与目标像素点相邻的多个像素点之间的模板距离;判断得到的各个模板距离是否小于预设的距离阈值;将小于本次迭代预设的距离阈值的模板距离对应的像素点加入到第一集合中。在预设的迭代次数内,将第一集合中本次迭代新加入的像素点作为目标像素点,并返回执行计算目标像素点与目标像素点相邻的多个像素点之间的模板距离;其中,相邻的多个像素点不包括与目标像素点已计算过模板距离的像素点。达到预设的迭代次数后,将第一集合作为待滤波像素点的邻域,对待滤波像素点进行非本地滤波处理。这样,可以减少对待滤波像素点进行滤波时邻域中的像素点个数,降低了计算的复杂度,提高了运算效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种图像非本地滤波的方法的流程示意图;

图2为本发明实施例提供的像素点的邻域示意图;

图3-a为本发明实施例提供的像素点a0和b0示意图;

图3-b为本发明实施例提供的像素点a0的模板的事例示意图;

图3-c为本发明实施例提供的像素点b0的模板的事例示意图;

图4为本方发明实施例提供的像素点a0的邻域的示意图;

图5为本发明实施例提供的一种图像非本地滤波的装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参考图1,示出了本发明实施例一种图像非本地滤波的方法的流程示意图,在本实施例中,所述方法可以包括:

s101:获取目标图像中的任意一点作为待滤波像素点,将所述待滤波像素点放入到第一集合中,并将所述待滤波像素点作为目标像素点。

本实施例中,所述第一集合在放入所述目标像素点之前是空集合,即在放入所述目标像素点之前不包含任何像素点,具体的,将所述目标像素点放入到第一集合中之前还包括:将所述第一集合初始化以使所述第一集合为空集合。

s102:计算所述目标像素点与相邻的多个像素点之间的模板距离。

本实施例中,所述相邻的多个像素点可以为与所述目标像素点相邻的4个或者8个像素点,且这些像素点均为所述目标图像中的像素点。其中,这里所说的相邻是与所述目标像素点直接相邻且不间隔的像素点。举例说明:如图2所示,若是计算所述目标图像中与所述目标像素点相邻的4个像素点时,假设目标像素点为图2中的像素点a,与所述目标像素相邻的4个像素点可以为cage四个点;若是计算所述目标图像中与所述目标像素点相邻的8个像素点时,假设目标像素点为图2中的像素点a,与所述目标像素相邻的8个像素点可以为abcdefgh八个点。

举例说明:如图3-a所示,计算图中a0和b0之间的模板距离,其中a0的模板如图3-b所示,b0的模板如图3-c所示,其中,图3-b中的a12就是图3-a中的b0,图3-c中的b2就是图3-a中的a0。可以依据以下公式1)计算a0和b0的模板距离;

s103:判断得到的各个模板距离是否小于本次迭代预设的距离阈值。

本实施例中,需要说明的是本次迭代预设的距离阈值小于上次迭代预设的距离阈值。

举例说明,假设迭代次数为3次,每次都预设一个距离阈值,假设第一次迭代阈值为th0,第二次迭代的距离阈值为th1,第三次迭代的距离阈值为th2,则可以有th0>th1>th2。

除此之外,每次迭代预设的距离阈值还可以是相同的。

s104:将小于本次迭代预设的距离阈值的模板距离对应的像素点加入到第一集合中。

本实施例中,s104具体可以包括:将小于本次迭代预设的距离阈值的模板距离对应的像素点放入到第二集合中;其中,所述第二集合为初始化后得到的空集合;将第二集合中所有的像素点加入到第一集合中。

除此之外,还可以直接将小于本次迭代预设的距离阈值的模板距离对应的像素点放入到第一集合中。

将小于本次迭代预设的距离阈值的模板距离对应的像素点放入第一集合后,此时第一集合中包含的是目标像素点和目标像素点与相邻像素点的模板距离中小于预设的距离阈值所对应的像素点。

举例说明:若待滤波的像素点为a,将所述像素点a放入第一集合中,在目标图像中与所述目标像素相邻的像素点为b、c、d、e,a和b、c、d、e的模板距离分别是md(a,b)、md(a,c)、md(a,d)、md(a,e),此次迭代预设的距离阈值为th0,假设md(a,b)<th0、md(a,d)<th0,而md(a,c)>th0、md(a,e)>th0,因此,可以将像素点b和d放入到第二集合中,然后再将第二集合中的像素点b和d放入到第一集合中。此时,第一集合中包括目标像素点a和像素点b、d。

s105:判断是否达到预设的迭代次数。

s106:若未达到预设的迭代次数,将第一集合中本次迭代新加入的目标像素点作为目标像素点,并返回执行s102;

其中,需要说明的是,所述本次迭代新加入的目标像素点的相邻的多个像素点不包括与所述目标像素点已计算过模板距离的像素点。

本实施例中,每执行一次s102~s106的步骤就是执行一次迭代,每次执行迭代之前都已经预设了距离阈值。举例说明:假设设置迭代次数为3,,设待滤波的像素点为a,第一次迭代时,初始化第一集合ω,将所述待滤波像素a放入第一集合中,初始化第二集合ψ以使所述第二集合为空集合,在目标图像中与所述目标像素相邻的像素点为b、c、d、e,判断像素点a与像素点b、c、d、e之间的模板距离与预设的第一次迭代时的距离阈值th0,假设md(a,b)<th0、md(a,d)<th0,而md(a,c)>th0、md(a,e)>th0,因此,可以将像素点b和d放入到第二集合中,然后再将第二集合中的像素点b和d放入到第一集合中。此时,第一集合中包括目标像素点a和像素点b、d,即ω={a,b,d};进行第二次迭代,初始化ψ,预设的第二次迭代时的距离阈值th1,计算ω中每一个像素与其相邻像素的模板距离,但是由于已经计算过a和它所有相邻像素的模板距离,因此此次迭代不再考虑像素点a,将b和d作为目标像素点,也可以理解为,第一集合在第一次迭代时加入的像素点为b和d,因此,将b和d作为目标像素点。分别计算b、d与它相邻的多个像素点之间的模板距离,假设与b相邻的像素点是f、h、g和a,与d相邻的像素点是g、a、i和j,由于已经计算过a与b的模板距离以及a与d的模板距离,因此不再计算md(a,b)和md(a,d)。而需要分别计算以下的模板距离:md(b,f),md(b,h),md(b,g),md(d,g),md(d,i),md(d,j)。假设只有md(b,h),md(b,g),和md(d,i)小于th1,所以将h、g和i加入ψ,即ψ={h,g,i},然后再将ψ中的元素加入到ω中,此时ω={a,b,d,h,g,i}。开始第三次迭代,假设预设的第三次迭代的距离阈值为th2,初始化集合ψ,计算ω中每一个像素与其相邻像素的模板距离,由于在第一次迭代和第二次迭代中已经计算过a、b、d与它们之间相邻像素的模板距离,因此不再考虑,此时将将h、g和i作为目标像素点,也可以理解为,上次迭代加入第一集合的h、g和i,因此将h、g和i作为目标像素点,分别计算h、g、i和它们相邻像素点的模板距离,假设h的相邻像素是k、l、m和b,g的相邻像素是b、d、m和n,i的相邻像素是n、d、p和q,由于在第二次迭代时已经计算过md(b,h)、md(b,g)、md(d,g)、md(d,i),所以分别计算如下模板距离:md(h,k),md(h,l),md(h,m),md(g,m),md(g,n),md(i,n),md(i,p),md(i,q),设其中只有md(g,m),md(g,n)小于th2,然后可以把m和n放入到ψ中,再将ψ中的元素加入到ω中,此时ω={a,b,d,h,g,i,m,n}。

s107:若达到了预设的迭代次数,将第一集合作为所述待滤波像素点的邻域,对所述待滤波像素点进行非本地滤波处理。

举例说明:假设预设的迭代次数为三次,经过三次迭代后,得到的第一集合ω={a,b,d,h,g,i,m,n},如图4所示,则将第一集合ω作为待滤波像素点a的邻域,对所述待滤波像素点a进行非本地滤波处理。

其中,s102具体可以包括:

计算所述第一集合中所有像素点与所述待滤波像素点的模板距离;

依据所述第一集合中所有像素点与所述待滤波像素点的模板距离以及预设的非本地滤波规则,计算所述待滤波像素点的非本地滤波结果。

举例说明:计算ω={a,b,d,h,g,i,m,n}中,所有像素点与所述待滤波像素点a的模板距离,并根据以下的公式2)对待滤波像素点a进行非本地滤波;

其中,公式2)表示的为模板距离的负指数加权平均。

可以通过本实施例的方法,对目标图像中任意的一个像素点进行滤波,直到所有的像素点都进行了非本地滤波处理后结束。

本实施例中,在对图像中任意像素点进行滤波之前,可以获取目标图像中的任意一点作为待滤波像素点,将所述待滤波像素点作为目标像素点,计算目标像素点与所述目标像素点相邻的多个像素点之间的模板距离;判断得到的各个模板距离是否小于预设的距离阈值;将小于本次迭代预设的距离阈值的模板距离对应的像素点依据预设的第一规则加入到第一集合中。在预设的迭代次数内,将第一集合中上次迭代新加入的像素点作为目标像素点,并返回执行计算目标像素点与所述目标像素点相邻的多个像素点之间的模板距离;其中,所述相邻的多个像素点不包括与所述目标像素点已计算过模板距离的像素点。达到预设的迭代次数后,将所述第一集合作为所述待滤波像素点的邻域,对所述待滤波像素点进行非本地滤波处理。这样,减少了目标像素点滤波时邻域中的像素点个数,降低了计算的复杂度,提高了运算效率。

参考图5,示出了本发明实施例一种图像非本地滤波的装置的结构示意图,在本实施例中,所述装置可以包括:

目标像素点定义单元501,用于获取目标图像中的任意一点作为待滤波像素点,将所述待滤波像素点放入到第一集合中,并将所述待滤波像素点作为目标像素点;

模板距离计算单元502,用于计算所述目标像素点与相邻的多个像素点之间的模板距离;

第一判断单元503,用于判断得到的各个模板距离是否小于本次迭代预设的距离阈值;

像素点添加单元504,用于将小于本次迭代预设的距离阈值的模板距离对应的像素点加入到第一集合中;

第二判断单元505,用于判断是否达到预设的迭代次数;

返回执行单元506,用于若未达到预设的迭代次数,将所述第一集合中本次迭代新加入的像素点作为目标像素点,并返回执行所述计算所述目标像素点与相邻的多个像素点之间的模板距离;

滤波处理单元507,用于若达到了预设的迭代次数,将所述第一集合作为所述待滤波像素点的邻域,对所述待滤波像素点进行非本地滤波处理。

可选的,本次迭代预设的距离阈值小于上次迭代预设的距离阈值。

可选的,像素点添加单元,包括:

第一像素点添加子单元,用于将小于本次迭代预设的距离阈值的模板距离对应的像素点放入到第二集合中;其中,所述第二集合为经过初始化后得到的空集合;

第二像素点添加子单元,用于将所述第二集合中所有的像素点加入到所述第一集合中。

可选的,所述滤波处理单元,包括:

模板距离计算子单元,用于计算所述第一集合中所有像素点与所述待滤波像素点的模板距离;

滤波结果计算子单元,用于依据所述第一集合中所有像素点与所述待滤波像素点的模板距离以及预设的非本地滤波规则,计算所述待滤波像素点的非本地滤波结果。

可选的,所述相邻的多个像素点为与所述目标像素点相邻的4个或者8个像素点。

可选的,所述将所述待滤波像素点放入到第一集合中之前还包括:

初始化单元,用于将所述第一集合初始化以使所述第一集合为空集合。

通过本实施例提供的装置,解决了现有技术中选取的邻域较大,计算异常复杂的问题。通过将像素点与相邻的像素点之间的模板距离与预设的距离阈值进行比较,得到小于预设的距离阈值的相邻的像素点,这样,可以减少对待滤波像素点进行滤波时邻域中的像素点个数,降低了计算的复杂度,提高了运算效率。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1