Как извлечь особенности LBP из наборов данных в Matlab? - PullRequest
0 голосов
/ 19 октября 2018

Я узнал о том, как извлечь элементы из одного изображения, как описано в этом примере: https://www.mathworks.com/help/vision/ref/extractlbpfeatures.html

Сейчас я работаю с наборами данных из 1000 изображений для моего проекта Matlab для извлечения функций велосипеда,автомобиль и мотоцикл.У меня есть три отдельные папки, включая велосипед, автомобиль и мотоцикл в моем наборе данных.Во время выполнения я получаю сообщение об ошибке:

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 голосов
/ 19 октября 2018

Давайте рассмотрим две переменные, прежде чем пытаться извлечь объекты.

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

Переменная imSet представляет собой список из 3 imageSet объектов.Первый представляет велосипеды, так что вы правильно перетаскиваете изображение велосипеда в его собственную переменную bicycleData, которая является единственным imageSet.Пока все хорошо, но когда мы смотрим на документацию для extractLBPFeatures ...

features = extractLBPFeatures(I,Name,Value)

I - Входное изображение

Входное изображение,задается как реалистичное и не разреженное 2-D изображение в градациях серого.


Эта функция может извлекать одновременно только одно изображение в градациях серого.Вам нужно будет перебирать 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

Имейте в виду, что вам все равно придется выполнять работу по постобработке.При этом извлекаются элементы каждого изображения, поэтому вам нужно определить, как вы хотите объединить данные объектов в каждом наборе данных.

...