Sto scrivendo una piccola applicazione per il rilevamento di forme. Quello che devo fare in primo luogo è trovare la forma più significativa su un'immagine. Ho iniziato da una pre-elaborazione inclusa la conversione dell'immagine in scala di grigi, il rilevamento delle soglie e dei bordi. Immagine prima e dopo queste operazioni si presenta sottorilevamento forme - approssimazione del contorno con OpenCV
Prima
Dopo
Così come si può vedere la forma principale è visibile (ma è un po 'sparso) e ci sono anche alcuni rumori (piccoli alberi ecc.). Quello che devo fare è estrarre in qualche modo solo la forma più significativa (la più grande) - in questo caso è una torre. Quello che volevo fare è usare la funzione di ricerca dei contorni in opencv e poi in qualche modo approssimati contur trovati con poligono. Quindi vorrei (in qualche modo) calcolare l'area di countours e selezionare solo la più grande. Finora ho consumassimo (solo) per trovare i contorni utilizzando
cvFindContours(crated,g_storage,&contours);
So che c'è una funzione
cvApproxPoly
, ma io non sono in grado di ottenere tutte le informazioni utili per il risultato di questa funzione . Qualcuno potrebbe dirmi se è possibile calcolare l'area del contorno o approssimare il contur con il poligono. Forse hai un'idea migliore di come estrarre solo la forma più significativa?
Come un'adesione al processo di Binarizzazione. È sempre difficile trovare un buon valore di soglia. Io calcolo sempre un Hisogram e cerco un "Low Point". Lì di solito hai un valore di soglia Nive. Se stai usando JPEG questo metodo potrebbe non funzionare così bene. –