Aqui hay algunas ideas:
- Si los contornos aún no están en estructuras de datos separadas, use un algoritmo de seguimiento de bordes (también conocido como "seguimiento de contornos") para seguir cada uno. Una vez que tenga el contorno, encuentre los dos puntos más alejados. Una vez que tenga los dos puntos más alejados (diámetro de Feret), tome el punto medio de esos puntos, proyecte una línea perpendicular y compruebe lo que puede ser algo así como un eje menor de una forma elíptica aproximada. Verifique el par de puntos 2º más lejanos y su "eje menor", el 3º punto más alejado, etc.
- Desde el centro de masa del contorno más interno, escanee hacia afuera en direcciones radiales. Mantenga un registro de los puntos de cruce en cada contorno. La dirección radial (o grupo de direcciones radiales) con la mayor distancia promedio de contorno a contorno tendrá la pendiente más suave y la distancia más larga.
- Realice una prueba de "gota de agua". Esto requiere un poco de física. Imagine que tiene una gota de agua o una pelota en su pico (en algún lugar dentro del contorno más interno). Empújalo en alguna dirección radial theta. Dada la gravedad y una superficie nominalmente sin fricción, calcule la velocidad de su caída / bola cuando llegue al plano horizontal inferior.
Para cualquiera de las técnicas anteriores, considere los ángulos de 0 a 179, aunque puede usar una técnica radial (0 a 359 grados). Si hay más de una respuesta máxima, encuentre el radio más largo (o lo que sea) que tenga más vecinos con respuestas grandes.