Coded Rolling Shutter Photography:
Flexible Space-Time Sampling

Complementary Metal-Oxide Semiconductor (CMOS) image sensors are rapidly overtaking CCD sensors in a variety of imaging systems, from digital still and video cameras to mobile phone cameras to surveillance and web cameras.

In this project, we propose a novel readout architecture called coded rolling shutter for CMOS image sensors. Rolling shutter has traditionally been considered a disadvantage to image quality since it often introduces skew artifacts. We show that by controlling the readout timing and the exposure length for each row, the row-wise exposure discrepancy in rolling shutter can be exploited to flexibly sample the 3D space-time volume of scene appearance, and can thus be advantageous for computational photography. The required controls can be readily implemented in standard CMOS sensors by altering the logic of the control unit.

We propose several coding schemes and applications: (1) coded readout allows us to better sample time dimension for high-speed photography and optical flow based applications, including motion interpolation, skew compensation, and motion deblur; and (2) row-wise control enables capturing motion-blur free high dynamic range images from a single shot. While a prototype chip is currently in development, we demonstrate the benefits of coded rolling shutter via simulation using images of real scenes.

This project is done in collaboration with Yasunobu Hitomi and Tomoo Mitsunaga at Sony Corporation.


"Coded Rolling Shutter Photography: Flexible Space-Time Sampling,"
J. Gu, Y. Hitomi, T. Mitsunaga and S.K. Nayar,
IEEE International Conference on Computational Photography (ICCP),
Mar. 2010.
[PDF] [bib] [©]


  CMOS Image Sensor and Coded Rolling Shutter:

A typical design of a CMOS image sensor includes the pixel array, the exposure control units, and the signal conversion units. To implement coded rolling shutter, all we need to change is the Address Generator. Instead of sending out the START and STOP signals sequentially, we can modify the Address Generator to send out them in a coded way, and therefore we can control both the readout timings and the exposure lengths for all the rows. Programmable address generators can also be designed.

  Coded Rolling Shutter for Flexible Space-Time Sampling:

From the perspective of space-time sampling, conventional rolling shutter samples a tilted slice of the space-time volume. The global shutter, which is often used in CCD image sensors, also samples a 2D plane from the space-time volume, parallel to the image plane. Raskar et al. proposed the flutter shutter for motion deblur, which can be viewed as a coded global shutter, because all pixels have exactly the same exposure pattern. These three camera shutters are 1-D functions. In contrast, in coded rolling shutter, both the readout timing and the exposure length for each row can be controlled, essentially giving us a 2D shutter function -- a function of both time and the image row index. This extra dimension gives us more flexibility for space-time sampling.

  Interlaced Readout for High Speed Photography:

Coded readout can be used for high speed photography. In interlaced readout coding, the readout time for one frame is uniformly divided into K sub-images. Both the skew and the time lag in these sub-images are reduced K times, at the cost of the vertical spatial resolution.

  Staggered Readout for High Speed Photography:

In staggered readout coding, we reverse the order of readout within every K rows. The skew in each of these sub-images remains almost the same as conventional rolling shutter, but the time-lag between two sub-images is very small, which is useful for capturing ultra-high speed events.

  Optical Flow Based Applications:

The interlaced readout can be used to compute optical flow between the two sub-images after vertical interpolation. The optical flow can be used for motion interpolation, skew compensation, and motion deblur. Please refer to the paper for details.

  Adaptive Row-wise Exposure:

Coded row-wise exposure can be used to implement a simple yet effective row-wise auto-exposure for better capturing the dynamic range of many scenes, especially outdoor scenes.

  Coded Exposure for HDR Imaging with Hand-held Cameras:

If we have control of both the exposure and the readout, we proposed a method to recover a HDR image from a single shot in the presence of camera shake. Coded rolling shutter allows us to embed multiple exposures and timings within one single frame --- multiple exposures are used to extend the dynamic range, and the sub-images sampled at different timings are used to estimate camera motion for deblurring.

  Noise Analysis for the HDR Imaging Application:

We evaluated the noise performance for the HDR imaging application with coded rolling shutter. Simulation results show that the proposed method will have better performance than single exposure methods. A theorectical analysis can be found here.



  ICCP 2010 Video:

This video is a compilation of the proposed coding schemes and some of the results of this project. (With narration)



ICCP 2010 presentation

High Dynamic Range Imaging: Assorted Pixels

Adaptive Dynamic Range Imaging

Motion Deblurring Using Hybrid Imaging

Programmable Imaging: Micro-Mirror Arrays

Programmable Imaging: Controllable Apertures

Temporal Modulation Imaging