在大佬的博客看到这篇文章:https://www.cnblogs.com/Imageshop/p/3264238.html ,关于一个肤色检测的算法,很感兴趣,所以打算以自己的方式总结和C++实现一下这个算法。
算法来源
https://files-cdn.cnblogs.com/files/Imageshop/Adaptive_skin_color_modeling_using_the_skin_locus.pdf
https://files-cdn.cnblogs.com/files/Imageshop/A_novel_method_for_detecting_lips_eyes_and_faces_in_real_time.PDF
https://wenku.baidu.com/view/afb818f14693daef5ef73d11.html
算法原理
上面的第一篇论文首次提出了二次多项式混合模型,然后第2篇论文对此算法进行了改进。最后得出的模型由2个二次多项式和一个圆方程构成,这就是混合的意思。方程为:
l u p p e r ( r ) = − 1.3767 r 2 + 1.0743 r + 0.1452 ( 1 ) l_{upper}(r)=-1.3767r^2+1.0743r+0.1452 (1) lupper(r)=−1.3767r2+1.0743r+0.1452(1)
l l o w e r ( r ) = − 0.776 r 2 + 0.5601 r + 0.1766 ( 2 ) l_{lower}(r)=-0.776r^2+0.5601r+0.1766(2) llower(r)=−0.776r2+0.5601r+0.1766(2)
W ( r , g ) = ( r − 0.33 ) 2 + ( g − 0.33 ) 2 ( 3 ) W(r, g)=(r-0.33)^2+(g-0.33)^2 (3) W(r,g)=(r−0.33)2+(g−0.33)2(3)
在以上3个方程的基础上,肤色检测可以通过以下规则实现:
R 1 : g > l l o w e r ( r ) R_1: g>l_{lower}(r) R1:g>ll