RidgeRun Auto exposure/Auto white balance library for DM368 and DM365

From RidgeRun Developer Connection
Revision as of 13:51, 18 March 2011 by Mmontero (Talk | contribs)

Jump to: navigation, search


Video capture quality can be enhance with image processing, like auto white balance(AWB) and auto exposure algorithms(AE):

  • Auto exposure performs automatic adjustments of the image brightness according to the amount of light that reaches the camera sensor.
  • Auto white balance automatically compensates color differences based on lighting so white actually appears white.

Some camera sensors don't include auto white balance and/or auto exposure processing, so RidgeRun offers a library with AE and AWB algorithms for the Leopard Board DM365 and the 5Mpixel camera.


Three applications are required to support the auto exposure and auto white-balance (AEW) adjustments:

  • Ipiped, a D-Bus server for controlling and configuring the camera sensor, the dm365 video processor and the aew library.
  • Librraew, a library that includes auto white balance and auto exposure algorithms.
  • Ipipe-client, an D-Bus client that can be used to invoke any of the methods supported by the Ipiped.

Running Ipiped

Ipiped must run in background:

 ipiped &

Ipiped registers with D-Bus and waits until ipipe-client requests to execute a method.

Running Ipipe-client

Ipipe-client is a Dbus client that use commands to invoke methods of the ipiped, so ipiped must be running to use ipipe-client. A command can required arguments depending of the functionality. Ipipe-client has two operation modes, you can ask to execute a single command or you can open an interactive console to execute a group of commands.

To execute a single command, you can use the following command line syntax

 ipipe-client <command> <argument 1> ... <argument n>

To get into the interactive console, you have to run ipipe-client without any command. Then to execute a command you only need to use the command and the required arguments.

ipipe-client$ <command 1> <argument 1> ... <argument n>
ipipe-client$ <command 2> <argument 1> ... <argument n>

To quit the interactive console you can use quit or exit.

In order to know the commands that are available run:

ipipe-client help

or get into the interactive console and execute help.

This shows a description of each command, as follows:

Command                         Description

help                    Displays the help text for all the posible commands or a specific command.
set-debug               Enable/Disable debug messages.
init-aew                Initialize AEW algorithms.
stop-aew                End AEW algorithm.
shell                   Execute a shell command(shell_cmd) using interactive console.
ping                    Show if ipipe-daemon is alive.
quit                    Quit from the interactive console.
exit                    Exit from the interactive console.
get-video-processor     Show the video processor that is being used.
get-sensor              Show the sensor that is being used.
run-config-script       Execute a group of ipipe-client commands.
set-previewer-mode      Configure previewer on continuous or one-shot mode.
set-bayer-pattern       Sets R/Gr/Gb/B color pattern to the previewer.
set-digital-gain        Sets red (R), green (G) and blue gains (G) on the ipipe.
get-digital-gain        Returns the gain value for each color component(RGB).
set-luminance           Brightness(Br) and contrast(C) adjustment.
get-luminance           Returns the value of the Brightness(Br) and contrast(C) adjustment.
flip-vertical           Flips the image vertically(on the sensor).
flip-horizontal         Flips the image horizontally (on the sensor).
set-exposure            Sets the effective shutter time  of the sensor for the light integration.
get-exposure            Gets the exposure time of the sensor in us.
set-sensor-gain         Sets red(R), green(G) and blue(B) gain directly on the sensor.
get-sensor-gain         Gets sensor red(R), green(G) and blue(B).

If you want more detailed information about a command execute:

ipipe-client help <command> 

Running Librraew

Auto exposure and auto white balance adjustments can be started with an ipipe-client's command called init-aew. Init-aew requires some arguments to define the algorithms and other parameters. To see the list you can request for help that show you the list as follows:

Command: init-aew
Syntax: init-aew <WB> <AE> <G> <EM> <T[us]> <fps> <seg> <width> <height>
Description: Initialize AEW algorithms                                  
        WB: white balance algorithm, the options are:                   
                G -for gray world algorithm                             
                W -for retinex algorithm                                
                N -for none                                             
        AE: auto exposure algorithm, the options are                    
                EC -for electronic centric                              
                N -for none                                             
        G: gain type, the options are:                                  
                S -to use the sensor gain                               
                D -to use the digital
        EM: exposure metering method, the options are:
                S -for spot metering that take into account the ligth
                information of a small portion in the center of the
                frame and the rest is ignored
                P -for partial metering that take into account the
                ligth information of a larger portion in the center
                of the frame (10% - 15%) and the rest of the frame is ignored.
                C -for center weighted metering that take into account
                the ligth information coming from the entire frame with
                emphasis placed on the center area
                A -for average metering that take into account the ligth
                information from the entire frame without weighting
                SG -for segmented metering that divides the frame
                on 6 pieces and weighting them to avoid backlighting
        T: wait time in us, especifies the time between
                algorithm ajustments, max value=1s=1000000us
        fps: minimun frame rate
        seg: frame segmentation factor, each frame is segmented into
                regions, this factor represents the percentage of the
                maximun number of posible regions
        width: captured video/image horizontal size
        height: captured video/image vertical size

Also you can stop automatic adjustments with the command stop-aew