フィルターのクリア

Info

この質問は閉じられています。 編集または回答するには再度開いてください。

problem in the code,getting following error

1 回表示 (過去 30 日間)
Poonam
Poonam 2013 年 9 月 20 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
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)));

回答 (2 件)

Image Analyst
Image Analyst 2013 年 9 月 20 日
編集済み: Image Analyst 2013 年 9 月 20 日
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?

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 9 月 20 日
編集済み: Azzi Abdelmalek 2013 年 9 月 20 日
clear img_hist
for i=1:256
img_hist{i}=sum(sum(im==(i)));
end

この質問は閉じられています。

Community Treasure Hunt

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

Start Hunting!

Translated by