It is a well-known artifact that in CMOS cameras with electronic rolling shutter, horizontal banding (flickering), i.e. brightness intensity variations, are observed when the image is recorded under fluorescent lighting. This is due to sequential exposures of the rows of the image, which leads to different intensities in rows of the image due to the 50 Hz (Europe) or 60 Hz (US) AC power line frequency. The light flicker frequency is twice the AC power line frequency, i.e. 100 Hz or 120 Hz, respectively. The figure below (Yoo, 2014) shows the flicker generation process in a CMOS image sensor:Flicker generation in rolling shutter

A common solution proposed in the literature for this artifact is to synchronize the exposure time (shutter speed) to an integer multiple of the light modulation period. For example, as seen in the figure, we can set the shutter speed to 1/60 s, and hence avoid flickering (1/120 s would work also since the light modulation frequency is twice the AC power frequency!). However, this solution requires detecting the presence of flicker and estimating the flicker frequency. Various DFT based methods are proposed in the literature but they are usually based on the difference images produced from sequential frames, and are known to not work very well with single images (still frames captured by a digital camera).

I would like to know if there are any image processing methods which can be applied to a single image, which shows horizontal banding, to remove the horizontal bands through post-processing. In other words, horizontal and periodic intensity variations in the still image needs to be eliminated. A possible scenario is where the shutter speed can take any value (i.e. no sync of exposure time to light modulation frequency), and a still image with horizontal bands has already been recorded. I would like to take this image, apply some kind of filtering (possibly across columns) and get rid of the horizontal bands. In my literature search, I encountered only one such method which suggests using a variation of classical Gaussian filtering (with different Gaussian variances depending on bin intensities), but I could not yet find any other image processing solution. How else can horizontal bands possibly be eliminated through post-processing?

I would appreciate any references to the literature or suggestions for a possible solution.

  • $\begingroup$ I know this was a long time ago, but I wonder if you ended up finding a solution to this problem? $\endgroup$ – nav_schaal Nov 17 '16 at 16:44
  • $\begingroup$ No, not really. I ended up suppressing relevant signal components in the frequency domain. However, it leads to distortion in the image and does not completely eliminate the flickering. I don't think the problem has a completely reversible solution. $\endgroup$ – chronosynclastic Nov 22 '16 at 14:48
  • $\begingroup$ This must be a solved problem because people use their camera phones to take pictures indoors, unless all camera phones use integer multiple method? $\endgroup$ – allyourcode Mar 20 '17 at 22:30
  • $\begingroup$ It has been some time since I asked this; but in my understanding: the problem only arises if the camera uses a rolling shutter. So, if the camera phones are not using rolling shutters, there shouldn't be any problem. Otherwise, the shutter speed must be set to a multiple of the light frequency as explained in the question. I'm not sure though how the smartphone producers are dealing with this problem now. $\endgroup$ – chronosynclastic Mar 21 '17 at 7:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.