【问题标题】:How to use K nearest neighbor classification for character prediction如何使用 K 最近邻分类进行字符预测
【发布时间】:2015-05-12 08:07:38
【问题描述】:

我已经使用上面的代码进行图像分割和提取,但是我们如何使用 knn 进行分类呢?我需要代码方面的帮助。我已经在 mathworks 中搜索了 knn 分类,但我无法理解语法。任何有关代码的帮助将不胜感激。

执行后得到如下结果:

如果我是正确的,我的目标是在使用 knn 分类后预测 matlab 编译器或记事本中的字符,但我无法在上述代码之后编写 k 最近邻。

%% Image segmentation and extraction
%% Read Image
imagen=imread('C:\Documents and Settings\vijaykumar\Desktop\v.jpg');
%% Show image
figure(1)
imshow(imagen);
title('INPUT IMAGE WITH NOISE')
%% Convert to gray scale
if size(imagen,3)==3 % RGB image
    imagen=rgb2gray(imagen);
end
%% Convert to binary image
threshold = graythresh(imagen);
imagen =~im2bw(imagen,threshold);
%% Remove all object containing fewer than 30 pixels
imagen = bwareaopen(imagen,30);
pause(1)
%% Show image binary image
figure(2)
imshow(~imagen);
title('INPUT IMAGE WITHOUT NOISE')
%% Label connected components
[L Ne]=bwlabel(imagen);
%% Measure properties of image regions
propied=regionprops(L,'BoundingBox');
hold on
%% Plot Bounding Box
for n=1:size(propied,1)
    rectangle('Position',propied(n).BoundingBox,'EdgeColor','g','LineWidth',2)
end
hold off
pause (1)
%% Objects extraction
figure
for n=1:Ne
    [r,c] = find(L==n);
    n1=imagen(min(r):max(r),min(c):max(c));
    imshow(~n1);
    pause(0.5)
end

【问题讨论】:

  • k 最近邻是一种有监督的机器学习算法,这意味着您需要一个训练数据集来学习。你有吗?
  • 一些cmets:(1)这段代码根本没有做KNN。您所做的只是提取对象 (2) 如果您想使用 KNN,您需要有一组地面实况数据或一些您想要比较查询的数据以匹配字符。 (3) 你在这里比较的数据到底是什么?你的数据是像素吗?您从像素中提取的特征?一些描述如何定义每个字符的形状的参数,比如弧?界?在您提供有关数据的更多见解之前,无法回答您的问题。

标签: matlab image-processing classification nearest-neighbor knn


【解决方案1】:

所以你在这里所做的是拍摄一个单词的图像,并成功地将图像分离成一些较小的单个字符图像。

这是重要的第一步,但在您考虑将 KNN 用于字符识别之前,还有很多步骤要做。

  1. 您需要获得更大的字符图像集。我以前从未亲自做过字符识别,但根据我在其他分类任务中的经验,我估计要获得好的结果,您可能需要至少几千张字符图像。

  2. 您需要手动确定每个图像的正确字符。

如果您将此作为自学练习,那么我确信互联网上有免费可用的数据集,其中包含大量预先标记的字符图像,而不是自己做 1 和 2人们在尝试新算法时使用。

  1. 您需要对每张图像进行一些特征提取。这意味着您需要为每个图像提出几个测量特征 - 可能与您尝试预测的事物高度相关的特征(在这种情况下,图像属于哪个字符)。我根本不是字符识别方面的专家,但我建议有用的特征可能是字符中的孔数、字符中直线的数量、线条是水平的还是垂直的,以及相对于整个字符的行长度。

  2. 您需要在每个角色图像上评估这些特征。为了自动化,您需要编写更多的图像处理代码来检测和测量每个特征。

  3. 完成所有这些后,您将拥有一个大致如下所示的数据集:

______feature1 feature2 feature3 feature4 ... class image1 1 2 1 0 P image2 3 4 0 0 R image3 2 1 1 0 P image4 5 3 0 3 A image5 1 6 0 0 D ... image5768 2 3 1 1 Z image5769 1 6 0 0 D

这个数据集就是您应用 KNN 的对象。您通常会将数据集分成两部分,一部分用于训练,另一部分用于测试。将训练和测试数据集连同训练标签一起传递到 MATLAB 命令knnclassify。输出是测试数据集的预测标签。将这些与实际标签进行比较,看看您的准确度。

我希望这会有所帮助 - 祝你好运!

【讨论】:

  • 感谢我需要的信息再次感谢您的信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2023-01-24
  • 2021-01-31
  • 2011-12-30
  • 2021-03-23
相关资源
最近更新 更多