技10 画像フェージョン&合成
10-1 明暗や色彩のチャンピオンを合成する「HDR合成」
import cv2
import numpy as np
# 3枚の画像ファイルを読み込む
img_fn = ["data/img_input_1_10-1.bmp", "data/img_input_2_10-1.bmp", "data/img_input_3_10-1.bmp"]
img_list = [cv2.imread(fn) for fn in img_fn]
# 3枚の画像に対して露出時間をセット
exposure_times = np.array([0.2, 0.05, 0.0125], dtype=np.float32)
# Debevec法によるHDR合成
merge_debvec = cv2.createMergeDebevec()
hdr_debvec = merge_debvec.process(img_list, times=exposure_times.copy())
tonemap1 = cv2.createTonemapDurand(gamma=2.2)
res_debvec = tonemap1.process(hdr_debvec.copy())
img_dst = np.clip(res_debvec*255, 0, 255).astype('uint8')
cv2.imshow("img_src1",img_list[0])
cv2.imshow("img_src2",img_list[1])
cv2.imshow("img_src3",img_list[2])
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
src_1
src_2
src_3
dst