【发布时间】: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