一种图像高斯滤波方法及装置转让专利

申请号 : CN201510544349.6

文献号 : CN105096276B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谢明奇张丛喆万定锐郭军王朝昕

申请人 : 东方网力科技股份有限公司

摘要 :

本发明提供了一种图像高斯滤波方法及装置。其中,该方法包括:按照预设顺序遍历待滤波图像包括的像素,获取遍历到的当前像素的连通灰度矩阵;从连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,像素单元为连通灰度矩阵中的像素行或像素列;根据确定的第一像素单元和第二像素单元,对当前像素进行高斯滤波。在缓冲区缓存像素单元的卷积结果,所占用的内存资源很少,且由于相邻像素的连通灰度矩阵中存在重合的像素单元,缓存命中率很高,可直接利用已缓存的像素单元的卷积结果来对当前像素进行高斯滤波,降低了高斯滤波的空间复杂度和时间复杂度。

权利要求 :

1.一种图像高斯滤波方法,其特征在于,所述方法包括:

按照预设顺序遍历待滤波图像包括的像素,获取遍历到的当前像素的连通灰度矩阵,所述连通灰度矩阵的中心元素为所述当前像素的灰度值;

从所述连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,所述像素单元为所述连通灰度矩阵中的像素行或像素列;

当所述预设顺序为按像素行从左到右或按像素行从右到左的顺序时,所述像素单元为像素列,从所述缓冲区中获取第一像素列对应的卷积结果,计算第二像素列与第一矩阵模板的卷积结果,所述第一矩阵模板为根据所述预设顺序预设的一维矩阵;将所述第一像素列对应的卷积结果及所述第二像素列对应的卷积结果组成行向量;计算所述行向量与所述第一矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值;

当所述预设顺序为按像素列从上到下或按像素列从下到上的顺序时,所述像素单元为像素行,从所述缓冲区中获取第一像素行对应的卷积结果,计算第二像素行与第二矩阵模板的卷积结果,所述第二矩阵模板为根据所述预设顺序预设的一维矩阵;将所述第一像素行对应的卷积结果及所述第二像素行对应的卷积结果组成列向量;计算所述列向量与所述第二矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值。

2.根据权利要求1所述的方法,其特征在于,所述计算第二像素列与第一矩阵模板的卷积结果之后,还包括:

获取所述第二像素列包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素列的标识,将所述第二像素列的标识及所述第二像素列对应的卷积结果存储在所述缓冲区中。

3.根据权利要求1所述的方法,其特征在于,所述计算第二像素行与第二矩阵模板的卷积结果之后,还包括:

获取所述第二像素行包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素行的标识,将所述第二像素行的标识及所述第二像素行对应的卷积结果存储在所述缓冲区中。

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述从所述连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,包括:当所述预设顺序为按像素行从左到右或按像素行从右到左的顺序时,确定所述像素单元为像素列;获取所述连通灰度矩阵的每一像素列的标识;从所述每一像素列的标识中确定出缓冲区中包含的像素列的标识,将确定的所述像素列的标识对应的像素列确定为第一像素单元,将剩余的像素列确定为第二像素单元;其中,所述第一像素单元为第一像素列,第二像素单元为第二像素列;

当所述预设顺序为按像素列从上到下或按像素列从下到上的顺序时,确定所述像素单元为像素行;获取所述连通灰度矩阵的每一像素行的标识;从所述每一像素行的标识中确定出缓冲区中包含的像素行的标识,将确定的所述像素行的标识对应的像素行确定为第一像素单元,将剩余的像素行确定为第二像素单元;其中,所述第一像素单元为第一像素行,第二像素单元为第二像素行。

5.一种图像高斯滤波装置,其特征在于,所述装置包括:

遍历模块,用于按照预设顺序遍历待滤波图像包括的像素,获取遍历到的当前像素的连通灰度矩阵,所述连通灰度矩阵的中心元素为所述当前像素的灰度值;

确定模块,用于从所述连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,所述像素单元为所述连通灰度矩阵中的像素行或像素列;

高斯滤波模块,用于当所述预设顺序为按像素行从左到右或按像素行从右到左的顺序时,所述像素单元为像素列,从所述缓冲区中获取第一像素列对应的卷积结果,计算第二像素列与第一矩阵模板的卷积结果,所述第一矩阵模板为根据所述预设顺序预设的一维矩阵;将所述第一像素列对应的卷积结果及所述第二像素列对应的卷积结果组成行向量;计算所述行向量与所述第一矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值;当所述预设顺序为按像素列从上到下或按像素列从下到上的顺序时,所述像素单元为像素行,从所述缓冲区中获取第一像素行对应的卷积结果,计算第二像素行与第二矩阵模板的卷积结果,所述第二矩阵模板为根据所述预设顺序预设的一维矩阵;将所述第一像素行对应的卷积结果及所述第二像素行对应的卷积结果组成列向量;计算所述列向量与所述第二矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值。

6.根据权利要求5所述的装置,其特征在于,所述装置还包括:

第一存储模块,用于获取所述第二像素列包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素列的标识,将所述第二像素列的标识及所述第二像素列对应的卷积结果存储在所述缓冲区中。

7.根据权利要求5所述的装置,其特征在于,所述装置还包括:

第二存储模块,用于获取所述第二像素行包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素行的标识,将所述第二像素行的标识及所述第二像素行对应的卷积结果存储在所述缓冲区中。

8.根据权利要求5至7中任一项所述的装置,其特征在于,所述确定模块包括:

第一确定单元,用于当所述预设顺序为按像素行从左到右或按像素行从右到左的顺序时,确定所述像素单元为像素列;获取所述连通灰度矩阵的每一像素列的标识;从所述每一像素列的标识中确定出缓冲区中包含的像素列的标识,将确定的所述像素列的标识对应的像素列确定为第一像素单元,将剩余的像素列确定为第二像素单元;其中,所述第一像素单元为第一像素列,第二像素单元为第二像素列;

第二确定单元,用于当所述预设顺序为按像素列从上到下或按像素列从下到上的顺序时,确定所述像素单元为像素行;获取所述连通灰度矩阵的每一像素行的标识;从所述每一像素行的标识中确定出缓冲区中包含的像素行的标识,将确定的所述像素行的标识对应的像素行确定为第一像素单元,将剩余的像素行确定为第二像素单元;其中,所述第一像素单元为第一像素行,第二像素单元为第二像素行。

说明书 :

一种图像高斯滤波方法及装置

技术领域

[0001] 本发明涉及图像处理技术领域,具体而言,涉及一种图像高斯滤波方法及装置。

背景技术

[0002] 图像中最普遍的噪声为高斯噪声,高斯噪声是均值为零且服从正态分布的噪声。高斯噪声造成的误差会累计传递,严重影响图像的后期处理及应用,因此需对图像进行高斯滤波,减少图像中的高斯噪声。
[0003] 目前,对图像进行高斯滤波时,一般根据高斯函数的可分离特性,将预设的二维滤波卷积矩阵转化为一维的滤波矩阵模板。对于图像中像素点组成的像素矩阵,首先对每个像素行进行处理,获取像素行中每个像素的连通矩阵,分别将每个像素的连通矩阵与一维的滤波矩阵模板进行卷积运算,每个像素行的运算结果相当于临时图片,将临时图片存入图片缓冲区。从图片缓冲区中获取该临时图片,对该临时图片中的每个像素列,获取像素列中每个像素的连通矩阵,分别将每个像素的连通矩阵与一维的滤波矩阵模板的转置矩阵进行卷积运算,将每个像素列的运算结果组成高斯滤波后的图像。
[0004] 但上述分离式图像高斯滤波的空间复杂度很高,且临时图片的容量很大,缓存临时图片占用大量的内存资源,降低了内存的缓存命中率。

发明内容

[0005] 有鉴于此,本发明实施例的目的在于提供一种图像高斯滤波方法及装置,实现降低高斯滤波的空间复杂度和时间复杂度,节省内存资源,以及提高缓存命中率。
[0006] 第一方面,本发明实施例提供了一种图像高斯滤波方法,所述方法包括:
[0007] 按照预设顺序遍历待滤波图像包括的像素,获取遍历到的当前像素的连通灰度矩阵,所述连通灰度矩阵的中心元素为所述当前像素的灰度值;
[0008] 从所述连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,所述像素单元为所述连通灰度矩阵中的像素行或像素列;
[0009] 根据确定的所述第一像素单元和所述第二像素单元,对所述当前像素进行高斯滤波。
[0010] 结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述预设顺序为按像素行从左到右或按像素行从右到左的顺序,所述像素单元为像素列;
[0011] 相应地,所述根据确定的所述第一像素单元和所述第二像素单元,对所述当前像素进行高斯滤波,包括:
[0012] 从所述缓冲区中获取第一像素列对应的卷积结果,计算第二像素列与第一矩阵模板的卷积结果,所述第一矩阵模板为根据所述预设顺序预设的一维矩阵;
[0013] 将所述第一像素列对应的卷积结果及所述第二像素列对应的卷积结果组成行向量;
[0014] 计算所述行向量与所述第一矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值。
[0015] 结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述计算第二像素列与第一矩阵模板的卷积结果之后,还包括:
[0016] 获取所述第二像素列包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素列的标识,将所述第二像素列的标识及所述第二像素列对应的卷积结果存储在所述缓冲区中。
[0017] 结合第一方面,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述预设顺序为按像素列从上到下或按像素列从下到上的顺序,所述像素单元为像素行;
[0018] 相应地,所述根据确定的所述第一像素单元和所述第二像素单元,对所述当前像素进行高斯滤波,包括:
[0019] 从所述缓冲区中获取第一像素行对应的卷积结果,计算第二像素行与第二矩阵模板的卷积结果,所述第二矩阵模板为根据所述预设顺序预设的一维矩阵;
[0020] 将所述第一像素行对应的卷积结果及所述第二像素行对应的卷积结果组成列向量;
[0021] 计算所述列向量与所述第二矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值。
[0022] 结合第一方面的第三种可能的实现方式,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述计算第二像素行与第二矩阵模板的卷积结果之后,还包括:
[0023] 获取所述第二像素行包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素行的标识,将所述第二像素行的标识及所述第二像素行对应的卷积结果存储在所述缓冲区中。
[0024] 结合第一方面及第一方面的第一至第四任一种可能的实现方式,本发明实施例提供了上述第一方面的第五种可能的实现方式,其中,所述从所述连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,包括:
[0025] 当所述预设顺序为按像素行从左到右或按像素行从右到左的顺序时,确定所述像素单元为像素列;获取所述连通灰度矩阵的每一像素列的标识;从所述每一像素列的标识中确定出缓冲区中包含的像素列的标识,将确定的所述像素列的标识对应的像素列确定为第一像素单元,将剩余的像素列确定为第二像素单元;其中,所述第一像素单元为第一像素列,第二像素单元为第二像素列;
[0026] 当所述预设顺序为按像素列从上到下或按像素列从下到上的顺序时,确定所述像素单元为像素行;获取所述连通灰度矩阵的每一像素行的标识;从所述每一像素行的标识中确定出缓冲区中包含的像素行的标识,将确定的所述像素行的标识对应的像素行确定为第一像素单元,将剩余的像素行确定为第二像素单元;其中,所述第一像素单元为第一像素行,第二像素单元为第二像素行。
[0027] 第二方面,一种图像高斯滤波装置,所述装置包括:
[0028] 遍历模块,用于按照预设顺序遍历待滤波图像包括的像素,获取遍历到的当前像素的连通灰度矩阵,所述连通灰度矩阵的中心元素为所述当前像素的灰度值;
[0029] 确定模块,用于从所述连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,所述像素单元为所述连通灰度矩阵中的像素行或像素列;
[0030] 高斯滤波模块,用于根据确定的所述第一像素单元和所述第二像素单元,对所述当前像素进行高斯滤波。
[0031] 结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述预设顺序为按像素行从左到右或按像素行从右到左的顺序,所述像素单元为像素列;
[0032] 相应地,所述高斯滤波模块包括:
[0033] 第一获取单元,用于从所述缓冲区中获取第一像素列对应的卷积结果,计算第二像素列与第一矩阵模板的卷积结果,所述第一矩阵模板为根据所述预设顺序预设的一维矩阵;
[0034] 第一组成单元,用于将所述第一像素列对应的卷积结果及所述第二像素列对应的卷积结果组成行向量;
[0035] 第一计算单元,用于计算所述行向量与所述第一矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值。
[0036] 结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述装置还包括:
[0037] 第一存储模块,用于获取所述第二像素列包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素列的标识,将所述第二像素列的标识及所述第二像素列对应的卷积结果存储在所述缓冲区中。
[0038] 结合第二方面,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述预设顺序为按像素列从上到下或按像素列从下到上的顺序,所述像素单元为像素行;
[0039] 相应地,所述高斯滤波模块包括:
[0040] 第二获取单元,用于从所述缓冲区中获取第一像素行对应的卷积结果,计算第二像素行与第二矩阵模板的卷积结果,所述第二矩阵模板为根据所述预设顺序预设的一维矩阵;
[0041] 第二组成单元,用于将所述第一像素行对应的卷积结果及所述第二像素行对应的卷积结果组成列向量;
[0042] 第二计算单元,用于计算所述列向量与所述第二矩阵模板的转置的卷积,得到滤波处理后所述当前像素的灰度值。
[0043] 结合第二方面的第三种可能的实现方式,本发明实施例提供了上述第二方面的第四种可能的实现方式,其中,所述装置还包括:
[0044] 第二存储模块,用于获取所述第二像素行包括的各像素的位置信息,将获取的所述位置信息组成所述第二像素行的标识,将所述第二像素行的标识及所述第二像素行对应的卷积结果存储在所述缓冲区中。
[0045] 结合第二方面及第二方面的第一至第四任一种可能的实现方式,本发明实施例提供了上述第二方面的第五种可能的实现方式,其中,所述确定模块包括:
[0046] 第一确定单元,用于当所述预设顺序为按像素行从左到右或按像素行从右到左的顺序时,确定所述像素单元为像素列;获取所述连通灰度矩阵的每一像素列的标识;从所述每一像素列的标识中确定出缓冲区中包含的像素列的标识,将确定的所述像素列的标识对应的像素列确定为第一像素单元,将剩余的像素列确定为第二像素单元;其中,所述第一像素单元为第一像素列,第二像素单元为第二像素列;
[0047] 第二确定单元,用于当所述预设顺序为按像素列从上到下或按像素列从下到上的顺序时,确定所述像素单元为像素行;获取所述连通灰度矩阵的每一像素行的标识;从所述每一像素行的标识中确定出缓冲区中包含的像素行的标识,将确定的所述像素行的标识对应的像素行确定为第一像素单元,将剩余的像素行确定为第二像素单元;其中,所述第一像素单元为第一像素行,第二像素单元为第二像素行。
[0048] 在本发明实施例提供的方法及装置中,从连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元;根据确定的第一像素单元和第二像素单元,对当前像素进行高斯滤波。在缓冲区缓存像素单元的卷积结果,所占用的内存资源很少,且由于相邻像素的连通灰度矩阵中存在重合的像素单元,缓存命中率很高,可直接利用已缓存的像素单元的卷积结果来对当前像素进行高斯滤波,降低了高斯滤波的空间复杂度和时间复杂度。
[0049] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0050] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0051] 图1A示出了本发明实施例1所提供的一种图像高斯滤波方法流程图;
[0052] 图1B示出了本发明实施例1所提供的一种对当前像素进行高斯滤波的过程示意图;
[0053] 图1C示出了本发明实施例1所提供的另一种对当前像素进行高斯滤波的过程示意图;
[0054] 图2示出了本发明实施例2所提供的一种图像高斯滤波装置的结构示意图。

具体实施方式

[0055] 下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056] 考虑到相关技术中分离式图像高斯滤波的空间复杂度很高,且临时图片的容量很大,缓存临时图片占用大量的内存资源,降低了内存的缓存命中率。基于此,本发明实施例提供了一种图像高斯滤波方法及装置。下面通过实施例进行描述。
[0057] 实施例1
[0058] 参见图1A,本发明实施例提供了一种图像高斯滤波方法。该方法具体包括以下步骤:
[0059] 步骤101:按照预设顺序遍历待滤波图像包括的像素,获取遍历到的当前像素的连通灰度矩阵,该连通灰度矩阵的中心元素为当前像素的灰度值;
[0060] 在对待滤波图像进行高斯滤波之前,根据高斯函数以及高斯函数的可分离特性预先设计一维矩阵模板,设计的一维矩阵模板可以包含N个元素,这N个元素之和为1且N个元素以中心元素对称分布,当前像素的连通灰度矩阵为N*N的矩阵。其中,N为大于1的奇数,如N可以为3或5等。
[0061] 而设计的一维矩阵模板为1*N的矩阵还是N*1的矩阵是与预设顺序相关的。当预设顺序为按像素行从左到右或按像素行从右到左的顺序时,该一维矩阵模板为N*1的矩阵。当预设顺序为按像素列从上到下或按像素列从下到上的顺序时,该一维矩阵模板为1*N的矩阵。
[0062] 当预设顺序为按像素行从左到右或按像素行从右到左的顺序时,对于单个像素行包括的每个像素从左到右或从右到左遍历,但对于整个待滤波图像的所有像素行来说,可以从上到下遍历各个像素行,也可以从下到上遍历各个像素行。
[0063] 同样地,当预设顺序为按像素列从上到下或按像素列从下到上的顺序时,对于单个像素列包括的每个像素从上到下或从下到上遍历,但对于整个待滤波图像的所有像素列来说,可以从左到右遍历各个像素列,也可以从右到左遍历各个像素列。
[0064] 上述获取当前像素的连通灰度矩阵的操作具体包括:按照预设顺序遍历待滤波图像包括的像素,当遍历到一像素时,根据预先设计的一维矩阵模板的元素数量,确定遍历到的当前像素的连通灰度矩阵的行列数,以当前像素的灰度值为中心元素,获取与当前像素相邻的其它像素的灰度值,将当前像素的灰度值及与当前像素相邻的其它像素的灰度值组成行列数为确定的行列数的矩阵,将该矩阵确定为当前像素的连通灰度矩阵。
[0065] 在本发明实施例中,当遍历到的当前像素靠近待滤波图像的边缘,以致当前像素的连通灰度区间缺少元素时,以数值0填充缺少的元素。
[0066] 例如,假设待滤波图像包括的像素点的灰度值组成的矩阵为 预设顺序为按像素行从左到右的顺序,N为3,设计的一维矩阵模板为3*1的矩阵 假设遍历到的当前像素的灰度值为B2,则当前像素的连通灰度矩阵为3*3的矩阵 假设遍历到的当前像素的灰度值为A2,则当前像素的连通灰度矩阵为3*3的矩阵 其中,若当前像素的灰度值为A2,则按像素行从左到右的顺序遍历到的下一个像素的灰度值为A3。
[0067] 在遍历到待滤波图像中的其它任一像素时,都按照本步骤提供的方式获取遍历到的像素的连通灰度矩阵。
[0068] 步骤102:从当前像素的连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,像素单元为连通灰度矩阵中的像素行或像素列;
[0069] 像素单元为像素行还是像素列是由遍历的预设顺序决定的。当预设顺序为按像素行从左到右或按像素行从右到左的顺序时,像素单元为像素列。当预设顺序为按像素列从上到下或按像素列从下到上的顺序时,像素单元为像素行。
[0070] 缓冲区中缓存了像素单元的标识及卷积结果。像素单元的标识用于标识该像素单元在待滤波图像中的位置。该标识可以以卷积结果的下标的形式存储在缓冲区中。例如,像素单元包括的像素在待滤波图像中的位置分别为第3行第1列、第3行第2列和第3行第3列,则该像素单元的标识可以为(31,32,33),假设该像素单元的卷积结果为Q,则该像素单元的标识及卷积结果在缓冲区中缓存的形式可以为Q(31,32,33)。
[0071] 在本发明实施例中,根据当前像素的连通灰度矩阵包括的每个像素单元的位置标识,查询缓冲区中是否缓存有该位置标识对应的卷积结果,如果有,则将该位置标识对应的像素单元确定为第一像素单元,将连通灰度矩阵中除第一像素单元外的其它像素单元确定为第二像素单元。
[0072] 具体地,当预设顺序为按像素行从左到右或按像素行从右到左的顺序时,确定像素单元为像素列。获取连通灰度矩阵的每一像素列的标识。从每一像素列的标识中确定出缓冲区中包含的像素列的标识,将确定的像素列的标识对应的像素列确定为第一像素列,将剩余的像素列确定为第二像素列。
[0073] 当预设顺序为按像素列从上到下或按像素列从下到上的顺序时,确定像素单元为像素行。获取连通灰度矩阵的每一像素行的标识。从每一像素行的标识中确定出缓冲区中包含的像素行的标识,将确定的像素行的标识对应的像素行确定为第一像素行,将剩余的像素行确定为第二像素行。
[0074] 当预设顺序为按像素行从左到右或按像素行从右到左的顺序时,两个相邻的像素的连通灰度矩阵中存在相同的像素列,因此在缓冲区中缓存像素列的卷积结果,在对相邻像素进行高斯滤波时可直接使用缓存的相同像素列的卷积结果。而当预设顺序为按像素列从上到下或按像素列从下到上的顺序时,两个相邻的像素的连通灰度矩阵中存在相同的像素行,因此在缓冲区中缓存像素行的卷积结果,在对相邻像素进行高斯滤波时可直接使用缓存的相同像素行的卷积结果。如此可以减少对相邻像素进行高斯滤波时的计算量,提高缓存命中率,最终提高对待滤波图像进行高斯滤波的效率。
[0075] 例如,假设预设顺序为按像素行从左到右的顺序,遍历到的当前像素的灰度值为B2,则当前像素的连通灰度矩阵为 遍历到的下一个像素的灰度值为B3,B3对应的连通灰度矩阵为 则这两个相邻像素的连通灰度矩阵存在相同的像素列:和 所以在对B3对应的像素点进行滤波时,可以直接利用缓冲区中缓存的 和的卷积结果。
[0076] 再如,假设预设顺序为按像素列从上到下,遍历到的当前像素的灰度值为B2,则当前像素的连通灰度矩阵为 遍历到的下一个像素的灰度值为C2,C2对应的连通灰度矩阵为 则这两个相邻像素的连通灰度矩阵存在相同的像素行:|B1 B2 B3|和|C1 C2 C3|,所以在对C2对应的像素点进行滤波时,可以直接利用缓冲区中缓存的|B1 B2 B3|和|C1 C2 C3|的卷积结果。
[0077] 步骤103:根据确定的第一像素单元和第二像素单元,对当前像素进行高斯滤波。
[0078] 在本发明实施例中,根据遍历的预设顺序,分别说明对当前像素进行高斯滤波的过程。
[0079] 当预设顺序为按像素行从左到右或按像素行从右到左的顺序时,上述像素单元为像素列。根据预设顺序确定预设的一维矩阵模板为N*1的矩阵,本发明实施例中称为第一矩阵模板。根据第一像素列的标识,从缓冲区中获取第一像素列对应的卷积结果,计算第二像素列与第一矩阵模板的卷积结果;将第一像素列对应的卷积结果及第二像素列对应的卷积结果组成行向量;计算该行向量与第一矩阵模板的转置的卷积,得到滤波处理后当前像素的灰度值。
[0080] 为了便于理解,下面举例进行说明。例如,假设预设顺序为按像素行从左到右的顺序,第一矩阵模板为 遍历到的当前像素的灰度值为B2,则当前像素的连通灰度矩阵为假设第一像素列为 和 第二像素列为 从缓冲区中获取的第一像素列 和 的卷积结果分别为E1和E2,计算第二像素列 与第一矩阵模板 的卷积得到卷积结果E3,将卷积结果E1、E2和E3组成行向量|E1 E2 E3|,第一矩阵模板 的转置为|1/
4 1/2 1/4|,计算行向量|E1 E2 E3|与|1/4 1/2 1/4|的卷积,得到滤波处理后当前像素的灰度值Pix。
[0081] 如图1B所示的对B2对应的当前像素的高斯滤波过程。上述举例中卷积运算也可以为乘加运算,即像素列中各元素分别与第一矩阵模板中的对应元素的乘积之和为该像素列与第一矩阵模板的卷积结果。
[0082] 在本发明实施例中,计算出第二像素列与第一矩阵模板的卷积结果之后,还获取第二像素列包括的各像素的位置信息,将获取的位置信息组成第二像素列的标识,将第二像素列的标识及第二像素列对应的卷积结果存储在缓冲区中。
[0083] 按照像素行从左到右或按像素行从右到左的顺序遍历待滤波图像的每个像素,并按照上述方式对每个像素进行高斯滤波后就完成了对待滤波图像的高斯滤波。
[0084] 当预设顺序为按像素列从上到下或按像素列从下到上的顺序,上述像素单元为像素行。根据预设顺序确定预设的一维矩阵模板为1*N的矩阵,本发明实施例中称为第二矩阵模板。从缓冲区中获取第一像素行对应的卷积结果,计算第二像素行与第二矩阵模板的卷积结果;将第一像素行对应的卷积结果及第二像素行对应的卷积结果组成列向量;计算列向量与第二矩阵模板的转置的卷积,得到滤波处理后当前像素的灰度值。
[0085] 为了便于理解,下面举例进行说明。例如,假设预设顺序为按像素列从上到下的顺序,第二矩阵模板为|1/4 1/2 1/4|,遍历到的当前像素的灰度值为B2,则当前像素的连通灰度矩阵为 假设第一像素行为|A1 A2 A3|和|B1 B2 B3|,第二像素行为|C1 C2 C3|,从缓冲区中获取的第一像素行|A1 A2 A3|和|B1 B2 B3|的卷积结果分别为F1和F2,计算第二像素行|C1 C2 C3|与第二矩阵模板|1/4 1/2 1/4|的卷积得到卷积结果F3,将卷积结果F1、F2和F3组成列向量 第二矩阵模板|1/4 1/2 1/4|的转置为 计算列向量 与的卷积,得到滤波处理后当前像素的灰度值Pix。
[0086] 如图1C所示的对B2对应的当前像素的高斯滤波过程。上述举例中卷积运算也可以为乘加运算,即像素列中各元素分别与第一矩阵模板中的对应元素的乘积之和为该像素列与第一矩阵模板的卷积结果。
[0087] 在本发明实施例中,计算出第二像素行与第二矩阵模板的卷积结果之后,还获取第二像素行包括的各像素的位置信息,将获取的位置信息组成第二像素行的标识,将第二像素行的标识及第二像素行对应的卷积结果存储在缓冲区中。
[0088] 按照按像素列从上到下或按像素列从下到上的顺序遍历待滤波图像的每个像素,并按照上述方式对每个像素进行高斯滤波后就完成了对待滤波图像的高斯滤波。
[0089] 本发明实施例对待滤波图像进行高斯滤波时,只将像素行的卷积结果存储在缓冲区中,或者,只将像素列的卷积结果存储在缓冲区中,如此占用的内存资源少,且由于相邻像素的连通灰度区间存在重合的像素行或像素列,所以缓冲区的缓存命中率很高,提高了高斯滤波的效率,降低了高斯滤波的时间复杂度和空间复杂度。
[0090] 尤其对于嵌入式板卡这种内存资源及系统资源有限的设备,更需要降低缓存占用的内存空间以及降低处理的时间复杂度。嵌入式设备的内存总线频率与处理器频率的差距,往往限制住其算法性能。本发明实施例对高斯滤波算法进行优化,降低其空间复杂度,从而增加运算空间所处内存的缓存命中率,调整算法结构,降低其时间复杂度。以实测情况来看,本发明的方法在ARM9(Advanced RISC Machines9,ARM处理器)开发板上对720P图像进行高斯滤波的性能提高大约52.2%,平均耗时在110ms。
[0091] 在本发明实施例中,从连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元;根据确定的第一像素单元和第二像素单元,对当前像素进行高斯滤波。在缓冲区缓存像素单元的卷积结果,所占用的内存资源很少,且由于相邻像素的连通灰度矩阵中存在重合的像素单元,缓存命中率很高,可直接利用已缓存的像素单元的卷积结果来对当前像素进行高斯滤波,降低了高斯滤波的空间复杂度和时间复杂度。
[0092] 实施例2
[0093] 参见图2,本发明实施例提供了一种图像高斯滤波装置,该装置用于执行上述实施例1提供的图像高斯滤波方法。该装置包括,
[0094] 遍历模块201,用于按照预设顺序遍历待滤波图像包括的像素,获取遍历到的当前像素的连通灰度矩阵,连通灰度矩阵的中心元素为当前像素的灰度值。
[0095] 上述遍历模块201按照预设顺序遍历待滤波图像包括的像素,当遍历到一像素时,根据预先设计的一维矩阵模板的元素数量,确定遍历到的当前像素的连通灰度矩阵的行列数,以当前像素的灰度值为中心元素,获取与当前像素相邻的其它像素的灰度值,将当前像素的灰度值及与当前像素相邻的其它像素的灰度值组成行列数为确定的行列数的矩阵,将该矩阵确定为当前像素的连通灰度矩阵。
[0096] 确定模块202,用于从连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元,像素单元为连通灰度矩阵中的像素行或像素列。
[0097] 缓冲区中缓存了像素单元的标识及卷积结果。像素单元的标识用于标识该像素单元在待滤波图像中的位置。该标识可以以卷积结果的下标的形式存储在缓冲区中。例如,像素单元包括的像素在待滤波图像中的位置分别为第3行第1列、第3行第2列和第3行第3列,则该像素单元的标识可以为(31,32,33),假设该像素单元的卷积结果为Q,则该像素单元的标识及卷积结果在缓冲区中缓存的形式可以为Q(31,32,33)。
[0098] 根据遍历的预设顺序不同,上述确定模块202分别通过如下第一确定单元或第二确定单元来确定第一像素单元和第二像素单元。
[0099] 第一确定单元,用于当预设顺序为按像素行从左到右或按像素行从右到左的顺序时,确定像素单元为像素列;获取连通灰度矩阵的每一像素列的标识;从每一像素列的标识中确定出缓冲区中包含的像素列的标识,将确定的像素列的标识对应的像素列确定为第一像素单元,将剩余的像素列确定为第二像素单元;其中,第一像素单元为第一像素列,第二像素单元为第二像素列;
[0100] 第二确定单元,用于当预设顺序为按像素列从上到下或按像素列从下到上的顺序时,确定像素单元为像素行;获取连通灰度矩阵的每一像素行的标识;从每一像素行的标识中确定出缓冲区中包含的像素行的标识,将确定的像素行的标识对应的像素行确定为第一像素单元,将剩余的像素行确定为第二像素单元;其中,第一像素单元为第一像素行,第二像素单元为第二像素行。
[0101] 高斯滤波模块203,用于根据确定的第一像素单元和第二像素单元,对当前像素进行高斯滤波。
[0102] 当预设顺序为按像素行从左到右或按像素行从右到左的顺序,像素单元为像素列。
[0103] 相应地,高斯滤波模块203包括:第一获取单元、第一组成单元和第一计算单元。
[0104] 第一获取单元,用于从缓冲区中获取第一像素列对应的卷积结果,计算第二像素列与第一矩阵模板的卷积结果,第一矩阵模板为根据预设顺序预设的一维矩阵;
[0105] 第一组成单元,用于将第一像素列对应的卷积结果及第二像素列对应的卷积结果组成行向量;
[0106] 第一计算单元,用于计算行向量与第一矩阵模板的转置的卷积,得到滤波处理后当前像素的灰度值。
[0107] 在第一获取单元计算出第二像素列与第一矩阵模板的卷积结果之后,本装置还设置有第一存储模块,第一存储模块用于获取第二像素列包括的各像素的位置信息,将获取的位置信息组成第二像素列的标识,将第二像素列的标识及第二像素列对应的卷积结果存储在缓冲区中。
[0108] 按照像素行从左到右或按像素行从右到左的顺序遍历待滤波图像的每个像素,并按照上述方式对每个像素进行高斯滤波后就完成了对待滤波图像的高斯滤波。
[0109] 当预设顺序为按像素列从上到下或按像素列从下到上的顺序,像素单元为像素行。
[0110] 相应地,高斯滤波模块203包括:第二获取单元、第二组成单元和第二计算单元。
[0111] 第二获取单元,用于从缓冲区中获取第一像素行对应的卷积结果,计算第二像素行与第二矩阵模板的卷积结果,第二矩阵模板为根据预设顺序预设的一维矩阵;
[0112] 第二组成单元,用于将第一像素行对应的卷积结果及第二像素行对应的卷积结果组成列向量;
[0113] 第二计算单元,用于计算列向量与第二矩阵模板的转置的卷积,得到滤波处理后当前像素的灰度值。
[0114] 在第二获取单元计算出第二像素行与第二矩阵模板的卷积结果之后,本装置还设置有第二存储模块,第二存储模块用于获取第二像素行包括的各像素的位置信息,将获取的位置信息组成第二像素行的标识,将第二像素行的标识及第二像素行对应的卷积结果存储在缓冲区中。
[0115] 按照按像素列从上到下或按像素列从下到上的顺序遍历待滤波图像的每个像素,并按照上述方式对每个像素进行高斯滤波后就完成了对待滤波图像的高斯滤波。
[0116] 本发明实施例对待滤波图像进行高斯滤波时,只将像素行的卷积结果存储在缓冲区中,或者,只将像素列的卷积结果存储在缓冲区中,如此占用的内存资源少,且由于相邻像素的连通灰度区间存在重合的像素行或像素列,所以缓冲区的缓存命中率很高,提高了高斯滤波的效率,降低了高斯滤波的时间复杂度和空间复杂度。
[0117] 尤其对于嵌入式板卡这种内存资源及系统资源有限的设备,更需要降低缓存占用的内存空间以及降低处理的时间复杂度。嵌入式设备的内存总线频率与处理器频率的差距,往往限制住其算法性能。本发明实施例对高斯滤波算法进行优化,降低其空间复杂度,从而增加运算空间所处内存的缓存命中率,调整算法结构,降低其时间复杂度。以实测情况来看,本发明的方法在ARM9(Advanced RISC Machines9,ARM处理器)开发板上对720P图像进行高斯滤波的性能提高大约52.2%,平均耗时在110ms。
[0118] 在本发明实施例中,从连通灰度矩阵包括的像素单元中,确定缓冲区中已缓存了卷积结果的第一像素单元及未缓存卷积结果的第二像素单元;根据确定的第一像素单元和第二像素单元,对当前像素进行高斯滤波。在缓冲区缓存像素单元的卷积结果,所占用的内存资源很少,且由于相邻像素的连通灰度矩阵中存在重合的像素单元,缓存命中率很高,可直接利用已缓存的像素单元的卷积结果来对当前像素进行高斯滤波,降低了高斯滤波的空间复杂度和时间复杂度。
[0119] 本发明实施例所提供的图像高斯滤波装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的装置、模块和单元的具体工作过程,均可以参考上述方法实施例中的对应过程。
[0120] 在本申请所提供的几个实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0121] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0122] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0123] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0124] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。