Archive for June, 2007

Linear algebra and matrix manipulation library for Actionscript 3

Saturday, June 30th, 2007

While developing the CleVR Stitcher, I needed to do quite a bit of linear algebra. I was disappointed to find that there was no Actionscript library out there for doing this, so I had to write my own. Rather than doing it from scratch, I decided to start with NIST’s Java Matrix library: JAMA, which is in the public domain.

For the benefit of anyone else needing to do stuff like this, I’m releasing the library. It’s not a full port, as I only implemented the stuff that I need. It does however support most regular operations for manipulating real matrices. As well as the normal algebra stuff, it includes classes for singular value decomposition and QR decomposition. I hope others find it useful. Let me know if you’re using it. A link back to from your site would be appreciated but is not required.

Download it as part of the CleVR Actionscript Library

Adobe AIR panoramic photo stitcher

Monday, June 25th, 2007

Update: The CleVR Stitcher can now be found at

The Stitcher is the oldest part of CleVR, originally developed nearly four years ago, so it’s needing an upgrade. It was developed in Java, delivered by Web Start, a system that I’ve never been happy with. I decided that the best plan for the new version was to rewrite it from scratch. It’s a Flex-based Adobe AIR app. AIR, formerly called Apollo, is a new cross-platform runtime under development by Adobe. The first beta was released earlier this month, and it’s a joy to develop for. I’m pleased to announce the first alpha version of the new AIR-based CleVR Stitcher. You’ll need a CleVR account to use it. It’s free, and only takes a couple of minutes to sign up.

The choice for the development platform will be surprising to many people. The idea of doing computer vision and image processing in Flash sounds like madness, but the advances in Flash Player 9 make it possible. While developing the CleVR panorama viewer, it became apparent to me quite how powerful some of the new features were, and the performance improvements in the new Player have made it feasible. The current version is slower than the Java stitcher, but there’s a lot more optimisation that I can do, and it’s certainly usable.

Currently it’s missing a number of features from the Java version, most importantly the ability to repair failed stitches. However, I’ve made several improvements to the algorithms, so there should be fewer failed stitches. The repair facility will be added in a future release, as will several other useful features.

Give it a try, and let me know of any bugs that you find, and any other comments that you have.