Disclaimer: this is just a little teaser for a project I started working on recently. Details, code and hardware design to come!
I was inspired by Noah Feehan's awesome work on his GRID-EYE BLE thermal imaging camera (also on hackaday.io), based on Panasonic's AMG88xx Grid-EYE sensors. These are 8x8 thermal array sensors with a 60 degree viewing angle, and cost around $40 in single quantities.
I connected the AMG8852 to my BeagleBone Black, then wrote a Python program using PyBBIO and OpenCV to grab temperature arrays from the sensor, convert the temperatures to RGB color values within a linear gradient, scale up the 8x8 image, then save the frames to a video file.
Here's a sample scaling up to 250x250px at 4fps:
(I walk into frame, wave my arms, then walk out of frame and give a thumbs up)
And trying out a few different color mappings:
I have bigger plans for this sensor, so stay tuned!
This was an exercise in convolution filtering I wrote in Python for AI class. Here's a very brief summary of convolution filtering:
Convolution filtering is nothing more than a two dimensional mathematical convolution. For every pixel in the image, a matrix, called a kernel, is applied as follows:
Given a kernel: k0 k1 k2 k3 k4 k5 k6 k7 k8 And a pixel matrix of equal size: p0 p1 p2 p3 p4 p5 p6 p7 p8 Then:
There are a number of standard image convolution kernels, such as:
Edge detection: 1.0 2.0 1.0 0.0 0.0 0.0 -1.0 -2.0 -1.0 Emboss: 2.0 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 -1.0
The kernel can be of any size; I use 3x3 kernels in RGB Convolution. As this is generally the first step in a longer process, the images are often converted to greyscale, which means the convolution needs only be calculated on a single channel. As my goal was more or less to write a nifty program, I opted for the more time consuming process of applying a separately customized kernel to each color channel.
The program consists of a file called rgb_convolution.py, with a single function that takes a Python Imaging Library Image object and an array of the RGB kernels, and it returns a new modified Image object after convolution has been performed. There is also file called convolution_gui.py, which is a rough Tkinter GUI for the program.
I've also included two example images.