我认为您可以使用类似于用于测量文档相似性的词袋模型的东西。看看这个:链接
我正在复制下面的等式:
G = X'*X
其中 X = [x1 x2 ... xn]
在您的情况下,使用图像的归一化直方图作为向量 xi。
我认为您不必以这种方法调整图像的大小,而且速度会更快。
编辑
我在 Matlab 中使用 opencv 示例中提供的一些示例图像进行了尝试:
im1 = imread('baboon.jpg');
im2 = imread('board.jpg');
im3 = imread('fruits.jpg');
im4 = imread('fruits - small.jpg'); % fruits.jpg scaled down 25% using mspaint
% using grayscale for simplicity
gr1 = rgb2gray(im1);
gr2 = rgb2gray(im2);
gr3 = rgb2gray(im3);
gr4 = rgb2gray(im4);
[cnt_baboon, x] = imhist(gr1);
[cnt_board, x] = imhist(gr2);
[cnt_fruits, x] = imhist(gr3);
[cnt_fruits_small, x] = imhist(gr4);
% X: not normalized
X = [cnt_baboon cnt_board cnt_fruits cnt_fruits_small];
H = X'*X;
N = sqrt(diag(H)*diag(H)');
% normalize. this would be faster
G = H./N
生成的 G 矩阵:
G =
1.0000 0.8460 0.7748 0.7729
0.8460 1.0000 0.8741 0.8686
0.7748 0.8741 1.0000 0.9947
0.7729 0.8686 0.9947 1.0000
您可以看到 G(3,4)(和 G(4,3))非常接近 1。