Regionprops e eulernumber

di il
10 risposte

Regionprops e eulernumber

Ciao!

qualcuno sa spiegarmi bene come funziona eulernumber della funzione regionprops per il trattamento di un immagine di matlab?
da quello che ho capito io restituisce uno scalare che per ogni oggetto presente nell immagine fa oggetto-buchi nell oggetto......

ho capito bene??

perche se io scrivo tipo
 if(S(i).EulerNumber > 0) 
vuol dire che vado a prendere tutti gli oggetti nel immagine che nn hanno buchi?

grazie mille in anticipo!!!

10 Risposte

  • Re: Regionprops e eulernumber

    Allora, esattamente ti restituisce il numero di oggetti meno il numero di buchi. Prendi ad esempio le lettere dell'alfabeto.
    la A è un oggetto con un buco, quindi il suo numero di eulero = 0
    la B è un oggetto con due buchi, quindi eulero=-1
    la C è un oggetto senza buchi, quindi eulero=1
    la i è composta da due oggetti senza buchi, quindi eulero=2
    Se applichi il numero di eulero ad un'immagine, ti restituisce il numero di eulero totale.
    Se nell'immagine c'è scritto "ciao" il risultato dell'applicazione di eulernumber sarà il totale dell'immagine, non oggetto per oggetto. In questo caso dovrebbe venire 3.
    Per fare un controllo su ciascun oggetto dell'immagine devi fare un ciclo che estragga ciascun oggetto e ne calcoli il numero di eulero separatamente.
  • Re: Regionprops e eulernumber

    Ummmm capito grazie!

    quindi se la mia immagine è fatta per esempio di un triangolo che contiene un triangolo che a sua volta contiene un triangolo se io uso regionprops che mi "cataloga" gli oggetti e poi uso
    S(i).eulernumber >0 vado a beccare solamente il triangolo interno no?

    perchè il primo avrà dei buchi e quindi eulernumber è 0,il secondo la stessa cosa mentre l ultimo avrà eulernumber =1 perchè al suo interno nn ha triangoli

    ho capito bene?
  • Re: Regionprops e eulernumber

    Concettualmente è giusto (che vai a cercare il triangolo interno che è senza buchi e quindi ha numero di eulero=1). Questo ovviamente presuppone che stiamo parlando di un'immagine in bianco è nero dove il triangolo più interno è bianco.
    La cosa che non capisco dalle tue parole è come usi questo:
    S(i).eulernumber >0
    Cos'è S e cos'è i... perché se S è la tua immagine il numero di eulero è relativo all'immagine e non a ciascun oggetto che la compone. Ed avrai un solo numero che identifica tutta l'immagine.
    Ma forse semplicemente non hai specificato qui qualche passaggio.
  • Re: Regionprops e eulernumber

    Si l'immagine è in bianco e nero è correttamente "tresholdata" da un immagine rgb usando greytresh.

    la S e l a struttura che crea la regionprops.
    in pratica scrivo s=regionprops(im,'area','eulernumber','filledarea,etc)

    e poi scorro con un ciclo for i:dim(s) gli oggetti che ha preso la regionprops....

    è questo quello che ho fatto
  • Re: Regionprops e eulernumber

    Poi scusa nn ho capito una cosa...se il triangolo interno fosse nero vuol dire che nn lo leggerebbe?
  • Re: Regionprops e eulernumber

    Esatto... perché per lui gli "oggetti" sono le cose in bianco. Tutto quello che è nero è sfondo.
    Comunque, sarà il freddo che non permette ai miei neuroni di comunicare tra loro... mi risulta che regionprops crei un'unica struttura, non una struttura per ciascun oggetto... a meno che non la usi sull'immagine derivante da un bwlabel... probabilmente stai facendo così.
    In questo caso dovrebbe essere tutto corretto!
  • Re: Regionprops e eulernumber

    Si si ho mello l=bwlabel(img)

    e poi s=regionprops(l,area,etc...)

    mi ero dimenticato io di scriverlo
  • Re: Regionprops e eulernumber

    Meno male... mi stavo preoccupando per le mie facoltà intellettive...
  • Re: Regionprops e eulernumber

    Eheheh no no funzionano benissimo
    e grazie mille dell aiuto!!!!
  • Re: Regionprops e eulernumber

    Figurati!
Devi accedere o registrarti per scrivere nel forum
10 risposte