<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/technology/cnxml/schema/dtd/0.5/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" xmlns:m="http://www.w3.org/1998/Math/MathML" id="new">
  <name>Exploring High Dynamic Range Imaging: §3.2 Simple Operator</name>
  <metadata>
  <md:version>1.2</md:version>
  <md:created>2006/12/21 01:00:36 US/Central</md:created>
  <md:revised>2006/12/25 16:21:29.719 US/Central</md:revised>
  <md:authorlist>
      <md:author id="tjohnson">
      <md:firstname>Taylor</md:firstname>
      <md:othername>T</md:othername>
      <md:surname>Johnson</md:surname>
      <md:email>ttj@rice.edu</md:email>
    </md:author>
      <md:author id="snmcgee">
      <md:firstname>Sarah</md:firstname>
      <md:othername>Nicole</md:othername>
      <md:surname>McGee</md:surname>
      <md:email>snmcgee@rice.edu</md:email>
    </md:author>
      <md:author id="rlortman">
      <md:firstname>Robert</md:firstname>
      <md:othername>Lowell</md:othername>
      <md:surname>Ortman</md:surname>
      <md:email>rlortman@rice.edu</md:email>
    </md:author>
      <md:author id="tyang">
      <md:firstname>Tianhe</md:firstname>
      
      <md:surname>Yang</md:surname>
      <md:email>tian.yang@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="tjohnson">
      <md:firstname>Taylor</md:firstname>
      <md:othername>T</md:othername>
      <md:surname>Johnson</md:surname>
      <md:email>ttj@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="snmcgee">
      <md:firstname>Sarah</md:firstname>
      <md:othername>Nicole</md:othername>
      <md:surname>McGee</md:surname>
      <md:email>snmcgee@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="rlortman">
      <md:firstname>Robert</md:firstname>
      <md:othername>Lowell</md:othername>
      <md:surname>Ortman</md:surname>
      <md:email>rlortman@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="tyang">
      <md:firstname>Tianhe</md:firstname>
      
      <md:surname>Yang</md:surname>
      <md:email>tian.yang@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="richb">
      <md:firstname>Richard</md:firstname>
      <md:othername>G.</md:othername>
      <md:surname>Baraniuk</md:surname>
      <md:email>richb@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="Markpanzee">
      <md:firstname>Mark</md:firstname>
      <md:othername>A.</md:othername>
      <md:surname>Davenport</md:surname>
      <md:email>md@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>dynamic</md:keyword>
    <md:keyword>hdr</md:keyword>
    <md:keyword>high</md:keyword>
    <md:keyword>imaging</md:keyword>
    <md:keyword>mapping</md:keyword>
    <md:keyword>quantization</md:keyword>
    <md:keyword>quantizer</md:keyword>
    <md:keyword>range</md:keyword>
    <md:keyword>sampling</md:keyword>
    <md:keyword>tone</md:keyword>
    <md:keyword>tone-mapping</md:keyword>
  </md:keywordlist>

  <md:abstract>The simplest operator used to map an HDR image to an LDR image.  For example, the simplest method for how to map a 32-bit range down to an 8-bit range is a basic quantizer.</md:abstract>
</metadata>
  <content>
    <para id="delete_me">Now that one has an HDR image, to be able to display it on conventional displays, one must map it back down to the range of an LDR image.  This results from current display technologies, be CRT, LCD, or printer, can only display at most about 8-bits per color channel, around the LDR range.  So, to be able to see the results of adding all this information together, one must map the high-dynamic range of 32-bits back to 8-bits.</para><para id="element-686">The simplest way to perform this calculation is using a quantizer, to directly map ranges in the <m:math>
 <m:semantics>
   <m:msup>
    <m:mn>2</m:mn>
     <m:mn>32</m:mn>
   </m:msup>
 <m:annotation encoding="MathType-MTEF">
 </m:annotation>
 </m:semantics>
</m:math>
 space back to single values in <m:math>
 <m:semantics>
  <m:mrow>
   <m:msup>
    <m:mn>2</m:mn>
    <m:mn>8</m:mn>
   </m:msup>
   
  </m:mrow>
 <m:annotation encoding="MathType-MTEF">
 </m:annotation>
 </m:semantics>
</m:math>
space.  That is, the range <m:math>
 <m:semantics>
  <m:mrow>
   <m:mrow><m:mo>{</m:mo> <m:mrow>
    <m:mn>0</m:mn><m:mo>…</m:mo><m:mfrac>
     <m:mrow>
      <m:msup>
       <m:mn>2</m:mn>
       <m:mrow>
        <m:mn>32</m:mn>
       </m:mrow>
      </m:msup>
      
     </m:mrow>
     <m:mrow>
      <m:msup>
       <m:mn>2</m:mn>
       <m:mn>8</m:mn>
      </m:msup>
      
     </m:mrow>
    </m:mfrac>
    
   </m:mrow> <m:mo>}</m:mo></m:mrow><m:mo>=</m:mo><m:mrow><m:mo>{</m:mo> <m:mrow>
    <m:mn>0</m:mn><m:mo>…</m:mo><m:mtext>16777216</m:mtext>
   </m:mrow> <m:mo>}</m:mo></m:mrow>
  </m:mrow>
 <m:annotation encoding="MathType-MTEF">
 </m:annotation>
 </m:semantics>
</m:math>
 would all be mapped to 0 in the <m:math>
 <m:semantics>
  <m:msup>
   <m:mn>2</m:mn>
   <m:mn>8</m:mn>
  </m:msup>
  
 <m:annotation encoding="MathType-MTEF">
 </m:annotation>
 </m:semantics>
</m:math>
space.  This can be realized by:</para><equation id="element-664"><m:math>
 <m:semantics>
  <m:mfrac>
   <m:mrow>
    <m:mrow><m:mo>⌈</m:mo> <m:mrow>
     <m:mfrac>
      <m:mi>A</m:mi>
      <m:mrow>
       <m:msup>
        <m:mn>2</m:mn>
        <m:mrow>
         <m:mi>H</m:mi><m:mo>−</m:mo><m:mn>1</m:mn>
        </m:mrow>
       </m:msup>
       
      </m:mrow>
     </m:mfrac>
     
    </m:mrow> <m:mo>⌉</m:mo></m:mrow><m:mo>−</m:mo><m:mn>1</m:mn>
   </m:mrow>
   <m:mrow>
    <m:msup>
     <m:mn>2</m:mn>
     <m:mrow>
      <m:mi>L</m:mi><m:mo>−</m:mo><m:mn>1</m:mn>
     </m:mrow>
    </m:msup>
    
   </m:mrow>
  </m:mfrac>
  
 <m:annotation encoding="MathType-MTEF">
 </m:annotation>
 </m:semantics>
</m:math>
</equation><para id="element-823">where A is the HDR color matrix, H is the HDR (source) bitrate, and L is the LDR (destination) bitrate.</para><example id="element-608"><para id="element-670">
		So in the case of 32-bit to 8-bit transformation, we would have: <m:math>
 <m:semantics>
  <m:mfrac>
   <m:mrow>
    <m:mrow><m:mo>⌈</m:mo> <m:mrow>
     <m:mfrac>
      <m:mi>A</m:mi>
      <m:mrow>
       <m:msup>
        <m:mn>2</m:mn>
        <m:mrow>
         <m:mn>32</m:mn><m:mo>−</m:mo><m:mn>1</m:mn>
        </m:mrow>
       </m:msup>
       
      </m:mrow>
     </m:mfrac>
     
    </m:mrow> <m:mo>⌉</m:mo></m:mrow><m:mo>−</m:mo><m:mn>1</m:mn>
   </m:mrow>
   <m:mrow>
    <m:msup>
     <m:mn>2</m:mn>
     <m:mrow>
      <m:mn>8</m:mn><m:mo>−</m:mo><m:mn>1</m:mn>
     </m:mrow>
    </m:msup>
    
   </m:mrow>
  </m:mfrac>
  
 <m:annotation encoding="MathType-MTEF">
 </m:annotation>
 </m:semantics>
</m:math>

	</para><para id="element-308">Using this approach, we have the following result:</para><figure id="element-410"><media type="image/jpeg" src="quantizing.jpg"/>
	<caption>Quantizing Operator</caption></figure>
</example><para id="element-949">Now that we have explored the most basic operator that just takes the HDR image straight back down to the LDR range without any intelligent methods to preserve the most information and dynamic range, we can explore more advanced operators in the following modules.  For example, one way to improve upon this is to "move" the average brightness around of the entire image, so that if it is overexposed, we can correct to some extent to preserve the most amount of detail in the resulting LDR image.  Beyond that, we can look at regions of the HDR image and map them down in an intelligent manner as to preserve the most amount of information in small areas of the resultant LDR image.</para>   
  </content>
  
</document>
