一種自動(dòng)調(diào)整對(duì)比度的拍攝方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種拍攝方法,特別是一種自動(dòng)調(diào)整對(duì)比度的拍攝方法。
【背景技術(shù)】
[0002]在拍照與錄像過程中,由于光線的不均勻?qū)е屡恼张c攝像出來的照片或視頻效果不佳,而使得我們必須使用圖像處理軟件對(duì)照片進(jìn)行對(duì)比度的處理,操作較為繁瑣,特別是對(duì)于視頻文件,就更難對(duì)其進(jìn)行對(duì)比度的處理。
【發(fā)明內(nèi)容】
[0003]本發(fā)明為解決上述問題,提供了自動(dòng)調(diào)整對(duì)比度的拍攝方法,其不僅可以應(yīng)用于拍照過程,也同樣適用于視頻的錄像過程,操作簡單,效果好。
[0004]為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
[0005]一種自動(dòng)調(diào)整對(duì)比度的拍攝方法,其特征在于,包括以下步驟:
[0006]10.對(duì)攝像頭捕獲的原始數(shù)據(jù)中的各個(gè)像素點(diǎn)進(jìn)行紅色通道、綠色通道、藍(lán)色通道的直方圖統(tǒng)計(jì);
[0007]20.設(shè)置原始數(shù)據(jù)中的陰影部分和高光部分的修剪值;
[0008]30.計(jì)算紅色通道、綠色通道、藍(lán)色通道的陰影部分的上限值與高光部分的下限值;
[0009]40.對(duì)所述陰影部分的上限值進(jìn)行最小值計(jì)算得到最小上限值;對(duì)所述高光部分的下限值進(jìn)行最大值計(jì)算得到最大下限值;
[0010]50.對(duì)所述最小上限值與所述最大下限值進(jìn)行閾值計(jì)算得到最終最小上限值與最終最大下限值;
[0011]60.根據(jù)所述的最終最小上限值與最終最大下限值得到映射表,并將原始數(shù)據(jù)中的各個(gè)像素點(diǎn)進(jìn)行顏色映射,得到結(jié)果數(shù)據(jù)。
[0012]作為一種較佳實(shí)施例,所述步驟10中的直方圖統(tǒng)計(jì)方法如下:
[0013]11.創(chuàng)建紅色通道、綠色通道、藍(lán)色通道的直方圖統(tǒng)計(jì)的數(shù)組,大小為256個(gè),并且初始化數(shù)組內(nèi)的數(shù)據(jù)為O ;
[0014]12.依次對(duì)原始數(shù)據(jù)各個(gè)像素點(diǎn)的紅色通道、綠色通道、藍(lán)色通道的顏色值進(jìn)行統(tǒng)計(jì);即
[0015]rHist[rColor] = rHist[rColor]+1 ;
[0016]gHist[gColor] = gHist[gColor]+1 ;
[0017]bHist[bColor] = bHist[bColor]+1 ;
[0018]其中,rHist、gHist、bHist分別為紅色通道、綠色通道、藍(lán)色通道的直方圖統(tǒng)計(jì)的數(shù)組,rCo I or、gCo I or、bCo I or分別為原始數(shù)據(jù)中各個(gè)像素點(diǎn)對(duì)應(yīng)的紅色通道、綠色通道、藍(lán)色通道的顏色值。
[0019]作為一種較佳實(shí)施例,所述步驟20中設(shè)置原始數(shù)據(jù)中的陰影部分和高光部分的修剪值的公式如下:
[0020]nTrimLowCount = 0.5+lowK*w*h ;
[0021]nTrimHighCount = 0.5+highK*w*h ;
[0022]其中,nTrimLowCount為陰影部分的修剪值;nTrimHighCount為高光部分的修剪值;1wK為陰影部分的修剪百分比,范圍從0.001到0.0I之間;highK為高光部分的修剪百分比,范圍從0.001到0.01之間;w與h分別為原始數(shù)據(jù)的寬和高。
[0023]作為一種較佳實(shí)施例,所述步驟30中陰影部分的上限值的計(jì)算方法為:初始化索引為0,對(duì)直方圖統(tǒng)計(jì)的數(shù)組上的對(duì)應(yīng)索引的個(gè)數(shù)進(jìn)行累加,如果大于步驟20中的陰影部分的修剪值則退出,否則,索引加上一并繼續(xù)對(duì)直方圖統(tǒng)計(jì)的數(shù)組上的對(duì)應(yīng)索引的個(gè)數(shù)進(jìn)行累加,直到退出為止;即得到陰影部分的上限值為該索引值。
[0024]作為一種較佳實(shí)施例,所述步驟30中高光部分的下限值的計(jì)算方法為:初始化索引為255,對(duì)直方圖統(tǒng)計(jì)的數(shù)組上的對(duì)應(yīng)索引的個(gè)數(shù)進(jìn)行累加,如果大于步驟20中的高光部分的修剪值則退出,否則,索引減去一并繼續(xù)對(duì)直方圖統(tǒng)計(jì)數(shù)組上的對(duì)應(yīng)索引的個(gè)數(shù)進(jìn)行累加,直到退出為止;即得到高光部分的下限值為該索引值。
[0025]作為一種較佳實(shí)施例,所述步驟40中的最小上限值與最大下限值的計(jì)算公式如下:
[0026]sect1nLow = min (rLow, min (gLow, bLow));
[0027]sect1nHigh = max (rHigh, max (gHigh, bHigh));
[0028]其中,sect1nLow為最小上限值;rLow、gLow、bLow為步驟30中得到的紅色通道、綠色通道、藍(lán)色通道的陰影部分的上限值;SeCt1nHigh為最大下限值;rHigh、gHigh、bHigh為步驟30中得到的紅色通道、綠色通道、藍(lán)色通道的高光部分的下限值。
[0029]作為一種較佳實(shí)施例,所述步驟50中最終最小上限值與最終最大下限值的計(jì)算公式如下:
[0030]sect1nResultLow = min(lowThreshold, sect1nLow);
[0031]sect1nResultHigh = max(highThreshold, sect1nHigh);
[0032]其中,sect1nResultLow為最終最小上限值;lowThreshold為陰影部分的閾值,范圍從10到92之間;sect1nLow為步驟40中得到的最小上限值;sect1nResulthigh為最終最大下限值;highThreshold為高光部分的閾值,范圍從168到245之間;sect1nHigh為步驟40中得到的最大下限值。
[0033]作為一種較佳實(shí)施例,所述步驟60中的映射表的計(jì)算方法如下:
[0034]61.創(chuàng)建映射表mapTable,大小為256個(gè),并將數(shù)組的數(shù)據(jù)都初始化為O ;并初始化索引i為O ;
[0035]62.判斷索引是否大于或等于256,如果是則退出;否則判斷索引是否小于最終最小上限值,如果小于的話,則數(shù)組中該索引下的值為O ;否則繼續(xù)判斷是否大于最終最大下限值,如果大于的話,則數(shù)組中該索引下的值為255 ;否則根據(jù)以下公式獲得該索引下的值:
[0036]mapTable [i] = 0.4+(1-sect1nResultLow)*255/(sect1nResultHigh-sect1nResultLow);
[0037]其中,mapTable為映射表;i為索引值;sect1nResultLow為最終最小上限值;sect1nResultHigh為最終最大下限值;
[0038]接著將索引加上一,并繼續(xù)重新步驟62,直到退出為止。
[0039]作為一種較佳實(shí)施例,所述步驟60中將原始數(shù)據(jù)中的各個(gè)像素點(diǎn)進(jìn)行顏色映射得到結(jié)果數(shù)據(jù)的計(jì)算方法如下:
[0040]rResult = mapTable[rColor];
[0041]gResult = mapTable[gColor];
[0042]bResult = mapTable[bColor];
[0043]其中,rResult、gResult、bResult為結(jié)果數(shù)據(jù)上對(duì)應(yīng)的像素點(diǎn)的紅色通道、綠色通道、藍(lán)色通道的顏色值;rColor、gColor、bColor為原始數(shù)據(jù)上對(duì)應(yīng)的像素點(diǎn)的紅色通道、綠色通道、藍(lán)色通道的顏色值;mapTable為映射表。
[0044]本發(fā)明的有益效果是:
[0045]本發(fā)明的一種自動(dòng)調(diào)整對(duì)比度的拍攝方法,其通過對(duì)原始數(shù)據(jù)進(jìn)行直方圖統(tǒng)計(jì),并結(jié)合其陰影部分和高光部分的修剪值分別計(jì)算出陰影部分的上限值與高光部分的下限值,進(jìn)而通過極值計(jì)算分別得到最小上限值與最大下限值,最后通過閥值計(jì)算得到最終最小上限值與最終最大下限值,以及根據(jù)所述最終最小上限值與最終最大下限值得到映射表,將原始數(shù)據(jù)中的各個(gè)像素點(diǎn)進(jìn)行顏色映射得到結(jié)果數(shù)據(jù);從而能夠很好的處理數(shù)據(jù)中陰影部分與高光部分之間的對(duì)比度調(diào)整以得到合適的對(duì)比度,防止對(duì)比度調(diào)整過大導(dǎo)致圖像失真,既可以應(yīng)用于拍照過程,也適用于視頻的錄像過程,操作簡單快捷,無需人工處理,并且效果好。
【附圖說明】
[0046]此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0047]圖1為本發(fā)明的自動(dòng)調(diào)整對(duì)比度的拍攝方法的流程簡圖。
【具體實(shí)施方式】
[0048]為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0049]如圖1所示,本發(fā)明的一種自動(dòng)調(diào)整對(duì)比度的拍攝方法,其包括以下步驟:
[0050]10.對(duì)攝像頭捕獲的原始數(shù)據(jù)中的各個(gè)像素點(diǎn)進(jìn)行紅色通道、綠色通道、藍(lán)色通道的直方圖統(tǒng)計(jì);
[0051]20.設(shè)置原始數(shù)據(jù)中的陰影部分和高光部分的修剪值;
[0052]30.計(jì)算紅色通道、綠色通道、藍(lán)色通道的陰影部分的上限值與高光部分的下限值;
[0053]40.對(duì)所述陰影部分的上限值進(jìn)行最小值計(jì)算得到最小上限值;對(duì)所述高光部分的下限值進(jìn)行最大值計(jì)算得到最大下限值;
[0054]50.對(duì)所述最小上限值與所述最大下限值進(jìn)行閾值計(jì)算得到最終最小上限值與最終最大下限值;
[0055]60.根據(jù)所述的最終最小上限值與最終最大下限值得到映射表,并將原始數(shù)據(jù)中的各個(gè)像素點(diǎn)進(jìn)行顏色映射,得到結(jié)果數(shù)據(jù)。
[0056]本實(shí)施例中,所述步驟10中的直方圖統(tǒng)計(jì)方法主要包括以下步驟:
[0057]11.創(chuàng)建紅色通道、綠色通道、藍(lán)色通道的直方圖統(tǒng)計(jì)的數(shù)組,大小為256個(gè),并且初始化數(shù)組內(nèi)的數(shù)據(jù)為O ;
[0058]12.依次對(duì)原始數(shù)據(jù)各個(gè)像素點(diǎn)的紅色通道、綠色通道、藍(lán)色通道的顏色值進(jìn)行統(tǒng)計(jì);即
[0059]rHist[rColor] = rHist[rColor]+1 ;
[0060]gHist[gColor] = gHist[gColor]+1 ;
[0061]bHist[bColor] = bHist[bColor]+1 ;
[0062]其中,rHist、gHist、bHist分別為紅色通道、綠色通道、藍(lán)色通道的直方圖統(tǒng)計(jì)的數(shù)組,rCo I or、gCo I or、bCo I or分別為原始數(shù)據(jù)中各個(gè)像素點(diǎn)對(duì)應(yīng)的紅色通道、綠色通道、藍(lán)色通道的顏色值。
[0063]所述步驟20中設(shè)置原始數(shù)據(jù)中的陰影部分和高光部分的修剪值的公式如下:
[0064]nTrimLowCount = 0.5+lowK*w*h:
[0065]nTrimHighCount = 0.5+highK*w*h ;
[0066]其中,nTrimLowCount為陰影部分的修剪值;nTrimHighCount為高光部分的修剪值;lowK為陰影部分的修剪百分比,范圍從0.001到0.01之間,本實(shí)施例中優(yōu)選為0.003 ;highK為高光部分的修剪百分比,范圍從0.001到0.01之間,本實(shí)施例中優(yōu)選為0.003 與h分別為原始數(shù)據(jù)的寬和高。
[0067]本實(shí)施例中,所述步驟30中陰影部分的上限值的計(jì)算方法為:初始化索引為0,對(duì)直方圖統(tǒng)計(jì)的數(shù)組上的對(duì)應(yīng)索引的個(gè)數(shù)進(jìn)行累加,如果大于步驟20中的陰影部分的修剪值則退出,否則,索引加上一并繼續(xù)對(duì)直方圖統(tǒng)計(jì)的數(shù)組上的對(duì)應(yīng)索引的個(gè)數(shù)進(jìn)行累加,直到退出為止;即得到陰影部分的上限值為該索引值;所述步驟30中高光部分的下限值的計(jì)算方法為:初始化索引