pgm是什么意思 pgm是什么意思

目标
目的:为了让大家了解图像识别和检索的算法开发过程,以及加深对特征和分类器的理解 。
概要
对于图像分类和检索来说,最重要的有两个内容,一个是特征提取方法,另一个是分类方法 。图像识别就是先提取图像的特征,然后根据图像的特征进行分类识别的过程 。为了让大家最快的了解图像识别算法的开发过程,我特意使用“图像尺寸缩小+欧式距离”的思想编写了相应的程序 。算法实现的流程图如下图所示 。

pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
pgm是什么意思 pgm是什么意思

文章插图
,这都告诉你们了,感觉损失大了)
为了实现本文的算法,我特意使用上面的公式编写了一个欧式距离分类器 。即edpredict.m文件 。下面简单的介绍一下该函数文件 。
该函数文件的源代码如下所示:
function = edpredict(dtrain,dtest,ltrain,ltest)
---------------------------------------------------------------------------------------------------------------标记1
if nargin ~= 4
disp('输入的参数必须是4个');
return;
end
if length(size(dtrain)) ~= 2
disp('训练样本必须是二维矩阵!');
return;
end
if length(size(dtest)) ~= 2
disp('测试样本必须是二维矩阵!');
return;
end
if size(dtrain,2) ~= size(dtest,2)
disp('测试样本特征向量维度应该和训练样本特征向量维数相同!');
end
--------------------------------------------------------------------------------------------------------------标记2
dtrain = double(dtrain); % 训练数据
dtest = double(dtest); % 测试数据
ltrain = double(ltrain); % 训练样本标签
ltest = double(ltest); % 测试样本标签
-------------------------------------------------------------------------------------------------------------标记3
= size(dtrain);
= size(dtest);
index = zeros(m2,1);
-------------------------------------------------------------------------------------------------------------标记4
for i = 1:m2
distance = 1000000;
for j = 1:m1
temp = sqrt(norm(dtest(i,:) - dtrain(j,:)));
if distance > temp
distance = temp;
index(i) = ltrain(j); % 预测标签
end
end
end
-------------------------------------------------------------------------------------------------------------标记5
accuracy = 100*sum(index == ltest)/m2; % 准确度
str = strcat('accuracy = ',num2str(accuracy),'%',' (classify)');
disp(str);
end
首先说function 。MATLAB的m文件有两种,一种是脚本文件,一种是函数文件 。它们的相同点都是由一系列的命令组成的,但是,脚本文件不能返回变量哦,函数文件可以啊!即,调用脚本文件时,它能实现一定的功能并产生一些结果,但是不能返回任何东东到调用的位置 。但是当调用函数文件时,处理完成脚本文件的功能外,还能返回变量到调用位置 。大家明白没有?没有的话baidu或看看matlab教程 。不过话说回来,大家不明白也就算了,这里其实就想说function的功能是:声明本文件是函数文件,不是脚本文件 。(脚本文件的话,开头没有标志性的语句,直接开始写自己的代码就可以了)
第一行“function = edpredict(dtrain,dtest,ltrain,ltest)”叫函数头,function声明这是函数文件,等号左边是函数的返回变量,即;等号右边是函数名(edpredict)和输入参数” (dtrain,dtest,ltrain,ltest)” 。注意几点:①定义函数时,函数的名字一定想好,不要和MATLAB自带函数重名;②参数之间都是用逗号间隔开的,记住哦!!!