Complete Communications Engineering

motion-adaptive-deinterlacing-pixel
Figure 1: Pixels from two fields of the input video. The deinterlacing pixel does not exist in the input field and must be created.

Motion Adaptive Deinterlacing is essential for video processing devices where the input video is an interlaced sequence of fields.  The goal of a deinterlacer is to create a sequence of output frames at the same rate as the sequence of input fields.

Each input field has only odd or even lines from the frame. As shown in Figure 1, pixels which are not contained in the current field must be created based on other pixels from the current field and/or pixels from previous fields.

One method, called “static mesh”, generates the missing pixels by copying the corresponding pixels from the previous field.  This method can produce frames that show a very visible “feathering” artifact in areas of high motion.

Another method interpolates missing pixels from pixels directly above and below in the same field. This method produces a flickering or scintillating effect, especially for slow motion video, and a reduction in the vertical resolution of the output frames. The artifacts from both of these methods are very visible to a human observer.

basic-motion-adaptive-deinterlacer
Figure 2: Block diagram of the Basic Motion Adaptive Deinterlacer

To reduce these artifacts, the deinterlaced pixels can be created as the weighted sum of the replicated and interpolated pixels. The weight can be constant values chosen to minimize the perceptual amount of visual artifacts, but in this case, the artifacts will still be quite visible. A substantial decrease in the visual artifacts can be accomplished by using dynamic weights that depend on estimated motion value of a particular pixel.

As depicted in Figure 2, the weights can be computed by a motion detector. If no motion is detected, then the value from the previous field can be copied directly (W1 = 1, W2 = 0);  if the motion is high, the value from vertical interpolation can be used directly (W1 = 0, W2 = 1); and for intermediate motion values, both weights are nonzero.

More Information