使用强度变换来进行图像增强
对数变换的通用形式:s=c*log(1+r)
其中c是常数,r是浮点数,取输入图像的像素值,s为通过对数变换处理后的像素值。使用对数变换来扩展图像中的暗像素值,同时压缩更高灰度级的值,通过将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,或将输入中范围较宽的高灰度值映射为输出中范围较窄的灰度值来实现。
对数变换的一个重要特征是它压缩像素值变化较大的图像的动态范围。
对数变换方法的一个局限性是:图像的显示系统通常不能如实地再现大范围地灰度值,结果许多重要的灰度细节在典型的傅里叶频谱的显示中丢失了。
对数变换带来的代价是牺牲了较高灰度级像素之间的对比度,如图所示:
2.使用幂律变换
幂律变换的基本形式:s=c*(r^γ)
其中c和γ为正常数,c是常数(本实验取c=1),r是浮点数,取输入图像的像素值,s为通过幂律变换处理后的像素值。对于不同的γ值,与r的关系曲线如下图所示。
与对数变换的情况类似,部分γ值的幂律曲线将较窄范围的暗色输入值映射为较宽范围的输出值,或将将较宽范围的高灰度级输入值映射为较窄范围的输出值。随着参数γ的变化,图像曲线的形状也不同。γ>1时,输入灰度级被映射至较低灰度级的输出值;γ<1时,输入灰度级被映射至较高灰度级的输出值;在c=γ=1,此时是恒等变换。
幂律变换较常用于图像获取、打印和显示的各种设备场景中。
程序代码如下:
clc %清除命令窗口的内容
close all %关闭所有的Figure窗口
clear all %清除工作空间的所有变量
1.使用对数变换
%% 用对数变换方法来使图像进行增强
A=imread('Fig.3.8(a).tif');%读取图像数据
figure;
subplot(1,2,1);%将数字窗口分成1*2的网格,并在第1个位置创建第一个子图
imshow(A);%显示图像
title('Fig.3.8(a)的原图像');%给图像设置标题
b=2*log10(1+double(A));%使用对数变换公式:s=c*log(1+r),c是常数这里取2,r是浮点数这里取double(A)来使图像进行增强
B=im2uint8(mat2gray(b));%使图像矩阵实现归一化,即使矩阵中的每个元素的值都在0和1之间,再通过im2uint8函数使图像变成uint8整型
subplot(1,2,2) ;
imshow(B);
title('对数变换后的图像');
2.使用幂律变换
%% 用幂律变换方法来使图像进行增强
C=imread('Fig.3.8(a).tif');
figure;
subplot(1,2,1);%将数字窗口分成1*2的网格,并在第2个位置创建第二个子图
imshow(C);
title('Fig.3.8(a)的原图像');
d=1*double(C).^0.3;%由幂律变换公式:s=c*r.^γ,c取1,γ取0.3,r为double(C)来使图像进行增强
D=im2uint8(mat2gray(d));
subplot(1,2,2);
imshow(D);
title('幂律变换后的图像');
实验结果:
1.对数变换实验结果
2.幂律变换实验结果