function img = histEq(img)
% 输入图像灰度、rgb图像都可以
% 1 转灰度图像 2. 统计每一灰度级的数量 3. 累计灰度级 4. 归一化为累计概率
% 5. 当前灰度级的概率 P * 255 = 新映射的灰度级
[width,height,channels] = size(img);
if channels ==3
img = rgb2gray(img); %rgb图像转成灰度
end
% 灰度级0-255,用hist数组
% 数组下标1 开始
hist=zeros(256,1);
for j =1:height
for i =1:width
gray_level = img(i,j); % 取出灰度值
hist(gray_level+1) = hist(gray_level+1)+1; % 统计灰度值+1
end
end
% 3. 累计灰度值
hist_cumsum = cumsum(hist);
% 4. 累计灰度概率
hist_prob = hist_cumsum/(width*height);
% 5. 遍历图片,映射新的灰度级
for j =1:height
for i =1:width
gray_level = img(i,j); % 取出灰度值
t=hist_prob(gray_level+1)*255; % 映射
img(i,j)=round(t);
end
end
matlab 直方图均衡化 histeq实现
最新推荐文章于 2025-02-23 10:00:00 发布