我正在研究拇指识别系统。我需要实现 KNN 算法来对我的图像进行分类。根据this,它只有 2 个测量值,通过这些测量值计算找到最近邻居的距离,但在我的例子中,我有 400 张 25 X 42 的图像,其中 200 个用于训练,200 个用于测试。我搜索了几个小时,但没有找到找到点之间距离的方法。
编辑:
我已将前 200 张图像重新调整为 1 X 1050 并将它们存储在矩阵中trainingData
200 X 1050。同样我做了testingData
.
下面是 k-近邻分类的示例代码(使用的某些函数需要统计工具箱):
%# image size
sz = [25,42];
%# training images
numTrain = 200;
trainData = zeros(numTrain,prod(sz));
for i=1:numTrain
img = imread( sprintf('train/image_%03d.jpg',i) );
trainData(i,:) = img(:);
end
%# testing images
numTest = 200;
testData = zeros(numTest,prod(sz));
for i=1:numTest
img = imread( sprintf('test/image_%03d.jpg',i) );
testData(i,:) = img(:);
end
%# target class (I'm just using random values. Load your actual values instead)
trainClass = randi([1 5], [numTrain 1]);
testClass = randi([1 5], [numTest 1]);
%# compute pairwise distances between each test instance vs. all training data
D = pdist2(testData, trainData, 'euclidean');
[D,idx] = sort(D, 2, 'ascend');
%# K nearest neighbors
K = 5;
D = D(:,1:K);
idx = idx(:,1:K);
%# majority vote
prediction = mode(trainClass(idx),2);
%# performance (confusion matrix and classification error)
C = confusionmat(testClass, prediction);
err = sum(C(:)) - sum(diag(C))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)