2012-10-31 6 views
5

Ho un set di immagini di farfalle per addestrare il mio sistema a segmentare una farfalla da una determinata immagine di input. A tale scopo, desidero estrarre le funzioni come spigoli, angoli, limiti dell'area, intensità locale massima/minima ecc.Estrazione di feature per immagini di farfalle

Ho trovato molti metodi di estrazione delle caratteristiche come il rilevamento angolo di Harris, SIFT ma non hanno funzionato bene quando lo sfondo dell'immagine aveva lo stesso colore del colore del corpo/contorno della farfalla.

Qualcuno potrebbe indicare se esiste un buon metodo di estrazione delle caratteristiche che funzioni bene per la segmentazione delle farfalle? Sto usando l'implementazione Python di OpenCV.

+1

immagini di esempio aiuterebbe molto – Hammer

+0

Hi @Hammer, ho usato il set di dati da Leeds' (http://goo.gl/YYRcn) – freax

risposta

2

Sei disposto a scrivere la tua logica di elaborazione delle immagini?

L'opzione migliore sarà probabilmente quella di ottimizzare la segmentazione/l'estrazione di funzionalità per il problema, invece di utilizzare implementazioni precedenti come opencv destinate a casi d'uso più generali.

Un'opzione che ho trovato che funziona bene in ambienti rumorosi/a basso contrasto consiste nell'utilizzare una finestra scorrevole (ovvero 10x10 pixel) e creare un istogramma di orientamento del gradiente. Da questo istogramma è possibile riconoscere la presenza di più spigoli dominanti (si accumulano nell'istogramma) e i loro orientamenti (consentendo il rilevamento di cose come angoli) e vedere il massimo/minimo locale. (Se necessario, posso fornire ulteriori dettagli)

Se è possibile un'interazione dell'interazione utente con E, si consiglia di eseguire il taglio del grafico o il taglio. Negli utenti di taglio grafico sarebbe possibile perfezionare la segmentazione. Il taglio Grab è già in corso, ma può comportare gli stessi problemi in quanto richiede un singolo input dall'utente, quindi segmenta automaticamente l'immagine.

+0

Ciao @Noremac, mi interessa segmentare la farfalla come un per intero e per i test iniziali, mi piacerebbe disegnare un riquadro di delimitazione attorno a una farfalla per vedere se la mia segmentazione funziona o meno. Un problema implicito che sto affrontando è quando la farfalla è occlusa. Inoltre mi piacerebbe saperne di più sul metodo dell'istogramma del gradiente che hai menzionato. Scrivere la mia logica sarebbe fantastico ma, per iniziare, sto cercando di implementare metodi già esistenti per la segmentazione. – freax

+0

Il riferimento che ho usato per questo è nel libro pdf gratuito su: http://szeliski.org/Book/. Questo è un ottimo libro di riferimento e ti dirige dove andare per maggiori dettagli. Le pagine 218.219 mi hanno aiutato a usarle. Fanno parte delle funzionalità di SIFT, ma viene mantenuto solo il gradiente dominante, mentre io ho usato più funzionalità di quella (eventualmente una rete neurale per la classificazione). Potresti trovare altre idee per le funzioni da usare in questa sezione. – Noremac

+0

Grazie @Noremac, passerà attraverso questo libro! – freax

0

Si può provare a costruire un modello caricando i dati di allenamento (immagini di butterlys) per demo.nanonets.ai (da usare gratuitamente)

1) Carica i dati di allenamento qui:

demo.nanonets.ai

2) poi interrogare l'API utilizzando la seguente (codice Python):

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) la risposta appare come:

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