簡體   English   中英

嗨,誰能告訴我代碼如何在沒有 matlab 工具箱(imhist,hist)的情況下創建直方圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM