Visión de robot

Hace unos días comencé la relectura del libro “Cómo funciona la mente” de Steven Pinker. En uno de los apartados del primer capítulo el autor comenta que en las películas, frecuentemente, se nos muestra una escena tal como se vería a través del ojo de un robot. Para lograrlo, los directores utilizan estrategias tales como la distorsión tipo ojo de pez o las mirillas de referencia al estilo de una mira telescópica. Esto es absolutamente válido y seguramente creativo, pero en verdad, nos dice Pinker, “si pudiéramos ver el mundo con los ojos de un robot, su aspecto no se parecería al fotograma de una película a base de mirillas, sino que se asemejaría más a esto:

225 221 216 219 219 214 207 218 219 220 207 155 136 135
213 206 213 223 208 217 223 221 223 216 195 156 141 130
206 217 210 216 224 223 228 230 234 216 207 157 136 132
211 213 221 223 220 222 237 216 219 220 176 149 137 132
221 229 218 230 228 214 213 209 198 224 161 140 133 127
220 219 224 220 219 215 215 206 206 221 159 143 133 131
221 215 211 214 220 218 221 212 218 204 148 141 131 130
214 211 211 214 220 218 221 212 218 204 148 141 131 130
211 208 223 213 216 226 231 230 241 199 153 141 136 125
200 224 219 215 217 224 232 241 240 211 150 139 128 132
204 206 208 205 233 241 241 252 242 192 151 141 133 130
200 205 201 216 232 248 255 246 231 210 149 141 132 126
191 194 209 238 245 255 249 235 238 197 146 139 130 132
189 199 200 227 239 237 235 236 247 192 145 142 124 133
198 196 209 211 210 215 236 240 232 177 142 137 135 124
198 203 205 208 211 224 226 240 210 160 139 132 129 130
216 209 214 220 210 231 245 219 169 143 148 129 128 136
211 210 217 218 214 227 244 221 162 140 139 129 133 131
215 210 217 218 214 227 244 221 162 140 139 129 133 131
219 220 211 208 205 209 240 217 154 141 127 130 124 142
229 224 212 214 220 229 234 208 151 145 128 128 142 122
252 224 222 224 233 244 228 213 143 141 135 128 131 129
255 235 230 249 253 240 228 193 147 139 132 128 136 125
250 245 238 245 246 235 235 190 139 136 134 135 126 130
240 238 233 232 235 255 246 168 156 144 129 127 136 134

Cada número representa la luminosidad de una de las millones de manchas que forman el campo visual. Los números menores corresponden a las manchas más oscuras, y los mayores, a las más claras” (Pinker 1997: 5-6).
Como el autor muestra la secuencia de números pero posteriormente no ‘traduce’ esos números a pixeles, uno se queda con cierta intriga de saber si la secuencia de números es aleatoria o más bien presenta algún tipo de silueta figurativa. Casi como una cuestión lúdica, le escribí a Juanjo Conti, un amigo egresado de la carrera de ingeniería, para ver si se le ocurría alguna forma sencilla de resolver el prosaico problema. La respuesta fue una decena de líneas de código en lenguaje de programación Python que echaban mano de la biblioteca PIL:

from PIL import Image
image = Image.new('L', (14,25))
imageMap = image.load()
f = open('vision1.txt')
lines = f.readlines()

for i, l in enumerate(lines):
    for j, v in enumerate(l.split()):
        n = int(v)
        imageMap[j, i] = n

image.save('vision1.gif')
image.show()

El ejercicio fue publicado en su blog donde, unas horas después, un visitante sugería otra manera de resolverlo utilizando la aplicación libre GNU Octave:

matriz = dlmread('vision1.txt');
matrizNormalizada = matriz ./ max(max(matriz));
imshow(matrizNormalizada);

A continuación, presento una tercera manera de solucionarlo, con una herramienta mucho más cercana a los que no hacen programación. La traducción de números a pixeles en una escala de grises se puede hacer fácilmente con cualquier aplicación de planilla de cálculos que disponga de la característica de ‘formato condicional’, por ejemplo, Microsoft Excel a partir de la versión 2007:

1. Edición > Copiar [la grilla de números]

2. Inicio > Pegado especial > Texto Unicode > Aceptar

3. En las opciones de pegado seleccionar > Usar Text Import Wizard > Siguiente > Finalizar [Una vez aquí ya tendremos cada número ubicado en una celda]

4. Inicio > Estilos > Formato Condicional > Escala de colores > Más reglas > En Color Mínimo colocar negro y en el campo de color máximo seleccionar blanco

5. Inicio > Celdas > Formato > Ancho de columna > 3 > Aceptar [Para que nos quede una cuadrícula proporcionada]

6. Inicio > Celdas > Formato > Formato de celdas > Personalizado > Tipear ;;; (tres punto y coma) en el campo de ‘Tipo’ > Aceptar [Para que las celdas no muestren el número, sino solamente el tono de gris correspondiente]

Así descubrimos, finalmente, lo que está observando el robot de Steven:

Un comentario sobre “Visión de robot

Comentarios cerrados.