<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
如今,大多數數位影像和成像裝置每通道使用 8 位整數表示灰度,因此將裝置的動態範圍限制在兩個數量級(實際上是 256 級),而人眼可以適應變化十個數量級的照明條件。當我們拍攝真實世界場景的照片時,明亮區域可能曝光過度,而黑暗區域可能曝光不足,因此我們無法使用單次曝光捕捉所有細節。 HDR 成像適用於每通道使用超過 8 位(通常為 32 位浮點值)的影象,允許更寬的動態範圍。獲取 HDR 影象的方法有很多種,但最常見的一種是使用以不同曝光值拍攝的場景照片。要結合這些曝光,瞭解相機的響應函數以及估計它的演演算法很有用。混合 HDR 影象後,必須將其轉換回 8 位才能在普通顯示器上檢視。這個過程稱為色調對映。當場景或相機的物件在鏡頭之間移動時,會出現額外的複雜性,因為應該配準和對齊具有不同曝光的影象。在本教學中,我們將展示如何從曝光序列中生成和顯示 HDR 影象。在我們的例子中,影象已經對齊並且沒有移動物件。我們還展示了一種稱為曝光融合的替代方法,它可以產生低動態範圍的影象。 HDR 管道的每個步驟都可以使用不同的演演算法來實現,因此請檢視參考手冊以瞭解所有這些。
from __future__ import print_function from __future__ import division import cv2 as cv import numpy as np import argparse import os
def cv_show(name, img): cv.imshow(name, img) cv.waitKey(0) cv.destroyAllWindows()
def compare(imgs): # for i in range(len(imgs)): # imgs[i][:,-3:-1,:] = [255,255,255] res = np.hstack(imgs) cv_show('Compare', res)
def loadExposureSeq(path): images = [] times = [] with open(os.path.join(path, 'list.txt')) as f: content = f.readlines() for line in content: tokens = line.split() images.append(cv.imread(os.path.join(path, tokens[0]))) # 便於之後的逆CRF操作 times.append(1 / float(tokens[1])) return images, np.asarray(times, dtype=np.float32)
# jupyter 難以手動輸入引數,故使用絕對路徑 #parser = argparse.ArgumentParser(description='Code for High Dynamic Range Imaging tutorial.') # parser.add_argument('--input', type=str, help='Path to the directory that contains images and exposure times.') # args = parser.parse_args() # if not args.input: # parser.print_help() # exit(0) # images, times = loadExposureSeq(args.input) images, times = loadExposureSeq('exposures/') calibrate = cv.createCalibrateDebevec() response = calibrate.process(images, times) merge_debevec = cv.createMergeDebevec() hdr = merge_debevec.process(images, times, response) tonemap = cv.createTonemap(2.2) ldr = tonemap.process(hdr) merge_mertens = cv.createMergeMertens() fusion = merge_mertens.process(images)
cv.imwrite('fusion.png', fusion * 255) cv.imwrite('ldr.png', ldr * 255) cv.imwrite('hdr.hdr', hdr)
True
images, times = loadExposureSeq('exposures/')
# 檢視資料集中曝光影象個數 len(images)
16
首先我們從使用者自定義資料夾中(此處我採用了教學提供的資料集並將其放置到了同目錄下便於載入)載入輸入影象以及其曝光時間。資料夾中需要包含影象和list.txt文字檔案,其中包含了檔名稱和反曝光時間
提供的影象資料集的列表如下:
memorial00.png 0.03125
memorial01.png 0.0625
...
memorial15.png 1024
calibrate = cv.createCalibrateDebevec() response = calibrate.process(images, times)
cv.createCalibrateDebevec( [, samples[, lambda_[, random]]] ) -> retval
很多 HDR 構建演演算法都需要了解相機響應函數(CRF)。 我們使用一種校準演演算法來估計所有 256 個畫素值的逆 CRF
merge_debevec = cv.createMergeDebevec() # 利用逆CRF形成HDR影象 hdr = merge_debevec.process(images, times, response)
cv.createMergeMertens( [, contrast_weight[, saturation_weight[, exposure_weight]]] ) -> retval
我們使用 Debevec 的加權方案,使用上一項中計算的響應來構建 HDR 影象。
tonemap = cv.createTonemap(2.2) ldr = tonemap.process(hdr) cv_show('Result', ldr)
由於我們想在普通 LDR 顯示器上看到我們的結果,我們必須將 HDR 影象對映到 8 位範圍,保留大部分細節。 這是色調對映方法的主要目標。 我們使用帶有雙邊濾波的色調對映器,並將 2.2 設定為 gamma 校正的值。
merge_mertens = cv.createMergeMertens() fusion = merge_mertens.process(images)
如果我們不需要 HDR 影象,還有另一種方法可以合併我們的曝光。 這個過程稱為曝光融合,併產生不需要伽馬校正的 LDR 影象。 它也不使用照片的曝光值。
compare([ldr,fusion])
左邊是對HDR影象直接進行色調對映的結果,只會保留大部分細節,右邊影象是使用所有輸入影象序列進行影象曝光融合的結果
請注意,HDR 影象不能以一種常見的影象格式儲存,因此我們將其儲存為 Radiance 影象 (.hdr)。 此外,所有 HDR 成像函數都返回 [0, 1] 範圍內的結果,因此我們應該將結果乘以 255。您可以嘗試其他色調對映演演算法:cv::TonemapDrago、cv::TonemapMantiuk 和 cv::TonemapReinhard 您還可以調整 您自己的照片的 HDR 校準和色調對映方法引數。
# 修改gamma使整幅影象變亮 tonemap = cv.createTonemap(10) ldr = tonemap.process(hdr) cv_show('Result', ldr)
到此這篇關於Python中OpenCV Tutorials 20 高動態範圍成像的文章就介紹到這了,更多相關OpenCV高動態範圍成像內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45