Simulando a cámara da Game Boy

A cámara da Game Boy, que saiu á venda no 1998, produce imaxes con tan só 4 cores diferentes bastante curiosas. A pesar de que teño unha destas cámaras, extraer as imaxes desta é bastante complicado (require hardware extra) así que me pareceu interesante facer un filtro que a imitase. Despois de buscar, atopei un repositorio bastante prometedor en github. A partir deste construín o meu fork para adaptar o código orixinal ás miñas intencións.

Implementación

A idea orixinal era simplemente mellorar a usabilidade mediante unha interface de liña de comandos, pero ao final acabou derivando nalgo máis complexo. O código orixinal no que me baseei creaba unhas imaxes en branco e negro bastante fieis ás da gameboy polo que simplemente engadín a interface de liña de comandos. Despois pensei que estaría ben que soportase unha gama de cores “verdosos” similares aos da pantalla da propia consola, e aí empezou a estenderse o proxecto. Unha vez escollida unha paleta de verdes, xa postos a engadir funcionalidade creei a posibilidade de usar varias paletas de cor predefinidas. Non contento con iso, ideei unha forma para que os usuarios puideran introducir as cores que eles queiran e crear así a súa propia gama de cores.

Uso

Xa que o script está programado en Python 3 a primeira dependencia é o uso de python 3.x. Ademais deste requírese Opencv (usado para ler e tratar imaxes), Numpy (operacións de matrices) e Matplotlib (gardar as imaxes). Estas dependencias probablemente se puideran reducir, xa que opencv é algo overkill.


Para invocar o programa poderemos usar o seguinte comando:

  python3 gbc.py -i <your_image> -s <scaling_factor> -p 1 -o <output_image>


O factor de escalado (-s) controla o tamaño da imaxe de saída en función a de entrada, é dicir, 0.5 sería a metade de tamaño, 0.25 un cuarto e así.

O parámetro “p” controla a paleta a usar, os diferentes valores das paletas son:

Paleta 1 is NOSTALGIA PALETTE de WildLeoKnight

Paleta 2 is SPACEHAZE PALETTE de WildLeoKnight

Paleta 3 is ICE CREAM GB PALETTE de Kerrie Lake

Paleta 4 is WISH GB PALETTE de Kerrie Lake

Paleta 5 is AYY4 PALETTE de Polyducks



Nos links de arriba podedes ver os traballos dos autores destas paletas e inspirarvos para crear as vosas propias!


No caso de querer usar unha paleta non incluída o comando a usar será:

  python3 gbc.py -i <your_image> -s <scaling_factor> -o <output_image> -c <hex0> <hex1> <hex2> <hex3>


Neste caso os valores representados por hex son os códigos de cada cor en hexadecimal sen #. A orde é importante xa que debería empezarse coa cor máis clara ao principio cara a máis escura para obter os mellores resultados.

A ferramenta

Se queredes probar sorte con este script podedes atopala neste link.

Exemplos:


Exemplos dos resultados do script coa Gioconda