??? Undefined function or variable 'blur' Why is that

1 view (last 30 days)
when compiling this code I'm getting an error
Warning: Unable to determine the number of frames in this file. ??? Undefined function or variable 'blur'.
Error in ==> ReadVideo at 22 IDX = kmeans(blur,2);
vid = 'N1.mpg';
shainObj = mmreader(vid);
nFrames = shainObj.NumberOfFrames;
vidHeight = shainObj.Height;
vidWidth = shainObj.Width;
% Preallocate movie structure.
mov(1:nFrames) = ...
struct('cdata', zeros(vidHeight, vidWidth, 3, 'uint8'),...
'colormap', []);
% Read one frame at a time.
for k = 1 : nFrames
mov(k).cdata = read(shainObj, k);
image = mov(k).cdata;
imagegray = rgb2gray(image);
imagegray = imresize(imagegray, 0.2);
blur(k) = fmeasure(imagegray, 'GRAE', '');
end
IDX = kmeans(blur,2);
sum1 = 0;
sum2 = 0;
for k = 1 : nFrames
if IDX(k) == 1
sum1 = sum1 + 1;
else
sum2 = sum2 + 1;
end
end
if sum1 > sum2
normal = sum1;
blured = sum2;
else
normal = sum2;
blured = sum1;
end
disp('blur metrics for the input video');
disp(sprintf('Total frames: %d',nFrames));
disp(sprintf('Normal frames: %d',normal));
disp(sprintf('Blured frames: %d',blured));

Answers (1)

Mischa Kim
Mischa Kim on 21 May 2014
Edited: Mischa Kim on 21 May 2014
Shehan, the error message seems to indicate that MATLAB is not able to determine the number of frames in
nFrames = shainObj.NumberOfFrames;
which would mean that the for loop is not executed (I assume) and therefore no values are assigned to blur(k). As a result MATLAB is not able to execute
IDX = kmeans(blur,2);
To start debugging, remove the semi-colon in nFrames = shainObj.NumberOfFrames; to see the content of nFrames. You could do the same in the loops to see if they are execute.
Alternatively, use the debugger functionality in MATLAB to step through the code line by line.
  2 Comments
Shehan
Shehan on 21 May 2014
I tried what you said But no luck. I change the input video then it works What can be the problem is
but then i got an error message saying
*??? Undefined function or method 'fmeasure' for input arguments of type 'uint8'.
Error in ==> ReadVideo at 20 blur(k) = fmeasure(imagegray, 'GRAE', '');*
Image Analyst
Image Analyst on 21 May 2014
fmeasure() is probably some custom written function. Ask whomever you got this code for. They probably forgot to give you one of the m-files.

Sign in to comment.

Categories

Find more on Environment and Settings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!