Cellular Neural Networks (CNN) [wikipedia] [paper] are a parallel computing paradigm that was first proposed in 1988. Cellular neural networks are similar to neural networks, with the difference that communication is allowed only between neighboring units. Image Processing is one of its applications. CNN processors were designed to perform image processing; specifically, the original application of CNN processors was to perform real-time ultra-high frame-rate (>10,000 frame/s) processing unachievable by digital processors.
This started out as a research project during my summer intern at mLabs Research Inc. in 2014. I was trying to create real-time image processing applications using cellular neural networks on raspberry pi which could be triggered remotely via Internet. In a nutshell, a trigger from the web application would take a live snapshot using the camera attached to Raspberry Pi, process that image in real-time on raspberry pi using cellular neural networks and deliver the results via email/web.
The Raspberry Pi is a low cost, credit-card sized computer. The Raspberry Pi has the ability to interact with the outside world, and has been used in a wide array of Internet of things applications, from music machines and parent detectors to cameras to weather stations.
Although there is a lot of theoretical work in the field of cellular neural networks, but there is a general lack of openly available implementations. Thus, it didn’t come as a surprise when I was unable to find any open and maintained implementation of cellular neural networks for image processing. So, I went ahead and implemented the cellular neural networks for image processing in python. I chose python since it has an excellent support for scientific computation. Later on, using this library, I finished my research and built the demo application which was then demonstrated at 14th Cellular Nanoscale Networks and Applications Conference, University of Notre Dame in Notre Dame, USA on July, 2014.