【发布时间】:2016-02-03 00:39:15
【问题描述】:
实际上,我有一个任务需要识别单个十进制数字作为文本识别过程的一部分。我已经得到了一组 JPEG 格式的一些数字图像。每个图像的大小为 160 x 160 像素。在这里检查了一些资源后,我设法编写了这段代码,但是:
1)我不确定读取图像并在矩阵中调整它们的大小以保存它们是否正确。
2)假设我有 30 个数字 [0-9] 的训练数据图像,每个数字有三个图像,我有 10 个测试图像,每个图像只有一个数字。如何计算每个测试和训练之间的距离一个循环 ?因为在我计算欧几里得的部分代码中,它的输出为零。
3)如何使用混淆矩阵计算准确率?
% number of train data
Train = 30;
%number of test data
Test =10;
% to store my images
tData = uint8(zeros(160,160,30));
tTest = uint8(zeros(160,160,10));
for k=1:Test
s1='im-';
s2=num2str(k);
t = strcat('testy/im-',num2str(k),'.jpg');
im=rgb2gray(imread(t));
I=imresize(im,[160 160]);
tTest(:,:,k)=I;
%case testing if it belongs to zero
for l=1:3
ss1='zero-';
ss2=num2str(l);
t1 = strcat('data/zero-',num2str(l),'.jpg');
im1=rgb2gray(imread(t1));
I1=imresize(im1,[160 160]);
tData(:,:,l)=I1;
% Euclidean distance
distance= sqrt(sum(bsxfun(@minus, tData(:,:,k), tTest(:,:,l)).^2, 2));
[d,index] = sort(distance);
%k=3
% index_close(l) = index(l:3);
%x_close = I(index_close,:);
end
end
【问题讨论】:
标签: matlab image-processing computer-vision pattern-recognition