Rilevazione della superficie


9

Come sarebbe segmentare una vasta area di grigio (che va dal bianco al nero) da un'immagine? (Se lo sai in opencv, puoi rispondere dicendo cosa faresti in opencv). Ad esempio, data questa immagine:

inserisci qui la descrizione dell'immagine

Vedi che questa è una vasta area di grigio ed è chiaramente distinguibile dal resto. Come puoi segmentare questo se questa area può avere qualsiasi sfumatura di grigio e deve funzionare in tempo reale.

Grazie in anticipo.


Vedo diverse aree grigie chiaramente distinguibili. Potresti mostrare il risultato desiderato?
Dr. belisarius,

il mio risultato desiderato sono le coordinate degli angoli in alto a destra e a sinistra e le coordinate dell'angolo in basso a sinistra del rettangolo grigio medio
Olivier_s_j

Puoi dirci qualcos'altro sull'ambiente e la potenziale varianza delle immagini che dovrai elaborare? Il bersaglio sarà sempre vicino al centro dell'immagine? Ci saranno altri rettangoli grigi presenti, forse della stessa dimensione? E se si presentano come la stessa tonalità di grigio? Ci sono altre cose che potremmo usare per identificarlo? Avrà sempre la piccola forma a "T" nella parte superiore?
justis,

Ciao, il bersaglio non sarà sempre vicino al centro dell'immagine. L'obiettivo sarà sempre una specie di rettangolo. (Può anche essere solo un muro). Se ci sono più rettangoli, anche questi dovrebbero essere rilevati, ma dovrebbero essere grandi. Piccole aree possono essere scartate. Se si presentano tutti come lo stesso tipo di grigio, dovrebbero essere tutti rilevati, ma la possibilità che ciò accada è molto piccola. L'unica proprietà reale che può essere rilevata è che una superficie avrà lo stesso grigio (più o meno) su tutta la superficie e che è un rettangolo. Non ci sarà mai un piccolo top a forma di T ogni volta
Olivier_s_j il

Risposte:


9

Otterrai una ragionevole segmentazione dell'area grigia usando l' algoritmo Watershed o i tagli del grafico. Lo spartiacque è disponibile in opencv ma i tagli dei grafici non sono ancora disponibili. (A proposito, questa è una mappa di profondità di Kinect?)


1
La funzione spartiacque in opencv richiedeva come input un'immagine a 3 canali a 8 bit. La mia mappa di profondità è un'immagine a 8 bit 1. Qualche idea su come risolverlo?
Olivier_s_j il

/ * ottieni le proprietà dell'immagine / larghezza = src-> larghezza; altezza = src-> altezza; / crea una nuova immagine per la versione in scala di grigi * / IplImage * dst = cvCreateImage (cvSize (larghezza, altezza), IPL_DEPTH_8U, 1); cvCvtColor (src, dst, CV_RGB2GRAY);
Nav

Un'altra domanda, ho appena ottenuto la funzione spartiacque funzionante in un'altra immagine (solo un esempio da Opencv). Ma iniziano con un'immagine a colori e un'immagine binaria. Ho solo 1 immagine ... l'immagine in scala di grigi. Qualche idea di quale dovrebbe essere la maschera (la seconda variabile di input)?
Olivier_s_j

4

In Mathematica potresti fare qualcosa del tipo:

Colorize[MorphologicalComponents[
  ColorNegate@
   Erosion[Dilation[
     DeleteSmallComponents[
      Erosion[Binarize[
        GradientFilter[
         ColorConvert[Import@"http://i.stack.imgur.com/XdnaW.png", 
          "RGB"], 2], .015], 1], 100], 2], 2]], 
 ColorFunction -> "ThermometerColors"]

inserisci qui la descrizione dell'immagine

Probabilmente puoi tradurre questo codice in qualsiasi libreria di elaborazione delle immagini.


Ciao, sembra carino. Ma non ho la matematica. Ma immagino tu abbia usato il limite basato sulla scala di grigi di questa immagine? Forse potresti dare un po 'di informazioni con il tuo codice? Thx
Olivier_s_j

1
@Ojt Per ogni comando puoi leggere " reference.wolfram.com/mathematica/ref/xxx.html " per una descrizione. Ad esempio reference.wolfram.com/mathematica/ref/…
Dr. belisarius,

Ok ho fatto come mi hai suggerito. Ma sembra che tu stia usando Binarize per raggiungere un determinato valore. Ciò non è possibile nel mio caso. Dal momento che ampie aree di possono avere diverse tonalità di grigio. (Ad esempio la superficie centrale potrebbe essere molto chiara). E quindi la soglia non funzionerebbe.
Olivier_s_j il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.