Talk:Filter and Custom Filter Management Framework for the Nokia Imaging SDK
Hamishwillee - Request for clarification
Thanks for contributing. I think that the problem this article is trying to solve is that when using the Imaging SDK you can create a new group of filters but it does not provide a way to easily "plugin" a totally new filter. What you've done is create a framework to make that easier. Is my understanding correct?
If so this looks pretty good and useful.
My main issue is fairly minor - it isn't clear how you define difference between a "custom filters", and "image processors". I also don't understand the difference between IPerPixelManipulation and iProcessor, and where you would use one or the other.
In terms of the document my first feeling is that this doesn't quite make clear the separation of "this is how my library works", and this is "how you use my library". Both of those are important to highlight.
I'll help you subedit a little for English once I understand better myself.
talk) 09:28, 2 September 2013 (EEST)(
Engin Kırmacı -
First of all, sorry about language used it in article. I'm not good at explaning things even in my natural language :)
You understanding is correct, it's a framework to combines custom filters and Nokia Imaging SDK filters. I want it to be used like Nokia Imaging SDK. I would like make as a plugin but I didn't any method. Maybe in future version of Nokia Imaging SDK will allow it.
Anyway, I agree that the naming of interfaces is confusing. In my approach, Image processors are actually custom filters(has interface ICustomFilter). The difference is IPerPixelManipulation and IProcessor.
IPerPixelManipulation filters are calculates pixel value by looking only one pixel. Looks one pixel a,r,g and b values, then calculates new value. For example ColorPaletteFilter works like that; - Gets pixel's a,r,g,b values - According to these values, It calculates closest color given color list - Sets closest color a,r,g,b values to image
Moreover, most of color filters(Gamma, Brightness, Grayscale, Contrast, etc...) works like that.
IProcessors is completely different. There isn't any pattern for that. For example Pixel Interpolation, Convolution Filters like Gaussian Blur, Sharpen and Mean Removal, QuadrilateralTransformation(which I'm planning to add) and many other. These filters calculates one pixel by looking neighbour pixels' a,r,g,b values. Pixel Interpolation works like that; - Gets pixel's coordinate - Calculates a rectangle center point according to that pixel. - Gets color values of center point and applies color to all pixel in a rectangle - Then it repeats same process to next pixel which is outside the rectangle.
It'll be correct to naming like that; IPerPixelManipulation => IBasicFilter or IColorFilter IProcessors => IComplexFilter
Also that more interfaces can be added for different filters. I added IPerPixelManipulation because of performance issues. When go through every pixels in image, IPerPixelManipulation filters applied to pixel at the same time. So that the if I'm correct, complexity of algorithm will be O(n).Last thing, I want everyone to use this library and adds their custom filters and processors to it. So that "how you use my library" is more correct. Also I'm planning to make it open using Github.If I have a time, I'll add to github with new filters and processors in a week.
talk) 11:28, 2 September 2013 (EEST)(
Hamishwillee - First of all ...
First of all, there is no need to apologise - this article is by no means bad, you've just made some assumptions about your readers level of knowledge about the domain. Should be possible to make this a lot more clear with the addition of a few paragraphs, which I will try to do later today.
Thanks also for the explanation - I had guessed what you meant from the context, but before subediting something like this best to be sure!
talk) 02:04, 3 September 2013 (EEST)(
talk) 05:07, 11 September 2013 (EEST)(