La risposta dipende dal contesto : se esaminerai solo un numero limitato (limitato) di segmenti, potresti essere in grado di permetterti una soluzione computazionalmente costosa. Tuttavia, sembra probabile che tu voglia incorporare questo calcolo all'interno di una sorta di ricerca di buoni punti etichetta. In tal caso, è di grande vantaggio disporre di una soluzione che sia o computazionalmente veloce o che consenta un rapido aggiornamento di una soluzione quando il segmento di linea candidato è leggermente variato.
Ad esempio, supponiamo che tu intenda condurre una ricerca sistematicaattraverso un intero componente collegato di un contorno, rappresentato come una sequenza di punti P (0), P (1), ..., P (n). Ciò si farebbe inizializzando un puntatore (indice nella sequenza) s = 0 ("s" per "inizio") e un altro puntatore f (per "fine") in modo che sia l'indice più piccolo per il quale distanza (P (f), P (s))> = 100, quindi avanzamento di s fino a quando distanza (P (f), P (s + 1))> = 100. Questo produce una polilinea candidata (P (s), P (s + 1) ..., P (f-1), P (f)) per la valutazione. Avendo valutato la sua "idoneità" per supportare un'etichetta, si aumenterebbe quindi s di 1 (s = s + 1) e si procederà ad aumentare f a (diciamo) f 'e s a s' fino a quando una polilinea candidata supera il minimo viene prodotto un intervallo di 100, rappresentato come (P (s '), ... P (f), P (f + 1), ..., P (f')). In tal modo, i vertici P (s) ... P (s ' È altamente desiderabile che la forma fisica possa essere rapidamente aggiornata dalla conoscenza dei soli vertici rilasciati e aggiunti. (Questa procedura di scansione continuerebbe fino a quando s = n; come al solito, f deve poter "avvolgere" da n indietro a 0 nel processo.)
Questa considerazione esclude molte possibili misure di idoneità ( sinuosità , tortuosità , ecc.) Che altrimenti potrebbero essere attraenti. Ci porta a favorire le misure basate su L2 , perché in genere possono essere aggiornate rapidamente quando i dati sottostanti cambiano leggermente. Prendendo un'analogia con l' analisi dei componenti principali si suggerisce di intrattenere la seguente misura (dove piccolo è meglio, come richiesto): utilizzare il più piccolo dei due autovalori della matrice di covarianzadelle coordinate del punto. Geometricamente, questa è una misura della "tipica" deviazione laterale dei vertici all'interno della sezione candidata della polilinea. (Un'interpretazione è che la sua radice quadrata è il semiasse più piccolo dell'ellisse che rappresenta i secondi momenti di inerzia dei vertici della polilinea.) Sarà uguale a zero solo per insiemi di vertici collineari; in caso contrario, supera lo zero. Misura una deviazione media da un lato all'altro rispetto alla linea di base di 100 pixel creata dall'inizio e dalla fine di una polilinea e quindi ha una semplice interpretazione.
Poiché la matrice di covarianza è solo 2 per 2, gli autovalori si trovano rapidamente risolvendo una singola equazione quadratica. Inoltre, la matrice di covarianza è una somma dei contributi di ciascuno dei vertici in una polilinea. Pertanto, viene rapidamente aggiornato quando i punti vengono eliminati o aggiunti, portando ad un algoritmo O (n) per un contorno n-point: questo si ridimensionerà bene ai contorni altamente dettagliati previsti nell'applicazione.
Ecco un esempio del risultato di questo algoritmo. I punti neri sono vertici di un contorno. La linea rossa continua è il miglior segmento polilinea candidato di lunghezza end-to-end maggiore di 100 all'interno di quel contorno. (Il candidato visivamente ovvio in alto a destra non è abbastanza lungo.)