一、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):

  1. 明暗反转(负片):把亮的变暗、暗的变亮 % 输入[0 1]→输出[1 0],实现反转

g1 = imadjust(f, [0 1], [1 0]); (也可以用g = imcomplement(f)直接实现~)

  1. 灰度扩展:把感兴趣的灰度范围放大(比如[0.5 0.75]→[0 1]) % 突出0.5到0.75之间的细节

g2 = imadjust(f, [0.5 0.75], [0 1]);

  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。