HDR Imaging and Display

52 阅读3分钟

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 using
Sony 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't
need to estimate camera response curve any more. Convert your RAW data
into uint16 and do all the operations with this uint16 data. Create a
HDR_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 given
in 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:
  3. 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 raw
    images before process the fusion in raw_exposure_fusion(). compute_mask()
    (10pts)
    Inputs:
  4. images # an image list with different exposure levels.
  5. low_thres, high_thres # the threshold values for clipping the raw
    images, here use 代写HDR Imaging and Display[0.05, 0.95]*2^14 as default value for experiments. You
    can also adjust to achieve a better result.
    Outputs:
  6. mask # a binary mask list for different exposure levels.
    Compute the weights for fusion according to the slides.
    get_fusion_weights() (10pts)
    Inputs:
  7. images # an image list with different exposure levels.
    Outputs:
  8. 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 your
    results 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:
    = Displayed luminance.
    = World luminance from the HDR image.
    = 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:
  9. HDR_image_log # 32-bits HDR Image in log space
  10. space_sigma = 0.02 * min(width,height)
  11. range_sigma = 0.4
    Outputs:
  12. 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()
    Ld = 1+Lw
    L ⋅ 1+ w (
    Lmax
    L
    2
    w
    )
    Ld
    Lw
    Lmax
    Inputs:
  13. HDR_image_log_base
  14. HDR_image_log_detail
  15. gamma # gamma means the compression factor here.
    Outputs:
  16. 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.

WX:codinghelp