簡體   English   中英

matlab中hist和imhist之間的區別

[英]Difference between hist and imhist in matlab

matlab中histimhist函數有什么區別? 我有一個從圖像加載imread色階值矩陣,需要使用直方圖計算圖像的熵值。
當使用imhist ,結果矩陣在除最后一個(右下)之外的所有位置都包含零,其中包含一些高值數字(幾千個左右)。 因為輸出似乎是錯誤的,所以我嘗試使用hist而不是imhist ,結果值更好,矩陣用正確的值而不是零來實現。
然而,根據文檔,在這種情況下imhist應該更好, hist應該給出奇怪的結果..
不幸的是我不擅長Matlab,所以我無法為你提供更好的問題描述。 不過,我可以在將來添加一些其他信息。

所以我會嘗試更好地解釋我的問題..我有一個圖像,我應該計算熵和其他一些值(保存該圖像需要多少字節,...)。 我寫了這個函數,它運行得很好

 function [entropy, bytes_image, bytes_coding] = entropy_single_pixels(im)

im = double(im);

histg = hist(im);

histg(histg==0) = [];
nzhist = histg ./ numel(im);
entropy = -sum(nzhist.*log2(nzhist));

bytes_image = (entropy*(numel(im))/8);

bytes_coding = 2*numel(unique(im));

fprintf('ENTROPY_VALUE:%s\n',num2str(entropy));
fprintf('BYTES_IMAGE:%s\n',num2str(bytes_image));
fprintf('BYTES_CODING:%s\n',num2str(bytes_coding));
end

然后我必須計算相同,但我必須從彼此下方的像素制作“對”。 所以我只有一半的行和相同的列數。 我需要將每個唯一的像素對表示為不同的數字,所以我將第一個像素對乘以1000並將第二個加到它...隨后我需要實際應用與第一個示例中相同的函數,但這是時間,當我從imhist函數得到奇怪的數字。 當使用hist時,它似乎沒問題,但我真的不認為這種行為是正確的,所以這一定是我的錯誤。 我實際上對我想做的事情非常了解,或者至少我希望如此,但不幸的是Matlab對我來說很難對我:)

hist-計算彩色圖像中的直方圖(計算每個像素的出現次數).........

imhist-計算二維圖像中的直方圖。

如果你想使用imhist請使用im2double而不是double imhist函數要求雙精度或單精度數據在[0,1]數據范圍內,這就是為什么你看到直方圖的最后一個bin中的所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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