我正在为大学数据库制作基于内容的图像检索系统。我使用彩色功能来匹配图像之间的相似性。我的图像分辨率为648 * 424像素。基本上我正在做的是:
获得8 * 8像素图像块的彩色直方图,并将所有这些块连接在一个矩阵中。为此我使用MATLAB函数blockproc,代码如下所示:
% Reading two images from Database
A = imread('bonfire/1.jpg');
B = imread('bonfire/2.jpg');
% Using blockproc to get feature vector for both images
C = blockproc(A ,[8, 8], @localHistogram);
D = blockproc(B, [8, 8], @localHistogram);
虽然函数localHistogram是:
function y = localHistogram(block_struct)
% Separating Red, Green and Blue planes
redPlane = block_struct.data(:, :, 1);
greenPlane = block_struct.data(:, :, 2);
bluePlane = block_struct.data(:, :, 3);
% Obtaining histogram for all 3 planes with number of bins = 50
[pixelCountR, grayLevelsR] = imhist(redPlane, 50);
[pixelCountG, grayLevelsG] = imhist(greenPlane, 50);
[pixelCountB, grayLevelsB] = imhist(bluePlane, 50);
% Concatenating three histograms of respective planes
y = cat(2,pixelCountB, pixelCountG, pixelCountR);
end
现在我想通过使用欧几里德距离比较特征向量C和D来找到两个图像之间的相似性。 C和D的尺寸为2650 * 243.
以最高效率实现这一目标的最佳方法是什么?