HDR Imaging and Display


Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due


HDR Imaging and Display

Assignment 03 (Under Graduate),Assignment 02(Graduate)

Due Date: 8th, March, 2025

Given a sequence with different exposure level (Captured in CUHK-SZ usingSony A7S3, .ARW *files), merge them into HDR images. Read the meta data using *RawPy as the relative parameters.

You can continue complete your code based on your own HW02 (recommended). If you feel HW02 was not so well completed, just use the reference homework codes instead.

We recommend to to complete ASAP to avoid the time conflict with other mid-terms.

Step 1. Merge LDR RAW into 32-bit HDR Image (35pts)

Since we start from RAW images which are already in linear space, you don'tneed to estimate camera response curve any more. Convert your RAW datainto uint16 and do all the operations with this uint16 data. Create aHDR_fusion.py file and code all the relative module inside it.

This step 1 should be performed exactly before the Demosaicing process.

Note: The Lecture06's equations need to calculate the mean pixel value.

Merge LDR images with different exposure levels into an HDR image. Here,you need to define the least square objective function in log-space as givenin Lecture06. raw_exposure_fusion() (30pts)

Inputs:
1. images # an image list with different exposure levels.
2. weights # the computed gaussian weights given in slides.
Outpus:1. HDR_image # 32-bits HDR Images
Useful functions to complete: To avoid the error weights caused by this over/under exposured values, you need to compute the mask for each rawimages before process the fusion in raw_exposure_fusion(). compute_mask()(10pts)
Inputs:
1. images # an image list with different exposure levels.
2. low_thres, high_thres # the threshold values for clipping the raw images, here use [0.05, 0.95]*2^14 as default value for experiments. Youcan also adjust to achieve a better result.
Outputs:
1. mask # a binary mask list for different exposure levels.
Compute the weights for fusion according to the slides.
get_fusion_weights() (10pts)
Inputs:
1. images # an image list with different exposure levels.
Outputs:
1. weights
Step 2. Demosaic the fused raw data. Save your 32-bit HDR image into 32-bit *.EXR * file. (10pts)\
Process CFA_Interpolation()

Implement and process writeEXR()

Check your saved results use the give tool-picturenaut.exe, or download the linux for mac version as you need.

Step 3A. Global Tone Mapping(15pts)

Now that you have several HDR images, To display them in your 8-bit LCD/LED display, you need to tone map them. For this step, show yourresults on the report using the fused HDR images from set01. The goal is to understand the principles of Global tonemapping, implement the Rainhard algorithm.
For each pixel in the image:

Where:

  • Ld= Displayed luminance.
  • Lw= World luminance from the HDR image.
  • Lmax= Maximum luminance in the scene.
This formula adaptively adjusts the brightness to prevent overexposure in bright areas while maintaining detail in darker regions.

For details, Refer to "Photographic Tone Reproduction for Digital Images"

Step 3B. Tone Mapping with Bilateral Filter(40pts)

Now that you have several HDR images, To display them in your 8-bit LCD/LED display, you need to tone map them. For this step, show your results on the report using the fused HDR images from set01.

To realize tone mapping with bilateral filter. Firstly, you need to compute the intensity and then realize a bilateral filter to achieve the base intensity image (Figure 12 in [1]): fastbilateral2d()

Inputs:
1. HDR_image_log # 32-bits HDR Image in log space
2. space_sigma = 0.02 * min(width,height)
3. range_sigma = 0.4
Outputs:
1. HDR_image_log_base # 32-bits HDR base Image
Then you need to obtain the details of the HDR image
HDR_image_log_detail. Then, the new intensity: compute_new_intensity()
Inputs:
1. HDR_image_log_base
2. HDR_image_log_detail
3. gamma # gamma means the compression factor here.
Outputs:
1. LDR_intensity # 8-bits LDR Intensity Image
Finally, combine your new intensity with the color channels and save the results in RGB as a JPG file.

For details, Refer to [1] Fr´edo Durand and Julie Dorsey Fast Bilateral Filtering for the Display of High-Dynamic-Range Images. Siggraph 2002

Submission

To Grade submission for this homework. We highly recommend that you finish the homework to prevent any issues when you start on the following projects for this class.
Code Submission (60%)

The code is required with a simple run, and then the TAs can see the results (in JPG format). Put the data and set the data path as "../data/**" such that can be directly executed.

Results(20%)

The Results shows a good visualization

Report and Description (20%)

For each function you implemented, show the results crops (center 512X512 crops), describe what you have done, and explain your results.

We recommend you write your report using Markdown (like MarkdownPAD2) and export it to HTML format.

发表评论

电子邮件地址不会被公开。 必填项已用*标注