我必须在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*');
我正在拍摄一张照片的角落:
我想应用一些过滤器,这样我就可以摆脱Lips之外的一些角落。我坚持这一点,我怎么知道哪些是好角落和那些不好的角落? 然后在纠正角落后,我必须计算它们之间的距离,以便我可以判断是否有笑脸。
任何人都可以帮助我过滤角落吗?我会感激你的。
答案 0 :(得分:0)
在这种情况下,我会训练微笑与非微笑分类器。您可以使用计算机视觉系统工具箱中的extractHOGFeatures
或extractLBPFeatures
功能提取功能,然后使用统计和机器学习工具箱中的fitcsvm
功能来训练分类器。当然,您还必须收集微笑和不微笑的图像,并使用imresize
使它们具有相同的大小。