[Image processing][Soglie] Aiuto con Otsu

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[Image processing][Soglie] Aiuto con Otsu

Messaggioda DavideDaSerra » venerdì 10 marzo 2017, 17:28

Ciao, sto imprecando come un dannato pechè non ho capito esattamente come si comporti l'algoritmo otsu per il calcolo delle soglie.
In teoria dovrebbe massimizzare la varianza inter-classe, ma la teroia, si sa, è diversa dalla pratica e io vorrei capire come implementarlo.

Per ora ho capito che:
1- devo calcolare l'istogramma dell'immagine (OK)
2- devo determinare una soglia da cui partire (ma non so da dove partire)
3- il buio più scuro

Qualcuno saprebbe aiutarmi?

per ora il codice che ho scritto è questo:
Codice: Seleziona tutto
import numpy as np

hist(image,bin=255): #funzione che calcola l'istogramma
   hist = np.zeros(bin)
   for i in xrange(0,bin):
      hist[i]=sum(img[img==i])
   return hist

media_cumulativa(hst,level):
   mc = 0
   for i in xrange(0,level):
      mc = (hst[i]*i) + mc
   return mc

def OTSU(image,max=255):
   def OTSU(image,max=255):
   hst = hist(image,max)
   num_pix_liv_1 = sum(hst[:th])
   num_pix_liv_2 = sum(hst[th:])
   
   somma_pix_liv_1 = 0
   for i in xrange (0,th):
      somma_pix_liv_1 = somma_pix_liv_1 + ( hst[i]*i )
   
   somma_pix_liv_2 = 0
   for i in xrange (th,max):
      somma_pix_liv_2 = somma_pix_liv_2 + ( hst[i]*i )
      
   media_pix_liv_1 = somma_pix_liv_1 / float(num_pix_liv_1)
   media_pix_liv_2 = somma_pix_liv_2 / float(num_pix_liv_2)
        media_globale = np.average(image)


   


sottolineo che vorrei evitare di usare funzioni di libreria perchè devo capirene bene il funzionamento
DavideDaSerra
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 343
Iscrizione: febbraio 2009
Località: Da qualche parte in quel di Modena
Desktop: xubuntu
Distribuzione: Ubuntu12.10 x86_64

Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 5 ospiti