2012-10-31 65 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 
    } 
    ] 
}