Un tren no es un escáner, pero eso no impidió que un desarrollador convirtiera uno en uno. Philo pasó los últimos meses apuntando una cámara de escaneo lineal industrial por la ventana de trenes y ferris para capturar fotografías panorámicas de decenas de miles de píxeles de ancho, y el resultado lo presentó como charla en EMFcamp 2026.
El proyecto, documentado en detalle en su blog personal el 17 de agosto de 2026, resuelve un problema que las cámaras digitales convencionales no pueden: producir una imagen continua y de altísima resolución de un paisaje completo, línea por línea, mientras el vehículo se mueve a velocidad variable.
TL;DR
- Philo construyó una cámara de escaneo lineal industrial para fotografiar trenes y ferris, publicado el 17 de agosto de 2026 en philo.gay.- La cámara usada es la Basler ruL2048-19gm, diseñada para inspeccionar cintas transportadoras industriales.- El sensor lee una línea de 1x2048 píxeles hasta cerca de 19.000 veces por segundo.- Una imagen tomada en el ferri de San Francisco a Oakland en febrero de 2026 midió 56.894x2.048 píxeles en escala de grises.- El precio de lista del modelo más básico de Basler ronda los 700 dólares; Philo la consiguió usada en eBay por un décimo de ese precio.- El proyecto se presentó como charla en EMFcamp 2026, el congreso hacker bienal del Reino Unido.- Los primeros prototipos usaron un teléfono grabando video, extrayendo una columna de cada cuadro (técnica heredada de los años 90).- El mayor desafío técnico fue medir la velocidad exacta del vehículo: los datos de acelerómetro resultaron demasiado ruidosos.
Introducción
Fotografiar un paisaje completo desde la ventana de un tren normalmente significa elegir un solo instante: la cámara del teléfono captura un fotograma y listo. El proyecto de Philo invierte esa lógica: en vez de congelar un instante, registra el recorrido completo como una sola imagen continua, línea por línea, usando el mismo principio que empleaban los escáneres de documentos de escritorio, pero aplicado a kilómetros de vía férrea en vez de una hoja de papel.
El resultado son fotografías que no se parecen a nada que produzca una cámara convencional: extremadamente anchas, de aspecto casi cartográfico, donde cada segmento horizontal corresponde a un tramo distinto del trayecto real.
Qué pasó
Philo lleva desde finales del año pasado experimentando con cámaras de escaneo lineal (line-scan cameras), sensores industriales que en vez de capturar un fotograma completo leen una única línea de píxeles muchas veces por segundo. Apuntada por la ventanilla de un tren o un ferri en movimiento, cada línea capturada corresponde a una franja distinta del paisaje. Si se capturan y se unen suficientes líneas por segundo, el resultado es una imagen continua que recorre kilómetros de recorrido en una sola toma.
El ejemplo que Philo usa para mostrar el resultado es una imagen tomada en el ferri que conecta San Francisco con Oakland en febrero de 2026: una fotografía en escala de grises de 56.894x2.048 píxeles, según describe en el artículo original. Para dimensionar esa cifra: una pantalla 4K mide apenas 3.840 píxeles de ancho, así que la imagen del ferri equivale a casi 15 pantallas 4K puestas una junto a otra.
Cada línea capturada corresponde a un instante distinto del recorrido.
Contexto e historia
La idea de mover un solo sensor lineal para construir una imagen grande no es nueva. En los años 90, cuando los sensores digitales todavía no alcanzaban la resolución del formato medio o grande en película, la industria fotográfica desarrolló los llamados dorsos de escaneo digital (scanning backs): dispositivos que movían una sola línea de píxeles, o tres para color, a lo largo del plano focal de una cámara de gran formato. Esa técnica evitaba construir un sensor gigante y sigue siendo, décadas después, más barata que fabricar un sensor grande de una sola pieza: hoy existen sensores que cubren el formato 4x5 pulgadas, pero son caros.
Philo quería construir su propio dorso de escaneo para su cámara de gran formato, pero nunca se animó por lo complicado de montarlo mecánicamente. La idea que terminó desbloqueando el proyecto llegó al ver un video sobre la cámara de escaneo de formato medio de Gigawipf: ¿y si en vez de mover una parte de la cámara, se mueve la cámara entera y el sujeto se queda quieto?. De ahí nació el concepto de apuntar el sensor lineal por la ventana de un vehículo en movimiento en vez de moverlo dentro de una cámara fija.
No es el primer intento de este tipo. Philo cita varios antecedentes: el Scannoramic project, el experimento de John Hikerbiker, la técnica de Daniel Lawrence Lu de invertir una cámara estacionaria y las fotografías en película de Martin Liebscher. Su objetivo fue mejorar esos resultados tomando en cuenta la velocidad real del movimiento, para evitar que la imagen final saliera deformada.
Detalles técnicos: cómo funciona la cámara de escaneo lineal
El primer prototipo fue literalmente un sofá. Philo puso su teléfono sobre una silla de oficina, lo empujó lentamente mientras grababa video, y con un script extraía la columna más a la izquierda (un slit) de cada cuadro para combinarlas en una sola imagen. El resultado se veía vagamente como un sofá, pero deformado, porque la velocidad de empuje no era constante. Esa fue la primera señal de que el problema central del proyecto no era óptico sino de medir la velocidad con precisión.
El segundo intento fue en la línea naranja del metro de Boston (MBTA): un teléfono viejo pegado al asiento capturaba datos del acelerómetro mientras otro grababa video a 60 cuadros por segundo contra la ventana. Integrar la aceleración para obtener velocidad resultó demasiado ruidoso: en un punto los datos indicaban que el tren se movía hacia atrás al final del trayecto, algo que evidentemente no pasó.
Para tener más líneas por segundo que un teléfono, Philo terminó comprando una Basler ruL2048-19gm, una cámara de escaneo lineal industrial diseñada para inspeccionar objetos sobre cintas transportadoras a alta velocidad. Su sensor de 1x2048 píxeles se puede leer hasta cerca de 19.000 veces por segundo, según documenta Philo. Ese ritmo de captura es lo que permite construir imágenes nítidas incluso cuando el tren avanza rápido: a más velocidad del vehículo, más líneas por segundo hacen falta para no perder detalle.
Comprar una de estas cámaras nueva no es barato: el modelo de gama más baja de Basler ronda los 700 dólares. Philo consiguió la suya en eBay por cerca de un décimo de ese precio, evitando además el problema de los dorsos de escaneo de los 90, que siguen costando miles de dólares y requieren reconstruir un entorno de cómputo de época para operarlos.
flowchart TD
A["Sensor lineal 1x2048px"] --> B["Buffer de lineas"]
B --> C["Estimacion de velocidad"]
C --> D["Duplicar o descartar columnas"]
D --> E["Imagen panoramica final"]
Cómo empezar o probarlo
No hace falta una cámara industrial de 700 dólares para experimentar con el concepto: la misma técnica de slit-scan que Philo usó en su primer prototipo con el sofá se puede reproducir con Python, una laptop y cualquier cámara que grabe video. La idea es la misma: tomar una sola columna de cada cuadro de un video y pegarlas una al lado de la otra.
Primero, instalá las dependencias. En los tres sistemas operativos el paquete es el mismo (opencv-python y numpy), solo cambia cómo se activa el entorno virtual:
# Windows (PowerShell)
python -m venv venv
venv\Scripts\Activate.ps1
pip install opencv-python numpy
# macOS / Linux (bash)
python3 -m venv venv
source venv/bin/activate
pip install opencv-python numpy
El script mínimo abre un video, extrae la columna central de cada cuadro y las va apilando en una imagen nueva:
import cv2
import numpy as np
captura = cv2.VideoCapture("paseo_en_tren.mp4")
columnas = []
while True:
ok, cuadro = captura.read()
if not ok:
break
alto, ancho = cuadro.shape[:2]
columna_central = cuadro[:, ancho // 2]
columnas.append(columna_central)
imagen_slitscan = np.stack(columnas, axis=1)
cv2.imwrite("slitscan_basico.png", imagen_slitscan)
Ese script produce una imagen deformada si la velocidad del vehículo no es constante, exactamente el problema que Philo encontró con el sofá. Una versión más realista compensa la velocidad duplicando u omitiendo columnas según qué tan rápido se mueve el vehículo en cada instante, usando el flujo óptico entre cuadros consecutivos para estimarla:
import cv2
import numpy as np
captura = cv2.VideoCapture("paseo_en_tren.mp4")
ok, cuadro_anterior = captura.read()
gris_anterior = cv2.cvtColor(cuadro_anterior, cv2.COLOR_BGR2GRAY)
columnas = []
while True:
ok, cuadro = captura.read()
if not ok:
break
gris = cv2.cvtColor(cuadro, cv2.COLOR_BGR2GRAY)
flujo = cv2.calcOpticalFlowFarneback(
gris_anterior, gris, None, 0.5, 3, 15, 3, 5, 1.2, 0
)
velocidad_horizontal = np.mean(flujo[:, :, 0])
repeticiones = max(1, round(abs(velocidad_horizontal)))
ancho = cuadro.shape[1]
columna_central = cuadro[:, ancho // 2]
for _ in range(repeticiones):
columnas.append(columna_central)
gris_anterior = gris
imagen_compensada = np.stack(columnas, axis=1)
cv2.imwrite("slitscan_compensado.png", imagen_compensada)
Para confirmar que la compensación funciona, medí en píxeles el ancho de un objeto que se repite a lo largo del trayecto, como un poste de luz o un cruce de vías: si ese ancho se mantiene razonablemente constante en toda la imagen, la velocidad estimada es correcta; si varía mucho, hay que ajustar los parámetros de calcOpticalFlowFarneback.
EnfoqueCuándo usarloVentajaLimitaciónTeléfono + script básicoPara probar el concepto sin gastar nadaCero inversión, listo en minutosSe deforma si la velocidad no es constanteTeléfono + flujo ópticoPara resultados presentables desde un bus o autoCompensa cambios de velocidad automáticamenteSigue limitado a los cuadros por segundo del teléfonoCámara Basler ruL2048-19gmPara imágenes nítidas a alta velocidad, como en un trenHasta 19.000 líneas por segundoRequiere hardware dedicado y montaje mecánicoUna sola pasada del tren genera una imagen de decenas de miles de píxeles de largo.
💡 Tip: si probás esto vos mismo, grabá contra una ventana limpia y en un tramo del recorrido sin curvas ni frenadas bruscas: los cambios de velocidad son, por lejos, la principal fuente de distorsión en cualquier imagen de escaneo lineal.
Impacto y análisis
Lo interesante del proyecto de Philo no es solo el resultado visual, sino la reutilización de hardware industrial fuera de su propósito original. La Basler ruL2048-19gm existe para control de calidad en líneas de producción, no para fotografía artística, y su disponibilidad en el mercado de segunda mano, retirada de fábricas que actualizan sus equipos, la vuelve accesible a un precio muy inferior al de un dorso de escaneo digital vintage.
También es un recordatorio de que buena parte del trabajo en proyectos de captura de imagen no está en el sensor sino en el post-procesamiento: sincronizar la velocidad de lectura de líneas con la velocidad real del vehículo es, según el propio relato de Philo, la parte que más tiempo le llevó resolver, muy por encima de conseguir o montar la cámara.
Philo no fue la única persona presentando este tipo de proyecto en EMFcamp 2026: Tim Jacobs, conocido como mitxela, dio una charla paralela sobre cámaras de escaneo lineal, aunque con un enfoque distinto, generando animaciones psicodélicas al recorrer todas las posiciones posibles de una franja dentro de un video en vez de fotografías fijas de paisajes reales.
📌 Nota: el propio Philo cuenta que se preocupó al ver la charla de mitxela en la agenda de EMFcamp, temiendo que ambos hubieran hecho exactamente lo mismo. Los dos proyectos resultaron ser complementarios, no duplicados.
Qué sigue
Philo mantiene una galería con más resultados del proyecto, incluida la imagen completa de un puerto de contenedores y la del ferri de San Francisco a Oakland. El artículo original, de unas 4.600 palabras, detalla además la construcción mecánica del soporte de la cámara y el pipeline de post-procesamiento completo, información útil para cualquiera que quiera replicar el proyecto con su propio hardware.
La charla de EMFcamp 2026 quedó grabada en video y está enlazada desde el mismo artículo, para quienes prefieran ver el proceso explicado paso a paso en vez de leerlo.
📖 Resumen en Telegram: Ver resumen
Probalo vos: clonate el script con flujo óptico de arriba, grabá un video corto desde la ventana de un bus y compará el resultado contra el script básico sin compensación.
Preguntas frecuentes
¿Qué es una cámara de escaneo lineal?
Es un sensor que en vez de capturar un fotograma completo captura una sola línea de píxeles, muchas veces por segundo. Se usa normalmente en inspección industrial, donde el objeto, por ejemplo algo sobre una cinta transportadora, se mueve frente al sensor fijo.
¿Por qué las imágenes de este proyecto son tan anchas?
Porque cada línea capturada por el sensor corresponde a un instante distinto del recorrido. Cuantas más líneas por segundo se capturen y más dure el trayecto, más larga resulta la imagen final, hasta llegar a decenas de miles de píxeles como en el ejemplo del ferri de San Francisco a Oakland.
¿Cuál es la principal dificultad técnica de este tipo de fotografía?
Medir con precisión la velocidad del vehículo en cada instante. Si la velocidad varía y no se compensa, la imagen final sale estirada o comprimida en las zonas donde el vehículo aceleró o frenó.
¿Se puede probar esta técnica sin comprar una cámara industrial?
Sí. El propio autor del proyecto empezó grabando video con un teléfono y extrayendo una columna de cada cuadro con un script casero, la misma técnica que se puede reproducir con Python y OpenCV.
¿Dónde se presentó este proyecto?
En EMFcamp 2026, un congreso hacker que se realiza cada dos años en Reino Unido, donde Philo dio una charla explicando el proceso completo de construcción y las fallas de los primeros prototipos.
¿Cuánto cuesta una cámara como la que usó Philo?
El modelo de gama baja de Basler ronda los 700 dólares nuevo; Philo consiguió la suya usada en eBay por cerca de un décimo de ese precio.
Referencias
- Using the railway network as a flatbed scanner: artículo original de Philo con el detalle completo del proyecto, la galería de imágenes y el video de la charla en EMFcamp 2026.- Basler AG: fabricante de la cámara industrial de escaneo lineal ruL2048-19gm usada en el proyecto.- EMFcamp: congreso hacker bienal del Reino Unido donde se presentó la charla sobre este proyecto.- Image scanner (Wikipedia): contexto general sobre las tecnologías de escaneo de imagen, incluidos los dorsos digitales de los años 90.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Top comments (0)