Esta transferencia de archivos no usa internet para nada (decimen)
BBetter Stack
컴퓨터/소프트웨어가전제품/카메라AI/미래기술
스크립트
00:00:00Aquí va una pregunta. ¿Cómo se le envía un archivo a alguien sin usar una red y sin usar ningún
00:00:05dispositivo físico como memorias USB? Bueno, la respuesta es la transferencia óptica de archivos. Un desarrollador llamado Evan
00:00:13Crawley acaba de crear una herramienta llamada Deciman, capaz de enviar un archivo de un dispositivo a
00:00:19otro simplemente parpadeando códigos QR y leyéndolos de vuelta. Es una técnica de transferencia de archivos genial
00:00:26y utiliza tácticas de ingeniería bastante ingeniosas. Así que en el video de hoy vamos a echar un vistazo
00:00:31a Deciman, veremos cómo funciona y lo probaremos en diferentes escenarios para comprobar cuán potente es en realidad
00:00:37la transferencia óptica de archivos. Va a ser muy divertido, así que vamos a adentrarnos en ello.
00:00:46Así es como funciona Deciman. Un dispositivo muestra una secuencia de fotogramas parecidos a códigos QR en su pantalla
00:00:53y otro dispositivo apunta con una cámara hacia ella y los decodifica de vuelta en un archivo. Así que no hay ninguna pila de red
00:01:00involucrada. Por lo tanto, si alguna vez necesitas intercambiar un archivo con un dispositivo aislado, esta es la única manera
00:01:06de hacerlo sin conectar físicamente ningún dispositivo externo como unidades USB. Y la idea es que
00:01:12codifiques tu archivo como una secuencia de códigos QR, los muestres en pantalla uno tras otro y hagas que una cámara
00:01:19en el otro extremo capture y decodifique cada fotograma. Ahora bien, eso puede sonar simple, pero la complicación surge
00:01:26del hecho de que las cámaras en realidad no capturan instantáneamente y las pantallas no se actualizan
00:01:32instantáneamente. Así que estás poniendo a competir dos piezas de hardware diferentes, y si se desincronizan,
00:01:38los fotogramas se corrompen o se pierden por completo. Pero la respuesta de Deciman a este problema es un método llamado codificación fountain.
00:01:46En lugar de enviar el fotograma uno, dos y tres, y esperar que todos y cada uno lleguen,
00:01:53genera un flujo prácticamente ilimitado de fotogramas codificados donde cada fotograma es una mezcla matemática
00:02:00de partes del archivo original en lugar de un fragmento específico de este. Eso significa que ningún fotograma es irreemplazable.
00:02:07El receptor no necesita específicamente el fotograma número 47, solo necesita suficientes fotogramas, los que sea que lleguen.
00:02:14Y si te pierdes la mitad de ellos, no importa. Sigue transmitiendo hasta que el receptor haya recopilado
00:02:22suficientes. Pero este enfoque no es ni mucho menos una solución mágica. Con este método, hay un límite máximo para la cantidad de datos
00:02:29que podemos transferir. Por defecto, el emisor de Deciman empuja 2953 bytes por fotograma a 60 fotogramas por segundo.
00:02:37Si haces los cálculos, obtienes un límite teórico de aproximadamente 177 kilobytes por segundo.
00:02:44Ten en cuenta los gastos generales de la codificación fountain, ya que algunos de esos fotogramas mezclados son esencialmente redundantes por diseño.
00:02:51Y con lo que te quedas es con el número que realmente afirma el archivo Léeme de Deciman.
00:02:56Alcanza un pico de alrededor de 128 kilobytes por segundo cuando se mide de teléfono a teléfono.
00:03:02Y la razón por la que usa fragmentos de 2953 bytes específicamente es porque corresponde a la versión 40 de códigos QR,
00:03:11el tamaño de QR estándar más grande, una cuadrícula de 177 por 177 de módulos individuales empaquetados en un solo fotograma.
00:03:20Y ahí es donde aparece el verdadero compromiso. Si metes más datos en un fotograma, necesitas menos fotogramas
00:03:26en total para enviar el mismo archivo, lo que significa que cualquier cámara que lo esté leyendo de vuelta necesita más resolución,
00:03:33un pulso más firme y un enfoque más nítido para distinguir un módulo del siguiente.
00:03:38Así que todo el sistema es en realidad un acto de equilibrio entre tres variables.
00:03:42Cuántos fotogramas por segundo estás enviando, cuán denso es cada uno de esos fotogramas y qué tan buena es la cámara
00:03:49receptora para resolver esa densidad. Y Deciman viene con un equilibrio específico configurado por defecto,
00:03:57y está sintonizado para un escenario específico, el cual, como descubrí, no es el escenario en el que lo probé.
00:04:03Así que esta es mi configuración: la pantalla de una laptop como emisor, colocada a una distancia normal de un brazo,
00:04:09como realmente usarías esto en la práctica. Con esta configuración, mi transferencia selimitó a unos tres kilobytes por segundo.
00:04:16Aproximadamente del uno al dos por ciento de los fotogramas transmitidos se decodifican realmente. El resto se captura y se descarta.
00:04:23Ahora bien, hay tres cosas que juegan en nuestra contra aquí. El primer y mayor obstáculo es la discrepancia en la frecuencia de fotogramas.
00:04:30El emisor emite a 60 fotogramas por segundo, pero la cámara de mi teléfono captura a 30. No puedes muestrear 60 imágenes distintas
00:04:38con un sensor que solo capta 30. Y es peor que simplemente perderse la mitad de ellas, porque la ventana de exposición de cada
00:04:45fotograma capturado abarca dos códigos QR diferentes en la pantalla. Así que la cámara no se pierde un fotograma limpiamente; combina dos de ellos en algo que no se decodifica.
00:04:56Y en el archivo main.ts, incluso hay una nota que dice que iOS entregará silenciosamente 30 fotogramas por segundo, incluso cuando la aplicación le pida explícitamente 60 a la cámara.
00:05:07La cámara simplemente no te da lo que solicitaste, y el código ya aborda eso.
00:05:12Y un poco más abajo en el mismo archivo, hay un comentario que básicamente predice exactamente lo que me pasó en mi primer intento.
00:05:19Los valores predeterminados, que son 2953 bytes por fotograma a 60 fotogramas por segundo, están sintonizados específicamente para una demostración de teléfono a teléfono a corta distancia.
00:05:29Y se espera que esa misma combinación tenga dificultades en un monitor ordinario a la distancia de un brazo.
00:05:35En otras palabras, el proyecto me advirtió que esto pasaría. Simplemente no había bajado lo suficiente en el código para verlo.
00:05:41En el lado del emisor, un panel de laptop de 60 hercios tiene el mismo problema a la inversa. Y los píxeles LCD tardan mucho tiempo en hacer la transición completa de gris a gris.
00:05:51Y ese tiempo de establecimiento significa que el panel no ha llegado completamente a un código antes de que el siguiente comience a pintarse encima.
00:05:58Así que estás obteniendo artefactos de estela o ghosting. Y el segundo problema es la densidad del código frente a la resolución de la cámara.
00:06:042953 bytes es la versión 40 de QR, pero una decodificación confiable necesita aproximadamente de tres a cuatro píxeles de cámara por módulo, lo que da más de 600 píxeles de ancho en enfoque nítido solo para el código en sí.
00:06:20Y la pantalla de la laptop sostenida a la distancia de un brazo rara vez llena tanto el encuadre de la cámara de un teléfono, pero de teléfono a teléfono a corta distancia llena todo el visor fácilmente.
00:06:30Y el tercer problema es el brillo y el contraste. Es un problema secundario, pero ayuda si el binarizador del receptor procesa la imagen limpiamente, aunque aun así no puede solucionar una discrepancia de fotogramas o un código demasiado pequeño.
00:06:44Así que ahora intentemos hacer la misma transferencia, pero esta vez de un teléfono a otro teléfono.
00:06:50Así que lo único que cambia es el emisor. Es una pantalla OLED pequeña y brillante sostenida de cerca, que llena todo el encuadre del teléfono receptor.
00:06:58Ahora la cámara realmente puede alcanzar un valor más cercano a su frecuencia de fotogramas real.
00:07:02El código llena el encuadre en alta resolución y no hay estela de LCD con la que lidiar.
00:07:07Este es el escenario bajo el cual se midió realmente el número de 128 kilobytes por segundo en el archivo Léeme.
00:07:14También hay un detalle pequeño pero verdaderamente útil en el código del receptor.
00:07:18Informa los FPS de captura y los FPS de decodificación por separado. La captura nos dice lo que la cámara está viendo físicamente.
00:07:26La decodificación te dice cuánto de eso es realmente utilizable.
00:07:30Cuando esos dos números se distancian el uno del otro, es decir, la captura se mantiene saludable mientras la decodificación se desploma,
00:07:35estás ante una discrepancia entre cuán densos son los fotogramas y lo que la cámara realmente puede resolver a esa distancia.
00:07:42Así que si tu caso de uso real es de laptop a teléfono, la solución es reequilibrar esas tres variables del lado del emisor.
00:07:50Debes reducir los bytes por fotograma a 1465, lo que corresponde a una versión de QR más gruesa con módulos más grandes y tolerantes.
00:07:59Y luego reducir los FPS de transmisión a 24, deliberadamente por debajo del límite de 30 FPS de la cámara.
00:08:07De modo que los fotogramas se muestren limpiamente uno por uno en lugar de fundirse entre sí.
00:08:12Y como puedes ver, reducir estos números genera un rendimiento mucho mayor.
00:08:16Esto solo te muestra que la transferencia óptica de archivos no es una solución universal.
00:08:21Tienes que ajustarla manualmente para cada caso de uso dependiendo del hardware que estés usando.
00:08:26Así que ahí lo tienen, amigos.
00:08:27Eso es Deciman en pocas palabras.
00:08:29En general, este fue un proyecto verdaderamente divertido para explorar.
00:08:32La transferencia óptica de archivos es una técnica bastante genial.
00:08:36Y ver el concepto de codificación fountain aplicado en un escenario de caso real aquí fue realmente interesante de presenciar.
00:08:44Y mientras exploraba este proyecto, también pensaba, ¿dónde usarías realmente este tipo de herramienta?
00:08:49Supongo que la respuesta obvia serían las transferencias aisladas donde deliberadamente no quieres ninguna conexión de red en absoluto.
00:08:57O quizás dispositivos que ni siquiera tienen Bluetooth o Wi-Fi, como hardware antiguo o sistemas embebidos.
00:09:04Es decir, en cualquier lugar donde una pantalla y una cámara sean las únicas dos cosas con las que puedas contar.
00:09:10¿Pero qué piensas de esta herramienta?
00:09:11¿Has usado herramientas de transferencia óptica antes?
00:09:14¿Ves alguna aplicación en la vida real para esto?
00:09:17Háznoslo saber en la sección de comentarios abajo.
00:09:19Y amigos, si les gustan este tipo de análisis técnicos, por favor háganmelo saber destrozando ese botón de me gusta debajo del video.
00:09:25Y tampoco olviden suscribirse a nuestro canal.
00:09:28Este ha sido Andrus de BetterStack y los veré en los próximos videos.
00:09:34Los veré en el próximo video.