灰度变换与空间滤波 – 图像的“亮度体检报告”:直方图怎么看怎么画📊

255次阅读

✨ 第一部分:直方图是啥?——图像的“亮度分布账本”

关键字:直方图、灰度级、归一化直方图

🧠 初学者先懂:直方图就是图像的“亮度账本”——统计每个灰度级(比如 0 = 黑,255= 白)有多少个像素。比如一张“偏暗的图”,直方图会堆在 0 附近;一张“偏亮的图”,会堆在 255 附近。

内容详解:

📖 课本里的直方图公式是 h(r_k) = n_kr_k是第 k 个灰度级,n_k是这个灰度级的像素数)。归一化直方图是 p(r_k) = n_k / nn是总像素数),代表每个灰度级出现的“概率”。

🤖 类比理解:就像统计班级考试分数——直方图是“80 分有 10 人,90 分有 5 人”;归一化直方图是“80 分占 20%,90 分占 10%”。

💻 怎么算?用 MATLAB 的 imhist 函数:

% 计算直方图(h 是各灰度级的像素数,r 是灰度级)[h, r] = imhist(f);
% 计算归一化直方图
p = h / numel(f); % numel(f)是图像总像素数

☁️ 复杂场景:不同类型图像的直方图范围不同——uint8 图的灰度级是 0 -255,uint16 图是 0 -65535,浮点图是 0 -1,计算时要注意对应范围!

👐 第二部分:直方图怎么画?——四种画法各显神通

关键字:imhist、bar、stem、plot、直方图绘制工具

🧠 初学者再懂:画直方图就像“展示账本”——不同画法适合看不同细节,课本里给了 4 种“展示方式”。

内容详解:

📖 四种画法 + 代码(以 uint8 图像为例):

  1. ① imhist 直接画(图 2.7(a)):最简单的默认画法
    imhist(f); % 直接显示直方图
  2. ② bar 画条形图(图 2.7(b)):适合看“分组统计”
    [h, r] = imhist(f, 25); % 分成 25 组统计
    horz = linspace(0, 255, 25); % 生成 25 个灰度级刻度
    bar(horz, h); % 画条形图
    axis([0 255 0 60000]); % 设置坐标轴范围

    🤖 好处:把 256 个灰度级合并成 25 组,能更清楚看“亮度区间的分布”(比如暗部区间有多少像素)。

  3. ③ stem 画杆状图(图 2.7(c)):适合看“单个灰度级的细节”
    [h, r] = imhist(f, 25);
    horz = linspace(0, 255, 25);
    stem(horz, h, 'fill'); % 'fill' 让杆顶的点填充颜色
    set(gca, 'xtick', 0:50:255); % 设置 x 轴刻度间隔

    🤖 好处:每个杆对应一个分组,能精准看到“某一组的像素数”(比如第 10 组有多少像素)。

  4. ④ plot 画折线图(图 2.7(d)):适合看“分布趋势”
    [h, r] = imhist(f);
    plot(h); % 用折线连接各灰度级的像素数
    axis([0 255 0 15000]);

    🤖 好处:能直观看到直方图的“起伏趋势”(比如暗部到亮部是递增还是递减)。

☁️ 现实应用:做“图像增强”前,先画直方图看亮度分布——暗部堆太多就“提亮”,亮部堆太多就“压暗”,这是图像后期的“第一步操作”!

🎯 第三部分:直方图“美化术”——坐标轴、标题、标签怎么加?

关键字:axis、xlabel、ylabel、title、图形美化

🧠 初学者最后懂:画直方图不能只有图,得加“标签和标题”,不然别人不知道你画的是啥——这就像给“账本”加封面和目录。

内容详解:

📖 常用美化代码:

[h, r] = imhist(f);
bar(r, h);
% 设置坐标轴范围
axis([0 255 0 60000]);
% 加 x 轴标签(灰度级)xlabel('灰度级', 'fontsize', 12);
% 加 y 轴标签(像素数)ylabel('像素数', 'fontsize', 12);
% 加标题
title('图像亮度分布直方图', 'fontsize', 14);
% 设置刻度间隔
set(gca, 'xtick', 0:50:255);
set(gca, 'ytick', 0:20000:60000);

🤖 为啥要美化?比如给导师看报告,带标签的直方图能直接说明“这张图暗部像素占比高”,不用额外解释——专业度直接拉满!

☁️ 扩展技巧:用 hold on 可以在同一张图里画“原图和增强后图的直方图”,对比效果一目了然(比如“增强后暗部和亮部分开了”)。

🌟 总结:直方图的“灵魂作用”

→ 看分布:从直方图能直接判断图像是“偏暗”“偏亮”还是“对比度低”;

→ 做增强:直方图是“亮度调整”的依据(比如直方图均衡化就是让分布更均匀);

→ 做分析:工业检测中,“次品零件的直方图”和“合格零件的直方图”有明显差异,能用来自动挑次品!

就像医生看“体检报告”——直方图就是图像的“健康指标”,看懂它,你就能精准“调理”图像啦!

 

正文完
 0