use*_*075 1 c# algorithm image-recognition knn
我目前正在研究项目或指导/指导我的研究.我要确定三叶不同的物种,并用100个样本每一个(300仅仅是特定的),我的教授要求我意味着K近邻算法使用在上传的100个样本在系统中上传的图片进行分类数据库作为参考.
我已经为系统上传了样本和图像处理,但我仍然需要应用KNN算法对它们进行分类,任何建议或分步教程?
是否需要研究编码算法,或者是否有现有的库可以在C#语言的图像分类中轻松应用KNN?并且每个叶子种类有100个图像样本吗?
更多信息:来自martijin_himself的回复
是的,我说的是树叶.嗯,问题是,唯一要考虑的特征是树叶的形状.忽略其他功能,如颜色,大小等.我并不确切知道何时或如何提取这些"特征向量",将它们放在何处以及如何将图像样本用作叶子的参考
关于系统的图像处理部分,图像经历二值化和斑点化的过程,使图像仅考虑其形状唯一的特征.因此,我在数据库中上传的所有样本都是如此.如果我缺乏答案所需的信息,我感到非常抱歉.请多多包涵.
提前致谢!:)
如果我理解正确,您将拥有300个图像的训练集,每个类(或标签)100个.
首先,您必须定义特征向量,这是一组您认为在分类图像时很重要的图像特征或属性.如果你在谈论(树)叶子,一个特征可能是图像中的颜色值?
第二步是定义计算特征向量之间距离的距离函数.例如,具有大量红色的图像与具有大量绿色的图像具有更大的距离.您甚至可以权衡这些特征,以反映它们对距离贡献的重要性.
接下来,您可以选择k的值,并测试特征向量和距离函数组合执行的程度,以便根据训练集的已知标签对图像进行分类.这称为交叉验证.如果您的特征向量和距离函数表现不佳,您可能选择了不属于该类的属性(例如图像的大小).
在c#中实现它时,您可以为每个图像或类似的东西创建一个FeatureVector类,并且可以实现IComparable(或类似)接口来计算某些已知样本的距离函数.然后,您可以简单地创建一个List并对其进行排序.这只是一个建议.