jueves, 15 de septiembre de 2022

Calculando la redondez de una piedra con R

Hace unos días recogí en la playa tres piedras aparentemente circulares con la idea de cuantificar numéricamente su redondez, es decir, lo próximo que se encuentren geométricamente a una circunferencia perfecta.

He fotografiado las piedras añadiendo una tapa de plástico circular como referencia de circunferencia casi perfecta, así como una piedra irregular de Internet para tener el caso contrario. Se han alterado los colores reales de las piedras, que son muy parecidas, para diferenciarlas fácilmente en el estudio (hacer clic para ver en mayor detalle):


Definimos el radio R como la distancia desde el centro de masas de cada piedra sobre el plano hasta los puntos de su perímetro, y lo muestreamos para ángulos equiespaciados. Como métrica de redondez escogemos la varianza del radio normalizado por la media. Normalizar nos independiza de los tamaños físicos de las piedras, y con la varianza penalizamos fuertemente desviaciones grandes respecto al radio promedio.

Esta varianza la transformamos por una exponencial para tener un indicador de redondez intuitivo que valga 1 para una circunferencia perfecta y tienda a 0 en piedras poco circulares. Calibramos un parámetro de escala k para proporcionar valores cercanos a 1 cuando la piedra es aceptablemente redonda a la vista y dar cifras mucho más bajas en caso contrario:


Representando el radio normalizado para cada ángulo, puede verse como éste se llega a alejar más o menos del valor medio en función del grado de redondez de la piedra (hacer clic para más detalle):


Es interesante la facilidad con que podemos advertir solo por inspección visual sobre la gráfica la gran diferencia existente entre las formas naturales (1-4), por redondas que puedan parecernos a la vista, y una circunferencia artificial (5). Esto convierte el simple cálculo en un buen detector de redondeces creadas por el hombre.

Tras sondeo a simple vista la piedra 3 parecía ganadora. Numéricamente, con el modelo de redondez escogido se comprueba que es así también. La piedra 2 estaría probablemente en segundo lugar si no fuera por una pequeña muesca que reduce la redondez calculada relegándola al tercer puesto.

La siguiente imagen muestra tanto el cálculo numérico de redondez (la cifra puede interpretarse en %), como una versión transformada que magnifica las imperfecciones de las piedras estudiadas. Para no complicarlo he tomado como referencia el radio máximo de cada piedra respecto a su centro de masas, aplicando una compresión radial hacia dicho centro (hacer clic para verlo con detalle):


~~~

Repositorio con el código R: GitHub. No me lo tengas en cuenta pero, salvo el cálculo del centro de masas, el código está tan poco optimizado y vectorizado que puede calificarse de fuerza bruta.


No hay comentarios:

Publicar un comentario

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.