2012-10-31 82 views
5

我有一组蝴蝶图像用于训练我的系统从给定的输入图像中分割蝴蝶。为此,我想提取诸如边缘,拐角,区域边界,局部最大/最小强度等特征。我发现了许多特征提取方法,例如哈里斯角点检测,SIFT,但是它们在工作时并不能很好地工作。图像背景与蝴蝶的身体/边界颜色具有相同的颜色。蝴蝶图像的特征提取

任何人都可以请告诉我们是否有任何好的特征提取方法可以很好地用于蝴蝶分割?我正在使用OpenCV的Python实现。

+1

样本图像将有很大的帮助 – Hammer

+0

@Hammer嗨,我用来自利兹(http://goo.gl/YYRcn) – freax

回答

2

你是否愿意编写自己的图像处理逻辑?

您的最佳选择可能是优化针对您的问题的分割/特征提取,而不是像以前的实现一样使用opencv,这意味着更常用的用例。

我发现在嘈杂/低对比度环境下可以很好地工作的一个选项是使用滑动窗口(即10x10像素)并构建梯度方向直方图。从这个直方图中,您可以识别更多优势边(它们在直方图中积累)和它们的方向(允许检测像角这样的事物)的存在并查看局部最大值/最小值。 (如果需要,我可以提供更多详细信息)

如果您有兴趣将细分作为一个整体与用户交互进行,我会建议使用图形切割或剪切。在图形切割用户将能够微调分割。 Grab Cut已经在opencv中,但可能会导致相同的问题,因为它只需要用户输入一次,然后自动分割图像。

+0

喜@Noremac数据集,我感兴趣的分割蝴蝶作为整个和最初的测试,我想绘制一个围绕蝴蝶的边框,以查看我的分割是否正常工作。我面临的一个隐含问题是蝴蝶被遮挡的时候。 另外我想知道更多关于您提到的梯度直方图方法。 写我自己的逻辑会很好,但对于一个开始,我试图实现已有的分段方法。 – freax

+0

我用于此的参考文献在以下免费pdf书籍中:http://szeliski.org/Book/。这是一本很好的参考书,并指导你去哪里寻找更多的细节。第218,219页是我开始使用它们的原因。它们是SIFT特征的一部分,但只保留了主要的梯度,而我使用了更多的特征(最终用于分类的神经网络)。您也可以在本节中找到更多有关功能的创意。 – Noremac

+0

谢谢@Noremac,会通读这本书! – freax

0

您可以尝试通过训练数据(butterlys的图像)上传到demo.nanonets.ai建立模型(免费使用)

1)在这里上传你的训练数据:

demo.nanonets.ai

2)然后使用以下(Python代码)查询API:

import requests 
import json 
import urllib 
model_name = "Enter-Your-Model-Name-Here" 
url = "https://i.ytimg.com/vi/xT6UsQwZyy0/maxresdefault.jpg" 
files = {'uploadfile': urllib.urlopen(url).read()} 
url = "http://demo.nanonets.ai/classify/?appId="+model_name 
r = requests.post(url, files=files) 
print json.loads(r.content) 

3)响应看起来像:

{ 
    "message": "Model trained", 
    "result": [ 
    { 
     "label": "Black Swallowtail", 
     "probability": 0.97 
    }, 
    { 
     "label": "Orange Sulphur", 
     "probability": 0.025 
    }, 
    { 
     "label": "Monarch", 
     "probability": 0.005 
    } 
    ] 
}