我已经了解了如何如以下示例中所述从单个图像中提取特征: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');
请帮助我实现我的示例代码。
答案 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
请记住,您仍然需要进行后处理工作。这将提取每个图像的特征,因此您必须确定如何在每个数据集中组合特征数据。