我正在尝试为MATLAB中没有内置函数的标准化图像制作直方图均衡代码,如'histeq'
我将灰度图像标准化,其值介于[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
答案 0 :(得分:0)
使用您的代码计算256-bin直方图,方法是缩放图像以适应它:
input_img_255 = round(input_img * 255);
然后将input_img_255
与您拥有的代码一起使用。 round
应该足够好,可以使用舍入的double值作为代码中的索引。如果您想更精确,可以使用:
input_img_255 = uint8(round(input_img * 255));
以便值为整数。