Zynq-7000 人體膚色識別

  • 2019 年 10 月 29 日
  • 筆記

Zynq-7000 人體膚色識別

1 背景知識

在膚色識別算法中,常用的顏色空間為Ycbcr,Y代表亮度,cb代表藍色分量,cr代表紅色分量。

由於膚色在YCbCr 空間受亮度信息的影響較小,本算法直接考慮 YCbCr 空間的 CbCr分量,映射為兩維獨立分佈的 CbCr空間。在 CbCr空間下,膚色類聚性好,利用人工閾值法將膚色與非膚色區域分開,形成二值圖像。

RGB 轉 YCbCr 的公式為:

Y = 0.257*R+0.564*G+0.098*B+16

Cb= -0.148*R-0.291*G+0.439*B+128

Cr = 0.439*R-0.368*G-0.071*B+128

對膚色進行判定的條件常使用如下判定條件:

Cb > 77 && Cb < 127

Cr > 133 && Cr < 173

2 zynq-7000的膚色識別實現

本節工程的建立基於《Zynq-7000電子相冊的實現》,工程創建以及arm端代碼的編寫請參考《Zynq-7000電子相冊的實現》。

2.1 膚色識別IP的介紹

Pin name

function

Pix_clk

像素時鐘

I_rgb

Rgb888輸入

I_gray

灰度輸入

I_ycbcr

Ycbcr顏色空間輸入

Skin_binary_image

二值圖像輸出,膚色為白色,背景為黑色

Skin_rgb_image

膚色為白色,背景為rgb

Skin_gary_image

膚色為白色,背景為灰度

2.2system 模塊圖

從總體模塊圖可以看到首先實現rgb顏色空間轉ycbcr顏色空間,其次實現膚色識別。

2.3 實驗結果

實驗原圖1

實驗原圖2

實驗結果圖1

實驗結果圖2

結果分析:從實驗原圖和實驗結果來看,膚色識別模塊將某些非膚色部分也識別稱膚色,這裡我們需要改變的對膚色進行判定的條件:

Cb > 77 && Cb < 127

Cr > 133 && Cr < 173

調整cb和cr分量的閾值來達到最佳的膚色識別效果。