RidgeRun Auto exposure/Auto white balance library for DM368 and DM365: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
mNo edit summary
 
(67 intermediate revisions by 6 users not shown)
Line 1: Line 1:
= Introduction =
<seo title="Auto Exposure | Auto White Balance Algorithm" titlemode="replace" keywords="GStreamer, Linux SDK, Linux BSP,  Embedded Linux, Device Drivers, Nvidia, Xilinx, TI, NXP, Freescale, Embedded Linux driver development, Linux Software development, Embedded Linux SDK, Embedded Linux Application development, GStreamer Multimedia Framework."  description="Read a comprehensive introduction to the auto exposure and auto white balance library for DM368 and DM365."></seo>


Video capture quality can be enhance with image processing, like auto white balance(AWB) and auto exposure algorithms(AE):
<table>
*Auto exposure performs automatic adjustments of the image brightness according to the amount of light that reaches the camera sensor.
<tr>
<td><div class="clear; float:right">__TOC__</div></td>
<td valign=top>
{{ContactUs Button}}
</td>
</table>
== Auto Exposure and Auto White Balance Introduction  ==
 
The DM365 and DM368 support the H3A hardware accelerator for supporting [https://www.ridgerun.com/auto-exposure-auto-white-balance auto white balance (AWB) and auto exposure (AE)]. CMOS or CCD sensor video capture quality can be enhanced with AWB and AE image processing:  
 
*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.
*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.
Some camera sensors don't include auto white balance and/or auto exposure processing, so RidgeRun offers a library with auto exposure and auto white balance algorithms called '''librraew'''. This library was initially developed for the DM365/DM368 (DM36x) platform. The DM36x video processing front end (VPFE) has an H3A engine designed to support control loops for auto focus, auto white balance and auto exposure by collecting statistics about the imaging/video data. There are two blocks in this module:
 
*Auto focus engine
*Auto exposure and auto white balance engine
 
The librraew library only uses the auto exposure and auto white balance hardware engine which requires the video frames to be in the Bayer color space. The DM36x does not allow the H3A engine to be used when the color space is YCbCr, which is common if you are using NTSC/PAL composite video input.
 
The H3A engine divides the frames into two dimensional blocks of pixels referred as windows. The engine provides image/video metrics:
 
*Accumulation of clipped pixels along with all non-saturated pixels in each window on a per color basis.
*Accumulation of the sum of squared pixels per color.
*Minimum and maximum pixels values in each window on a per color basis.
 
The DM36x H3A engine can be configured to use up to 36 horizontal windows with sum + {sum of squares or min+max} output or up to 56 horizontal windows with sum output. The H3A engine can also be configure to use up to 128 vertical windows. The width and height for the windows is programmable.
 
The librraew library was tested using an Aptina MT9P031 CMOS sensor. Support for other sensors was added later, thus validating the librraew design. If you provide the appropriate sensor-specific functions for the library, it can work with any sensor. The implementation is a plain C library and can be re-used with and integrated with any application capable of making C function calls. [https://github.com/RidgeRun/ipiped/wiki Image Pipe Daemon] uses librraew to provide auto exposure/Auto white balance.
 
== Auto Exposure/Auto White Balance License  ==
 
RidgeRun auto-exposure/auto-white-balance library (C) Copyright 2010 - RidgeRun LLC.
 
=== Evaluation and Development License  ===
 
Subject to the terms and conditions of RidgeRun's SDK license, RidgeRun hereby grants to customer a product - based, non - exclusive, non - transferable, non - sublicensable, limited, worldwide license to install and use, for internal purposes only, an unlimited number of copies of the source and object code versions.
 
=== Distribution License  ===
 
Subject to the terms and conditions of RidgeRun's SDK license, RidgeRun grants customers a non-exclusive, non-transferable, non-sublicensable, limited, worldwide license to distribute RidgeRun Software in object code format only (no source code) in one product model sold by the customer.
 
== AWB/AE Limitations for H3A Engine  ==
 
There are some not-so-obvious limitations when using the H3A engine:
 
*AWB/AE correction limited to window sampling method listed above.
*Can not use H3A engine with YCbCr color space, which includes NTSC/PAL composite video input.
*Auto exposure can affect the video frame rate with dark images. Set a maximum exposure limit to keep the frame rate from dropping below an acceptable value.
*Only tested with Linux 2.6.32 and the RidgeRun MT9P031 V4L2 driver.
 
== Auto Exposure and Auto White Balance Algorithms ==
 
=== Auto white balance algorithms ===
 
When an image of a scene is captured by a digital camera sensor, the sensor response at each pixel depends on the scene illumination. Depending on the illumination, a distinct color cast appears over the captured scene. This effect appears in the captured image due to the color temperature of the light. If a white object is illuminated with a low color temperature light source, the object in the captured image will have a reddish tint. Similarly, when the white object is illuminated with a high color temperature light source, the object in the captured image will appear somewhat blue instead of pure white. The human eye compensates for color cast automatically through a characteristic known as color constancy, allowing the colors to be independent of the illumination. Auto white balance tries to simulate the color constancy for captured images.
 
Many auto white balance algorithms follow a two-stage process:
 
*Illumination estimation: this can be done explicitly by choosing from a known set of possible illuminations or implicitly with assumptions about the effect of such illuminations. The white balance algorithms implemented in librraew use implicit estimation.
*Image color correction: this is achieved through an independent gain adjustment of the three color signals. Commonly only the blue and red gains are adjusted assuming the red gain is fixed.
 
=== Auto exposure algorithms ===
 
One of the main problems affecting image quality, leading to disappointing pictures, comes from improper light exposure. The image exposure is the amount of light that reaches the sensor. Exposure determines the lightness or darkness of the resulting image. If too much light strikes the image sensor, the image will be overexposed, washed out, and faded. If too little light reaches the camera sensor produces an underexposed image, dark and lacking in details especially in shadow areas. Auto exposure (AE) algorithms adjust the captured image in an attempt to reproduce the most important regions (according to contextual or perceptive criteria) with an average level of brightness, more or less in the middle of the possible range.
 
Auto exposure algorithms involve three processes:
 
*Light metering: this is generally accomplished using the camera sensor itself or an external device as exposure detector.
*Scene analysis: brightness metering methods use an estimation of the scene illumination according to image metrics. Using the overall illumination value, brightness adjustments can be calculated to produce the best exposure.
*Image brightness correction: this ensures that the correct amount of light reaches the image sensor by adjusting the illumination and shutter time parameters. The image sensor parameter is often called the exposure time. The exposure time is defined as the amount of time that the sensor integrates light. In other words, it determines how long the sensor photo diodes array is exposed to light.
 
== Documentation  ==
 
*[[Librraew 1.1]] (current version)
*[[Librraew 1.0]]
 
== Using the demo version of librraew  ==
 
You can request at '''support@ridgerun.com''' for a demo version of librraew in order to test the auto-white balance and auto-exposure algorithms to see if the technology meets your needs. This library will allow you to use all the features that comes with the full version of the librraew but with the following limitations:
 
*The algorithm will darken the image periodically.
*After awhile the algorithm will stop working and the image capturing will be done with the last values calculated by the library. In order to test the library again you will need to restart the algorithm.
 
=== How to Buy  ===
 
You can purchase commercial version of '''librraew''' using our [http://www.ridgerun.com/#!online-store/pogiw/!/Auto-Exposure-Auto-White-Balance-DM36x-processor-only/p/59063248/category=16360695 Online Store] or you can post your purchasing inquiry at our [http://www.ridgerun.com/contact Contact Us] link.
<div id="-chrome-auto-translate-plugin-dialog" style="opacity: 1 !important; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: transparent !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; position: absolute !important; top: 0px; left: 0px; overflow-x: visible !important; overflow-y: visible !important; z-index: 999999 !important; text-align: left !important; display: none; background-position: initial initial !important; background-repeat: initial initial !important;"><div style="max-width: 300px !important;color: #fafafa !important;opacity: 0.8 !important;border-color: #000000 !important;border-width: 0px !important;-webkit-border-radius: 10px !important;background-color: #363636 !important;font-size: 16px !important;padding: 8px !important;overflow: visible !important;background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000));z-index: 999999 !important;text-align: left !important;"><div class="translate"></div><div class="additional"></div></div>[[Image:]]</div>


= Design =
== References  ==
Three applications are required to support the auto exposure and auto white-balance (AEW) adjustments:
*Ipiped, a DBus 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 interactive console that can be used to invoke any of the methods supported by the Ipiped.


== Overview of Ipiped ==
#Battiato, G. Messina, and A. Castorina. Exposure correction for imaging devices: an overview. In Single-Sensor Imaging: Methods and Applications for Digital Cameras, chapter 12. Rastislav Lukac, October 2008.
== Overview of Ipipe-client ==
#Lee J.S., Jung Y.Y, Kim B.S., and Ko S.J. An advanced video camera system with robust af, ae, and awb control. IEEE Transactions on Consumer Electronics, 47:694–699, August 2001
== Overview of Librraew ==
#Edmund Y. Lam. Combining gray world and retinex theory for automatic white balance in digital photography. Consumer Electronics, 2005. (ISCE 2005). Proceedings of the Ninth International Symposium on, pages 134–139, June 2005.
#Edmund Y. Lam and George S. K. Fung. Automatic white balancing in digital photography. In Single-Sensor Imaging: Methods and Applications for Digital Cameras. Taylor &amp; Francis Group, LLC, 2009.
#Nitin Sampat, Shyam Venkataraman, Thomas Yeh, and Robert L. Kremens. System implications of implementing auto-exposure on consumer digital cameras. Proc. SPIE. Sensors, Cameras, and Applications for Digital Photography, 3650:100–107, March 1999


[[Category:Whitepaper]]
{{ContactUs}}
[[Category:Whitepaper]][[Category:RidgeRunTechnology]][[Category:DM36x]]

Latest revision as of 18:38, 29 May 2020


Auto Exposure and Auto White Balance Introduction

The DM365 and DM368 support the H3A hardware accelerator for supporting auto white balance (AWB) and auto exposure (AE). CMOS or CCD sensor video capture quality can be enhanced with AWB and AE image processing:

  • 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 auto exposure and auto white balance algorithms called librraew. This library was initially developed for the DM365/DM368 (DM36x) platform. The DM36x video processing front end (VPFE) has an H3A engine designed to support control loops for auto focus, auto white balance and auto exposure by collecting statistics about the imaging/video data. There are two blocks in this module:

  • Auto focus engine
  • Auto exposure and auto white balance engine

The librraew library only uses the auto exposure and auto white balance hardware engine which requires the video frames to be in the Bayer color space. The DM36x does not allow the H3A engine to be used when the color space is YCbCr, which is common if you are using NTSC/PAL composite video input.

The H3A engine divides the frames into two dimensional blocks of pixels referred as windows. The engine provides image/video metrics:

  • Accumulation of clipped pixels along with all non-saturated pixels in each window on a per color basis.
  • Accumulation of the sum of squared pixels per color.
  • Minimum and maximum pixels values in each window on a per color basis.

The DM36x H3A engine can be configured to use up to 36 horizontal windows with sum + {sum of squares or min+max} output or up to 56 horizontal windows with sum output. The H3A engine can also be configure to use up to 128 vertical windows. The width and height for the windows is programmable.

The librraew library was tested using an Aptina MT9P031 CMOS sensor. Support for other sensors was added later, thus validating the librraew design. If you provide the appropriate sensor-specific functions for the library, it can work with any sensor. The implementation is a plain C library and can be re-used with and integrated with any application capable of making C function calls. Image Pipe Daemon uses librraew to provide auto exposure/Auto white balance.

Auto Exposure/Auto White Balance License

RidgeRun auto-exposure/auto-white-balance library (C) Copyright 2010 - RidgeRun LLC.

Evaluation and Development License

Subject to the terms and conditions of RidgeRun's SDK license, RidgeRun hereby grants to customer a product - based, non - exclusive, non - transferable, non - sublicensable, limited, worldwide license to install and use, for internal purposes only, an unlimited number of copies of the source and object code versions.

Distribution License

Subject to the terms and conditions of RidgeRun's SDK license, RidgeRun grants customers a non-exclusive, non-transferable, non-sublicensable, limited, worldwide license to distribute RidgeRun Software in object code format only (no source code) in one product model sold by the customer.

AWB/AE Limitations for H3A Engine

There are some not-so-obvious limitations when using the H3A engine:

  • AWB/AE correction limited to window sampling method listed above.
  • Can not use H3A engine with YCbCr color space, which includes NTSC/PAL composite video input.
  • Auto exposure can affect the video frame rate with dark images. Set a maximum exposure limit to keep the frame rate from dropping below an acceptable value.
  • Only tested with Linux 2.6.32 and the RidgeRun MT9P031 V4L2 driver.

Auto Exposure and Auto White Balance Algorithms

Auto white balance algorithms

When an image of a scene is captured by a digital camera sensor, the sensor response at each pixel depends on the scene illumination. Depending on the illumination, a distinct color cast appears over the captured scene. This effect appears in the captured image due to the color temperature of the light. If a white object is illuminated with a low color temperature light source, the object in the captured image will have a reddish tint. Similarly, when the white object is illuminated with a high color temperature light source, the object in the captured image will appear somewhat blue instead of pure white. The human eye compensates for color cast automatically through a characteristic known as color constancy, allowing the colors to be independent of the illumination. Auto white balance tries to simulate the color constancy for captured images.

Many auto white balance algorithms follow a two-stage process:

  • Illumination estimation: this can be done explicitly by choosing from a known set of possible illuminations or implicitly with assumptions about the effect of such illuminations. The white balance algorithms implemented in librraew use implicit estimation.
  • Image color correction: this is achieved through an independent gain adjustment of the three color signals. Commonly only the blue and red gains are adjusted assuming the red gain is fixed.

Auto exposure algorithms

One of the main problems affecting image quality, leading to disappointing pictures, comes from improper light exposure. The image exposure is the amount of light that reaches the sensor. Exposure determines the lightness or darkness of the resulting image. If too much light strikes the image sensor, the image will be overexposed, washed out, and faded. If too little light reaches the camera sensor produces an underexposed image, dark and lacking in details especially in shadow areas. Auto exposure (AE) algorithms adjust the captured image in an attempt to reproduce the most important regions (according to contextual or perceptive criteria) with an average level of brightness, more or less in the middle of the possible range.

Auto exposure algorithms involve three processes:

  • Light metering: this is generally accomplished using the camera sensor itself or an external device as exposure detector.
  • Scene analysis: brightness metering methods use an estimation of the scene illumination according to image metrics. Using the overall illumination value, brightness adjustments can be calculated to produce the best exposure.
  • Image brightness correction: this ensures that the correct amount of light reaches the image sensor by adjusting the illumination and shutter time parameters. The image sensor parameter is often called the exposure time. The exposure time is defined as the amount of time that the sensor integrates light. In other words, it determines how long the sensor photo diodes array is exposed to light.

Documentation

Using the demo version of librraew

You can request at support@ridgerun.com for a demo version of librraew in order to test the auto-white balance and auto-exposure algorithms to see if the technology meets your needs. This library will allow you to use all the features that comes with the full version of the librraew but with the following limitations:

  • The algorithm will darken the image periodically.
  • After awhile the algorithm will stop working and the image capturing will be done with the last values calculated by the library. In order to test the library again you will need to restart the algorithm.

How to Buy

You can purchase commercial version of librraew using our Online Store or you can post your purchasing inquiry at our Contact Us link.

References

  1. Battiato, G. Messina, and A. Castorina. Exposure correction for imaging devices: an overview. In Single-Sensor Imaging: Methods and Applications for Digital Cameras, chapter 12. Rastislav Lukac, October 2008.
  2. Lee J.S., Jung Y.Y, Kim B.S., and Ko S.J. An advanced video camera system with robust af, ae, and awb control. IEEE Transactions on Consumer Electronics, 47:694–699, August 2001
  3. Edmund Y. Lam. Combining gray world and retinex theory for automatic white balance in digital photography. Consumer Electronics, 2005. (ISCE 2005). Proceedings of the Ninth International Symposium on, pages 134–139, June 2005.
  4. Edmund Y. Lam and George S. K. Fung. Automatic white balancing in digital photography. In Single-Sensor Imaging: Methods and Applications for Digital Cameras. Taylor & Francis Group, LLC, 2009.
  5. Nitin Sampat, Shyam Venkataraman, Thomas Yeh, and Robert L. Kremens. System implications of implementing auto-exposure on consumer digital cameras. Proc. SPIE. Sensors, Cameras, and Applications for Digital Photography, 3650:100–107, March 1999


RidgeRun Resources

Quick Start Client Engagement Process RidgeRun Blog Homepage
Technical and Sales Support RidgeRun Online Store RidgeRun Videos Contact Us
RidgeRun.ai: Artificial Intelligence | Generative AI | Machine Learning

Contact Us

Visit our Main Website for the RidgeRun Products and Online Store. RidgeRun Engineering informations are available in RidgeRun Professional Services, RidgeRun Subscription Model and Client Engagement Process wiki pages. Please email to support@ridgerun.com for technical questions and contactus@ridgerun.com for other queries. Contact details for sponsoring the RidgeRun GStreamer projects are available in Sponsor Projects page.