灰度变换

空间域技术直接对像素进行操作
g(x,y)=T[f(x,y)]
1**、亮度变换函数**
变换T的最简单形式是邻域大小为1×1时。此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个亮度或灰度级变换函数。
亮度变换函数仅取决于亮度的值,而与(x,y)无关。
s=T(r)
其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。
1.1、函数imadjust
函数imadjust 是对灰度图像进行亮度变换的基本IPT工具。
语法格式 g=imadjust(f,[low_in,high_in],[low_out,high_out],gamma)
说明:g的灰度范围为low_in到high_in,其中f中低于low_in的都看作low_out,高于high的都看作high_out;gamma小于1意味着f的值在映射到g时变得比原值大,大于1则相反。
的值。
灰度级范围为[0,L-1]的一幅图像的反转图像,该反转图像由下式给出:
S=L-1-r
这种获得明暗反转图像的过程可用于增强嵌入在大片黑色区域中的白色或灰色区域。
一幅图像的反转也可以使用函数imcomplement。
例子:一幅数字乳房X射线图像f

明暗反转图像g=imadjust(f,[0,1],[1,0])
灰度变换_第1张图片

g2 = imadjust(f,[0.5,0.75],[0,1])亮的地方更亮
灰度变换_第2张图片
2、对数变换

其中c是一个常数,并假设r>=0
该变换将输入中范围较窄的低灰度值映射为输出中较宽范围的高灰度值,对高的输入灰度值也是如此。使用这种变换来扩展像素中的暗像素的值,同时压缩更高灰度级的值。即将输入中范围较宽的高灰度值映射为输出中范围较窄的灰度值。
对数变换可以达到压缩图像动态范围的目的。
灰度变换_第3张图片
使用对数变换减小动态范围
灰度变换_第4张图片
3、对比度拉伸函数
灰度变换_第5张图片
对比度拉伸变换函数,将输入值低于m的灰度级压缩为输出图像中较暗灰度级的较窄范围内,将输入值高于m的灰度级压缩为输出图像中较亮灰度级的较窄范围内。输出的是一幅具有高对比度的图像。
阈值函数,输出是一幅二值图像。
4、幂律(伽马)变换
在这里插入图片描述
matlab函数代码:

function g = intrans(f,varargin)
%g=intrans(f,‘neg’)输出为输入图片的负片
%g=intrans(f,‘log’,c,class)对图像进行log变换,c的默认值为1。class为指定输出的图像类型,默认为与输入图像一致
%g=intrans(f,‘gamma’,gam)
%如果gam是小于1,该映射是偏重于亮的输出值。如果gam大于1,该映射是偏向暗的输出值
%g=intrans(f,‘stretch’,m,e)公式为(g=1./(1+(m./(f+eps)).^E))
%可以不输入m与e,默认m为图像的平均值,e为4
%对比度拉伸变换函数,该函数可以将输入值低于m的灰度级压缩为输出图像中较暗灰度级的较窄范围内;
error(nargchk(2,4,nargin))%判断参数的正确性
classin = class(f);%判断图像的类型
if strcmp(class(f),‘double’)&&max(f()>1&& strcmp(varargin{1},‘log’)
f=mat2gray(f);
else
f= im2double(f);
end
method = varargin{1};
switch method
case ‘neg’
g=imcomplement(f);
case ‘log’
if length(varargin)==1
c=1;
elseif length(varargin)==2
c=varargin{2};
elseif length(varargin)==3
c=varargin{2};
classin = varargin{3}
else
error(‘Incorrect number of inputs for the log option.’)
end
g=c*(log(1+double(f)));
case ‘gamma’
if length(varargin)<2
error(‘Not enough inputs for the gamma option.’)
end
gam = varargin{2};
g = imadjust(f,[],[],gam)
case ‘stretch’
if length(varargin)<2
m=mean2(f);
E=4.0;
elseif length(varargin)==2
m=varargin{2};
E=varargin{3};
else
error(‘Incorrect number of inputs for the log option.’)
end
g= 1./(1+(m./(f+eps)).^E);
otherwise
error(‘Unknow enhancement method’)
end
g=changeclass(classin,g);
end
本文参考数字图像处理

你可能感兴趣的:(灰度变换)