計算機視覺(hdr)

封面

HRD

現在手機都有 HDR 的功能,我最開始接觸 HDR 是在做動畫是時候接觸到 HDR,尤其是渲染動畫場景,做環境球來給場景添加光照的時候都會使用 HDR 作為貼圖,因為 HDR 中有豐富的曝光信息。便于調光。


有的時候我們想要天空拍攝藍色一點,讓整體看上去更加真實,不夠這可能因為我們為了拍攝藍色天空,而縮短的快門時間從而降低曝光時間,這樣環境就會看了比較暗,如上圖右側效果,不過有了 HDR 這樣問題就可以得到解決,一會兒我們會多 HDR 生成進行介紹并且用 python 代碼來實現一個合成 HDR 效果。

相機HDR是指高動態光照渲染(High-Dynamic Range,簡稱HDR),這里的動態是指不同曝光,可以直接在圖上條件圖片亮度,其實就是預先在不同曝光(也就是快門時間)下拍攝多張圖片進行合并為一張圖像。這張圖片可以提供更多光照信息,這樣也便于后期處理。


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__':
  # 讀取圖片和曝光時間
  images, times = readImagesAndTimes()
  
  
  # 將讀入多張圖片進行對齊
  alignMTB = cv2.createAlignMTB()
  alignMTB.process(images, images)
  
  # 獲取照相機響應函數 (CRF)
  calibrateDebevec = cv2.createCalibrateDebevec()
  responseDebevec = calibrateDebevec.process(images, times)
  
  # 將多張圖片合成 HDR 圖片
  mergeDebevec = cv2.createMergeDebevec()
  hdrDebevec = mergeDebevec.process(images, times, responseDebevec)
  # 保存 HDR 圖.
  cv2.imwrite("hdr_image.hdr", hdrDebevec)
  
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 大年初一這天所有人都起的很早,六點半就起床洗漱。 錢為閏站在大門口伸了個懶腰,打著哈欠說:“好久沒見過六點半的...
    要包閱讀 330評論 0 4
  • 媽媽叫它三葉草,她還說,如果找到了四片葉子的三葉草,就會有好運哦! 媽媽告訴我,我們家的衣櫥里,放了很多香樟樹的木...
    炫兒的美好時光閱讀 287評論 1 1
  • 2.x先森 認識x先森, 是一個很奇妙的意外。 他們對我說,讓我對x先森遠一些,他愿意纏人,愿意跟別人借錢很久才還...
    洛故閱讀 313評論 0 0