Jan 25 2013 05:51 PM
I worked a bit on my blooming filter yesterday and wanted to share my results.
I read a thread somewhere on the net about one guy that wanted anisotropic blooming. I had not heard about it before so I got interested, just out of curiosity. The basic concept was as simple as having different amount of blooming in X and Y axis. The programmer I am, I could not leave it at that though. I had to try it myself on my own blooming filter just to see if it could improve in some use cases.
My basic blooming filter I had was quite simple and just down-sampled the image to 1/4, blurred it and added a portion of it back to the original image. The first step I improved was that I wanted bigger blurs and different scaling on the different axis. To get the bigger blurs to look nice I had to drop the down-sampling and went for a fullscreen blur instead. I went for three horizontal and three vertical blur steps with different sample distances using a kernel size of 13 just to get a really big blur. It’s maybe bit overkill but now I can have pixels affect the entire span of the image to give BIG anisotropic effects.
Finally having my anisotropic blooming I wasn’t satisfied. There were too much blooming going on. I had to introduce a threshold on the blurring phase to get a high pass filter of only the bright parts of the image. I also added tinting to the blooming which I noticed gave quite a nice effect. You can then have blue or purple glow behind your white bright spots.
In this IOTD I show you three images. The top is the original without any blooming. The middle is using non-anisotropic blooming with equal horizontal and vertical blurs but with purple tinting. The bottom uses anisotropic with a factor three between vertical and horizontal. Both blooms use a threshold to only bloom bright parts.
I'm quite happy the way it turned out. Maybe I will remove one of the blur phases to lower GPU consumption but overall it looks promising.