图像基本运算和变换—Matlab数字图像处理(二)

点运算

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函数变换降低图像较亮和较暗的部分,加强灰度级处于中间范围物体的对比度。其函数曲线如图所示。
图像基本运算和变换—Matlab数字图像处理(二)_第1张图片
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函数变换降低灰度级处于中间范围物体的对比度,加强图像较亮和较暗的部分。其函数曲线如图所示。
图像基本运算和变换—Matlab数字图像处理(二)_第2张图片

反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))

你可能感兴趣的:(图像处理专题,matlab,图像处理)