点运算
1.线性运算
B=kA+b
B为输出图像,A为输入图像,b控制灰度值的变大变小,b变大,图像整体变亮,增加亮度;
k控制输出图像的灰度范围大小,k增大,使得两个相邻灰度值之间的差值变大,增加对比度。(k<0时,图像黑白反转,图像被反相)
2.非线性运算
1.指数变换
B=a.^A - 1
参数a为大于1的常数,可以控制曲线形状;指数运算的主要目的是扩展图像的高灰度级,压缩图像的低灰度级。
2.对数变换
B=c.*ln(A+1)
参数c为大于1的常数,可以控制曲线形状;对数运算的主要目的是扩展图像的低灰度级,压缩图像的高灰度级。
3.S函数变换与反S函数变换
(1)S函数变换降低图像较亮和较暗的部分,加强灰度级处于中间范围物体的对比度。其函数曲线如图所示。
S函数变换的代码:
%% S函数变换
A=imread('pout.tif');
L=double(max(A(:)));%L表示灰度级的范围从0~L
alpha=1;%值在0<alpha<=1范围内,越大效果越好
[m,n]=size(A);
for i=1:m
for j=1:n
Da=double(A(i,j));
B(i,j)=L/2.*(1+(sin(alpha*pi.*(Da./L-0.5)))/(sin(alpha*pi/2)));
end
end
imshow(uint8(B))
(2)反S函数变换降低灰度级处于中间范围物体的对比度,加强图像较亮和较暗的部分。其函数曲线如图所示。
反S函数变换的代码:
A=imread('pout.tif');
L=double(max(A(:)));%L表示灰度级的范围从0~L
alpha=0.9;%值在0<alpha<1范围内,越大效果越好
[m,n]=size(A);
for i=1:m
for j=1:n
Da=double(A(i,j));
B(i,j)=L/2.*(1+(tan(alpha*pi.*(Da./L-0.5)))/(tan(alpha*pi/2)));
end
end
imshow(uint8(B))