您好,登錄后才能下訂單哦!
基于FPGA的人臉位置定位的仿真實(shí)現(xiàn)是怎么樣的,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
基于FPGA的人臉位置定位的仿真實(shí)現(xiàn)
1 概述
在膚色識(shí)別算法中,常用的顏色空間為Ycbcr,Y代表亮度,cb代表藍(lán)色分量,cr代表紅色分量。
由于膚色在 YCbCr 空間受亮度信息的影響較小,本算法直接考慮 YCbCr 空間的 CbCr 分量,映射為兩維獨(dú)立分布的 CbCr 空間。在 CbCr 空間下,膚色類聚性好,利用人工閾值法將膚色與非膚色區(qū)域分開,形成二值圖像。
RGB 轉(zhuǎn) 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
對(duì)膚色進(jìn)行判定的條件常使用如下判定條件:
Cb > 77&& Cb < 127
Cr > 133&& Cr < 173
本節(jié)目標(biāo):在復(fù)雜環(huán)境中識(shí)別人臉膚色,并且提取膚色,完成人臉位置的定位。
2實(shí)驗(yàn)程序
圖1 實(shí)驗(yàn)原圖
由于圖1不是800*600的圖像,我們使用畫圖工具將圖1轉(zhuǎn)化成800*600。
通過matlab查找人臉膚色范圍如圖2.
圖2 matlab查找人臉膚色范圍(cb,cr)
人臉顏色轉(zhuǎn)化為黑色,其他顏色轉(zhuǎn)化為背景白色。
/*
Modulename: face_location.v
Description: face location
Data: 2018/11/21
e-mail: 137194782@qq.com
微信公眾號(hào): FPGA開源工作室
*/
`timescale1ns/1ps
moduleface_location(
input pix_clk,
input reset_n,
input [23:0] i_rgb,
input [23:0] i_gray,
input [23:0] i_ycbcr,
input i_h_sync,
input i_v_sync,
input i_de,
output [23:0] skin_binary_image,
output [23:0] skin_rgb_image,
output [23:0] skin_gray_image,
output o_h_sync,
output o_v_sync,
output o_de
);
//*****************************************
// skindetection parameter define
//*****************************************
parameterY_LOW = 8'd35;
parameterY_HIGH = 8'd60;
parameterCB_LOW = 8'd93;
parameterCB_HIGH = 8'd120;
parameterCR_LOW = 8'd135;
parameterCR_HIGH = 8'd165;
wire [7 : 0] y_8b;
wire [7 : 0] cb_8b;
wire [7 : 0] cr_8b;
reg h_sync_delay;
reg v_sync_delay;
reg de_delay;
reg [23:0] skin_binary_r;
reg [23:0] skin_rgb_r;
reg [23:0] skin_gray_r;
assign y_8b =i_ycbcr[23:16];
assign cb_8b = i_ycbcr[15:8];
assign cr_8b = i_ycbcr[7:0];
always@(posedge pix_clk or negedge reset_n) begin
if(!reset_n) begin
skin_binary_r <= 24'h000000;
skin_rgb_r <= 24'h000000;
skin_gray_r <= 24'h000000;
end
else if((cb_8b > CB_LOW && cb_8b< CB_HIGH) && (cr_8b > CR_LOW && cr_8b < CR_HIGH))begin
skin_binary_r <= 24'b000_000;
skin_rgb_r <= i_rgb;
skin_gray_r <= i_gray;
end
else begin
skin_binary_r <= 24'hfff_fff;
skin_rgb_r <= 24'hFFFFFF;
skin_gray_r <= 24'hFFFFFF;
end
end
always@(posedge pix_clk) begin
h_sync_delay <= i_h_sync;
v_sync_delay <= i_v_sync;
de_delay <= i_de;
end
assigno_h_sync = h_sync_delay;
assigno_v_sync = v_sync_delay;
assigno_de = de_delay;
assignskin_binary_image = skin_binary_r;
assignskin_rgb_image = skin_rgb_r;
assignskin_gray_image = skin_gray_r;
endmodule
3 實(shí)驗(yàn)結(jié)果
圖3 實(shí)驗(yàn)結(jié)果
從圖3中可以看出img5提取出了人臉膚色,img6框出了人臉范圍。實(shí)驗(yàn)成功。
本節(jié)實(shí)驗(yàn)只是簡(jiǎn)單的人臉位置定位仿真程序,對(duì)于多個(gè)人臉,或者有其他類似膚色干擾暫時(shí)還不能識(shí)別。
看完上述內(nèi)容,你們掌握基于FPGA的人臉位置定位的仿真實(shí)現(xiàn)是怎么樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。