一、CCV的主要思想[1]
针对颜色直方图和颜色矩无法表达图像色彩的空间位置的缺点,Pass[9]提出了图像的颜色聚合向量(color coherence vector)。它是颜色直方图的一种演变,其核心思想是将属于直方图每一个bin的像素进行分为两部分:如果该bin内的某些像素所占据的连续区域的面积大于给定的阈值,则该区域内的像素作为聚合像素,否则作为非聚合像素。假设αi与βi分别代表直方图的第i个bin中聚合像素和非聚合像素的数量,图像的颜色聚合向量可以表达为<(α1,β1),(α2,β2),…,(αN,βN)>。而<α1+ β1,α2 + β2,αN +βN > 就是该图像的颜色直方图。由于包含了颜色分布的空间信息,颜色聚合向量相比颜色直方图可以达到更好的检索效果。
二、CCV的算法流程[2]
三、 举个CCV的小例子
下面这个例子来源于这学期选的多媒体信息检索课程课件,还是举个例子比较清楚。下面按照算法流程讲解如下:
输入数据如图1所示,一共包含36个像素点,则将后面判断是否聚合的阈值设定为4。
图1 输入数据
1、量化
量化其实就是一个降维的过程,使特征更加紧凑。将图1所示输入数据按照均匀量化的原则,数值为10~19的对应1,数值为20~29的对应2,30~39的对应3,即将原来的颜色特征量化为了1、2、3三种颜色。按照这种方法量化后的结果如2图2所示:
图2 量化后的结果
2、划分连通区域
图2所示的数据可以划分成4个连通区域A、B、C、D,如图3所示:
图3 划分的连通区域
3、判断聚合性
对于第2步得到的A、B、C、D四个连通区域分别统计像素数目,如图4所示:
图4 统计连通区域像素数目
然后与之前设定的阈值4做比较,像素数大于4的连通区域中的像素为聚合像素,小于4的连通区域中的像素为非聚合像素,如此可知连通区域A、B中的像素都是聚合像素,而连通区域C、D中的像素为非聚合像素。
然后对于量化的3个颜色1、2、3分别统计其中聚合像素和非聚合像素的数目,如图5所示,其中Color为3时的B应该为1,图中有错误。
图5 统计各颜色分量像素聚合情况
4、得到结果
由图5可知该图像的聚合向量为<(17,3),(15,0),(0,1)>,搞定,~`(*∩_∩*)′~。最开始看英文课件看得云里雾里,后来查资料并且最终通过例子真正搞明白了,虽然不难但这个学习的过程还是蛮有成就感的。Over~
参考:
原文链接:https://www.f2er.com/javaschema/285610.html