2016-02-20 87 views
0

我必须在Matlab中做笑脸检测,并且我被卡在唇角的过滤。为此我使用以下方法。Matlab中的笑脸检测

img = imread('smile.jpg'); 

faceDetector = vision.CascadeObjectDetector('Mouth','MergeThreshold',160); 
cornerDetector = vision.CornerDetector('Method','Harris corner detection (Harris & Stephens)'); 
Irgb2gray=rgb2gray(img); 

bboxes = step(faceDetector, Irgb2gray); 
lips = imcrop(Irgb2gray,bboxes); 

C = corner(lips); 
imshow(lips); 
hold on; 
plot(C(:,1), C(:,2), 'r*'); 

我得到的图像的角落为:

enter image description here

我想申请一些过滤器,这样可以摆脱一些角落是嘴唇之外的。我被困在这一点上,我怎么会知道哪些是好角落,哪些不好? 然后,纠正角落后,我将不得不计算他们之间的距离,以便我可以告诉是否有笑脸。

任何人都可以请帮我过滤角落?我会感谢你。

+0

喂smailing面孔和非模拟到神经网络,并开始训练 – dynamic

+0

Hammad:如果你想手动找到微笑,然后找到角落是不错的选择 - 你可能会发现返回角之间的均方根距离。并选择它们之间最大距离的一对 –

+0

另请尝试:如果您可以在最远的像素之间绘制线条,它应该可以解决问题,因为它很可能就是嘴唇之间的线条。 –

回答

0

在这种情况下,我会训练微笑与非微笑分类器。您可以使用计算机视觉系统工具箱中的extractHOGFeaturesextractLBPFeatures函数来提取要素,然后使用统计和机器学习工具箱中的fitcsvm函数来训练分类器。当然,你也必须收集笑脸和非笑脸的图像,并使用imresize来使它们的尺寸相同。