0

输入:[0..255] 中的灰度 img
输出:归一化的 img 直方图 - 一个 1X256 数组除以像素总数

这是我的解决方案:

function [h] = histImage(img)
    h=zeros(1,256)
    for i=1:size(h,2)
       h(i) = length(find(img==i));
    end
    h = h./sum(h);

有更好的方法吗?

4

1 回答 1

2

“更好”总是在旁观者的眼中。无论如何,这是一种使用以下方法执行上述操作的方法accumarray

%# each pixel contributes 1/nPixels to the counts of the histogram
%# to use graylevels as indices, we have to add 1 to make it 1...256

nPix = numel(img);
h = accumarray(img(:)+1,ones(nPix,1)/nPix,[256 1],@sum,0);
于 2012-11-10T18:34:57.573 回答