Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何利用K近邻分类进行字符预测_Matlab_Image Processing_Classification_Nearest Neighbor_Knn - Fatal编程技术网

Matlab 如何利用K近邻分类进行字符预测

Matlab 如何利用K近邻分类进行字符预测,matlab,image-processing,classification,nearest-neighbor,knn,Matlab,Image Processing,Classification,Nearest Neighbor,Knn,我已经使用上面的代码进行图像分割和提取,但是我们如何使用knn进行分类呢?我需要代码方面的帮助。我在mathworks中搜索了knn分类,但我无法理解语法。任何代码方面的帮助都将不胜感激 我在执行后得到以下结果: 如果我是正确的,我的目标是在使用knn分类后在matlab编译器或记事本中预测字符,但我无法在上述代码之后编码k最近邻 %% Image segmentation and extraction %% Read Image imagen=imread('C:\Documents and

我已经使用上面的代码进行图像分割和提取,但是我们如何使用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

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

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

  • 您将需要获得一组更大的角色图像。我个人以前从未做过字符识别,但根据我在其他分类任务中的经验,我估计要获得好的结果,你可能需要至少几千张字符图像

  • 您需要手动确定每个图像的正确字符

  • 如果你这样做是为了自学,那么我相信互联网上有免费的数据集,包含大量预先标记的字符图像,供人们在尝试新算法时使用,而不是自己做1和2

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

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

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

  • 功能1功能2功能3功能4。。。班
    图1 2 1 0 P
    图像2 3 4 0 R
    图3 2 1 10 P
    图4 5 3 0 3 A
    图5 1 6 0 D
    ...
    图像5768 2 3 1 Z
    图像5769160D
    

    此数据集就是应用KNN的数据集。您通常会将数据集分为两部分,一部分用于培训,另一部分用于测试。将训练和测试数据集以及训练标签一起传递到MATLAB命令
    knnclavide
    。输出是测试数据集的预测标签。将这些标签与实际标签进行比较,以了解您的准确度


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

    k最近邻是一种有监督的机器学习算法,它意味着您需要一个训练数据集来学习。你有一个吗?一些评论:(1)这段代码根本不做KNN。你所要做的就是提取对象(2)如果你想使用KNN,你需要有一组基本事实数据或一些你想要比较查询的数据来匹配字符。(3) 您在这里比较的数据究竟是什么?你的数据是像素吗?从像素中提取的特征?描述如何定义每个字符形状的一些参数,如圆弧?圈子?您的问题无法回答,除非您提供有关数据的更多信息。感谢我需要的信息再次感谢您的信息