Matlab中的3D HSV图像直方图,每个通道具有不同数量的箱子?
我正在开发一个CBIR系统,其中我使用HSV直方图作为我的功能之一。对于每幅图像,我想计算一个直方图,其中有n1个像素表示色调,n2表示饱和度,n3表示值。我想要一个矢量,它是n1xn2xn3维的,有所有可能的这些箱子的组合。 例如:如果我分别取色调、饱和度和值的元组(8、12、3)箱,那么我想计算8x12x3=288维向量。 在openCV中,我们有Matlab中的3D HSV图像直方图,每个通道具有不同数量的箱子?,matlab,image-processing,machine-learning,computer-vision,cbir,Matlab,Image Processing,Machine Learning,Computer Vision,Cbir,我正在开发一个CBIR系统,其中我使用HSV直方图作为我的功能之一。对于每幅图像,我想计算一个直方图,其中有n1个像素表示色调,n2表示饱和度,n3表示值。我想要一个矢量,它是n1xn2xn3维的,有所有可能的这些箱子的组合。 例如:如果我分别取色调、饱和度和值的元组(8、12、3)箱,那么我想计算8x12x3=288维向量。 在openCV中,我们有calcHist()函数来执行此操作,但我在matlab中找不到类似的函数。 这就是我所做的 %roi1 is my region of inte
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()
,那么建议我这样做。您计算的是一系列一维直方图,而不是多维直方图。例如,imhist(roi1(:,:,1),8)”是仅色调值的计数,忽略相应的饱和度或像素值。Mathworks网站上有计算n维柱状图的代码,该柱状图应该提供您想要的内容:为什么不直接使用2D或3D?