人臉膚色相似度檢測 程式及執行結果

2021-08-04 02:45:36 字數 2032 閱讀 7447

**部分:

#轉 rgb 到ycrcb 顏色空間

image_ycrcb = cv2.cvtcolor(img, cv2.color_bgr2ycrcb)

cv2.imshow('ycrcb',image_ycrcb)

#膚色模型

cb_mean = 117.4361

cr_mean = 156.5599

cov00 = 160.1301

cov01 = 12.1430

cov10 = 12.1430

cov11 = 299.4574

img_h = image_ycrcb.shape[0]

img_w = image_ycrcb.shape[1]

#創造矩陣

#sim = mat(zeros(img_h,img_w))

sim =

for i in range(img_h):

tmp =

for j in range(img_w):

#計算膚色相似度

print(sim[3][1])

for i in range(img_h):

for j in range(img_w):

cr = image_ycrcb[i,j][1] #cr

cb = image_ycrcb[i,j][2] #cb

tt = (cb-cb_mean)*((cb-cb_mean)*cov11 - (cr-cr_mean)*cov10) + (cr-cr_mean)*(-(cb-cb_mean)*cov01 + (cr-cr_mean)*cov00)

tt = (-0.5*tt)/(cov00*cov11-cov01*cov10)

sim[i][j] = math.exp(tt)

print(sim[3][1])

#中值濾波

sim = np.float32(sim)

sim = signal.medfilt2d(sim,(3,3)) #matlab,haha

#統計所有畫素點的最大膚色相似度

max = 0

for i in range(img_h):

for j in range(img_w):

if(sim[i][j]>max):

max = sim[i][j]

#各畫素點的膚色相似度值歸一化

for i in range(img_h):

for j in range(img_w):

sim[i][j] = sim[i][j]/max

#相似度值變換到[0,255]上,以灰度影象顯示

執行結果:

原圖:

程式處理:

人臉膚色檢測模型

一 概述 建立模型就是在已知物件的特徵基礎上來給物件建立乙個模型,並藉此對物件實現判斷 檢測 繪製 控制等功能。人臉建模的方式很多,各有各的優缺點 膚色模型較之幾何模型來,要相對簡單,執行速度快。而在膚色模型中常用的是高斯模型。二 建模 1 高斯膚色模型 從圖 2 9 中可以看出膚色在 cr cb ...

基於膚色高斯概率模型的人臉檢測

include include opencv2 opencv.hpp include using namespace std using namespace cv void fillhole mat src 基於漫水填充的孔洞填充 define pi 3.14156 void main 基於高斯膚色...

資料相似度檢測

上面這個是中文的乙個解釋。這裡我並不是為了要進行某種相似度函式的解釋,而是說,怎麼來解決我一直困擾的問題。n 2問題。就是要獲取全部的對比樣本,我應該怎麼做,在大資料環境下,如果上千上萬個樣本,這玩意就更難弄了。我這裡出現的問題就是,我前面在做這個二進位制程式的比較,然後發現了這麼乙個問題,我使用s...