1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import cv2
- import numpy as np
- def readImagesAndTimes():
-
- times = np.array([ 1/30.0, 0.25, 2.5, 15.0 ], dtype=np.float32)
-
- filenames = ["img_0.033.jpg", "img_0.25.jpg", "img_2.5.jpg", "img_15.jpg"]
- images = []
- for filename in filenames:
- im = cv2.imread(filename)
- images.append(im)
-
- return images, times
- if __name__ == '__main__':
- # Read images and exposure times
- print("Reading images ... ")
- images, times = readImagesAndTimes()
-
-
- # Align input images
- print("Aligning images ... ")
- alignMTB = cv2.createAlignMTB()
- alignMTB.process(images, images)
-
- # Obtain Camera Response Function (CRF)
- print("Calculating Camera Response Function (CRF) ... ")
- calibrateDebevec = cv2.createCalibrateDebevec()
- responseDebevec = calibrateDebevec.process(images, times)
-
- # Merge images into an HDR linear image
- print("Merging images into one HDR image ... ")
- mergeDebevec = cv2.createMergeDebevec()
- hdrDebevec = mergeDebevec.process(images, times, responseDebevec)
- # Save HDR image.
- cv2.imwrite("hdrDebevec.hdr", hdrDebevec)
- print("saved hdrDebevec.hdr ")
-
- # Tonemap using Drago's method to obtain 24-bit color image
- print("Tonemaping using Drago's method ... ")
- tonemapDrago = cv2.createTonemapDrago(1.0, 0.7)
- ldrDrago = tonemapDrago.process(hdrDebevec)
- ldrDrago = 3 * ldrDrago
- cv2.imwrite("ldr-Drago.jpg", ldrDrago * 255)
- print("saved ldr-Drago.jpg")
-
- # Tonemap using Durand's method obtain 24-bit color image
- print("Tonemaping using Durand's method ... ")
- tonemapDurand = cv2.createTonemapDurand(1.5,4,1.0,1,1)
- ldrDurand = tonemapDurand.process(hdrDebevec)
- ldrDurand = 3 * ldrDurand
- cv2.imwrite("ldr-Durand.jpg", ldrDurand * 255)
- print("saved ldr-Durand.jpg")
-
- # Tonemap using Reinhard's method to obtain 24-bit color image
- print("Tonemaping using Reinhard's method ... ")
- tonemapReinhard = cv2.createTonemapReinhard(1.5, 0,0,0)
- ldrReinhard = tonemapReinhard.process(hdrDebevec)
- cv2.imwrite("ldr-Reinhard.jpg", ldrReinhard * 255)
- print("saved ldr-Reinhard.jpg")
-
- # Tonemap using Mantiuk's method to obtain 24-bit color image
- print("Tonemaping using Mantiuk's method ... ")
- tonemapMantiuk = cv2.createTonemapMantiuk(2.2,0.85, 1.2)
- ldrMantiuk = tonemapMantiuk.process(hdrDebevec)
- ldrMantiuk = 3 * ldrMantiuk
- cv2.imwrite("ldr-Mantiuk.jpg", ldrMantiuk * 255)
- print("saved ldr-Mantiuk.jpg")
|