Array Processing Environment

Welcome to APRON Software
Friday, July 30 2010 @ 12:42 PM BST

APRON Welcome

Untitled Document

APRON Software Homepage

This website contains all (well most) of the available knowledge regarding the APRON software.

APRON is the result of on-going research at the University of Manchester, D2 Microelectronics Design Laboratory, by Dr. David R W Barr and Dr. Piotr Dudek and others within the group.

What is APRON?

APRON is a short form of "Array Processing Environment", and is a tool that allows you to build and simulated array based algorithms. Applications could include:

  1. General Array Processing
  2. Image Processing
  3. Vision Procesisng
  4. Topographic Neural Networks
  5. Bioloogically Plausible Simulation
  6. Real-Time Vision
  7. Robotics
  8. Data Analysis
  9. Cellular Processor Array Modelling
  10. Cellular Neural Networks
  11. Vision Chip Simulation
  12. Processor Array Prototyping

APRON is fast and flexible. Optimised ASM/SSE routines have been employed to ensure you get the fastest array operations available. In fact, APRON is fast enough to be used in "real-time interactive" simulations and experiments. Originally designed as a prototyping environment for hardware Cellular Procesosr Arrays (CPA), APRON has evolved into being a competitive "Virtual CPA".

The flexibility allows APRON to be customized. For example, a popular plug-in is to access the web cam, and use it as a live video feed into vision experiments and simulations. Many plug-ins have since been developed including:

  1. USB/FireWire image capture
  2. CUDA based extensions
  3. Fourier Transforms
  4. Network Communications
  5. Custom Graphical User Interfaces
  6. Integration into MatLab
  7. Specific optimised routine libraries
    1. Morphological Operations
    2. Neural Networks
    3. Data Sources

APRON algorithms are written in a simple APRON-Script. Don't be afraid!!! Learning APRON is not like learning a completely new language. It is a very simple function based language. The example below shows a complete algorithm that takes input form the webcam and performs a crude edge-detect.

// Headers include pre-defined functions
!include('apron.aps')
!include('apron2webcam.aps')

// Allocate the physical resources (registers = arrays)
!create_reg('camera_in', 128, 128)
!create_reg('edge_out', 128, 128)

// Initialise the web cam
cam_init(128, 128)

// Setup the 3x3 convolution kernel
!create_kernel('edge_detect', 3, 0, -1, 0, -1, 4, -1, 0, -1, 0)

// Create a nice GUI (optional)
showreg(r[camera_in])
showreg(r[edge_out])
tile

// Start the main loop
#start
    //Take a single channel frame form the camera
    r[camera_in] = cam_getlum_s(0)

    // Filter the image with a 3x3 kernel
    r[edge_out] = filterb(r[camera_in], k[edge_detect], 0)
    r[edge_out] = abs(r[edge_out])

    // Real-Time update the display in the GUI
    simshow(r[camera_in])
    simshow(r[edge_out])

    // Jump back to the start
    jump(#start)

Once compiled, check for errors, then run the simulation!


View Printable Version

APRON Demo 2 - Object Tracking

This demo shows the APRON software tracking a user chosen object, which is learned from the visual field. The demo then shows this object being tracked with a good degree of orientation variability. This is happening for a 128x128 video image running at 27 fps. This is the max frame rate of the webcam used to capture the images. The screen recording software reduced this to 18 fps however.



View Printable Version

APRON Demo 1 - Simple Test

This simple demo was more of an experiment with trying to record the screen and submit video to YouTube.

View Printable Version

APRON 0.9.0

APRON Version 0.9.0 has been around for a couple of months now and is stable. Development will be increased during the run up to Telluride.

APRON 0.9.0 Download
Visual Studio 2008 Runtime
Crimson Editoir
DirectX 9.0c

View Printable Version

New website!

General NewsHello World!!!

It's cliche, I know, but I've decided to revamp the APRON website as it occurred to me that over the coming weeks, new students and researchers may start using APRON. Also if I want APRON to become more established, it needs a base that is active at workshops, conferences etc...

Anyway, we'll have to see how well this all works!