Undefined function 'extractLBP' for input arguments of type 'uint8'.
Ältere Kommentare anzeigen
I get this errror in my model and want to Extract local patches from the testing images and make predictions using the predict function
Error:
Undefined function 'extractLBP' for input arguments of type 'uint8'.
Error in extractLBPFeatures (line 19)
lbpImg = extractLBP(img, 'NumNeighbors', numNeighbors, 'Radius', radius);
Error in face_recognition_model_PLS (line 14)
trainFeatures{i} = extractLBPFeatures(img, numNeighbors, radius, numBins);
Code:
%Face Recognition using LRR
%% Load a dataset of grayscale face images
Dataset = imageDatastore('ExtendedYaleB', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
%% Split the data into training and testing sets
[trainImgs, testImgs] = splitEachLabel(Dataset, 0.7, 'randomized');
%% Extract local patches from the training images using the extractLBPFeatures function
numNeighbors = 8;
radius = 1;
numBins = numNeighbors*(numNeighbors-1)+3;
trainFeatures = cell(numel(trainImgs.Files),1);
for i = 1:numel(trainImgs.Files)
img = readimage(trainImgs,i);
trainFeatures{i} = LBPFeatures(img, numNeighbors, radius, numBins);
end
%% Train the local ridge regression model using the fitrlinear function and local ridge regression
lambda = 1;
span = 0.5;
for i = 1:numel(trainImgs.Files)
features = trainFeatures{i};
label = double(trainImgs.Labels(i));
idx = setdiff(1:numel(trainFeatures),i);
neighbors = vertcat(trainFeatures{idx});
neighborLabels = double(trainImgs.Labels(idx));
mdl = fitrlinear(neighbors,neighborLabels,'Learner','leastsquares','Lambda',lambda);
yhat = zeros(size(features));
for j = 1:size(features,1)
patch = features(j,:);
pred = predict(mdl,patch);
dist = pdist2(patch,neighbors);
w = exp(-dist.^2/(2*span^2));
yhat(j) = sum(w.*pred)/sum(w);
end
trainFeatures{i} = yhat;
end
trainFeatures = cell2mat(trainFeatures);
%% Train the linear regression model on the modified LBP features
mdl = fitrlinear(trainFeatures,double(trainImgs.Labels),'Learner','leastsquares','Lambda',lambda);
%% Save the model to a file
save('face_recognition_model.mat', 'mdl');
%% Extract local patches from the testing images and make predictions using the predict function
testFeatures = cell(numel(testImgs.Files),1);
for i = 1:numel(testImgs.Files)
img = readimage(testImgs,i);
testFeatures{i} = extractLBPFeatures(img, numNeighbors, radius, numBins);
end
testFeatures = cell2mat(testFeatures);
predictions = predict(mdl,testFeatures);
%% Evaluate the performance of the model using the confusionmat and classificationReport functions
confMat = confusionmat(testImgs.Labels,predictions);
classificationReport = classificationReport(testImgs.Labels,predictions);
%% Load the saved model from a file
load('face_recognition_model.mat');
%% Use the loaded model for prediction
testImg = imread('test_image.jpg');
testFeatures = extractLBPFeatures(testImg, numNeighbors, radius, numBins);
prediction = predict(mdl,testFeatures);
10 Kommentare
Walter Roberson
am 3 Aug. 2023
Do you have the Computer Vision toolbox installed?
Abdelrahman
am 3 Aug. 2023
Walter Roberson
am 3 Aug. 2023
What shows up for
which -all extractLBPFeatures
ver vision
Are you able to run the example
openExample('vision/VisualizeLBPFeatureHistogramsExample')
Abdelrahman
am 3 Aug. 2023
Walter Roberson
am 3 Aug. 2023
C:\Users\AT\Desktop\Face Recognition\extractLBPFeatures.m
What is that file? It is not the Mathworks-supplied extractLBPFeatures code. It is interfering with invoking the Mathworks code.
In MATLAB, there are rules about which version of a function is used when there are multiple functions with the same name. Functions defined in the current directory have priority over library functions. Functions defined in the current file have priority over functions defined in the current directory. There are some additional complications, and there is provision for Object Oriented Programming, but most of the time, if you define a function yourself with the same name as a Mathworks-provided function, you might well end up interferring with calling the Mathworks version of the function.
Abdelrahman
am 3 Aug. 2023
Bearbeitet: Abdelrahman
am 3 Aug. 2023
Abdelrahman
am 3 Aug. 2023
Walter Roberson
am 3 Aug. 2023
You are calling the function incorrectly. It expects name/value pairs for everything except the image -- and there is no numBins parameter.
If you examine the example I directed you to, you will see that numBins is defined after the call to extractLBPFeatures and is used to reshape() the results of calling extractLBPFeatures with a CellSize parameter.
Abdelrahman
am 4 Aug. 2023
Walter Roberson
am 4 Aug. 2023
testFeatures = extractLBPFeatures(testImg, 'NumNeighbors', numNeighbors, 'Radius', radius);
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Deep Learning with Simulink finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!