本设计是基于肤色检测的基础上进行的人脸检测,上一篇用MATLAB实现了对人脸的框选代码实现,根据这个原理,博主将这个算法移植到FPGA上,用纯逻辑来实现。FPGA的并行处理优势,在视频图像采集系统中的进行简单的预处理,这个系统主要分为四个部分,视频图像采集、图像存储、算法处理、图像显示。
到了一定阶段,移植也是一种能力。这句话不是我说的,我从书上看到的。老话说的好,何必重复造轮子。好吧,我想说的是,这个工程中部分代码是我移植过来的。
摄像头使用的OV7725,配置和采集部分是移植过来的,SDRAM控制是我之前自己调试的一个,频率跑到了100MHz没啥问题。
整个设计人脸检测一共分为以下几步,
RGB到YCbCr色彩空间转换
Cb、Cr阈值分离肤色二值化
先膨胀后腐蚀(闭运算)
人脸区域框选
肤色识别
简单来说就是通过皮肤的颜色来判断图片中你脸的为止,一副图片有RGB三分量的颜色组成,将RGB色彩空间转换成YCbCr色彩空间上,肤色的判断就可以用Cb和Cr分量的阈值来判断。所以您看下文的视频,把我的小手也圈进去啦!
肤色识别YCbCr阈值
77 < Cb < 127
133 < Cr < 173