Undefined function 'extractLBP' for input arguments of type 'uint8'.
显示 更早的评论
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 个评论
Walter Roberson
2023-8-3
Do you have the Computer Vision toolbox installed?
Abdelrahman
2023-8-3
Walter Roberson
2023-8-3
What shows up for
which -all extractLBPFeatures
ver vision
Are you able to run the example
openExample('vision/VisualizeLBPFeatureHistogramsExample')
Abdelrahman
2023-8-3
Walter Roberson
2023-8-3
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
2023-8-3
编辑:Abdelrahman
2023-8-3
Abdelrahman
2023-8-3
Walter Roberson
2023-8-3
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
2023-8-4
Walter Roberson
2023-8-4
testFeatures = extractLBPFeatures(testImg, 'NumNeighbors', numNeighbors, 'Radius', radius);
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Deep Learning with Simulink 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!