[英]Hi, can anyone tell me code how to create histogram without the toolbox (imhist,hist) from matlab?
誰能告訴我如何在沒有 matlab 函數的情況下從灰度圖像創建直方圖。
謝謝
比您的代碼更有效:
histogram = zeros(1,256);
for value = 1:256 % loop through possible values
histogram(value) = histogram(value) + length(find(F(:)==value));
end
請注意,此代碼為從 1 到 256 的值制作了一個直方圖。對於灰度圖像,您可能需要一個從 0 到 255 的直方圖。但為了練習,我會讓您自己更改它。
編輯:既然你要求修改你的代碼,讓我評論一下:
[m n]=size(F);
x=0;
無需將x
設置為零,稍后您將覆蓋它。
H=0;
您應該將H
初始化為一個數組,而不是將H
設置為零,因為您想稍后填充H(x)
。 像H = zeros(1,256);
for z=1:256
我不確定 z 上的這個循環應該做什么。 你從不使用z
。 你可以刪除它。
for i=1:m
for j=1:n
x==F(i,j);
正如我在下面所說的,這應該是x=F(i,j);
相反,因為==
是對相等性的測試。
H(x+1)=H(x+1)+1
如果F
中的所有值都保證在 0 到 255 之間,這將起作用。盡管我會說這不是很好的風格。
另外,在這一行的末尾放一個分號來抑制輸出,否則你的命令行會被淹沒(這也會大大減慢速度)。
end
end
H;
最后一行什么都不做。 為什么會在那里?
end
不需要 z 上的外循環(見上文)。
因此,這是您的代碼的“消毒”版本:
[m,n] = size(F);
H = zeros(1,256);
for i=1:m
for j=1:n
x=F(i,j);
H(x+1)=H(x+1)+1;
end
end
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.