26 Jul 2009
Posted by Manuel at 11:55 — 7 months, 2 weeks ago
Categories: photography, sharpening, wondersharper
So i’ve been busy working on a photographic tool and i’m moving toward the first final release: it isn’t ready for the general public as of yet, and still we need some more beta testing, but we are on track. I decided to push the project and discuss something out with the cool guys behind the company i work for so we arranged things a bit in order to start working on it by the beginning of May… and here we are, with our very first software production, WonderSharper. Considering our primary food-feeding business are websites, packaging and branding, this new company’s project could be very well the starting point for some other interesting opportunities. Indeed this also imply quite some thinking on about how to effectively manage projects that are so different, with different priorities and, especially, of different nature; this is nothing new, of course, and sure we are going to tackle the problem by some strategic thinking, also because, hopefully, we intend to pursue some other software markets as well in the near future.
Absolutely not! The primary goal of WonderSharper is to empower both the photographic professionals and the casual user with a simple tool to enable them to perform halo-free (given an halo-free source image, of course!), edge-preserving, multi-scale sharpening and detail mapping while maintaining a really simple and usable interface.
WonderSharper absolutely loves your edges and contours, it will accurately preserves them, no matter what: the amount of “percepted detail” at various individual scales can be changed and modulated via its simple interface, but that’s just the beginning.
In fact, the real power comes from the possibility to export the so-called detail maps: aimed to the photographic professionals, with those maps at hand you’ll acquire detail manipulation capabilities to be used outside of the WonderSharper UI: this will enable you to perform various, custom and complex transformations on the original image by using your existing tools, strongly encouraging the development of new detail manipulation techniques.
Due to the vastness and complexity of the subject it would be rather unfair to try to condense everything into one single post and, instead, we are now going to have a look at WonderSharper’s halo-free capabilities with the help of some screenshots: multi-scale sharpening and detail mapping are the subjects of one or more forthcoming articles, written and edited with the cooperation of Alberto, introducing these very interesting features with real-world applications, so to have a more photographic perspective on it.
In order to better explain why WonderSharper is different and what halo-free means, let’s have a look at some sample results computed by using photos available on the web.
The first batch of four details comes from the President Obama’s official portrait (courtesy of Pete Souza, thanks to stevegarfield), the second batch of details, instead, comes from Canon’s demonstrative sample photos of the EOS 5D Mark II camera (Copyright 2008 Canon Inc.) while the third one is a photo that’s part of a wedding photo shooting service performed with a Canon EOS 30D (courtesy of Alberto Bua, available on Flickr).
Note that the enlarged detail images of the first two batches have been intentionally zoomed in (400%) so to have a clear view of the differences at pixel level, while the last batch, instead, depicts the situation on a bigger area.
In this first batch of samples, at the first row, you can clearly note various aberrations, halos and color noises in both the “Sharpen” and “Unsharp Mask” filters applied by GIMP: color aberrations (green/cyan) on the flag’s red lines are easily spotted and the dark background also presents colored noise; these aberrations aren’t present in the WonderSharper result.
| Source Image | Gimp’s Sharpen | Gimp’s Unsharp Mask | WonderSharper |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
Note how these local micro-contrasts variations, between the source image and the WonderSharper output slighty affect the whole chromaticity and color perception: although not depicted here, WonderSharper gives you some degree of control over the output image enabling you to control the saturation levels in the CiELab color space so that the lightness remains untouched.
| Source Image | Gimp’s Sharpen | Gimp’s Unsharp Mask | WonderSharper |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
| Source Image | Adobe Photoshop’s Unsharp Mask |
WonderSharper |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Note: the source materials used herein are properties of their respective owners, if you hold the copyright and want your photo removed please let me know.
Tags: computational, edge, Farbman, Fattal, least, Lischinski, photography, preserving, sharpening, smoothing, squares, Szeliski, weighted, wls, wondersharper
21 Mar 2009
Posted by Manuel at 0:50 — 11 months, 3 weeks ago
Categories: c++, dev, photography
…or more simply, sharpen on steroids.
It was three weeks ago when my brother Alberto told me about a quite new paper entitled Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation [Lischinski et al. 2008]: in fact we had a talk or two about general photographic techniques some days before and, since i’m interested in the computational side of the subject, i asked him to let me know more about it whenever he got the chance, and so he did.
He was reading a Davide Barranca’s article explaining the basics of image sharpening and exposing various different methods in order to achieve it, so that one can manage to construct his own sharpening strategy, depending on his needs: the aforementioned paper is being referred by the article due to the fact that the new technique demonstrates how it is possible to make use of a better edge-preserving operator called WLS (or weighted least squares) that leads to better results with lot less artifacts and permitting detail manipulation at arbitrary scales: by looking at some sample images produced with it (and published on the Lischinski project page here) i instantly grasped what my brother’s excitement was about and decided i needed to know more about it: i was so eager to dive into it to the point i didn’t even noticed there was an example movie right there to see more of it!
Anyhow, considering computational photography was a brand-new field to me, i’m rather satisfied with the results: the sharpen is polished and the gain in both detail and depth level are impressive, while trying to intentionally cause artifacts is somewhat difficult, in the sense one have to boost detail frequencies to rather extreme values in order to cause artifacts and chromatic aberrations: in fact, considering the way actual tools currently work, i wonder why WLS-based strategies have still to take the lead in well-known commercial applications.
Unfortunately, as you may already know, i don’t have much free time to dedicate to most of the things i’m interested in, so this post is sort of an introduction while the rest will follows: it could take a while for me to write more about it, but i’ll try to share the time between coding and blogging, in the meantime i’m posting some results with it, but please, don’t laugh at the GUI too badly, its still all of an experimental thing and it’s just.. well.. usable ;-P
Note that the videos here don’t give justice to the real results due to the compression going on with both the Xvid codec and YouTube, so look at the HD version if you can.
The following video try to demonstrate some more detail exaggeration:
Tags: computational, edge, Farbman, Fattal, kernel, Lischinski, multi, photography, preserving, scale, sharpen, sharpening, smoothing, Szeliski, wls
01 Jan 2009
Posted by Manuel at 19:40 — 1 year, 2 months ago
Categories: Uncategorized

04 Sep 2008
Posted by Manuel at 21:01 — 1 year, 6 months ago
Categories: as3, c++, dev, hydra
This code was intended to be released back in October last year, but i never managed to do it since it needed some refactoring, some changes and had to be quite decent to present: then in November i got the chance to work with some very talented guys over at Jooce, in Paris, so i never got back to write something about it.
Btw, if you never tried Jooce then give it a try, it really deserves it!
» more…
04 Sep 2008
Posted by Manuel at 2:16 — 1 year, 6 months ago
Categories: Uncategorized
The iPhone it’s quite a nice device to play games on: if it weren’t for the horror with which software developers willing to support the iPhone platform are welcomed: it’s cool, it’s great, it’s the “iPhone Developer Program“!
Hoorah. Hoorah.
Basically, it’s a brutally stupid, slogan-centric three-points-nothing-more way to express the act of developing software: “1. Develop, 2. Test, 3. Distribute“.