【问题标题】:Histogram equalization for normalized image without histeq function in MATLABMATLAB中没有histeq函数的归一化图像的直方图均衡
【发布时间】:2018-04-28 07:49:53
【问题描述】:

我正在尝试为没有像“histeq”这样的 MATLAB 内置函数的标准化图像制作直方图均衡代码

我已标准化灰度图像,其值在 [0,1] 之间

    input_img = mat2gray(img);

我找到了一个没有 histeq 函数的示例代码

    for i=1:size(GIm,1)
        for j=1:size(GIm,2)
            value=GIm(i,j);
            freq(value+1)=freq(value+1)+1;
            probf(value+1)=freq(value+1)/numofpixels;
        end
    end

    sum=0;
    no_bins=255;

    %The cumulative distribution probability is calculated. 

    for i=1:size(probf)
       sum=sum+freq(i);
       cum(i)=sum;
       probc(i)=cum(i)/numofpixels;
       output(i)=round(probc(i)*no_bins);
    end

    for i=1:size(GIm,1)
        for j=1:size(GIm,2)
                HIm(i,j)=output(GIm(i,j)+1);
        end
    end

    figure,imshow(HIm);
    title('Histogram equalization');

但此代码应用于灰度为 [0,255] 的图像

我应该如何将此代码应用于我的灰度标准化图像?

我的图片尺寸 450x450

【问题讨论】:

    标签: matlab histogram normalization


    【解决方案1】:

    使用您必须通过缩放图像以适应它来计算 256-bin 直方图的代码:

    input_img_255 = round(input_img * 255);
    

    然后将input_img_255 与您拥有的代码一起使用。 round 应该足以将舍入的双精度值用作代码中的索引。如果您想更准确,可以使用:

    input_img_255 = uint8(round(input_img * 255));
    

    所以值是整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      相关资源
      最近更新 更多