Если ваши изображения содержат объект, уже сегментированный, как показывают примеры, вы можете создать двоичное изображение, в котором вы указываете объект или фоновый пиксель.
После этого, предполагая, что объекты обычно не вращаются или не скручиваются, вы можете использовать простые функции для классификации. Например, для примера выше, просто подсчитайте процент строк сканирования, где есть 2 пробега пикселей переднего плана. Для рубашки это должно быть низкое значение, а для брюк оно должно быть высоким.
Очевидно, что если приведенные примеры изображений не являются репрезентативными для проблемы, которую вы пытаетесь решить, это не сработает.
EDIT: Некоторые примеры кода MATLAB:
function ratio=TwoRunFeature(I)
g=rgb2gray(I);
b=imdilate(g<255,ones(5));
d=abs(imfilter(b,[-1 1]));
runs=sum(d,2);
ratio=sum(runs==2)/sum(runs==1);
end
function TestImage(name)
I=imread(name);
fprintf('%s: %f\n',name,TwoRunFeature(I));
end
TestImage('pants.jpg');
TestImage('shirt.jpg');
Печать:
pants.jpg: 1.947977
shirt.jpg: 0.068627
штаны будут давать высокие цифры и рубашки низкие. Просто порог где угодно, и все готово.
Привет Dajuric: соответствующий шаблон будет делать здесь? bez работает только для одного изображения нет? означает проверить здесь http://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html – usernan
Можете ли вы предоставить мне любые примеры для SURF + SVM – usernan
Это это другой тип соответствия шаблонов, где вы можете создавать несколько шаблонов экземпляров. См. Статью (ссылка). – dajuric