我正在實驗室工作,我們經常製作幹細胞的時間推移系列(每小時圖像)。目前的想法是把所有的幀放在一起,並製作一個視頻顯示這個增長的細胞(類似於這個youtube video)。使用OpenCV + Python可以做到簡單和酷炫。時間推移圖像的亮度/直方圖規範化
import numpy as np
import os
import cv2
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
timelapse_folder = '../myTimeLapse/'
for file in os.listdir(timelapse_folder):
frame = cv2.imread(timelapse_folder+file, 0)
out.write(frame)
out.release()
但是我們有問題,所有的圖像而改變亮度一點點,所以我們得到了我們的視頻輸出一些閃爍。
我不能上傳視頻,但這裏有與GIMP生成以可視化的問題,一些簡單的例子:
這就是視頻我從幀
,這就是獲得我想要的視頻(將閃爍最小化,而不是將其完全刪除也很好)
有沒有辦法調整所有圖像(或可能在2個圖像之間)的直方圖或亮度,以消除使用OpenCV的閃爍?
感謝您的每一個想法或提示!
編輯:由安德魯的想法產生的GIF序列(回答以下)
。假定所有的圖像是漂浮/整數的2D陣列,然後,你可以構造所有的圖像的3D陣列,然後針對最亮的'(max(np.average(arr,axis = 2)))'進行歸一化。然後你逐步完成並寫入視頻? – Andrew
嘿我試過'max_avg = np.max(np.average(images,axis = 2))',然後在for frame中循環每幀frame =(frame/max_avg)* 255,但它並沒有消除閃爍。或者你的意思是另一種標準化? – Fabian