2016-09-29 62 views
1

我使用的OpenCV在Android項目工作,我使用的是表面,以實現自己的相機閃光燈,因爲我想爲用戶提供反饋用戶關於他們正在採取的圖片來幫助他們提高質量。我正在試圖做的是檢測他們是如何暗的圖像將要採取並建議他們使用閃光燈。提前致謝。如何知道如果圖像過暗,它需要使用OpenCV的

+0

直方圖來判斷圖像的亮度和對比度非常好的工具。讀一些關於他們和如何解釋他們。除此之外,應該有大量的在線資源。只是谷歌自動曝光算法,如你會發現很多關於數碼相機正在發生的事情的論文。我相信也會有一些關於Flash的有用的東西。 – Piglet

回答

1

如果您可以控制相機的參數,請考慮在使用閃光燈之前對其進行調整。如果你想在全球曝光X2因素,您可以:

  • 曝光時間通過
  • 鴻溝光圈值(或F-數)由sqrt(2)
  • multiply gain通過(這會增加一些噪音)

現在回答這個問題,如果你已經知道如何使用OpenCV存取像素的圖像,我首先建議你將其轉換使用cvtColor灰度,然後就可以計算(對於每個圖像)的像素強度(cv::sum)的總和與限定的閾值下,其圖像是「太暗」。僞代碼

爲例(這要根據你的需要/應用細化):

while sum(pixels) < threshold 
    it_nb=0 
    exp_time += 0.1 (second) 
    if it_nb>fixed_limit or if (exp_time/gain cannot be increased anymore) 
     print 'use flash'  
     break 
+0

請注意,增加曝光時間也會增加噪音。 我在你的答案中修復了一個錯誤。爲了獲得更多的光線,f值必須減小! – Piglet