我正在开发一个CBIR系统,我正在使用HSV直方图作为我的功能之一。对于每个图像,我想计算一个直方图,其中有n1个色调用于色调,n2用于饱和,n3用于值。我想要一个具有n1xn2xn3维度的向量,具有这些区间的所有可能组合。
例如:如果我分别为色调,饱和度和值取一个元组(8,12,3),那么我想计算一个8x12x3 = 288维向量。
在openCV中我们有calcHist()
函数来执行此操作,但我在matlab中找不到类似的函数。
这就是我所做的
%roi1 is my region of interest, y1 is the vector
y1=[imhist(roi1(:,:,1),8)' imhist(roi1(:,:,2),12)' imhist(roi1(:,:,3),3)'];
但是y1将是23维而不是期望的288维。如果有类似于openCV的calcHist()
的功能,请帮我解决这个问题。
答案 0 :(得分:0)
您计算的是一系列单维直方图,而不是多维直方图。例如,imhist(roi1(:,:,1),8)'仅是色调值的计数,忽略对应的饱和度或像素的值。 Mathworks网站上有代码来计算n维直方图,它应该提供您所追求的内容:http://www.mathworks.com/matlabcentral/fileexchange/23897-n-dimensional-histogram