5

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

我发现了许多特征提取方法,例如 Harris 角点检测、SIFT,但是当图像背景与蝴蝶的身体/边界颜色相同时,它们效果不佳。

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

4

2 回答 2

2

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

您最好的选择可能是针对您的问题优化分割/特征提取,而不是使用以前的实现,例如用于更一般用例的 opencv。

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

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

于 2012-10-31T16:04:16.820 回答
1

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

1) 在此处上传您的训练数据:

演示.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
    }
  ]
}
于 2016-12-13T11:39:10.490 回答