Creating a Video Processing Subsystem in Vivado
In this demo we will use Vivado to create a video processing subsystem. The ISP IP takes RAW AXI4-Stream input and outputs a 24-bit, 8 bits per pixel (8 bpc) RGB output image transported via AXI4-Stream.
The adapter, monitor and monitor cable are each modified so that the monitor identification pins can be reused to provide an electrical path for a dynamic communications link between the adapter and the monitor.
Deinterlacing is necessary to convert interlaced video to high quality progressive scan data. Without it, a viewer may notice a visible “combing” of alternate lines when moving objects are displayed on a progressively scanned display. High quality deinterlacers eliminate these artifacts to ensure smooth image movement.
The goal of deinterlacing is to produce a single output frame at the same rate as the original sequence of input fields. This is accomplished using a combination of field combining (weaving or blending) and frame extension techniques (bob or line doubling).
These methods work well in scenes with little or no motion, but can introduce noticeable artifacts when the image is moving. More advanced deinterlacing technologies, like that implemented in Digital Rapids’ capture and preprocessing hardware, Flux, use motion adaptive deinterlacing. This technique compares pixels between the current and previous fields to determine whether there is a significant change in position. Areas with no motion are statically meshed, while areas with motion are treated with a proprietary filtering technique that results in superior image quality.
The video processing subsystem is a collection of hardware processors that implement essential image processing algorithm steps. It also includes a centralized buffer scheme that provides an efficient interface between processing modules and reduces memory bandwidth requirements. This enables the device to process more data in real time without increasing the number of on-chip memory resources.
This example uses the Zynq UltraScale+ MPSoC and demonstrates a fully configurable video processing pipeline handling resolutions up to 4K. It features motion adaptive deinterlacing, scaler, color space conversion, and chroma resampling.
The video processing subsystem can be used to create matrix switchers, which are commonly utilized in commercial and residential environments. These devices can scale multiple inputs to one or more displays and may support audio like digital coax, SPDIF, and analog RCA. They can also control the output resolution of a display. A common application is a sports bar, where visual imagery can make an impact.
Color space conversion
Color space conversion involves converting the representation of a color from one format to another. This can be done using software or dedicated hardware. The latter uses circuits to perform the conversions and provides high performance, efficiency, and accuracy.
Color spaces are mathematical models that describe colors independently of the specific device that captures and displays them. They also provide a means for representing and transmitting these colors over long distances. However, there are some limitations to these color models that can affect the quality of image processing.
Color space conversion is a complex process that can result in loss of information or inconsistencies across devices. It is important to choose the appropriate color space for an application. There are several different methods available for color space conversion, including resampling and perceptual rendering. Several software tools are available to help with the process.
Chroma subsampling reduces the bandwidth required to transmit color information by limiting the amount of color detail in a video or image signal. It’s a visually lossless form of compression that allows native R, G, B data to be transmitted at higher resolutions or refresh rates than might otherwise be possible, and it can also help reduce the overall file size of images and videos.
Most modern digital video formats use a 4:2:2 chroma sampling configuration. This requires that every two pixels in the top “a” row of pixels share a color sample, and that each bottom pixel shares no chroma samples at all. This is fine for most applications but can be a limitation when dealing with green screen work, visual effects, and serious color grading. The VPSS supports three different chroma resampling algorithms; nearest neighbor, bilinear, and filtered. The VPSS’s bilinear resampling offers a good compromise between visual image quality and device resource cost.Continue Reading