图像处理学习笔记02:灰度变换(一)

灰度变换是一个点对应一个点的图像处理方法。通过灰度变换函数就可以清楚的看出图像处理前后像素的灰度变化情况。那什么是灰度变换函数呢,从图像上来看,x轴方向代表原图像的像素点的灰度级(从0到L-1依次排列,也就是从最暗到最亮的全过程),y轴表示处理后的图像的灰度级排列。每一个x轴上的点都有一个与之对应的y轴的输出点对应,表明原来某一灰度级变化成处理后对应的灰度级。

imadjust和stretchlim函数

在MATLAB中使用的是imadjust函数,先说明一下函数的语法格式

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

图像处理学习笔记02:灰度变换(一)_第1张图片
这个函数的功能就是将原图像f的灰度级映射到g的新值当中。那么就是从第二个参数代表的区域,转换到第三个参数代表的区域中。原图像中低于low_in的灰度级,处理后都变成了low_out这一灰度级;高于high_in的灰度级,全部变成high_out这一灰度级。那么中间的灰度级是如何变化的呢,这就涉及到了第三个参数gamma,它的取值分为三种情况,一种小于1,一种为1,一种大于1 。从给出的图像就可以看出他的区别。gamma值为1时,属于线性映射,将原始图像中的灰度级一一对应到处理后的灰度级中,若函数斜率为1,则相当于这一部分的图像没有发生变换。如下图所示,选定某一输入灰度值后,不同灰度变换的结果也是不同的,gamma小于1时,获得的灰度级最大也就最亮,为1时其次,大于1时,灰度最小也就最暗。图像处理学习笔记02:灰度变换(一)_第2张图片
例 使用MATLAB的imadjust函数进行灰度变换

clear;
clf;
clc;
f=imread('Fig0203(a).tif');%读取图像
subplot(2,3,1); %多幅绘图
imshow(f);%显示图像
g1=imadjust(f,[0 1],[1 0]);%图像反转,黑白颠倒
subplot(2,3,2);
imshow(g1);
% g=imcomplement(f);%图像反转,与上面的功能一致
% subplot(2,3,3);
% imshow(g);
g2=imadjust(f,[0.5 0.75],[0 1]);%将图像灰度级为0.50.75的部分,扩散到整个灰度区,用于强调图像中感兴趣的地方
subplot(2,3,3);
imshow(g2);
g3=imadjust(f,[],[],2);%gamma的值大于1,图像变暗
subplot(2,3,4);
imshow(g3);
g4=imadjust(f,stretchlim(f),[]);
subplot(2,3,5);
imshow(g4);
g5=imadjust(f,stretchlim(f),[1,0]);
subplot(2,3,6);
imshow(g5);

图像处理学习笔记02:灰度变换(一)_第3张图片
stretchlim函数获取高和低受限的两个元素向量,返回得到双向量形式。语法:Low_High=stretchlim(f,tol);tol指定图像高低像素的饱和点,省略默认为百分之一,即[0.01,0.99]。

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