一種基于膚色識別的測光方法及測光系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種基于膚色識別的測光方法及測光系統(tǒng),其通過對攝像頭捕獲的圖像數(shù)據(jù)進行人臉檢測,并進行皮膚檢測及膚色概率統(tǒng)計,將統(tǒng)計獲取的膚色概率和最高的皮膚塊的中心點位置與系統(tǒng)原始測光中心點進行比較,以確定最終的測光中心點;其針對性更強,能夠消除背景、頭發(fā)、眼睛等人臉非重點關注區(qū)域的影響,使測光效果更加穩(wěn)定和更加自然。
【專利說明】—種基于膚色識別的測光方法及測光系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及一種測光方法及測光系統(tǒng),特別是一種基于膚色識別的測光方法及應用該方法的測光系統(tǒng)。
【背景技術】
[0002]目前現(xiàn)有的以人臉為主的測光方法中,為了保證人臉部分盡可能多的被包含在測光區(qū)域中,必須增加人臉框的大小,這樣或多或少的在人臉測光區(qū)域中包含了背景和頭發(fā)的數(shù)據(jù),由于背景的亮度信息在不同場景和光照條件下變化較大,并且加之頭發(fā)和眼睛顏色的影響,導致基于人臉為主的測光非常的不穩(wěn)定,極大的影響了測光的效果。
【發(fā)明內容】
[0003]本發(fā)明為解決上述問題,提供了一種基于膚色識別的測光方法及測光系統(tǒng),其測光更有針對性,測光效果更穩(wěn)定、更自然。
[0004]為實現(xiàn)上述目的,本發(fā)明采用的技術方案為:
[0005]一種基于膚色識別的測光方法,包括以下步驟:
[0006]A.捕獲由攝像頭獲取的圖像數(shù)據(jù);
[0007]B.對所述圖像數(shù)據(jù)進行人臉檢測;
[0008]C.判斷是否檢測到人臉,如果是,則進入步驟D,否則跳轉至步驟A ;
[0009]D.根據(jù)檢測到的人臉位置進行皮膚檢測及膚色概率統(tǒng)計,并獲取膚色概率和最高的皮膚塊的中心點位置;
[0010]E.將步驟D中獲取的中心點位置與系統(tǒng)原始測光中心點進行比較并判斷是否需要重新測光,如果是,則進入步驟F,否則跳轉至步驟A ;
[0011]F.根據(jù)步驟D中獲取的中心點位置自動測光,并將該中心點位置保存為新測光中心點后跳轉至步驟A。
[0012]作為一種較佳的實施例:所述步驟D進一步包括:
[0013]Dl.對圖像數(shù)據(jù)進行人臉識別,獲取人臉區(qū)域;
[0014]D2.對獲取的人臉區(qū)域進行均值計算,獲取平均膚色;
[0015]D3.將人臉區(qū)域的數(shù)據(jù)進行分塊,對每個數(shù)據(jù)塊進行膚色概率的統(tǒng)計,并根據(jù)獲取的平均膚色計算當前數(shù)據(jù)塊的膚色概率映射表;
[0016]D4.根據(jù)獲取的膚色概率映射表對當前數(shù)據(jù)塊進行膚色識別,并獲取膚色概率和最高的數(shù)據(jù)塊的中心點。
[0017]作為一種較佳的實施例:所述步驟D2進一步包括:
[0018]D2.1.初始化原始皮膚模型;
[0019]D2.2.計算整個圖像的顏色均值,作為初始膚色的閾值;
[0020]D2.3.根據(jù)獲取的初始膚色的閾值計算人臉區(qū)域的平均膚色。
[0021]作為一種較佳的實施例:所述步驟D2.1進一步包括:[0022]D2.1.1.創(chuàng)建皮膚模型,大小為256*256 ;
[0023]D2.1.2.依次對皮膚模型進行賦值,具體偽代碼如下:
[0024]預設臨時變量AlphaValue、nMax、1、j為整數(shù)類型。
[0025]皮膚模型變量為SkinModel [256] [256]
[0026]For(i = O ;i < 256 ;i++)
[0027]{
[0028]判斷i是否大于128,如果大于128,則AlphaValue為255,否則為i*2 ;
[0029]計算獲得nMax 的值,計算公式為 nMax = min (256, AlphaValue*2);
[0030]For(j = O ;j < nMax ;j++)
[0031]{
[0032]計算對應位置的皮膚模型的值,計算公式為SkinModel [i] [j]=AlphaValue-(j/2);
[0033]}
[0034]For (j = nMax.j < 256 ; j++)
[0035]{
[0036]初始對應位置的皮膚模型的值為O ;
[0037]}
[0038]}。
[0039]作為一種較佳的實施例:所述步驟D2.2進一步包括:
[0040]D2.2.1.遍歷整個圖像的像素點,將紅色通道、綠色通道、藍色通道的顏色值累加,得到顏色累加值;
[0041]D2.2.2.將顏色累加值除以整個圖像的像素點的總數(shù),得到紅色通道、綠色通道、藍色通道的均值,作為初始膚色的閾值。
[0042]作為一種較佳的實施例:所述步驟D2.3進一步包括:
[0043]D2.3.1.根據(jù)如下公式計算平均膚色的灰度值:
[0044]GRAYl = 0.29腫RED+0.587*GREEN+0.114祁LUE
[0045]其中,GRAYl為圖像的當前像素點的灰度值;RED、GREEN、BLUE分別為圖像的當前像素點的紅、綠、藍通道的顏色值;
[0046]D2.3.2.將所述灰度值作為閾值,用來排除人臉區(qū)域非皮膚的部分;
[0047]D2.3.3.依次遍歷人臉區(qū)域里的像素點的顏色值,根據(jù)如下公式獲得平均膚色:
[0048]skin = SkinModel[red][blue];
[0049]其中,skin為經過皮膚模型的顏色映射后的膚色值;SkinModel為步驟D2.1的初始化原始皮膚模型;red為紅色通道的顏色值;blue為藍色通道的顏色值。
[0050]作為一種較佳的實施例:所述步驟D3的膚色概率映射表通過如下步驟獲取:
[0051]D3.1.創(chuàng)建膚色概率映射表,大小為256*256 ;
[0052]D3.2.依次對膚色概率映射表進行賦值,具體偽代碼如下;
[0053]預設臨時變量1、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue、OffsetJ為整數(shù)類型;
[0054]膚色概率映射表的變量為SkinProbability[256] [256];[0055]SkinRed為步驟D2.2.2.計算得到的紅色通道的均值;SkinBlue為步驟D2.2.2計算得到的藍色通道的均值;
[0056]預設SkinRed_Left 的值,計算公式為:SkinRed_Left = SkinRed-128 ;
[0057]For(i = O ;i < 256 ;i++)
[0058]{
[0059]計算Offset 的值,公式為 Offset = max (0, min (255, i_SkinRed_Left));
[0060]判斷Offset的值是否小于128,如果小于的,話則AlphaValue = 0ffset*2 ;如果大于等于128的話,則AlphaValue = 255 ;
[0061]For(j = O ;j < 256 ;j++)
[0062]{
[0063]計算OffsetJ 的值,公式為 OffsetJ = max (O, j-SkinBlue);
[0064]計算TempAlphaValue 的值,公式為 TempAlphaValue =max(AlphaValue-(OffsetJ*2),0);
[0065]判斷TempAlphaValue 的值。如果大于 160 的話,則 SkinProbability [i] [j]的值為 255 ;
[0066]如果小于90的話,則SkinProbability [i] [j]的值為0;否貝丨JSkinProbability[i] [j]的值為 TempAlphaValue+30 ;
`[0067]}
[0068]}。
[0069]作為一種較佳的實施例:所述步驟D4通過如下公式實現(xiàn):
[0070]skinColor = SkinProbability[red][blue]
[0071]其中,skinColor為結果圖的膚色概率值;SkinProbability為膚色概率映射表;red為像素點的紅色通道的顏色值;blue為像素點的藍色通道的顏色值。
[0072]作為一種較佳的實施例:所述步驟D3中將人臉區(qū)域的數(shù)據(jù)分為N*N塊,其中N大于等于10。
[0073]作為一種較佳的實施例:所述步驟E將所述的中心點與原始測光中心點進行比較,判斷所述的中心點與原始測光中心點之間的距離是否大于預定值?如果是,則進入步驟F,否則跳轉至步驟A。
[0074]作為一種較佳的實施例:所述的中心點與原始測光中心點之間的距離的計算公式為:
[0075]N = ^ji xNew - xOld i * I xNew - xOld ) + I vNew - vOld ) * I yNew - yOld )
[0076]其中,N為所述預定值,且N的取值范圍為I~50個像素;所述的中心點的坐標為
Y(xNew, yNew),所述原始測光中心點的坐標為X(x01d, yOld)。
[0077]另外,本發(fā)明還提供一種應用上述測光方法的基于膚色識別的測光系統(tǒng),其特征在于,其包括:
[0078]圖像獲取單元,其用于捕獲由攝像頭獲取的圖像數(shù)據(jù);
[0079]圖像檢測單元,其用于對所述圖像數(shù)據(jù)進行人臉檢測;
[0080]膚色計算單元,其用于根據(jù)人臉的位置計算膚色概率并最終確定其相應的中心占.[0081]自動測光單元,其用于根據(jù)所述的中心點對圖像進行自動測光。
[0082]作為一種較佳的實施例:所述自動測光單元將所述的中心點與原始測光中心點進行比較,當所述的中心點與原始測光中心點之間的距離大于預定值時,所述自動測光單元進行自動測光,并將所述的中心點保存為新的測光中心點。
[0083]作為一種較佳的實施例:所述的中心點與原始測光中心點之間的距離的計算公式為:
[0084]
【權利要求】
1.一種基于膚色識別的測光方法,其特征在于,包括以下步驟: A.捕獲由攝像頭獲取的圖像數(shù)據(jù); B.對所述圖像數(shù)據(jù)進行人臉檢測; C.判斷是否檢測到人臉,如果是,則進入步驟D,否則跳轉至步驟A; D.根據(jù)檢測到的人臉位置進行皮膚檢測及膚色概率統(tǒng)計,并獲取膚色概率和最高的皮膚塊的中心點位置; E.將步驟D中獲取的中心點位置與系統(tǒng)原始測光中心點進行比較并判斷是否需要重新測光,如果是,則進入步驟F,否則跳轉至步驟A ; F.根據(jù)步驟D中獲取的中心點位置自動測光,并將該中心點位置保存為新測光中心點后跳轉至步驟A。
2.根據(jù)權利要求1所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D進一步包括: Dl.對圖像數(shù)據(jù)進行人臉識別,獲取人臉區(qū)域; D2.對獲取的人臉區(qū)域進行均值計算,獲取平均膚色; D3.將人臉區(qū)域的數(shù)據(jù)進行分塊,對每個數(shù)據(jù)塊進行膚色概率的統(tǒng)計,并根據(jù)獲取的平均膚色計算當前數(shù)據(jù)塊的膚色概率映射表; D4.根據(jù)獲取的膚色概率映射表對當前數(shù)據(jù)塊進行膚色識別,并獲取膚色概率和最高的數(shù)據(jù)塊的中心點。`
3.根據(jù)權利要求2所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D2進一步包括: D2.1.初始化原始皮膚模型; D2.2.計算整個圖像的顏色均值,作為初始膚色的閾值; D2.3.根據(jù)獲取的初始膚色的閾值計算人臉區(qū)域的平均膚色。
4.根據(jù)權利要求3所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D2.1進一步包括: D2.1.1.創(chuàng)建皮膚模型,大小為256*256 ; D2.1.2.依次對皮膚模型進行賦值,具體偽代碼如下: 預設臨時變量AlphaValue、nMax、1、j為整數(shù)類型。 皮膚模型變量為SkinModel [256] [256]
For(i = O ;i < 256 ;i++)
{ 判斷i是否大于128,如果大于128,則AlphaValue為255,否則為i*2 ; 計算獲得nMax的值,計算公式為nMax = min (256, AlphaValue*2);
For(j = 0 ;j < nMax ;j++)
{ 計算對應位置的皮膚模型的值,計算公式為SkinModel [i] [j] = AlphaValue-(j/2);
}
For (j = nMax.j < 256 ; j++)
{初始對應位置的皮膚模型的值為O ;
}
1
5.根據(jù)權利要求3所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D2.2進一步包括: D2.2.1.遍歷整個圖像的像素點,將紅色通道、綠色通道、藍色通道的顏色值累加,得到顏色累加值; D2.2.2.將顏色累加值除以整個圖像的像素點的總數(shù),得到紅色通道、綠色通道、藍色通道的均值,作為初始膚色的閾值。
6.根據(jù)權利要求3所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D2.3進一步包括: D2.3.1.根據(jù)如下公式計算平均膚色的灰度值:
GRAYl = 0.299*RED+0.587*GREEN+0.114祁LUE 其中,GRAYl為圖像的當前像素點的灰度值;RED、GREEN、BLUE分別為圖像的當前像素點的紅、綠、藍通道的顏色值; D2.3.2.將所述灰度值作為閾值,用來排除人臉區(qū)域非皮膚的部分; D2.3.3.依次遍歷人臉區(qū)域里的`像素點的顏色值,根據(jù)如下公式獲得平均膚色: skin = SkinModel[red][blue]; 其中,skin為經過皮膚模型的顏色映射后的膚色值;SkinModel為步驟D2.1的初始化原始皮膚模型;red為紅色通道的顏色值;blue為藍色通道的顏色值。
7.根據(jù)權利要求5所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D3的膚色概率映射表通過如下步驟獲取: D3.1.創(chuàng)建膚色概率映射表,大小為256*256 ; D3.2.依次對膚色概率映射表進行賦值,具體偽代碼如下; 預設臨時變量 1、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue> OffsetJ 為整數(shù)類型; 膚色概率映射表的變量為SkinProbability [256] [256]; SkinRed為步驟D2.2.2計算得到的紅色通道的均值;SkinBlue為步驟D2.2.2計算得到的藍色通道的均值; 預設 SkinRed_Left 的值,計算公式為:SkinRed_Left = SkinRed-128 ;
For(i = O ;i < 256 ;i++)
{ 計算 Offset 的值,公式為 Offset = max (0, min (255, i_SkinRed_Left)); 判斷Offset的值是否小于128,如果小于的,話則AlphaValue = 0ffset*2 ;如果大于等于 128 的話,則 AlphaValue = 255 ;
For (j = O ;j < 256 ;j++)
{ 計算 OffsetJ 的值,公式為 OffsetJ = max (O, j-SkinBlue); 計算 TempAlphaValue 的值,公式為 TempAlphaValue = max (AlphaValue- (0ffsetJ*2),O); 判斷TempAlphaValue的值。如果大于160的話,貝丨J SkinProbability[i] [j]的值為.255 ; 如果小于 90 的話,則 SkinProbability [i] [j]的值為 O ;否則 SkinProbability [i] [j]的值為 TempAlphaValue+30 ;
}
}o
8.根據(jù)權利要求7所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D4通過如下公式實現(xiàn):
skinColor = SkinProbability[red][blue] 其中,skinColor為結果圖的膚色概率值;SkinProbability為膚色概率映射表;red為像素點的紅色通道的顏色值;blue為像素點的藍色通道的顏色值。
9.根據(jù)權利要求2所述的一種基于膚色識別的測光方法,其特征在于:所述步驟D3中將人臉區(qū)域的數(shù)據(jù)分為N*N塊,其中N大于等于10。
10.根據(jù)權利要求1所述的一種基于膚色識別的測光方法,其特征在于:所述步驟E將所述的中心點與原始測光中心點進行比較,判斷所述的中心點與原始測光中心點之間的距離是否大于預定值?如果是,則進入步驟F,否則跳轉至步驟A。
11.根據(jù)權利要求10所述的一種基于膚色識別的測光方法,其特征在于:所述的中心點與原始測光中心點之間的距離的計算公式為:
N = -y/( xNew — xOld ) * I xNe'v - xOld ) + ( yNew - yOld ) * ( yNew - yOld ) 其中,N為所述預定值,且N的取值范圍為I~50個像素;所述的中心點的坐標為Y(xNew, yNew),所述原始測光中心點的坐標為X(x01d, yOld)。
12.一種基于膚色識別的測光系統(tǒng),其特征在于,其包括: 圖像獲取單元,其用于捕獲由攝像頭獲取的圖像數(shù)據(jù); 圖像檢測單元,其用于對所述圖像數(shù)據(jù)進行人臉檢測; 膚色計算單元,其用于根據(jù)人臉的位置計算膚色概率并最終確定其相應的中心點; 自動測光單元,其用于根據(jù)所述的中心點對圖像進行自動測光。
13.根據(jù)權利要求12所述的一種基于膚色識別的測光系統(tǒng),其特征在于:所述自動測光單元將所述的中心點與原始測光中心點進行比較,當所述的中心點與原始測光中心點之間的距離大于預定值時,所述自動測光單元進行自動測光,并將所述的中心點保存為新的測光中心點。
14.根據(jù)權利要求13所述的一種基于膚色識別的測光系統(tǒng),其特征在于:所述的中心點與原始測光中心點之間的距離的計算公式為:
N = xNew - xOld ) * I xNew - 'Old ) + I yNew — yOld I * ( vNew - yOld ) 其中,N為所述預定值,且N的取值范圍為I~50個像素;所述的中心點的坐標為Y(xNew, yNew),所述原始測光中心點的坐標為X(x01d, yOld)。
【文檔編號】G06K9/62GK103729624SQ201310726930
【公開日】2014年4月16日 申請日期:2013年12月25日 優(yōu)先權日:2013年12月25日
【發(fā)明者】張偉, 張長定, 傅松林, 葉志鴻 申請人:廈門美圖移動科技有限公司