2016-02-20 90 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來使它們的尺寸相同。