【问题标题】:Histogram Equalization error in freq(255) freq(256) valuesfreq(255) freq(256) 值中的直方图均衡错误
【发布时间】:2015-05-22 13:19:14
【问题描述】:

我的直方图均衡初始代码完美地计算了 freq(1) 到 freq(254) 并错误地计算了 freq(255) 和 freq(256)。 freq(255) 的结果错误地是 freq(255) 和 freq(256) 的实际结果的总和。 freq(256) 始终保持为 0。

    freq=zeros(256,1);
    probf=zeros(256,1);
    probc=zeros(256,1);
    cum=zeros(256,1);
    output=zeros(256,1);
    numofpixels = 1080*1920;
    value = 500;
    %calculating the frequency
    for i=1:1080
        for j=1:1920
            value=mdata(i,j,1);
            freq(value+1)=freq(value+1)+1;                
            probf(value+1)=freq(value+1)/numofpixels;

        end
    end

所以我将初始代码修改为以下代码,我在其中单独检查任何像素的值是否为 254 和 255。这非常有效。背后的原因可能是什么?

freq=zeros(256,1);
probf=zeros(256,1);
probc=zeros(256,1);
cum=zeros(256,1);
output=zeros(256,1);
numofpixels = 1080*1920;
maximum254 = 0;
maximum255 = 0;
value = 500;
%calculating the frequency
for i=1:1080
    for j=1:1920
        value=mdata(i,j,1);
        if value < 254
        freq(value+1)=freq(value+1)+1;
        end

        if value==254
        freq(255)=freq(255)+1;
        maximum254 = maximum254 +1;
        end

        if value==255
        freq(256)=freq(256)+1;
        maximum255 = maximum255 +1;
        end

        probf(value+1)=freq(value+1)/numofpixels;

    end
end

【问题讨论】:

  • mdata 包含从 0 到 255 的不同像素值。
  • 我的回答对你有帮助吗?

标签: image matlab image-processing


【解决方案1】:

最可能的罪魁祸首是您的图像是uint8 并且数据类型正在饱和。您注意到您需要将强度加 1 以对结果进行分箱,因为 MATLAB 从索引 1 开始索引。但是,当您达到强度 255 时,加 1 应该会给您 256,但它实际上饱和到 255。这就是为什么 256 处的 bin 始终为 0,因为您永远不会生成任何超过 255 的值。

实际发生的情况是,由于uint8(254+1) = uint8(255+1) = 255,那些在 254 处被分箱的值正在与 255 合并。这就是为什么索引 254 和 255 的计数是错误的,而 bin 256 是 0。

因此,为确保您的数据不会饱和,您需要将数据转换为不会饱和 8 位数据的类型。 double 是一个很好用的类型。因此,在执行直方图均衡之前,只需将您的 mdata 转换为 double,等等:

mdata = double(mdata);

一旦你这样做了,当你运行你的代码时,它现在应该可以工作了,你不应该手动检查强度范围较高端的那些值。

【讨论】:

  • 谢谢!这对我来说非常有效。在这部分代码结束后,我再次将 mdata 转换回 uint8 以显示图像。
  • @RajeshKrishnan - 是的。我忘记了那一步。好决定。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2017-11-11
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多