Nokia's Imaging SDK: Building picture perfect imaging apps

Nokia's Windows Phone imaging tools have left beta. Here's how you'd use them to build your first computational photography app.
Written by Simon Bisson, Contributor on

I've been playing with a Nokia 1020 for a couple of weeks, getting to grips with the phone as a camera.

There have been plenty of reviews of the device itself, but there's a lot going on under the hood — especially in its imaging tools: I've already written about the smartphone as a platform for computational photography, and how Nokia is using its imaging software to differentiate its devices from the competition.

Colorify Pro, built using the Nokia Imaging SDK.

Nokia's imaging software is one of the reasons why Microsoft is buying its devices and services business, as Julie Larson Green told UBS' Global Technology Summit: "We're removing seams in the experience. The Nokia camera is amazing, but it sits on top of the OS. We have multiple camera apps, multiple storage places, multiple places to upload. […] Those are things above the OS today we can bring down to the OS and make available to all apps, not just apps on Nokia devices."

A lot of what Nokia is doing in its imaging apps comes from its new Imaging SDK, a set of tools that simplify building camera apps on Windows Phone devices. Built using technologies Nokia bought in with its Scalado acquisition, the Imaging SDK has been used to build Nokia's camera app, its Cinemagraph animated GIF creation tool and its Creative Studio editing tool. What's most useful is that it's not just for Nokia devices, but can be used on any Windows Phone 8 devices, as it's a WinPRT library with C# and C/C++ interfaces. It's also free to use.

There's a lot in the Imaging SDK. It starts by giving you a set of tools for quickly previewing images, including rapidly displaying just part of an image. That's topped off with 52 different filters and effects that can be combined to give more complex effects. It's fast and, more importantly for mobile devices, doesn't use much memory.

Using the SDK is easy enough. Start by adding the Libraries to your project, before using filters on an image in an editing session, and then writing out the final processed version. Of course, it's not quite as simple as that makes it seem, but the process of using the SDK is a lot easier than writing your own imaging tools from scratch (as I discovered when writing an app to read book barcodes and upload ISBN data to an online catalogue service). There's plenty of sample code on Nokia's developer site, which walks you through the process of defining and building image pipelines that let you chain effects.

29-11-2013 18-46-57
A selection of the filters available in the Imaging SDK.

You're not limited to working with existing images, either, as you can work with the camera stream as well as JPEGs and bitmaps. A FilterFactory is used to create the filters you're using, though several can be grouped into a FilterGroup. One useful feature of the Imaging SDK is the ability to apply filters to a display image before applying them to a full resolution image. That's important when camera resolutions are so much greater than the screen — and where devices have limited memory. Apps can be more responsive, and users will get the image they want, where they want it.

Computational photography is a powerful tool, and the current generation of phone hardware has the processing horsepower to do much more than just emulate a camera. Take one of the Imaging SDK's more interesting features: support for chromakey filtering. Who needs a full edit suite, when you can make your phone a virtual studio for video podcasts, for special effects, or even for live streams?

Libraries like this simplify the process of app development, wrapping complex mathematical operations in easy to use calls and functions. That way you can concentrate on the user experience, and leave the heavy lifting to Nokia's engineers. One thing's for sure: this just for building another Instagram. The effects you can use are much more complex, and the ability to chain filters can make the results even more complex.

All you have to do is look at the list of filters to get an idea for an imaging app. How about using chromakey to pick out all the elements of a single colour, then using the blend filter to merge the result with a grey-scale version of the original picture to give a colour-pop effect? Or perhaps using the crop filter to quickly ready an image for use on Twitter?

While 53 filters may not cover everything you want to use, the real power of the Imaging SDK is its imaging pipeline. It simplifies creating and editing images, as well as merging and saving data. Once you start to think what you can do with that pipeline, there's a lot of scope here for creativity — beyond filters and into the world of real-time imaging applications.

Further reading

Editorial standards