Interface2017年05月号新画像処理101を読む

技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
f:id:bitop:20180325150634p:plain src_2
f:id:bitop:20180325150657p:plain src_3
f:id:bitop:20180325150726p:plain dst f:id:bitop:20180325150809p:plain