我有几个这样的图像,并尝试使用Neural Networks
和GIST
作为功能识别对象。我的数据集有50个类,每个类有4个图像。使用75%的图像作为训练数据,我的测试准确率为83%
为了提高准确性,我想对图像进行预处理I.e.我想让背景透明或白色,同时保留原始对象。我一直在尝试cv2.BackgroundSubtractorMOG2()
,但它会使整个图像变灰。
预处理此图像的最佳方法是什么?
答案 0 :(得分:1)
您可以尝试使用GrabCut算法解决此问题。由于您知道对象大致位于中心,因此您可以尝试构建对象的颜色分布,并从图像的边框收集背景样本。
OpenCV文档可以在这里找到: http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#grabcut
在此处举例:https://github.com/Itseez/opencv/blob/master/samples/cpp/grabcut.cpp
答案 1 :(得分:0)
您可能想尝试提取轮廓以查找图像中的对象。然后,您可以仅提取最大轮廓内的图像部分,并假设这是您的对象。
答案 2 :(得分:0)
对于图像预处理,没有一个最好的答案。有许多事情可以用来增强您的训练集/提高分类准确性。如果您正在使用神经网络(尤其是自己训练),那么您需要尽可能地增加数据以使其最有效。您可以为图像预处理/训练集数据增强做一些可能的技术:
由于每个级别只有4张图像,因此除非您想要分类的图像与训练集中的图像非常相似,否则这个图像的训练图像不够用,因此您需要转换这4张图像(3如果你使用75%进行训练,可以使用12来用于训练。
但是对于测试,需要注意的一件重要事情是图像的SHAPE非常重要。因此,如果您的网络需要50x50像素图像且原始图像为100x50,那么您可以选择如何将图像重新塑造为50x50,包括直线变形,从中间裁剪50x50区域,用黑色填充图像像素为100x100,然后重新缩放等。