这里主要讲如何得到一幅图像的边缘直方图
边缘直方图描述符是MPEG-7中的一个纹理描述符,常用与图像检索。
大致过程:图像划分--->计算子图边缘直方图--->归一化--->计算图像边缘直方图
值得一提的是注意区分其中的专业名词,例如:图像,子图,图像块,子块,无向边缘,无边缘,...
1 图像划分步骤:
- 首先,将图像划分为4×4=16个子图(Sub-image),这样做的目的是将边缘方向定位在一个确定的区域。将每个子图从左上角至右下角分别标记为SI(0,0),...,SI(3,3)。
- 其次,将每个子图(Sub-image)再分为若干个图像块(Image-block),这里划分的图像块个数视情况而定。图像块用(i,j)标记。
- 然后,每个图像块继续划分为4个子块(Sub-block),并将其编号为0,1,2,3。
图像划分过程如下图1和图5所示。
图像划分到此就结束了,接下来进行直方图的讲解。
2 计算子图边缘直方图
这里先从子图的直方图开始讲起,子图的直方图横坐标是边缘方向的特征向量,其纵坐标对应于特征向量中每个边缘方向的个数。这里边缘方向有以下五种:垂直、水平、45°、135°和非方向,如下图所示。
将上图的五种边缘方向用滤波器表示,如图6所示。
然后,提取第(i,j)图像块(Image-block)的4个子块(Sub-block)的平均灰度值,将其分别表示为a0(i,j), a1(i,j), a2(i,j), 和 a3(i,j)。接下来,将第(i,j)图像块(Image-block)与5个边缘方向滤波器分别做卷积,得到该图像块(Image-block)在这5个边缘方向上的边缘值,分别记为mv(i,j), mh(i,j), md-45(i,j), md-135(i,j), 和 mnd(i,j) 。卷积公式如下图所示。
如公式6所示,当5个边缘值中的最大值大于我们设置的阈值Tedge时,我们将最大值对应的边缘方向作为该图像块(Image-block)的边缘方向。
于是,我们便得到了一个图像块(Image-block)的边缘方向。以此类推,我们可以得到一个子图(Sub-image)中所有图像块(Image-block)的边缘方向。我们按照五个边缘方向对该子图(Sub-image)中所有的图像块(Image-block)进行统计,可以得出每个边缘方向的个数。继而生成该子图(Sub-image)的边缘直方图,如图3所示。
3 归一化and计算图像直方图
当该图像的的16个子图(Sub-image)的边缘直方图全部生成之后,可以得到16×5=80维的特征向量,即图像边缘直方图的横坐标。除此之外,我们需要归一化直方图中的每个分量,将其作为图像边缘直方图的纵坐标。这里归一化使用的方法是,以每个子图(Sub-image)的边缘直方图为单位,其中每个bin的值等于该bin的个数除以该子图(Sub-image)总的图像块(Image-block)的个数(此总数可以简单理解为该子图的边缘方向的总数,其实并不简单,下面有解释)。换言之,每个子图(Sub-image)的边缘直方图的纵坐标值为:5个边缘方向之一的某个方向的个数除以总的方向个数得到归一化的概率。由此,可以生成图像的边缘直方图,横坐标为80维的特征向量,纵坐标为每个方向归一化的概率。如图4所示。
表1列出的80个bin的语义。可以看出,通过从左至右、自顶向下扫描图像,按照垂直、水平、45°、135°和无向边缘的顺序排列16个子图(Sub-image)的边缘直方图即可得到图像的边缘直方图。
得到边缘直方图的过程如上所述,最后讨论一下其中的细节。
- 由于归一化的概率落在一个很小的区间,比如[0,0.3]。对于每个bin,我们对其做一个非线性的映射,使用3bit表示其中的概率可能。总共需要240bit就能表示整幅图像,如表2所示。
- 子图(Sub-image)划分为图像块(Image-block)按如下公式进行,其中image_width为子图(Sub-image)的宽度,image_height为子图(Sub-image)的高度,desired_num_block为需要的图像块(Image-block)的个数,block_size就是最后图像块的大小。下面第一个公式就是利用简单的面积不变原理;第二个公式做了一个向下取整,使得到的数为2的倍数,方便后面子块(Sub-block)的划分。
- 无向边缘(non-directional edge)与无边缘(no edge)的区分。无向边缘(non-directional edge)是5中边缘直方图描述符中的一种;而无边缘(no edge)指的是在灰度单调的图像区域,没有五种边缘中的任何一种。
- 解释上面的原谅绿,在归一化bin时,无边缘(no edge)的图像块也计入了边缘方向的总数中,这会使得一个子图(Sub-image)所有bin的值加起来小于1.这就意味着在EHD中也间接考虑了关于子图(Sub-image)中的非边缘分布的信息(平滑度)。