import cv2
import numpy as np
import matplotlib.pyplot as plt
# Loading exposure images into a list
img_fn = ["images/img_15.jpg", "images/img_2.5.jpg", "images/img_0.25.jpg", "images/img_0.033.jpg"]
img_list = [cv2.imread(fn) for fn in img_fn]
exposure_times = np.array([15.0, 2.5, 0.25, 0.0333], dtype=np.float32)
# Show images
plt.figure(figsize=[18,4])
for i, (image, exposure) in enumerate(zip(img_list, exposure_times)):
plt.subplot(1,4,i+1);plt.imshow(image[...,::-1]);plt.title(exposure);plt.xticks([]);plt.yticks([]);
# Exposure fusion using Mertens
merge_mertens = cv2.createMergeMertens()
res_mertens = merge_mertens.process(img_list)
# Convert datatype to 8-bit and save
res_mertens_8bit = np.clip(res_mertens*255, 0, 255).astype('uint8')
# Show images
plt.figure(figsize=[8,8])
plt.imshow(res_mertens_8bit[...,::-1]);plt.title("Mertens");
images = ['images/1280px-HDRI_Sample_Scene_Window_-_10.jpg','images/1280px-HDRI_Sample_Scene_Window_-_05.jpg']
img_list = [cv2.imread(fn) for fn in images]
# Exposure fusion using Mertens
merge_mertens = cv2.createMergeMertens()
res_mertens = merge_mertens.process(img_list)
# Convert datatype to 8-bit and save
res_mertens_8bit = np.clip(res_mertens*255, 0, 255).astype('uint8')
# Show images
plt.figure(figsize=[24,8])
plt.subplot(1,3,1);plt.imshow(img_list[0][...,::-1]);plt.title("Over-exposed");
plt.subplot(1,3,2);plt.imshow(img_list[1][...,::-1]);plt.title("Under-exposed");
plt.subplot(1,3,3);plt.imshow(res_mertens_8bit[...,::-1]);plt.title("result");
import glob
images = glob.glob('images/1280px-HDRI_Sample_Scene_Window_-*.jpg')
img_list = [cv2.imread(fn) for fn in images]
# Show images
plt.figure(figsize=[12,9])
for i, image in enumerate(img_list):
plt.subplot(3,3,i+1);plt.imshow(image[...,::-1]);plt.xticks([]);plt.yticks([]);
# Exposure fusion using Mertens
merge_mertens = cv2.createMergeMertens()
res_mertens = merge_mertens.process(img_list)
# Convert datatype to 8-bit and save
res_mertens_8bit = np.clip(res_mertens*255, 0, 255).astype('uint8')
# Show images
plt.figure(figsize=[8,8])
plt.imshow(res_mertens_8bit[...,::-1]);plt.title("Mertens");