what is the problem in my following face recognition code?

2 ビュー (過去 30 日間)
uday
uday 2013 年 7 月 18 日
コメント済み: omar shall 2014 年 1 月 16 日
i dont know this is my code......
load data.mat
%Declare training data
P=[r h b bd];
%Create SOM neural network
%(64 minimum points and 64 maximum points)
net=newsom(minmax(P),[64 2]);
%Train SOM neural network for 1000 epochs
net.trainParam.epochs=100;
net=train(net,P);
%Plot SOM layer weights
x=net.iw{1,1},net.layers{1}.distances;
figure, plot(dist(x),'o');
title('SOM Layer Weights');
xlabel('Layer Weights');
ylabel('Magnitude');
%Plot SOM weight vectors
figure, plotsom(net.iw{1,1},net.layers{1}.distances)
sx=sim(net,P);
[l,m]=size(sx);
for u=1:1:m
sm(u)=find(sx(:,u));
end
%Load input face image
Q=imread('hulk6.jpg');
Q=double(reshape(Q,64,1));%(28 line)
i am getting the error
??? Error using ==> reshape
To RESHAPE the number of elements must not change.
Error in ==> simsom at 28
Q=double(reshape(Q,64,1));
what is the problem
  5 件のコメント
uday
uday 2013 年 7 月 18 日
thank you cyclist
omar shall
omar shall 2014 年 1 月 16 日
Does this code compares a picture to pictures in database? if yes can you please add the edited file please

サインインしてコメントする。

採用された回答

the cyclist
the cyclist 2013 年 7 月 18 日
Line 28 of your code is attempting to reshape Q into a 64x1 vector. The error is saying that there are not 64 elements in Q, the operation is impossible. You could breakpoint your code at line 27 to see why Q doesn't have the number of elements you expect.
  2 件のコメント
uday
uday 2013 年 7 月 18 日
how will i know the number of elements in my input image i.e Q?
Matt Kindig
Matt Kindig 2013 年 7 月 18 日
Shot in the dark, but I think this should work:
Q = double(reshape(Q,64,[]));
Note that second parameter is empty ([]) rather than 1. Keep in mind this approach only works in the number of elements in Q (from the previous imread() call) is divisible by 64, i.e.,
numel(Q)/64
yields a whole number.
If that is not the case, you will also need to resample the image to a 64xN image using imresize() or similar. In that case, this should work:
Q = double(imresize(Q, [64 NaN]));

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2013 年 7 月 18 日
Q is an entire image. It probably has 10 or 20 megapixels in it. Why do you think it has only 64 pixels in it?
  1 件のコメント
uday
uday 2013 年 7 月 18 日
Q=imread('hulk6.jpg') do you mean to say that the above image hulk have 10 to 20 megapixels in it or this images P=[r h b bd]? hulk is the image 0f dimension 512*512 which is taken from a 2 megapixel camera and r,h,b,bd are the images after dct conversion of 8*8 net=newsom(minmax(P),[64 2]); Q=double(reshape(Q,64,1)); so what would be the appropriate number of the Q? r give me the idea how can i know it

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by