颜色特征是在图像检索中应用最为广泛的视觉特征。颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质。数字图像的颜色特征包括颜色直方图 、颜色矩、颜色相关图和颜色聚合向量等。 本文主要是对各种图像颜色特征提取方法和实现进行介绍。
颜色特征提取
图像特征提取(纹理特征)
图像检索:颜色聚合向量(CCV)及matlab实现
I=imread('lena.jpg');
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
figure,imhist(R);
title('R');
figure,imhist(G);
title('G');
figure,imhist(B);
title('B');
firstMoment = mean(mean(I)); % 一阶颜色矩
difference = I(:,:,m) - firstMoment(1,1,m); %差分颜色矩
secondMoment(m,1) = sqrt(mean(mean(difference.*difference))); % 二阶颜色矩
thirdMoment(m,1) = nthroot(mean(mean(difference.*difference.*difference)),3); % 三阶颜色矩
颜色聚合向量(color coherence vector,CCV)是一种颜色特征,它包含了颜色分布的空间信息。克服了颜色直方图无法表达图像色彩的空间位置的缺点。
颜色聚合向量是一种更复杂颜色直方图。它将每个像素分类为聚合的(coherence pixels)或非聚合的(incoherence pixels)。聚合的像素指的是,该像素属于一个大的连通区域;而非聚合像素指的是,像素位于一个小的连通区域。连通区域大小的标准有我们自己来定,通常为整幅图像像素的1%。大于1%,是大的连通区域。
function CCV = getCCV(img,coherentPrec, numberOfColors)
if ~exist('coherentPrec','var')
coherentPrec = 1;
end
if ~exist('numberOfColors','var')
numberOfColors = 27;
end
CCV = zeros(2,numberOfColors);
%高斯滤波
Gaus = fspecial('gaussian',[5 5],2);
img = imfilter(img,Gaus,'same');
[img, updNumOfPix]= discretizeColors(img,numberOfColors); %量化
imgSize = (size(img,1)*size(img,2));
thresh = int32((coherentPrec/100) *imgSize);
parfor i=0:updNumOfPix-1
BW = img==i;
CC = bwconncomp(BW);
compsSize = cellfun(@numel,CC.PixelIdxList);
incoherent = sum(compsSize(compsSize>=thresh));
CCV(:,i+1) = [incoherent; ...
sum(compsSize) - incoherent];
end
end