2017-02-11 4 views
0

Я пробовал matlab CascadeObjectDetector путем подачи отрицательных и положительных изображений, но это не делает работу. Я хочу определить, стоит ли человек, стоящий на рис, босыми ногами или нет. Объект-детектор должен обнаруживать босые ноги. В отрицательных изображениях я только дал изображения для обуви. Если я смогу сделать это в opencv каким-то образом, пожалуйста, поделитесь этой техникой тоже.человеческое обнаружение стопы компьютерное зрение

non feet images(negative)

feet images(positive)

нога изображения папка содержит labelingSession.mat, которые содержат информацию для ROI (область интереса)

positiveInstances = labelingSession.ImageSet.ROIBoundingBoxes(1,:); 

%Add the image directory to the MATLAB path. 

imDir = fullfile(matlabroot,'toolbox','vision','visiondata',... 
'feet'); 

addpath(imDir); 
%Specify the foler for negative images. 
negativeFolder = fullfile(matlabroot,'toolbox','vision','visiondata',... 
'nonfeet'); 

%Create an imageDatastore object containing negative images. 
negativeImages = imageDatastore(negativeFolder); 
%Train a cascade object detector called 'stopSignDetector.xml' using HOG   features. NOTE: The command can take several minutes to run. 
trainCascadeObjectDetector('shoeDetector.xml',positiveInstances, ... 
negativeFolder,'FalseAlarmRate',0.1,'NumCascadeStages',5); 
+0

Публикация образцов изображений, которые вы использовали в качестве положительных/отрицательных образцов, пожалуйста, – Micka

+0

thx. Это не так, как работает каскадное обучение. ваши негативы вполне соответствуют (следует распространять на базовые изображения без каких-либо ног/обуви), но ваши положительные эффекты должны быть устранены, чтобы иметь только ногу и немного фона слева (одинаковое соотношение сторон для каждого образца). Вам нужно будет решить, хотите ли вы только определить босиком по фиксированному углу (приблизительно), или хотите ли вы комбинированный классификатор каждой стороны. Это может существенно повлиять на качество классификатора. – Micka

+0

, или вы неявно обрезали образцы позиционирования, аннотируя области в файле samples.txt? – Micka

ответ

0

Если вы заинтересованы только в извлечении образа ноги, то обнаружение кожи на основе HSV, сопровождаемое повторным расширением, должно давать лучшие результаты. См. Код ниже:

#include<iostream> 
#include<opencv2/core/core.hpp> 
#include<opencv2/imgproc/imgproc.hpp> 
#include<opencv2/highgui/highgui.hpp> 
#include<stdio.h> 
using namespace std; 
using namespace cv; 

int main() 

{ 

Mat f=imread("f2.png");//positive 
Mat hsv_th; 
cvtColor(f,f,CV_BGR2HSV); 

inRange(f,Scalar(0,100,0),Scalar(100,255,100),hsv_th); 
dilate(hsv_th,hsv_th,cv::Mat()); 
dilate(hsv_th,hsv_th,cv::Mat()); 
dilate(hsv_th,hsv_th,cv::Mat()); 
dilate(hsv_th,hsv_th,cv::Mat()); 


for(;;) 
{ 
    imshow("fore",f); 
    imshow("hsv",hsv_th); 

char c=waitKey(10); 
if(c=='b')//break when 'b' is pressed 
     { 
     break; 
     } 
} 
return 0; 
} 
Смежные вопросы