Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I've learnt about how to extract features from a single image as described in this example:
https://www.mathworks.com/help/vision/ref/extractlbpfeatures.html
Now I am working with datasets of 1000 images for my matlab project to extract features of bicycle, car and motorbike. I have three separate folders including bicycle, car and motorbike in my dataset. During execution, I am getting error saying,
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);
What should I do? Below is my sample code ==>
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');
Please help me with my sample code implemented.
Let's look at two variables before you attempt to extract the features.
>> whos imSet bicycleData
Name Size Bytes Class Attributes
imSet 1x3 1494 imageSet
bicycleData 1x1 498 imageSet
The variable imSet
is a list of 3 imageSet
objects. The first represents bicycles, so you properly pull the bicycle imageSet into its own variable bicycleData
, which is a singular imageSet
. So far so good, but when we look at the documentation for extractLBPFeatures
...
features = extractLBPFeatures(I,Name,Value)
I — Input image
Input image, specified as an M-by-N 2-D grayscale image that is real, and non-sparse.
This function can only extract the features of one grayscale image at a time. You'll have to iterate through your imageSet
to extract the features one at a time.
% 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));
Keep in mind that you'll still have post-processing work to do. This extracts the features of each image, so you'll have to determine how you want to combine the feature data across each data set.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.