一、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。