Info
This question is closed. Reopen it to edit or answer.
problem in the code,getting following error
1 view (last 30 days)
Show older comments
for i=1:256
img_hist(i)=sum(sum(im==(i)));
end
In an assignment A(:) = B, the number of elements in A and B must be the same.
Error in ==> kmeansclustering at 7 img_hist(i)=sum(sum(im==(i)));
0 Comments
Answers (2)
Image Analyst
on 20 Sep 2013
Edited: Image Analyst
on 20 Sep 2013
Why not just use imhist():
[counts, grayLevels] = imhist(im);
If you have to do it your way, try this and see how the times compare:
im=randi(256, [1000,1000]) - 1;
% Horribly inefficient way of getting histogram:
img_hist = zeros(1,256);
tic;
for i=0:255
img_hist(i+1)=sum(sum(im==i));
end
toc;
% Less inefficient way (more than 10 times faster)
img_hist = zeros(1,256); % Reset
tic
[rows, columns] = size(im);
for col = 1 : columns
for row = 1 : rows
img_hist(im(row,col)+1) = img_hist(im(row,col)+1) + 1;
end
end
toc
% Best way is to use imhist()
tic
img_hist = imhist(im);
toc;
Elapsed time is 0.479380 seconds.
Elapsed time is 0.047586 seconds.
Elapsed time is 0.008468 seconds.
Now, which way do you think is best? That is, simplest and fastest?
0 Comments
Azzi Abdelmalek
on 20 Sep 2013
Edited: Azzi Abdelmalek
on 20 Sep 2013
clear img_hist
for i=1:256
img_hist{i}=sum(sum(im==(i)));
end
0 Comments
This question is closed.
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!