我正在为大学数据库制作基于内容的图像检索系统。我正在使用彩色特征来匹配图像之间的相似性。我的图像分辨率为 648 * 424 像素。基本上我正在做的是:
获取 8 * 8 px 图像块的彩色直方图,并将所有这些连接到一个矩阵中。为此,我使用了 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。
以最大效率执行此操作的最佳方法是什么?