opencv - 从大型数据集中识别被遮挡的纹理补丁

我手头的假设任务是能够从几何上未扭曲的饮料 jar 的上方图片中给出其分类(例如饮料的品牌和名称)。不需要分段。分类函数的输入只是一个 View ,一个 View ,可以从它的任何一侧看到。数据集应该很大,大约 2000 种不同的饮料。这些 jar 都具有相同的尺寸。训练时,每个 jar 都要旋转几百次以包括几乎任何角度。

有什么想法是解决这个问题的最佳方法吗?对我来说,这似乎是一个纹理识别问题,对象本身的形状无关紧要。分类也应该很快,所以排除了模板匹配。如果有人能为我指出正确的方向,那将是向前迈出的一大步。我想出的任何想法似乎都不适合这项任务。局部特征(SIFT/SURF)等?太笼统了。一个品牌可以在他们生产的不同饮料上使用相同的标志。神经网络? jar 在不同的侧面看起来可能会非常不同,如果它们都映射到相同的标签,这会打乱训练。词袋?用于训练 SVM 的 HOG/颜色直方图等?完全不同的东西,我不知道,我可能不知道?

最佳答案

一种好的方法是对 jar 的形状进行建模,这样您就可以将 jar 中的纹理和标签映射到平面矩形。由此,您可以使用低分辨率版本或基于高斯金字塔的模板匹配进行模板匹配,以进行快速匹配。

第二种选择是提取此“平面化”图像的 SIFT 或 SURF 关键点,并尝试在训练集中找到相应的点。尽管相同的标志或文字可能出现在几个不同的 jar 上,但您可以使用关键点的位置来区分 jar 。

https://stackoverflow.com/questions/7086903/

相关文章:

opencv - 从照片中提取竞争对手号码

opencv - 调整代码以检测多个圆圈,而不是OPENCV中的一个圆圈

python - 了解cvFilter2d的输出

image-processing - 如何使用kinect和opencv进行面部检测?

python - 在OpenCV中如何在没有Sobel过滤器的情况下过滤线

objective-c - 将图像显示到 iPhone 模拟器屏幕

opencv - 使用自定义内核的OpenCV散焦模糊?

opencv - OpenCV:检测图 block 中的运动

visual-studio - 尝试使用Visual Studio编译OpenCv文件时出现链接器错

opencv - cvCreateCameraCapture不起作用