Algoritmo Nearest Neighbor

Uno de los algoritmos más simples y rápidos para incrementar o decrementar una imagen es el algoritmo Nearest Neighbor.

La interpolación por Vecino más cercano (N.N) requiere de un tiempo de procesado bajo, y sólamente tiene en cuenta un píxel, el más cercano al punto que vamos a interpolar.

El funcionamiento se ve claramente en la siguiente imágen, lo que hacemos es copiar el pixel objetivo ‘n-veces’ en función del ancho/alto de la nueva imágen:

Nearest1

https://angeljohnsy.blogspot.com/2017/11/nearest-neighbor-interpolation.html

Una rápida implementación del mismo:

Github link for Nearest Neighbor algorithm

Anuncios

Deja un comentario

Watch Face para Garmin Fenix 3 HR

Recientemente me regalaron un Garmin 3 para que pueda registrar mis entrenamientos.

La idea es desarrollar Apps o Data Fields, y para empezar a ver como funciona, he creado un Watch Face para él.

Lo he desarrollado en Monkey-C. Usando el SDK de Garmin (Connect IQ) para Eclipse.  (Aunque luego he descubierto que hay una extensión para VS Code y he empezado a usarlo)

El reloj muestra la hora, fecha, Heart Rate y el porcentaje de batería restante.

El código en Github; Fenix 3 Watch Face Github

watch_face

Deja un comentario

Protegido: RTOS

Este contenido está protegido por contraseña. Para verlo introduce tu contraseña a continuación:

Deja un comentario

Entorno de compilación para el kernel

METODO 1

Debemos asignar al menos 2 nucleos de cpu y la mitad de la RAM del sistema (todo dentro de los parametros en verde)

sudo apt-get build-dep linux-image-$(uname -r)
sudo apt-get install libncurses5-dev bc

A continuación vamos a construir e instalar el kernel de linux

mkdir kernel
cd kernel
wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.2.tar.xz
tar xf linux-3.13.2.tar.xz
cd linux-3.13.2
cp /boot/config-$(uname -r) .config
make menuconfig # Do these activities in sequence (load -> exit -> save) for the .config file
# present in current directory using the ncurses buttons.
make -j5 # It will create arch//boot/bzImage
sudo make modules_install
sudo make install
sudo reboot

Si grub no reconoce el nuevo kernel, tendremos que ejecutar:
sudo update-grub

O en ocasiones que grub se corrompe el siguiente:
sudo grub-install /dev/sda

Modulo Hola Mundo

#include
#include

int init_module(void)
{
printk(KERN_INFO “init_module() called\n”);
return 0;
}

void cleanup_module(void)
{
printk(KERN_INFO “cleanup_module() called\n”);
}

kernel_code
Crear El siguiente Makefile

obj-m += hello.o
all:
make -C ~/kernel/linux-3.13.2/ M=$(PWD) modules
clean:
make -C ~/kernel/linux-3.13.2/ M=$(PWD) clean

Y a continuacion insertar y descargar el modulo:
sudo insmod hello.ko
lsmod | grep hello
dmesg | tail
sudo rmmod hello
lsmod | grep hello
dmesg | tail
testing

En dmesg podremos ver las salidas del módulo.

METODO 2
Instalar los siguientes paquetes:
sudo apt-get install fakeroot build-essential libncurses5 libncurses5-dev kernel-package

Obtener el codigo fuente (Se guarda en /usr/src):
sudo apt-get install linux-source

Descomprimirlo en nuestro home
tar xjvf /usr/src/linux-source-.tar.bz2
cd linux-source-

Usar la configuracion inicial como punto de partida:
cp -vi /boot/config-`uname -r` .config

Fijar la configuracion:
make menuconfig
Compilar el kernel:
fakeroot make-kpkg –initrd –append-to-version=-mykernv1 kernel-image kernel-headers
(Usa “make-kpkg clean” antes de construir el kernel para limpiar)

Instala el kernel:

sudo dpkg -i linux-image-.deb
sudo dpkg -i linux-headers-.deb

Crea el systema de archivos inicial en ram (initramfs) y actualiza grub
sudo update-initramfs -c -k
sudo grub-install /dev/sda
sudo update-grub
Reinicia el kernel:
sudo reboot now

Comprueba el kernel que se esta ejecutando.
uname -r

Deja un comentario

Protegido: Get Opt

Este contenido está protegido por contraseña. Para verlo introduce tu contraseña a continuación:

Deja un comentario

Crosscompiling for Raspberry

Once, I have my Raspberry Pi and QEMU environment working, I’m going to explain how to set up the crosscompiler:

First at all, We have to download crosstool-ng from its website: http://crosstool-ng.org/.

After that, I have unpacked the tarball,and run configure command (I had to resolve several depences before):

./configure --prefix=/opt/compiler/
make
make install

Now, I had to add the folder to the path:

echo $PATH | tr : \\n
PATH=$PATH:/opt/compiler

Now, execute ct-ng tool like that:

./ct-ng menuconfig

In “Path and misc options”, enable “Try features marked as Experimental”
I set up my folder like

/opt/compiler/tools/${CT_TARGET}

Theses was the rest of my options:

Then I executed the next command:

./ct-ng build

After 48 minutes my system is ready 🙂
I updated my path again:

PATH=$PATH:/opt/compiler/tools/arm-unknown-linux-gnueabi

then I made a simple program test, it was compiled :

arm-linux-gnueabi-gcc -o prueba prueba.c

🙂

Deja un comentario

Raspbian running in ubuntu with QEMU

You have to download the image from here:

http://141.30.228.4/pub/mirrors/raspbian/qemu/

I have use the next command based on the bat file:

sudo qemu-system-arm -M versatilepb -cpu arm1136 -m 256 -kernel raspbian/vmlinuz-2.6.32-qemu-armv6 -initrd raspbian/initrd.img-2.6.32-qemu-armv6 -hda raspbian/raspbian.img -net nic -net user -append “root=/dev/sda1”

Then, I had to reconfigure /etc/apt/sources.list like that:

deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi

After that we have to reconfigure our locales:

sudo apt-get install locales
sudo dpkg-reconfigure locales

and the keyboard:

sudo apt-get install keyboard-configuration
sudo dpkg-reconfigure keyboard-configuration

 

Deja un comentario