R96944043 ©P§B¬Û
http://www.cmlab.csie.ntu.edu.tw/~zho/
One of the picture from the images of different exposures |
The final image from my project #1 by Robertson method tone mapping by PhotoMatrix |
Project #1
High dynamic range (HDR) images have much larger dynamic ranges than traditional images' 256 levels. In addition, they correspond linearly to physical irradiance values of the scene.
1.Taking photographs
I take series of pictures with different exposures by using the SONY Cyber-shot DSC-W200 with a tripod.
2.Write a program to assemble an HDR image
Program brief:
Stand-alone executable program created & compiled by visual c++ 2005, HDR.exe with library zlImageLib , zlCore, zlGDIRDev , gsl , jhead
I read the external data by using a HDR.ini file which define as follow:
//Weight table
Weight Triangle
Weight Gauss
//Method used to Recover Radiance map
Method Robertson
Method Debevec
//Source image, auto discover exposure time from EXIF of jpg
Image DSC01218.JPG
Image DSC01219.JPG
...........//tonemap parameter
ToneExposure 1
ToneScalar 0.8
//for output filename
Response response.txt
HDRImage image.hdr
ToneImage tonemap.hdrProcessing of HDR.exe:
- I use zlImageLib to read source pictures (jpg format), store as unsigned-char images , and use jhead to read exposure time from the EXIF.
- I implement Ward's MTB algorithm to do image alignment.
exposure time 1/2 sec
exposure time 1/20 sec
- Support 2 kind of weight table
![]()
Triangle weight table
Gauss weight table
- I implement Paul Debevec's method and Mark A. Robertson's method to recovering radiance maps.
Paul Debevec's method:
I translate his matlab code into c++ code, and using GSL to solve SVD problem.
other image created by Paul Debevec's methodRobertson's method:
3.Develop your radiance map using tone mapping
I use Photographic Tone Reproduction:
Find luminance by the following equation:
Lw=0.3R+0.59G+0.11B
Source pictures
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Radiance Map
Recovering HDR Radiance Maps by Robertson's Algorithm in this case.
Final Image
Apply tone mapping by Photomatrix
Other artifact
Problem Found
If the intensity of pictures with different exposures are almost the same, we can found some black holes like the following image. I found that both Paul Debevec's method and Robertson's method have the same problem.
I check each pixel of Radiance Maps in RGB channel, if the value is 0, then i check the same pixel of source images. If the intensity of the source image is greater then 128, then i reset the pixel value of Radiance Maps to maximum. the result
References