蝴蝶图像的特征提取

时间:2012-10-31 04:47:23

标签: python image-processing opencv image-segmentation

我有一组蝴蝶图像用于训练我的系统从给定的输入图像中分割蝴蝶。为此,我想提取边,角,区域边界,局部最大/最小强度等特征。

我发现了许多特征提取方法,如Harris角点检测,SIFT,但是当图像背景与蝴蝶的身体/边界颜色具有相同颜色时,它们不能很好地工作。

有谁能告诉我们是否有适合蝴蝶分割的良好特征提取方法?我正在使用OpenCV的Python实现。

2 个答案:

答案 0 :(得分:2)

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

您最好的选择可能是针对您的问题优化细分/特征提取,而不是像以前的实现那样使用opencv来实现更常见的用例。

我发现在嘈杂/低对比度环境中工作良好的选项是使用滑动窗口(即10x10像素)并构建渐变方向直方图。从这个直方图中,您可以识别出更多优势边缘(它们在直方图中累积)及其方向(允许检测角落之类的东西)并查看局部最大值/最小值。 (如果需要,我可以提供更多细节)

如果您对整个分段和用户交互感兴趣,我建议使用图形切割或抓取切割。在图形切割中,用户将能够微调分割。抓取已经在opencv中,但可能会导致与用户单次输入相同的问题,然后自动分割图像。

答案 1 :(得分: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
    }
  ]
}