The past one month which I spent in working with the Nokia Imaging SDK provided me a great opportunity to create filter based applications with ease. It also exposed me to the great articles written for the competition while also allowing me to interact with fellow developers and experts through comments to my articles.
On the last day of the competition, I would like to sum up a few thoughts on the SDK based on my experience of writing 4 articles for the competition.
So here goes:
Applying filters to regions within the image
I have written about this in detail in my article [[Effective Nokia Imaging SDK 1 : Applying filters to specific region of image]]. In this I have provided two methods (one of them being an extension method to EditionSession) which allow the user to apply partial filters to images. One of these methods uses the WriteableBitmapEx" library's Blit() method to blit a smaller image on a larger image. However these are just workarounds. Nokia Imaging SDK should provide their own solution to applying filters partially to images in an optimal way.
1. CreateBlurFilter- why do two overloads exists one which takes integer and other takes the BlurLevel enum. The BlurLevel enum is internally deriving from int only. My suggestion is to use the enum to value as argument instead of int as it is more easy to understand.
2. BlendFunction enum - Please provide more detail in the documentation as what each enum value does.
3. CreateMirrorFilter - only creates a mirror image on the vertical axis. Please provide an enum (maybe FlipMode) which would allow the user to create a mirror image on the horizontal axis too.
4. ColorAdjust and ColorBoost - there is no need for having two separate filters for this. The gain parameter can be added to the ColorAdjust filter itself.
5. BlendFilter and FrameFilter - I don't see much difference in terms of functionality, except that blend provides more options in the form of BlendFunction. Also neither of the two filters allow a smaller image to be blended to a larger image at a specific location within the larger image without resizing the smaller image. This feature could be provided.
6. CropFilter - Can it be extended to crop to a particular shape like Oval or polygon?
Comparison with WriteableBitmapEx
WriteableBitmapEx library is a very useful library for image processing and a comparison with the Nokia Imaging SDK is unavoidable. Here are a few features which I would suggest to be included in the Nokia Imagng SDK:
1. Blit method
2. Ability to draw filled/unfilled shapes on the image
3. Ability to draw curves and lines on the image
Comparison with AForge.NET(http://www.aforgenet.com/)
Here are a few features in AForge.NET which I would like to be there in Nokia Imaging SDK for gesture detection
1. Comparison between two video frames
2. Generate vertical and horizontal histograms for a bitmap image ( see http://www.codeproject.com/Articles/...re-Recognition)
My attempt at harmonizing the various filter parameters can be seen here: http://developer.nokia.com/Community...ter_parameters. However this method cannot harmonize all the filters. For filters having simple parameters, limit the data types to int, double and enum.
Also EditingSession should allow the changing of parameters of an applied filter dynamically, instead of having to Undo first followed by applying the filter with new parameters.
Port to Windows 8
This is very much needed.
Other feature wish
1. Ability to select pixels in the image which fall within the given color range
2. Allow custom filter creation by using High Level Shader Language (HLSL)
This is all I could think of. Hope it helps.