一、imadjust:灰度变换的“手动调色盘”🎛️
关键字:imadjust、灰度映射、gamma 参数、亮度 / 对比度调整
🧠 类比:就像手机里的“亮度 / 对比度”滑块——你可以手动指定“哪些灰度对应哪些新值”~
课本里的基础语法:
g = imadjust(f, [low_in high_in], [low_out high_out], gamma)
各参数的作用:
f:输入图像;[low_in high_in]:输入图像中要处理的灰度范围(默认[0 1]);[low_out high_out]:映射后的新灰度范围(默认[0 1]);gamma:映射曲线的“弯曲程度”(默认 1,即线性映射)。
✋ 新手必试案例(课本例 2.1):
- 明暗反转(负片):把亮的变暗、暗的变亮
% 输入[0 1]→输出[1 0],实现反转 >> g1 = imadjust(f, [0 1], [1 0]);(也可以用
g = imcomplement(f)直接实现~) - 灰度扩展:把感兴趣的灰度范围放大(比如[0.5 0.75]→[0 1])
% 突出 0.5 到 0.75 之间的细节 >> g2 = imadjust(f, [0.5 0.75], [0 1]); - gamma 调整:调亮 / 调暗图像(gamma<1 调亮,gamma>1 调暗)
% gamma=2,压缩暗部、扩展亮部(图像变暗)>> g3 = imadjust(f, [], [], 2);
☁️ 注意:imadjust 的输入范围是[0 1](不管 f 是 uint8 还是 double)——比如 uint8 的 255 对应 1,0 对应 0。
二、stretchlim:自动找“调色范围”的“智能助手”🤖
关键字:stretchlim、自动对比度、tol 参数
✋ 手动调范围太麻烦?stretchlim 能自动找出“最适合的灰度范围”,让对比度最大化~
课本里的基础语法:
Low_High = stretchlim(f)
作用:返回一个 自动计算的灰度范围(默认去掉最暗和最亮的 1% 像素,避免极端值干扰)。
✋ 自动对比度调整(结合 imadjust):
% 步骤 1:自动找最佳范围
>> LH = stretchlim(f);
% 步骤 2:用这个范围做 imadjust,自动增强对比度
>> g = imadjust(f, LH, []);
效果:图像的细节会更清晰(比如课本图 2.3(e))。
🧠 进阶:用 tol 参数自定义“去掉的极端值比例”:
% tol=[0.02 0.98],去掉最暗 2% 和最亮 2% 的像素
>> LH = stretchlim(f, [0.02 0.98]);
若 tol 是标量(比如 tol=0.01),则去掉最暗 1% 和最亮 1%(即 low_frac=0.01,high_frac=0.99)。
三、实战:从“灰蒙蒙”到“清清爽爽”的图像增强 🌟
✨ 完整流程:读入暗图→自动找范围→imadjust 增强→显示对比
% 1. 读入一张偏暗的图像(比如 f)>> f = imread('dark_img.jpg');
% 2. 转成 double 类(方便计算)>> f_double = im2double(f);
% 3. 自动找最佳灰度范围
>> LH = stretchlim(f_double);
% 4. 用 imadjust 增强对比度
>> g_double = imadjust(f_double, LH, []);
% 5. 转回 uint8 并显示
>> g = im2uint8(g_double);
>> imshowpair(f, g, 'montage'); % 并排显示原图和增强图
四、新手总结:imadjust+stretchlim 的“使用场景”📝
- 想 手动调亮 / 调暗:用 imadjust+gamma 参数;
- 想 突出某段灰度细节:用 imadjust 指定[low_in high_in];
- 想 一键增强对比度:用 stretchlim 自动找范围 +imadjust。
正文完