如何从Matlab的数据集中提取LBP特征?

时间:2018-10-19 13:31:20

标签: matlab image-processing machine-learning feature-extraction lbph-algorithm

我已经了解了如何如以下示例中所述从单个图像中提取特征:https://www.mathworks.com/help/vision/ref/extractlbpfeatures.html

现在,我正在为我的matlab项目处理1000张图像的数据集,以提取自行车,汽车和摩托车的特征。我的数据集中有三个单独的文件夹,包括自行车,汽车和摩托车。在执行过程中,我收到错误消息,

Error using extractLBPFeatures>parseInputs (line 148)

Expected I to be one of these types:

double, single, int16, uint16, uint8, logical

Instead its type was imageSet.

Error in extractLBPFeatures (line 129)

params = parseInputs(I,varargin{:});

Error in LBP (line 21)

bycycleLBP = extractLBPFeatures(bycycleData,'Upright',false);

我该怎么办?以下是我的示例代码==>

imSet = imageSet('dataset\train','recursive');

bicycleData = imSet(1);
carData = imSet(2);
motorbikeData = imSet(3);

%%Extract LBP Features
bicycleLBP = extractLBPFeatures(bicycleData,'Upright',false);
carLBP = extractLBPFeatures(carData,'Upright',false);
motorbikeLBP = extractLBPFeatures(motorbikeData,'Upright',false);

bicycle = bicycleLBP.^2;
car = carLBP.^2;
motorbike = motorbikeLBP.^2;

figure
bar([bicycle; car; motorbike]','grouped');
title('LBP Features Of bicycle, car and motorbike');
xlabel('LBP Histogram Bins');
legend('Bicycle','Car','Motorbike');

请帮助我实现我的示例代码。

1 个答案:

答案 0 :(得分:0)

让我们先看两个变量,然后再尝试提取特征。

>> whos imSet bicycleData
  Name             Size            Bytes  Class       Attributes            
  imSet            1x3              1494  imageSet 
  bicycleData      1x1               498  imageSet 

变量imSet是3个imageSet对象的列表。第一个代表自行车,因此您可以将自行车imageSet适当地拉到它自己的变量bicycleData中,变量是imageSet。到目前为止一切顺利,但是当我们查看extractLBPFeatures ...

的文档时
  

features = extractLBPFeatures(I,Name,Value)

     

I —输入图像

     

输入图像,指定为真实且非稀疏的M×N二维灰度图像。


此功能一次只能提取一张灰度图像的特征。您必须遍历imageSet才能一次提取一个功能。

% Create a cell array to store features per image.
bicycleFeatures = cell(size(bicycleData.ImageLocation));

for i = 1:length(bicycleFeatures)
    % Read in individual image, and convert to grayscale to extract features.
    image = imread(bicycleData.ImageLocation{i});
    bicycleFeatures{i} = extractLBPFeatures(rgb2gray(image));
end

请记住,您仍然需要进行后处理工作。这将提取每个图像的特征,因此您必须确定如何在每个数据集中组合特征数据。