Cómo ocultar una imagen en una rejilla espacial con Matlab



Se han hecho populares estas imágenes en Facebook, son fotos ocultadas a través de una densa rejilla espacial. Te mostramos cómo hacer esta ilusión óptica con Matlab.

Básicamente, se trata de disminuir el contraste de las fotos, alejarse de los tonos oscuros y luego introducir muchas franjas oscuras en la imagen. El resultado es que percibimos primero franjas oscuras y claras, pues entre ellas hay más contraste, cuando cambiamos de perspectiva (al inclinar la pantalla o la cabeza o alejarnos de la imagen) o sacudir la cabeza podemos ver la imagen oculta.

Se trata más de una curiosidad que de un verdadero sistema de criptografía, asi que diviértanse con el código y las imágenes que dejo en esta  entrada.

Preguntas para pensar
1) ¿Por qué aparece la imagen cuando cambiamos de perspectiva?

Ejercicios
1) Altera  el código para que sea una función de cuatro parámetros, que de de salida una imagen .gif

Imagen utilizada


Imagen de salida

Guión Matlab

% A limpiar la casa
 clear all; close all; clc;

% Cargar la imagen y ponerla en grises
im_fuente = rgb2gray(imread('maz.jpg'));

% cambia la clase de una variable
imgs = cast(im_fuente,'double'); 

% La imagen se ajusta a 60 tonos de gris, 
img = 60*((imgs)./(max(max(imgs))));
img = img + 195; % desplazar los tonos a 195
% al final tengo tonos de 195 a 255

[f c d] = size(img); % el proceso es para cada capa
% Paso es el número de columnas negras en la imagen final 
paso = floor(c/160); %redondea hacia abajo, frecuencia 1/160

for i = 1:2*paso:c
    img(:,i:i+paso,:) = 0; %img suele tener tres capas
end

im_final = cast(img,'uint8');
imshow(im_final); % ver para creer
%fin del guión

Más información en la ref.

1 comentario:

  1. Muchas gracias... Si es de utilidad.

    Yo lo que busco es poder generar, solamente la rejilla...

    xD

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...