数字图像处理Matlab实现 冈雷萨斯

参考书:数字图像处理的MATLAB实现(第二版)冈雷萨斯

Chapter 2

image = imread(file);

2.2 灰度变换函数(Intensity Transformation Functions)

s = T ( r ) s = T(r) s=T(r)

2.2.1 函数:imadjust and stretchlim

g = imadjust(image,[low_in high_in],[low_out high_out],gamma)

整体函数表达意思

  • 图像将根据设置的参数进行调整
  • 1:将要调整的图像,实际传入的是图像的灰度值范围
  • 将[low_in,high_in]范围内的值映射到[low_ou t,high_out]
  • [0,low_in]和[high_in,255]的值将会被截去----低于low_in的都会置为0,高于high_in的都会置为1,即比目标值亮的,直接设置为最亮,比目标值黑的,直接设置为最黑,可以将除了需要部位意外的地方调到最大对比度。
  • 整体范围都在[0,1]内
  • gamma表示映射时曲线的形状,gamma默认为1(线性映射);gamma<1,映射被加权至较亮输出值,gamma>1,映射被加权至较暗输出值。

举个栗子

原图像图下:

数字图像处理Matlab实现 冈雷萨斯_第1张图片数字图像处理Matlab实现 冈雷萨斯_第2张图片

例1. 图像反转

g = imadjust(image,[0 1],[1 0]);

g = imcomplement(image);

得到结果如下:

数字图像处理Matlab实现 冈雷萨斯_第3张图片

例子2. 加强部分区域灰度,以展示感兴趣区域

g = imadjust(image,[0.5 0.75],[0 1]);

对于灰度在[0.5,0.75]之间的像素,将其等比例映射到[0,1]范围内,低于0.5的都会置为0,高于0.75的都会置为1.

得到效果如下:

数字图像处理Matlab实现 冈雷萨斯_第4张图片
Low_high = stretchlim(image);
g = imadjust(f,stretchlim(image),[ ]);

stretchlim可以通过压缩灰度图像的低端和拓展高端,产生效果和上述例2类似。

效果图:

数字图像处理Matlab实现 冈雷萨斯_第5张图片

stretchlim(image)实际返回的就是[low_in high_in],且它默认返回的是image中像素饱和度底部和顶部的1%,故和例2的[0.5,0.75]相比,图像显得暗了很多。

stretchlim通用语法格式:

stretchlim(image,tol)

tol默认值为[0.01 0.99],当tol为某单个标定值value,则image参数中的[low_in high_in]值分别为[value 1-value];如果指定tol为0,则image为像素饱和度会设置为[min(f(),max(f()]

你可能感兴趣的:(数字图像处理,图像处理)