基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法

文档序号:9631806阅读:326来源:国知局
基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法
【技术领域】
[0001]本发明涉及一种图像矩形邻域极大(极小)值计算方法,尤其是基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法。
【背景技术】
[0002]图像矩形邻域极大(极小)值的计算,是指通过一些特定的算法求图像中每个像素的矩形邻域内的极大(极小)值。图像矩形邻域极大(极小)值计算有着非常广泛的应用。例如,调节图像对比度时就需要求图像矩形邻域的极大值和极小值。在模式识别领域,往往需要求图像中每个像素的矩形邻域内的特征极值来指导目标检测或者分类。因此图像矩形邻域极大(极小)值计算有着重要的实际意义。
[0003]然而,传统的求解图像矩形邻域极大(极小)值的方法,直接对矩形邻域内的所有像素值进行极大(极小)比较,处理每个像素极值的时间复杂度并达不到常量时间复杂度,而是随着矩形邻域的增大而增大。当矩形邻域比较大的时,传统方法会消耗比较多的处理时间,这就限制了其在某些算法中的应用。因此,本发明提出了一种基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法。

【发明内容】

[0004]本发明的目的:本发明提出了一种基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法。该方法利用三维的多层直方图来求图像矩形邻域极大(极小)值,改善了算法的时间复杂度。
[0005]本发明设计了一种基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法。该方法包括以下四个步骤:
[0006](1)给定一幅二维的灰度图像作为输入图像I,其宽度和高度分别记作w和h个像素,I 中像素记作(x,y)JJx e {0,1,2,...,w_l},y e {0,1,2,...,h_l}。(x,y)的像素值记作I (x,y),对于8位二进制数所表示的灰度图像,最多有2s = 256个灰度值,因此I (x,y) e {0,1,2,...,255}。给定一个大小为(2r+l) X (2r+l)的二维矩形作为像素(x,y)的矩形邻域Ω(x,y)(其中r为自然数)。
[0007](2)根据步骤⑴中输入图像I构造一个三维的多层直方图V。V层数等于I的取值范围,即256层,每层的直方图宽度和高度与I相同,即分别为w和h。用z表示V中层号,则ze {0,1,2,...,255},第z层直方图记作Vz。遍历输入图像的所有像素,首先对V中所有的值根据公式Vz(x,y) = 0进行初始化,然后根据公式VI(x,y)(X,y) = 1对V进行设置。也就是说,对于像素(1,7),如果像素值1(1,7)和第z层直方图火的层号不相等,则Vz(x,y) =0,反之,则设置为火0^,7) =1。该构造方法只需要常量时间复杂度即可构造完成。
[0008](3)根据步骤⑴中的矩形邻域Ω (x,y)和步骤⑵中构造的三维的多层直方图V,采用基于常量时间复杂度的积分图算法分别计算V中每一层的直方图的图像矩形邻域求和,获得一个矩形邻域求和的多层直方图V'。
[0009]对于第z层直方图\,首先对\求每一列的前序和,记作Sz。设置初始值Sz(x,_l)=0,从小到大遍历乂2中每一行,根据如下公式迭代计算对乂2每一列的前序和:
[0010]sz (x, y) = Sz (x, y-1) +VZ (x, y)
[0011]然后,利用Sz作为中间结果构造直方图Vz的积分图Az。类似地,设置初始值Az (-1,y) = 0,从小到大遍历32中每一列,根据如下公式迭代计算对S 2每一行的前序和:
[0012]Az (X,y) = Az (x_l,y) +SZ (x,y)
[0013]接下来,对于第z层直方图Vz,可以根据如下公式高效计算出对应的矩形邻域求和的直方图t z:
[0014]V, z= A z (x_r,y-r) +AZ (x+r,y+r) _AZ (x_r,y+r) _AZ (x+r,y-r)
[0015]积分图方法最早是由Paul V1la等人提出的一种常量时间复杂度的快速求图像矩形邻域和的方法。该方法的时间复杂度只跟图像大小w,h及图像灰度范围有关,而与矩形邻域Ω(χ,y)的大小无关,即与r的大小无关。具体参见文献P.V1laand M.Jones, " Rapid object detect1n using a boosted cascade of simplefeatures, " in Proceedings of the 2001 IEEE Computer Society Conference onComputer Vis1n and Pattern Recognit1n(CVPR 2001), vol.1,pp.1-511-1-518,2001。
[0016](4)根据步骤(3)中的矩形邻域求和的多层直方图V',基于常量时间复杂度计算出输入图像中每一个像素所对应的矩形邻域求和值大于0的最大(最小)层的层号,即为所求的输入图像的图像矩形邻域极大(极小)值。对于每个像素(x,y),从大到小遍历矩形邻域求和的多层直方图V'的每一层(即令z从255开始遍历到0),第一个满足V' z(x,y)> 0的层号z即为所求的输入图像的图像矩形邻域极大值。类似地,对于每个像素(x,y),从小到大遍历矩形邻域求和的多层直方图V'的每一层(即令z从0开始遍历到255),第一个满足V' z(x,y) >0的层号z即为所求的输入图像的图像矩形邻域极小值。该步骤计算方法最多只需要256次就可找到某个像素所对应的矩形邻域极大(极小)值,因此只需要常量时间复杂度即可计算完成,而与矩形邻域Ω (X,y)的大小无关,即与r的大小无关。
[0017]至此我们就计算出了输入图像矩形邻域的极大(极小)值。
[0018]传统的求图像矩形邻域极大(极小)值的方法,处理每个像素极值的时间复杂度并达不到常量时间复杂度,而是随着矩形邻域大小的增大而增大。相比于传统方法,本发明涉及的基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法的有益效果在于:三维的多层直方图及其空间相关性的有效运用使得求解图像矩形邻域极大(极小)值的运算时间不会随着图像矩形邻域Ω (X,y)的大小(2r+l) X (2r+l)中r值的增大而增大。对于一幅给定的灰度图像,无论图像矩形邻域多大,求解该幅灰度图像的图像矩形邻域极大(极小)值的时间复杂度始终保持不变,进而有效地改善了处理速度。
【附图说明】
[0019]图1是实施例的流程示意图。
[0020]具体实施方法
[0021]下面通过实施例结合流程示意图对本发明做进一步的阐述。
[0022]下面结合附图对本发明:基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法进行详细说明;本实施例是以本发明技术方案为前提,进行实施的,并结合了详细的实施方式和过程,但本发明的保护范围不限于下述的实施例。
[0023]如图1所示,本实施例所描述的基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法可以分为以下四个步骤:
[0024](1)给定一幅二维的灰度图像作为输入图像I,其宽度和高度分别记作w和h个像素,I 中像素记作(x,y)JJx e {0,1,2,...,w_l},y e {0,1,2,...,h_l}。(x,y)的像素值记作I (x,y),对于8位二进制数所表示的灰度图像,最多有2s = 256个灰度值,因此I (x,y) e {0,1,2,...,255}。给定一个大小为(2r+l) X (2r+l)的二维矩形作为像素(x,y)的矩形邻域Ω(x,y)(其中r为自然数)。
[0025](2)根据步骤⑴中输入图像I构造一个三维的多层直方图V。V层数等于I的取值范围,即256层,每层的直方图宽度和高度与I相同,即分别为w和h。用z表示V中层号,则ze {0,1,2,...,255},第z层直方图记作Vz。遍历输入图像的所有像素,首先对V中所有的值根据公式Vz(x,y) = 0进行初始化,然后根据公式VI(x,y)(X,y) = 1对V进行设置。也就是说,对于像素(X,7),如果像素值1(1,y)和第z层直方图\的层号不相等,则^^(叉,7) = 0,反之,则设置为Vz(x,y) = Ιο
[0026](3)根据步骤⑴中的矩形邻域Ω (x,y)和步骤⑵中构造的三维的多层直方图V,采用基于常量时间复杂度的积分图算法分别计算V中每一层的直方图的图像矩形邻域求和,获得一个矩形邻域求和的多层直方图V'。
[0027]对于第z层直方图火,首先对火求每一列的前序和,记作Sz。设置初始值Sz(x,_l)=0,从小到大遍历乂2中每一行,根据如下公式迭代计算对乂2每一列的前序和:
[0028]Sz (X,y) = Sz (x,y-1) +VZ (x,y)
[0029]然后,利用Sz作为中间结果构造直方图Vz的积分图Az。类似地,设置初始值Az (-1,y) = 0,从小到大遍历32中每一列,根据如下公式迭代计算对S 2每一行的前序和:
[0030]Az (X,y) = Az (x_l,y) +SZ (x,y)
[0031 ] 接下来,对于第z层直方图Vz,可以根据如下公式高效计算出对应的矩形邻域求和的直方图t z:
[0032]V, z= A z (χ-r, y-r) +AZ (x+r, y+r) _AZ (x_r,y+r) _AZ (x+r, y-r)
[0033](4)根据步骤(3)中的矩形邻域求和的多层直方图V',基于常量时间复杂度计算出输入图像中每一个像素所对应的矩形邻域求和值大于0的最大(最小)层的层号,即为所求的输入图像的图像矩形邻域极大(极小)值。对于每个像素(X,y),从大到小遍历矩形邻域求和的多层直方图V'的每一层(即令z从255开始遍历到0),第一个满足V' z(x,y) > 0的层号z即为所求的输入图像的图像矩形邻域极大值。类似地,对于每个像素(X,y),从小到大遍历矩形邻域求和的多层直方图V'的每一层(即令z从0开始遍历到255),第一个满足V' z(x,y) > 0的层号z即为所求的输入图像的图像矩形邻域极小值。
[0034]至此我们就计算出了输入图像矩形邻域的极大(极小)值。
【主权项】
1.一种基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法,可以阐述为以下四个步骤: (1).给定一幅灰度图像作为输入图像,给定一个二维矩形作为每个像素的矩形邻域; (2).根据步骤(1)中的输入图像构造一个三维的多层直方图。多层直方图中每一层的直方图大小和输入图像相同,其层数等于输入图像中像素值的取值范围。根据输入图像的每一个像素值,将多层直方图中的每一个像素值设置为0或1 ; (3).根据步骤(1)中的矩形邻域和步骤(2)中的多层直方图,采用基于常量时间复杂度的积分图算法分别计算多层直方图中每一层的直方图的图像矩形邻域求和,获得一个矩形邻域求和的多层直方图; (4).根据步骤(3)中的矩形邻域求和的多层直方图,基于常量时间复杂度找到输入图像中每一个像素所对应的矩形邻域求和值大于0的最大(最小)层的层号,即为所求的输入图像的图像矩形邻域极大(极小)值。
【专利摘要】本发明提供了一种基于常量时间复杂度的图像矩形邻域极大(极小)值计算方法。该方法可以简要的概括为以下四个步骤:用户给定一幅灰度图像作为输入图像;根据输入图像构造一个三维的多层直方图;分别计算多层直方图中每一层的直方图的图像矩形邻域求和,获得一个矩形邻域求和的多层直方图;根据矩形邻域求和的多层直方图计算出输入图像中每一个像素所对应的矩形邻域求和值大于0的最大(最小)层的层号,即为所求的输入图像的图像矩形邻域极大(极小)值。本方法利用三维的多层直方图及其局部相关性来求解图像矩形邻域极大(极小)值,使图像矩形邻域极大(极小)值的计算具有常量时间复杂度。
【IPC分类】G06K9/62, G06K9/46
【公开号】CN105389580
【申请号】CN201510662958
【发明人】赵汉理, 姜磊
【申请人】温州大学
【公开日】2016年3月9日
【申请日】2015年10月10日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1