【问题标题】:Not sure how the hist function in MATLAB works不确定 MATLAB 中的 hist 函数如何工作
【发布时间】:2012-01-20 12:20:16
【问题描述】:

我不太确定 MATLAB 中的 hist 函数是如何工作的。我似乎没有什么问题。

基本上,在下面的代码中,我正在尝试运行旋转不变的统一局部二进制模式 (LBP) 代码。我对 LBP 代码没有任何问题,但问题在于 hist 函数(如下代码所示)。

问题是我应该得到的范围是 0:9,但是当我应用直方图函数时,我得到的值大于 9,例如 35、27,甚至是 178114 等值。不太确定如何纠正它。

I2 = imread('test.png');
RIUniformHist=[];
m=size(I2,1);
n=size(I2,2);
for i=1:10:m
    for j=1:10:n
        for k=i+1:i+8
           for l=j+1:j+8
             J0=I2(k,l);
             I3(k-1,l-1)=I2(k-1,l-1)>J0;
             I3(k-1,l)=I2(k-1,l)>J0;
             I3(k-1,l+1)=I2(k-1,l+1)>J0; 
             I3(k,l+1)=I2(k,l+1)>J0;
             I3(k+1,l+1)=I2(k+1,l+1)>J0; 
             I3(k+1,l)=I2(k+1,l)>J0; 
             I3(k+1,l-1)=I2(k+1,l-1)>J0; 
             I3(k,l-1)=I2(k,l-1)>J0;
             LBP=I3(k-1,l-1)*2^7+I3(k-1,l)*2^6+I3(k-1,l+1)*2^5+I3(k,l+1)*2^4+I3(k+1,l+1)*2^3+I3(k+1,l)*2^2+I3(k+1,l-1)*2^1+I3(k,l-1)*2^0;
             bits = bitand(LBP, 2.^(7:-1:0))>0;
             if nnz(diff(bits([1:end, 1]))) <= 2
                RIULBP(k,l)=abs(I3(k-1,l-1)-I3(k-1,l))+ abs(I3(k-1,l)-I3(k-1,l+1))+ abs(I3(k-1,l+1)-I3(k,l+1))+ abs(I3(k,l+1)-I3(k+1,l+1))+abs(I3(k+1,l+1)-I3(k+1,l))+abs(I3(k+1,l)-I3(k+1,l-1))+abs(I3(k+1,l-1)-I3(k,l-1));
             else
                RIULBP(k,l)=9;
             end
           end
        end
        RIULBP=uint8(RIULBP);
        RIULBPv=reshape(RIULBP,1,size(RIULBP,1)*size(RIULBP,2));   
        RIUHist=hist(RIULBPv,0:9); % problem
        RIUniformHist = [RIUniformHist RIUHist];
    end
end

【问题讨论】:

  • 请发布一些更简单的示例代码。

标签: matlab


【解决方案1】:

返回的向量
RIUHist=hist(data, bins)

data 的多少元素最接近bins 向量标识的点的计数。因此,如果您的值为178114,则表示data178114 元素最接近bins 中的匹配索引。

你可以使用

[RIUHist, binsOut] = hist(data)

让 Matlab 选择垃圾箱(我相信它使用 20 个垃圾箱)或

[RIUHist, binsOut] = hist(data, binCount)

让 Matlab 选择 bin,但强制设置一定数量的 bin(我经常使用 100 或 200)。

【讨论】:

  • 这取决于你想要做什么。我不确定 LDB 代码的用途,我无法按原样运行您的示例代码(我没有“test.png”)。我只是想回答一个具体问题,即当您尝试创建从 0 到 9 的 bin 时,为什么可以从 hist 中获得较大的值。
  • 那么如何获取 RIUHist 中的值在 0 到 9 之间的值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
相关资源
最近更新 更多