Voglio creare un poligono minimale che si avvicini al limite di una forma arbitraria (semi-casuale).
Per "minimo" intendo, "il minor numero possibile di punti".
La forma originale (da limitare) è in formato bitmap, con una colorazione semplice.
La complicazione è che la forma può avere linee (cioè lunghe aree / forme sottili) che escono da essa. Quale algoritmo puoi suggerire di utilizzare per rilevare queste righe?
Ad esempio, voglio rilevare linee che non siano più larghe di cinque pixel; le linee potrebbero essere in diagonale o curve.
Preferirei un algoritmo, che posso implementare, piuttosto che uno strumento o una libreria di terze parti preinstallati.
Ad esempio, ecco una semplice forma di esempio (disegnata a mano con Paint):
Notarechehaunalineasemi-casualecheescedaesso.
Eccoilrisultatodell'elaborazionedellaformachehoimplementatofinora:
- Ipixelrossimostranouncontornotracciatointornoallaforma
- Ipixelverdisulbordorossomostranounpoligonoabbastanzaminimale,incuiilcontornocambiaforma.
Unaversioneestesaperrendereognipixelpiùvisibile:
Ipixelverdirappresentanoilpoligonochevoglio,trannechemipiacerebbetagliarelaformadellacodanellaparteinferiore(inmodocheinfondorimanesolounquadrato),perchélasualarghezzamassimalorendetropposottileperessereinteressante.
Dati questi dati, quale algoritmo rileva che c'è una forma sottile che esce dal fondo?
Re. i requisiti di prestazione, la bitmap è probabilmente dire 1000 pixel quadrati; il poligono delimitante potrebbe avere un paio di centinaia di punti in totale; e l'algoritmo viene eseguito su un PC.