一种图像双边滤波方法和装置与流程

文档序号:11178316阅读:460来源:国知局
一种图像双边滤波方法和装置与流程

技术邻域

本发明涉及图像处理技术邻域,具体涉及一种图像双边滤波方法和装置。



背景技术:

在图像处理中,图像滤波起着重要作用,图像滤波可以有效地抑制、平滑各种噪声,以及保持图像边缘信息,从而改善后续图像处理工作的质量。

双边滤波算法是一种应用广泛的滤波算法,常用于图像滤波,它结合了空域加权和像素加权,能自适应于图像本地内容,进而广泛应用于图像去噪、锐化、动态范围调整等。对于图像中的一个像素(x,y),其双边滤波结果b(x,y)如下:

其中,x和y分别是图像中像素i的横坐标和纵坐标;像素(m,n)是像素(x,y)附近的像素,即像素(m,n)是像素(x,y)的邻域像素。

由上述公式可知,公式中涉及大量的浮点精度参数的除法和指数计算,通过计算机直接处理除法运算的速度是比较慢的,而处理指数计算的速度则更加慢,尤其是浮点位宽较宽,难以进行高密度并行化,因此,目前的双边滤波算法速度非常慢,使得图像处理时,等待时间较长,降低了用户体验。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种图像双边滤波方法和一种图像双边滤波装置。

为了解决上述问题,本发明实施例公开了一种图像双边滤波方法,所述方法包括:

获取图像中待滤波像素的待滤波像素特征参数,以及,所述待滤波像素的各个邻域像素的邻域像素特征参数;

依据所述待滤波像素特征参数和各个邻域像素的所述邻域像素特征参数,在预设像素域贡献表、预设像素域权重表和预设空域权重表进行查询,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值;

依据所述各个邻域像素的所述像素域贡献值、所述空域权重值、所述邻域像素特征参数和所述待滤波像素特征参数,计算所有邻域像素的像素贡献和;

依据所述各个邻域像素的所述像素域权重值、所述空域权重值,计算所有邻域像素的像素加权和;

依据所有邻域像素的所述像素贡献和、所述像素加权和以及所述待滤波像素特征参数,计算得到所述待滤波像素的双边滤波结果;

依据所述双边滤波结果对所述待滤波像素进行滤波处理。

优选地,所述待滤波像素特征参数包括待滤波像素坐标值和待滤波像素值,所述邻域像素特征参数包括邻域像素坐标值和邻域像素值,所述依据所述待滤波像素特征参数和各个邻域像素的所述邻域像素特征参数,在预设像素域贡献表、预设像素域权重表和预设空域权重表进行查询,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值的步骤包括:

计算所述各个邻域像素的邻域像素坐标值与所述待滤波像素坐标值的差值,得到各个邻域像素的坐标值差值;

计算所述各个邻域像素的邻域像素值与所述待滤波像素值的差值,得到各个邻域像素的像素值差值;

依据所述各个邻域像素的坐标值差值,在所述预设空域权重表中查询,得到各个邻域像素的空域权重值;

依据所述各个邻域像素的像素值差值,在所述预设像素域权重表中查询,得到各个邻域像素的像素域权重值;

依据所述各个邻域像素的像素值差值的绝对值,在所述预设像素域贡献表中查询,得到各个邻域像素的像素域贡献值。

优选地,所述依据所述各个邻域像素的所述像素域贡献值、所述空域权重值、所述邻域像素特征参数和所述待滤波像素特征参数,计算所有邻域像素的像素贡献和的步骤包括:

计算各个邻域像素的像素域贡献值与空域权重值的乘积,得到各个邻域像素的初始像素贡献值;

对各个邻域像素的像素值差值进行符号运算,得到各个邻域像素的符号运算结果;

计算所述各个邻域像素的初始像素贡献值与所述各个邻域像素的符号运算结果的乘积,得到各个邻域像素的像素贡献值;

对所述各个邻域像素的像素贡献值求和,得到所有邻域像素的像素贡献和。

优选地,所述依据所述各个邻域像素的所述像素域权重值、所述空域权重值,计算所有邻域像素的像素加权和的步骤包括:

计算各个邻域像素的像素域权重值与空域权重值的乘积,得到各个邻域像素的像素加权值;

对所述各个邻域像素的像素加权值求和,得到所有邻域像素的像素加权和。

优选地,所述依据所有邻域像素的所述像素贡献和、所述像素加权和以及所述待滤波像素特征参数,计算得到所述待滤波像素的双边滤波结果的步骤包括:

确定所述像素加权和的倒数;

确定第一移位位数;

依据所述第一移位位数,对所述倒数进行二进制右移位运算,得到移位运算后的倒数;

将所述像素贡献和与所述移位运算后的倒数相乘后,与所述待滤波像素值求和,得到所述待滤波像素的双边滤波结果。

优选地,所述确定所述像素加权和的倒数的步骤包括:

获取所述预设像素域权重表的第一缩放因子,以及,所述预设空域权重表的第二缩放因子;

依据所述第一缩放因子和第二缩放因子,计算得到第二移位位数;

依据所述第二移位位数和所述像素加权和,在预设二进制缩放表进行查询,得到所述像素加权和的乘法缩放因子;

依据所述乘法缩放因子,对所述像素加权和进行二进制对齐处理,得到对齐后的第二像素加权和;

依据所述第二移位位数和所述第二像素加权和,在预设倒数表中查询,得到所述像素加权和的初始倒数;

依据所述乘法缩放因子和所述初始倒数,计算所述像素加权和的倒数。

优选地,所述依据所述第二移位位数和所述像素加权和,在预设二进制缩放表进行查询,得到所述像素加权和的乘法缩放因子的步骤包括:

将所述像素加权和转换为二进制,得到二进制像素加权和;

依据所述第二移位位数,对所述二进制像素加权和进行二进制右移位运算,得到第一像素加权和;

将所述第一像素加权和,进行十进制转换,得到第一查询位码;

依据所述第一查询位码在所述预设二进制缩放表进行查询,得到乘法缩放因子。

优选地,所述依据所述第二移位位数和所述第二像素加权和,在预设倒数表中查询,得到所述像素加权和的初始倒数的步骤包括:

依据所述第二移位位数,对所述第二像素加权和进行二进制右移位运算,得到右移位后的第三像素加权和;

将所述第三像素加权和与预设数值进行与运算,得到第二查询位码;

依据所述第二查询位码在所述预设倒数表中查询,得到所述像素加权和的初始倒数。

优选地,所述确定第一移位位数的步骤包括:

获取所述预设像素域贡献表的第三缩放因子;

依据所述第一缩放因子、第三缩放因子计算得到所述第一移位位数。

为了解决上述问题,本发明实施例公开了一种图像双边滤波装置,包括:

特征参数获取模块,用于获取图像中待滤波像素的待滤波像素特征参数,以及,所述待滤波像素的各个邻域像素的邻域像素特征参数;;

查表模块,用于依据所述待滤波像素特征参数和各个邻域像素的所述邻域像素特征参数,在预设像素域贡献表、预设像素域权重表和预设空域权重表进行查询,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值;

像素贡献和计算模块,用于依据所述各个邻域像素的所述像素域贡献值、所述空域权重值、所述邻域像素特征参数和所述待滤波像素特征参数,计算所有邻域像素的像素贡献和;

像素加权和计算模块,用于依据所述各个邻域像素的所述像素域权重值、所述空域权重值,计算所有邻域像素的像素加权和;

双边滤波结果计算模块,用于依据所有邻域像素的所述像素贡献和、所述像素加权和以及所述待滤波像素特征参数,计算得到所述待滤波像素的双边滤波结果;

处理模块,用于依据所述双边滤波结果对所述待滤波像素进行滤波处理。

优选地,所述待滤波像素特征参数包括待滤波像素坐标值和待滤波像素值,所述邻域像素特征参数包括邻域像素坐标值和邻域像素值,所述查表模块包括:

坐标值差值计算子模块,用于计算所述各个邻域像素的邻域像素坐标值与所述待滤波像素坐标值的差值,得到各个邻域像素的坐标值差值;

像素值差值计算子模块,用于计算所述各个邻域像素的邻域像素值与所述待滤波像素值的差值,得到各个邻域像素的像素值差值;

第一查表子模块,用于依据所述各个邻域像素的坐标值差值,在所述预设空域权重表查询,得到各个邻域像素的空域权重值;

第二查表子模块,用于依据所述各个邻域像素的像素值差值,在所述预设像素域权重表内查询,得到各个邻域像素的像素域权重值;

第三查表子模块,用于依据所述各个邻域像素的像素值差值的绝对值,在预设像素域贡献表查询,得到各个邻域像素的像素域贡献值。

优选地,所述像素贡献和计算模块包括:

初始像素贡献值计算子模块,用于计算各个邻域像素的像素域贡献值与空域权重值的乘积,得到各个邻域像素的初始像素贡献值;

符号运算子模块,用于对各个邻域像素的像素值差值进行符号运算,得到各个邻域像素的符号预算结果;

像素贡献值计算子模块,用于计算所述各个邻域像素的初始像素贡献值与所述各个邻域像素的符号预算结果的乘积,得到各个邻域像素的像素贡献值;

像素贡献和计算子模块,用于对所述各个邻域像素的像素贡献值求和,得到所有邻域像素的像素贡献和。

优选地,所述像素加权和计算模块包括:

像素加权值计算子模块,用于计算各个邻域像素的像素域权重值与空域权重值的乘积,得到各个邻域像素的像素加权值;

像素加权和计算子模块,用于对所述各个邻域像素的像素加权值求和,得到所有邻域像素的像素加权和。

优选地,所述双边滤波结果计算模块包括:

倒数确定子模块,用于确定所述像素加权和的倒数;

第一移位位数确定子模块,用于确定第一移位位数;

第一移位运算子模块,用于依据所述第一移位位数,对所述倒数进行二进制右移位运算,得到移位运算后的倒数;

双边滤波结果计算子模块,用于将所述像素贡献和与所述移位运算后的倒数相乘后,与所述待滤波像素值求和,得到待滤波像素的双边滤波结果。

优选地,所述倒数确定子模块包括:

第一缩放因子获取单元,用于获取所述预设像素域权重表的第一缩放因子,以及,所述预设空域权重表的第二缩放因子;

第二移位位数计算单元,用于依据所述第一缩放因子和第二缩放因子,计算得到第二移位位数;

乘法缩放因子获取单元,用于依据所述第二移位位数和所述像素加权和,在预设二进制缩放表进行查询,得到所述像素加权和的乘法缩放因子;

像素加权和处理单元,用于依据所述乘法缩放因子,对所述像素加权和进行二进制对齐处理,得到对齐后的第二像素加权和;

初始倒数获取单元,用于依据所述第二移位位数和所述第二像素加权和,在预设倒数表中查询,得到所述像素加权和的初始倒数;

倒数计算单元,用于依据所述乘法缩放因子和所述初始倒数,计算所述像素加权和的倒数。

优选地,所述乘法缩放因子获取单元包括:

二进制转换子单元,用于将所述像素加权和转换为二进制,得到二进制像素加权和;

第一移位计算子单元,用于依据所述第二移位位数,对所述二进制像素加权和进行二进制右移位运算,得到第一像素加权和;

十进制转换子单元,用于将所述第一像素加权和,进行十进制转换,得到第一查询位码;

乘法缩放因子获取子单元,用于依据所述第一查询位码在所述预设二进制缩放表进行查询,得到乘法缩放因子。

优选地,所述初始倒数获取单元包括:

第一移位计算子单元,用于依据所述第二移位位数,对所述第二像素加权和进行二进制右移位运算,得到右移位后的第三像素加权和;

与运算子单元,用于将所述第三像素加权和与预设数值进行与运算,得到第二查询位码;

初始倒数获取子单元,用于依据所述第二查询位码,在所述预设倒数表中查询,得到所述像素加权和的初始倒数。

优选地,所述第一移位位数确定子模块包括:

第二缩放因子获取单元,用于获取所述预设像素域贡献表的第三缩放因子;

第一移位位数计算单元,用于依据所述第一缩放因子、第三缩放因子计算得到所述第一移位位数。

本发明实施例包括以下优点:

本发明实施例在获取图像中待滤波像素和待滤波像素的各个邻域像素的像素特征参数后,通过像素特征参数在预设像素域贡献表、预设像素域权重表和预设空域权重表进行查询,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值,然后计算出所有邻域像素的像素贡献和以及像素加权和,最后通过像素贡献和、像素加权和以及待滤波像素的像素特征参数,计算得到待滤波像素的双边滤波结果,使用双边滤波结果对待滤波像素进行图像处理。应用本发明实施例,邻域像素的像素域贡献值、像素域权重值和空域权重值由指数计算转换为查表操作,并且通过查找预设倒数表查找得到像素加权和的倒数,将像素贡献和与像素加权的除法运算转换为像素贡献和与像素加权的倒数的乘法运算,避免了大量的浮点精度参数的除法和指数运算,提高了双边滤波结果的运算速度,缩短了图像处理等待时间,提高了图像处理效率以及用户体验。

附图说明

图1是本发明的一种图像双边滤波方法实施例的步骤流程图;

图2是本发明的一种图像双边滤波装置实施例的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明的一种图像双边滤波方法实施例的步骤流程图,具体可以包括如下步骤:

步骤101,获取图像中待滤波像素的待滤波像素特征参数,以及,所述待滤波像素的各个邻域像素的邻域像素特征参数。

图像是由多个像素构成的,每个像素在图像中具有固定的坐标值和像素值,在双边滤波处理时,可以是逐个对每个像素进行处理,为便于说明本发明实施例,可以定义待滤波像素为坐标(x,y),其邻域图像为坐标(m,n)。像素特征参数可以是像素的坐标值和像素值,例如待滤波像素的像素值可以定义为i(x,y),其邻域像素值可以定义为i(m,n)。

步骤102,依据所述待滤波像素特征参数和各个邻域像素的所述邻域像素特征参数,在预设像素域贡献表、预设像素域权重表和预设空域权重表进行查询,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值。

本发明实施例中,首先将目前的双边滤波公式转换为如下公式:

上述公式中,为空域滤波系数,为像素域滤波系数。

本发明实施例,基于上述公式,存储有预设像素域贡献表、预设像素域权重表和预设空域权重表,在获取邻域像素的像素特征参数后,例如获取邻域像素的坐标(m,n)和像素值i(m,n)后,可以在预设像素域贡献表、预设像素域权重表和预设空域权重表中查找,获取相应的像素的像素域贡献值、像素域权重值和空域权重值,具体的,步骤102可以包括如下子步骤:

子步骤s11,计算所述各个邻域像素的邻域像素坐标值与所述待滤波像素坐标值的差值,得到各个邻域像素的坐标值差值。

在双边滤波计算公式中,空域滤波系数中需要用到邻域像素坐标值与待滤波像素坐标值的差值,因此需要计算待滤波像素的各个邻域像素的坐标值与待滤波像素坐标值的差值,例如,待滤波像素坐标值为(x,y),邻域像素坐标值为(m,n),则可以计算坐标差值为n-y和m-x。

子步骤s12,计算所述各个邻域像素的邻域像素值与所述待滤波像素值的差值,得到各个邻域像素的像素值差值。

本发明实施例中,可以定义待滤波系数像素值为i(x,y),邻域像素值为i(m,n),则邻域像素值与待滤波像素值的像素值差值可以记为:i(m,n)-i(x,y)。

子步骤s13,依据所述各个邻域像素的坐标值差值,在所述预设空域权重表中查询,得到各个邻域像素的空域权重值。

本发明实施例中,预设空域权重表可以通过以下公式生成:

其中,μ=n-y,ν=(m-x),f为第一缩放因子。

通过上述公式可以建立预设空域权重表,由于e的指数运算涉及到小数点位数较多,为了保持精度,整个表按照(1<<f)进行缩放,f的取值可以根据实际情况进行确定。预设空域权重表的长度以e的指数运算衰减到0为止,指数衰减的非常快,预设空域权重表的长度不会很长。

因此,可以根据各个邻域像素的坐标值差值,在预设空域权重表内查询,得到各个邻域像素的空域权重值。

子步骤s14,依据所述各个邻域像素的像素值差值,在所述预设像素域权重表中查询,得到各个邻域像素的像素域权重值。

本发明实施例中,预设像素域权重表可以通过以下公式生成:

其中,t=i(m,n)-i(x,y),t≥0,c为第二缩放因子。

通过上述公式可以建立预设像素域权重表,由于e的指数运算涉及到小数点位数较多,为了保持精度,整个表按照(1<<c)进行缩放,c的取值可以根据实际情况进行确定。预设空域权重表的长度以e的指数运算衰减到0为止,指数衰减的非常快,预设像素域权重表的长度不会很长。

因此,可以根据各个邻域像素的像素值差值,在预设空域权重表内查询,得到各个邻域像素的空域权重值。

子步骤s15,依据所述各个邻域像素的像素值差值的绝对值,在所述预设像素域贡献表中查询,得到各个邻域像素的像素域贡献值。

本发明实施例中,可以预设像素域贡献表,该预设像素域贡献表通过以下公式生成:

公式中,t=i(m,n)-i(x,y),t≥0,d为第三缩放因子。

通过上述公式可以建立预设像素域贡献表,为了保证像素域贡献值为正值,因此需要取像素值差值的绝对值。由于e的指数运算涉及到小数点位数较多,为了保持精度,整个表按照(1<<d)进行缩放,d的取值可以根据实际情况进行确定。预设像素域贡献表的长度以e的指数运算衰减到0为止,指数衰减的非常快,预设像素域贡献表的长度不会很长。

可以根据各个邻域像素的像素值差值的绝对值,在预设像素域贡献表内查询,得到各个邻域像素的像素域贡献值。

子步骤s11-子步骤s15,通过滤波公式中的空域滤波系数以及像素域滤波系数,建立预设像素域贡献表、预设像素域权重表和预设空域权重表,然后通过待滤波像素特征参数和各个邻域像素的像素特征参数查表,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值,这样,将指数运算结果预先存储,滤波时直接通过查表得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值,避免了大量的指数运算,提高了效率。

步骤103,依据所述各个邻域像素的所述像素域贡献值、所述空域权重值、所述邻域像素特征参数和所述待滤波像素特征参数,计算所有邻域像素的像素贡献和。

本发明实施例中,根据子步骤s13中建立预设空域权重表和子步骤s15中建立预设像素域贡献表公式,则计算所有邻域像素的像素贡献和公式表示为:

w=∑(m,n)∈ωc_pxl[abs(i(m,n)-i(x,y))]×w_sp[(m-x),(n-y)]×sign(i(m,n)-i(x,y))

其中,c_pxl为公式contrib_pixel[t]的简写,w_sp为公式weight_pixel[t]简写;sign()为符号运算,在数学和计算机运算中,其功能是取某个数的符号(正或负),abs为绝对值运算,w为所有邻域像素的像素贡献和。

基于上述所有邻域像素的像素贡献和公式,步骤103可以包括如下子步骤:

子步骤s21,计算各个邻域像素的像素域贡献值与空域权重值的乘积,得到各个邻域像素的初始像素贡献值;

子步骤s22,对各个邻域像素的像素值差值进行符号运算,得到各个邻域像素的符号运算结果;

子步骤s23,计算所述各个邻域像素的初始像素贡献值与所述各个邻域像素的符号运算结果的乘积,得到各个邻域像素的像素贡献值;

子步骤s24,对所述各个邻域像素的像素贡献值求和,得到所有邻域像素的像素贡献和。

在子步骤s21-s24中,先计算每个邻域像素的像素域贡献值与空域权重值的乘积,得到每个邻域像素的初始像素贡献值,初始像素贡献值为正值;然后通过对各个邻域像素的像素值差值进行符号运算,像素值差值为正值则返回符号运算结果为1,像素值差值为负值则返回符号运算结果-1,最后符号运算结果与初始像素贡献值的乘积即为每个邻域像素的像素贡献值,对所有邻域像素的像素贡献值求和,即得到所有邻域像素的像素贡献和。

步骤104,依据所述各个邻域像素的所述像素域权重值、所述空域权重值,计算所有邻域像素的像素加权和。

本发明实施例中,根据子步骤s13中建立预设空域权重表和子步骤s14中建立预设像素域权重表公式,则计算所有邻域像素的像素加权和u公式表示为:

u=∑(m,n)∈ωw_pxl[i(m,n)-i(x,y)]×w_sp[(m-x),(n-y)]

其中,w_pxl为公式weight_pixel[t]的简写,w_sp为公式weight_pixel[t],u为所有邻域像素的像素加权和。

基于上述所有邻域像素的像素加权和公式可知,步骤104可以包括如下子步骤:

子步骤s31,计算各个邻域像素的像素域权重值与空域权重值的乘积,得到各个邻域像素的像素加权值;

子步骤s32,对所述各个邻域像素的像素加权值求和,得到所有邻域像素的像素加权和。

在子步骤s31-s32中,先计算每个邻域像素的像素域权重值与空域权重值的乘积,得到每个邻域像素的像素加权值,然后对所有邻域像素的像素加权值求和,即得到所有邻域像素的像素加权和u。

步骤105,依据所有邻域像素的所述像素贡献和、所述像素加权和以及所述待滤波像素特征参数,计算得到所述待滤波像素的双边滤波结果。

本发明实施例中,根据步骤103中的计算所有邻域像素的像素贡献和公式,以及,步骤104中计算所有邻域像素的像素加权和公式,得到本发明实施例双边滤波计算公式如下:

其中,c和d分别为第二缩放因子、第三缩放因子,w为像素贡献和,u为像素加权和,i(x,y)为待滤波图像像素值,b(x,y)为待滤波像素的双边滤波结果,1<<(c-d)为移位运算。

在本发明的一种优选实施例中,步骤105可以包括如下子步骤:

子步骤s41,确定所述像素加权和的倒数。

由上述公式可知,在计算w和u中的过程中包含查表、加减法、绝对值、取符号和乘法操作,可以使用现有x86或armcpu现有指令集并行计算获得的,但除以u本身在不论x86还是arm都没有对应的指令实现,其实除以u,可以相当于乘以u的倒数,因此,可以通过高效算法获取u的倒数。

在本发明的一种优选实施例中,子步骤s41可以包括如下子步骤:

子步骤s411,获取所述预设像素域权重表的第一缩放因子,以及,所述预设空域权重表的第二缩放因子。

本发明实施例在建立预设像素域权重表时设置第二缩放因子c,建立预设空域权重表时设置第一缩放因子为f,因此第一缩放因子f和第二缩放因子c可以直接获取。

子步骤s412,依据所述第一缩放因子和第二缩放因子,计算得到第二移位位数。

根据像素加权和u的计算公式

u=∑(m,n)∈ωw_pxl[i(m,n)-i(x,y)]×w_sp[(m-x),(n-y)]

当m等于x,n等于y时,w_pxl和w_sp同时取得最大值(1<<f)和(1<<c)。当m不等于x,n不等于y时,w_pxl的取值指数级衰减,w_sp则和像素值相关,如果像素值相同,那么u为(1<<c),如果差别较大,那么就会衰减到0。在整个滤波取值空间ω中,如果所有像素值都相同,那么u取最大值:

umax=(1<<c)×∑(m,n)∈ωw_pxl[i(m,n)-i(x,y)];

如果滤波空间中所有其他像素都和中心像素差别较大以致w_sp都为0,那么u取极小值:

umin=(1<<c)×(1<<f)

即只有中心空域滤波核的中心点的值。

一般来说,因为w_sp是指数衰减的,其衰减速度较快,中心点的加权占其总和中的很大一部分,umax/umin是小于16的,如果w_sp中的σs为1,那么umax/umin大约等于2,所以可以定义一个u∈[(1<<(t-1)),(1<<(t+4))-1]的除法,其中t=c+f-1。t也可以用上限来确定,在滤波范围ω和σs以及c和f已定的情况下,可以计算出umax,然后再确定t应该是多少,t即为第二移位位数。

子步骤s413,依据所述第二移位位数和所述像素加权和,在预设二进制缩放表进行查询,得到所述像素加权和的乘法缩放因子。

在本发明的一种优选实施例中,子步骤s413可以包括如下子步骤:

子步骤s413-1,将所述像素加权和转换为二进制,得到二进制像素加权和;

子步骤s413-2,依据所述第二移位位数,对所述二进制像素加权和进行二进制右移位运算,得到第一像素加权和;

子步骤s413-3,将所述第一像素加权和,进行十进制转换,得到第一查询位码;

子步骤s413-4,依据所述第一查询位码在所述预设二进制缩放表进行查询,得到乘法缩放因子。

本发明实施例中,设置有预设二进制缩放表,以下以16位数的二进制缩放表进行说明,定义二进制缩放表uc_bitmask_to_mulscaling[16]={32,16,8,8,4,4,4,4,2,2,2,2,2,2,2,2}。该表中的数据为乘法缩放因子,每个数据具有相应的第一查询位码,上述长度为16的二进制缩放表,其第一查询位码为大于等于0小于16的正整数,例如,第一查询位码为0时,乘法缩放因子为32,第一查询位码为4时,乘法缩放因子为4。

具体而言,先将像素加权和u转换为二进制,得到二进制像素加权和,然后对二进制像素加权和进行移位运算,移位位数即为第二移位位数t,移位运算后得到第一像素加权和并转换为十进制,即得到第一查询位码,然后使用第一查询位码在预设二进制缩放表查询,即得到对应的乘法缩放因子。

子步骤s414,依据所述乘法缩放因子,对所述像素加权和进行二进制对齐处理,得到对齐后的第二像素加权和。

待滤波像素具有多个邻域像素,每个邻域像素的像素加权值(u值)不同,可以对邻域像素值进行对齐处理。具体的,可以将每个邻域像素的像素加权值与其对应的乘法缩放因子相乘,并将相乘得到的乘积转换为二进制后得到每个邻域像素的第二像素加权和,该第二像素加权和以二进制表示,此时,所有每个邻域像素的第二像素加权和的二进制位数相同,最高为数也相同,这样实现了像素加权和的对齐处理。

子步骤s415,依据所述第二移位位数和所述第二像素加权和,在预设倒数表中查询,得到所述像素加权和的初始倒数。

本发明实施例中,设置有预设倒数表uc_reverse_byte_tbl[16]={248,234,221,210,200,191,182,174,167,161,155,149,144,139,134,130},该倒数表长度为16,即包括16个数据,其通过如下公式生成:

uc_reverse_byte_tbl[x]=32768/(0x84+x×8)

公式中0≤x≤15且x为正整数。

上述的预设倒数表查询时需要第二查询位码进行查询,第二查询位码为正整数,相对于倒数表长度为16,其第二查询位码为大于等于0小于16的正整数,例如,第二查询位码为0时,初始倒数为248,第二查询位码为4时,初始倒数为200。

在本发明一种优选实施例中,子步骤s415可以包括如下子步骤:

子步骤s415-1,依据所述第二移位位数,对所述第二像素加权和进行二进制右移位运算,得到右移位后的第三像素加权和;

子步骤s415-2,将所述第三像素加权和与预设数值进行与运算,得到第二查询位码;

子步骤s415-3,依据所述第二查询位码在所述预设倒数表中查询,得到所述像素加权和的初始倒数。

在子步骤s415-1到子步骤s415-3中,依据第二移位位数t,将对齐后的第二像素加权和进行移位运算,并与预设数值进行与运算,本发明实施例中是与15进行与运算(&15),进行与运算后转换为十进制数,即可得到第二查询位码,然后使用第二查询位码在预设倒数表中查询,得到像素加权和的初始倒数。

子步骤s416,依据所述乘法缩放因子和所述初始倒数,计算所述像素加权和的倒数。

在得到像素加权和的初始倒数后,可以根据乘法缩放因子和初始倒数,计算像素加权和的倒数。即乘法缩放因子和初始倒数的乘积即为像素加权和的倒数。

为了使本邻域技术人员更容易理解子步骤s411-子步骤s416确定像素加权和的倒数的过程,以下结合实例进行说明。

设t为6,则像素加权和u的取值范围是[32,1023]。举3个u值进行说明,即u1=32、u2=159、u3=756,则确定倒数过程如下:

s1,将u1=32、u2=159、u3=756转换为二进制为:100000、10011111、1011110100;

s2,将二进制的100000、10011111、1011110100右移t位后分别是0、10、1011,转换为十进制数得到第一查询位码0、2、11;

s3,通过第一查询位码0、2、11,在预设二进制缩放表uc_bitmask_to_mulscaling={32,16,8,8,4,4,4,4,2,2,2,2,2,2,2,2}查询,分别获得到三个缩放因子mulscl1=32、mulscl2=8、mulscl3=2。

s4,采用mulscl1、mulscl2及mulscl3分别乘以u1=32、u2=159、u3=756,转换为二进制后分别得到10000000000、10011111000、10111101000,此时u1、u2和u3对齐,即最高位都是第十一位且最高位都是1。

s5,将对齐的10000000000、10011111000、10111101000向右移t位,t=6,得到10000、10011、10111,然后和15执行与运算,得到0000、0011、0111,转换为十进制后得到第二查询位码0、3、7。

s6,通过第二查询位码0、3、7在预设倒数表uc_reverse_byte_tbl[16]=={248,234,221,210,200,191,182,174,167,161,155,149,144,139,134,130},查询得到三个初始倒数rvp1=248、rvp2=210、rvp3=174,

s7,将三个初始倒数rvp1=248、rvp2=210、rvp3=174分别与三个乘法缩放因子mulscl1=32、mulscl2=8、mulscl3=2相乘即得到三个最终倒数rv1=7936、rv2=1680、rv3=348。

由上述可知,rv1、rv2、rv3分别和乘法缩放因子u1、u2、u3得到的乘积应该接近1<<(12+t)。例如,本示例中t为6,

1<<18=262144,

rv1×mulscl1=7936×32=253952,

rv2×mulscl2=1680×159=267120,

rv3×mulscl3=348×756=263088,

所得结果都很接近,说明本发明实施例的确定倒数的方法较准确,即

需要说明的是,虽然上面给出了一种计算像素加权和的倒数的方法,但本邻域技术人员能够理解的是,本发明并不限于上面一种计算方法。

子步骤s42,确定第一移位位数。

在确定像素加权和u的倒数后,由公式

以及公式

可以得到滤波计算公式为:

b(x,y)=w×rv>>(12+t-c+d)+i(x,y)

将t=c+f-1代入上述公式中,得到最终滤波计算公式为:

b(x,y)=w×rv>>(11+f+d)+i(x,y)

公式中,w为像素贡献和,rv>>(11+f+d)为像素加权和的倒数,i(x,y)为待滤波像素的像素值。

可见,公式中w已经通过查表求和后得到,rv也已通过查表计算得到,第一移位位数(11+f+d)中的f和d也已知,因此,需要确定第一移位位数,具体的,子步骤s42可以包括如下子步骤:

子步骤s421,获取所述预设像素域贡献表的第三缩放因子;

子步骤s422,依据所述第一缩放因子、第三缩放因子计算得到所述第一移位位数。

第一移位位数为(11+f+d)中,在预设空域权重表时设置第一缩放因子f,在建立像素域贡献表时设置第三缩放因子d,因此,可以根据(11+f+d)计算出第一移位位数。

子步骤s43,依据所述第一移位位数,对所述倒数进行二进制右移位运算,得到移位运算后的倒数。

子步骤s44,将所述像素贡献和所述与移位运算后的倒数相乘后,与所述待滤波像素值求和,得到所述待滤波像素的双边滤波结果。

右移位运算是除法运算,右移n表示除以2的n次幂,具体而言指对一个数除以2的n次幂,例如rv>>(11+f+d)可以表示为rv/211+f+d,这样通过以下公式计算双边滤波结果:

b(x,y)=w×rv>>(11+f+d)+i(x,y)

可见,本发明实施例通过查表得到各个邻域像素的像素域贡献值后,对所有邻域像素的像素域贡献值求和得到邻域像素的像素贡献和w,同理查表求取所有邻域像素的像素加权和u,然后通过查表得到像素加权和u的倒数rv,最后计算两者的乘积,即将像素贡献和w与像素加权和u的除法运算,简化为像素贡献和w与像素加权和u的倒数rv的乘法运算,避免了大量的浮点精度参数的除法和指数运算,提高了双边滤波结果的运算速度。

步骤106,依据所述双边滤波结果对所述待滤波像素进行滤波处理。

本发明实施例,计算出双边滤波结果后,可以对图像中的待滤波像素进行滤波处理,这样逐个对图像的每个像素进行滤波结果计算,然后进行滤波处理,以完成对整个图像的滤波处理。

本发明实施例在获取图像中待滤波像素和待滤波像素的各个邻域像素的像素特征参数后,通过像素特征参数在预设像素域贡献表、预设像素域权重表和预设空域权重表进行查询,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值,然后计算出所有邻域像素的像素贡献和以及像素加权和,最后通过像素贡献和、像素加权和以及待滤波像素的像素特征参数,计算得到待滤波像素的双边滤波结果,使用双边滤波结果对待滤波像素进行图像处理。应用本发明实施例,邻域像素的像素域贡献值、像素域权重值和空域权重值由指数计算转换为查表操作,并且通过查找预设倒数表查找得到像素加权和的倒数,将像素贡献和与像素加权的除法运算转换为像素贡献和与像素加权的倒数的乘法运算,避免了大量的浮点精度参数的除法和指数运算,提高了双边滤波结果的运算速度,缩短了图像处理等待时间,提高了图像处理效率以及用户体验。

参照图2,示出了本发明一种图像双边滤波装置实施例的结构框图,所述装置包括:

特征参数获取模块201,用于获取图像中待滤波像素的待滤波像素特征参数,以及,所述待滤波像素的各个邻域像素的邻域像素特征参数;;

查表模块202,用于依据所述待滤波像素特征参数和各个邻域像素的所述邻域像素特征参数,在预设像素域贡献表、预设像素域权重表和预设空域权重表进行查询,分别得到各个邻域像素的像素域贡献值、像素域权重值和空域权重值;

像素贡献和计算模块203,用于依据所述各个邻域像素的所述像素域贡献值、所述空域权重值、所述邻域像素特征参数和所述待滤波像素特征参数,计算所有邻域像素的像素贡献和;

像素加权和计算模块204,用于依据所述各个邻域像素的所述像素域权重值、所述空域权重值,计算所有邻域像素的像素加权和;

双边滤波结果计算模块205,用于依据所有邻域像素的所述像素贡献和、所述像素加权和以及所述待滤波像素特征参数,计算得到所述待滤波像素的双边滤波结果;

处理模块206,用于依据所述双边滤波结果对所述待滤波像素进行滤波处理。

优选地,所述待滤波像素特征参数包括待滤波像素坐标值和待滤波像素值,所述邻域像素特征参数包括邻域像素坐标值和邻域像素值,所述查表模块202包括:

坐标值差值计算子模块,用于计算所述各个邻域像素的邻域像素坐标值与所述待滤波像素坐标值的差值,得到各个邻域像素的坐标值差值;

像素值差值计算子模块,用于计算所述各个邻域像素的邻域像素值与所述待滤波像素值的差值,得到各个邻域像素的像素值差值;

第一查表子模块,用于依据所述各个邻域像素的坐标值差值,在所述预设空域权重表查询,得到各个邻域像素的空域权重值;

第二查表子模块,用于依据所述各个邻域像素的像素值差值,在所述预设像素域权重表内查询,得到各个邻域像素的像素域权重值;

第三查表子模块,用于依据所述各个邻域像素的像素值差值的绝对值,在预设像素域贡献表查询,得到各个邻域像素的像素域贡献值。

优选地,所述像素贡献和计算模块203包括:

初始像素贡献值计算子模块,用于计算各个邻域像素的像素域贡献值与空域权重值的乘积,得到各个邻域像素的初始像素贡献值;

符号运算子模块,用于对各个邻域像素的像素值差值进行符号运算,得到各个邻域像素的符号预算结果;

像素贡献值计算子模块,用于计算所述各个邻域像素的初始像素贡献值与所述各个邻域像素的符号预算结果的乘积,得到各个邻域像素的像素贡献值;

像素贡献和计算子模块,用于对所述各个邻域像素的像素贡献值求和,得到所有邻域像素的像素贡献和。

优选地,所述像素加权和计算模块204包括:

像素加权值计算子模块,用于计算各个邻域像素的像素域权重值与空域权重值的乘积,得到各个邻域像素的像素加权值;

像素加权和计算子模块,用于对所述各个邻域像素的像素加权值求和,得到所有邻域像素的像素加权和。

优选地,所述双边滤波结果计算模块205包括:

倒数确定子模块,用于确定所述像素加权和的倒数;

第一移位位数确定子模块,用于确定第一移位位数;

第一移位运算子模块,用于依据所述第一移位位数,对所述倒数进行二进制右移位运算,得到移位运算后的倒数;

双边滤波结果计算子模块,用于将所述像素贡献和与所述移位运算后的倒数相乘后,与所述待滤波像素值求和,得到待滤波像素的双边滤波结果。

优选地,所述倒数确定子模块包括:

第一缩放因子获取单元,用于获取所述预设像素域权重表的第一缩放因子,以及,所述预设空域权重表的第二缩放因子;

第二移位位数计算单元,用于依据所述第一缩放因子和第二缩放因子,计算得到第二移位位数;

乘法缩放因子获取单元,用于依据所述第二移位位数和所述像素加权和,在预设二进制缩放表进行查询,得到所述像素加权和的乘法缩放因子;

像素加权和处理单元,用于依据所述乘法缩放因子,对所述像素加权和进行二进制对齐处理,得到对齐后的第二像素加权和;

初始倒数获取单元,用于依据所述第二移位位数和所述第二像素加权和,在预设倒数表中查询,得到所述像素加权和的初始倒数;

倒数计算单元,用于依据所述乘法缩放因子和所述初始倒数,计算所述像素加权和的倒数。

优选地,所述乘法缩放因子获取单元包括:

二进制转换子单元,用于将所述像素加权和转换为二进制,得到二进制像素加权和;

第一移位计算子单元,用于依据所述第二移位位数,对所述二进制像素加权和进行二进制右移位运算,得到第一像素加权和;

十进制转换子单元,用于将所述第一像素加权和,进行十进制转换,得到第一查询位码;

乘法缩放因子获取子单元,用于依据所述第一查询位码在所述预设二进制缩放表进行查询,得到乘法缩放因子。

优选地,所述初始倒数获取单元包括:

第一移位计算子单元,用于依据所述第二移位位数,对所述第二像素加权和进行二进制右移位运算,得到右移位后的第三像素加权和;

与运算子单元,用于将所述第三像素加权和与预设数值进行与运算,得到第二查询位码;

初始倒数获取子单元,用于依据所述第二查询位码,在所述预设倒数表中查询,得到所述像素加权和的初始倒数。

优选地,所述第一移位位数确定子模块包括:

第二缩放因子获取单元,用于获取所述预设像素域贡献表的第三缩放因子;

第一移位位数计算单元,用于依据所述第一缩放因子、第三缩放因子计算得到所述第一移位位数。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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

本邻域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本邻域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种图像双边滤波方法和一种图像双边滤波装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本邻域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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