边缘直方图描述符是MPEG-7中的一个纹理描述符,常用与图像检索。
大致过程:图像划分--->计算子图边缘直方图--->归一化--->计算图像边缘直方图
值得一提的是注意区分其中的专业名词,例如:图像,子图,图像块,子块,无向边缘,无边缘,...
图像划分过程如下图1和图5所示。
图像划分到此就结束了,接下来进行直方图的讲解。
这里先从子图的直方图开始讲起,子图的直方图横坐标是边缘方向的特征向量,其纵坐标对应于特征向量中每个边缘方向的个数。这里边缘方向有以下五种:垂直、水平、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所示。
当该图像的的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)的边缘直方图即可得到图像的边缘直方图。
得到边缘直方图的过程如上所述,最后讨论一下其中的细节。