Calculando $\pi$ con Pizza: Ciencia de Datos, Imágenes y Monte Carlo en Acción
¿Quién dijo que la matemática no se come? En esta entrada vamos a usar nada más y nada menos que una imagen de pizza para calcular uno de los números más importantes de la historia: $\pi$ (pi). Pero no lo haremos con compases ni con círculos dibujados a mano. Lo haremos como buenos científicos de datos: con imágenes, simulaciones y Python.
Bienvenido a este delicioso cruce entre gastronomía visual, matemáticas fundamentales y ciencia de datos aplicada.
🧠 Motivación: cuando los píxeles cuentan historias
En ciencia de datos, una de las cosas más emocionantes es cómo los datos nos permiten construir conocimiento desde lo inesperado. Las imágenes, por ejemplo, no son más que matrices de números. Si sabemos leer esos números con los algoritmos correctos, entonces podemos hacer cosas que antes parecerían absurdas… como usar una foto de una pizza para estimar $\pi$.
Pero ¿cómo funciona esto?
La idea proviene del clásico método de Monte Carlo, que estima valores numéricos mediante simulaciones aleatorias. En este caso, queremos estimar $\pi$, que está relacionado con el área de un círculo. Si lanzamos puntos al azar dentro de un cuadrado que contiene un círculo, la proporción de puntos que caen dentro del círculo se aproxima a $\pi/4$, o sea:
\begin{equation} \pi=4\frac{\mbox{Número de puntos dentro del círculo}}{\mbox{Número de puntos totales}}. \end{equation}
Y como la pizza es… más o menos un círculo… ¡ya sabes hacia dónde vamos!
🔍 En qué consiste el experimento
🧠 ¿Por qué este método estima $\pi$?
El método de Monte Carlo que usamos para estimar $\pi$ se basa en una idea geométrica muy simple pero poderosa. Imaginemos un cuadrado de lado 1, que va desde (0, 0) hasta (1, 1). Dentro de este cuadrado, podemos inscribir un cuarto de círculo de radio 1. Es decir, la porción del círculo que está en el primer cuadrante. Lo interesante es que conocemos el área exacta de ambas figuras. El área del cuadrado es 1, porque es simplemente lado por lado. El área del cuarto de círculo, por su parte, es una fracción del área total del círculo de radio 1. Como el círculo completo tiene área $\pi$, el cuarto de círculo tiene área $\pi$/4. Aquí es donde entra la simulación. Si arrojamos puntos aleatorios dentro del cuadrado, cada punto tiene la misma probabilidad de caer en cualquier parte. Entonces, si contamos cuántos puntos caen dentro del cuarto de círculo, la proporción de esos puntos respecto al total se aproxima al área del cuarto de círculo, es decir, a $\pi$/4. Finalmente, si multiplicamos esa proporción por 4, obtenemos una estimación de $\pi$. Así, con suficiente número de puntos aleatorios, la estimación converge al valor real de $\pi$. Es un ejemplo clásico y elegante de cómo la simulación puede ayudarnos a resolver problemas matemáticos usando solo datos aleatorios.
Entonces hagamos:
- Tomamos una imagen real de una pizza sobre fondo oscuro (buen contraste).
- La procesamos para distinguir claramente la zona de la pizza (círculo) del fondo (cuadrado).
- Generamos miles de puntos aleatorios sobre la imagen.
- Contamos cuántos caen sobre la pizza (círculo).
- Calculamos $\pi$ a partir de la proporción.
Este método es divertido, visual, y usa elementos reales del mundo digital (imágenes) para resolver problemas matemáticos clásicos. Una fusión perfecta de ciencia de datos con matemática aplicada.
💻 El Código Paso a Paso
1. Cargar y procesar la imagen
Usamos OpenCV para leer y convertir la imagen de la pizza a escala de grises, luego aplicamos un desenfoque para suavizar y una binarización para separar la pizza del fondo.

Para hacer esto he preparado un pequeño código para hacer todo. Se ve como sigue.
import numpy as np
import cv2 ## Librería para el tratamiento de imágenes
img_gray = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
img_blur = cv2.GaussianBlur(img_gray, (7, 7), 0)
_, binary = cv2.threshold(img_blur, 100, 255, cv2.THRESH_BINARY)
Esto convierte la imagen en una matriz donde los píxeles del fondo son negros (0) y los de la pizza son blancos (255).
2. Simulación Monte Carlo
Generamos miles de coordenadas aleatorias dentro de la imagen, y contamos cuántas de ellas caen sobre píxeles blancos (la pizza).
x_rand = np.random.randint(0, w, size=num_points)
y_rand = np.random.randint(0, h, size=num_points)
inside = binary[y_rand, x_rand] == 255
pi_est = 4 * np.sum(inside) / num_points
Multiplicamos la proporción de puntos dentro de la pizza por 4, y ¡voilà!, tenemos una estimación de $\pi$.
3. Visualización
La ciencia de datos es también visual. Representamos gráficamente los puntos para ver qué tan bien se comporta la simulación:
plt.scatter(x_rand[inside], y_rand[inside], s=0.2, c='red')
plt.scatter(x_rand[~inside], y_rand[~inside], s=0.2, c='blue')
Puntos rojos: dentro del círculo.
Puntos azules: fuera del círculo.
Una pizza matemática servida en código.
📈 Resultados y Reflexiones
Con esta imagen, obtuvimos una estimación de $\pi$ muy cercana a su valor real (3.14159…), dependiendo del número de puntos simulados. No se trata de la forma más precisa de calcular $\pi$, pero sí de una forma extremadamente didáctica y divertida.

Este ejercicio tiene un enorme valor pedagógico:
- Introduce ideas fundamentales de probabilidad, simulación y estadística.
- Muestra cómo trabajar con imágenes en ciencia de datos.
- Estimula la creatividad para pensar en problemas clásicos desde nuevas perspectivas.
🍕 Conclusión: Ciencia de Datos para Saborear las Matemáticas
Usar una pizza para calcular $\pi$ no es solo un juego de palabras, es una demostración poderosa de cómo los datos (en este caso, imágenes) pueden convertirse en conocimiento matemático mediante algoritmos simples pero ingeniosos.
Este experimento combina visión computacional, simulación de Monte Carlo y análisis estadístico en apenas unas líneas de código. Esa es la magia de la ciencia de datos: convertir lo cotidiano en una herramienta para explorar lo abstracto.
¿Y tú? ¿Qué otra imagen usarías para calcular $\pi$?
Un pequeño Notebook de Python con estos cálculos y código para los resultados se puede encontrar en: Estimacion_Pi_MonteCarlo_Pizza_Updated.ipynb.