实验 2 灰度变换与空间滤波

目录

  • 实验 2 灰度变换与空间滤波
    • 一、实验目的
    • 二、实验例题
      • 1. 灰度变换函数 `imadjust`
      • 2. 使用对数变换压缩动态范围。
      • 3. 直方图均衡化 histogram equalization

实验 2 灰度变换与空间滤波

一、实验目的

  1. 掌握灰度变换的原理和应用。
  2. 掌握对数变换、幂律变换和直方图均衡化的原理和应用。
  3. 掌握线性空间滤波和非线性空间滤波中相关函数的使用。

二、实验例题


1. 灰度变换函数 imadjust

函数 imadjust 是对灰度图像进行亮度变换的基本工具。其语法为:

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

此函数将图像 f 中的亮度值映射到 g 中的新值,即将 low_in 至 high_in 之间的值映射到 low_out 至 high_out 之间的值。 Low_in 以下的值映射为 low_out, high_in 以上的值映射为 high_out。输入图像应为 uint8 类、 uint16 类或 double 类图像,输出图像与输入图像有着相同的类。除图像 f 外,函数 imadjust 的所有输入均指定在 0 和 1 之间,而不论图像 f 的类。

  • 若 f 是 uint8 类图像,则函数 imadjust 将乘以 255 来确定应用中的实际值;
  • 若 f 是 uint16 类图像,则函数 imadjust 将乘以 65535。[low_in high_in]或[low_out high_out]
  • 使用空矩阵( [] ),会得到默认值[0 1]。若 high_out 小于 low_out,则输出亮度会反转。

gamma 指定曲线的形状,用于映射 f 的亮度值以生成 g。若 gamma 小于 1,则映射被加权至更高(更亮)的输出值;若 gamma 大于 1,则映射被加权至更低(更暗)的输出值;若省略,则 gamma 默认为 1(线性映射)。

例 1 将图 1 所示 Pout 图像的灰度值调整到整个灰度范围[0, 255]。

实验 2 灰度变换与空间滤波_第1张图片

图1 Pout

答:

f=imread('Pout.tif');
g=imadjust(f);
figure; imshow(f);
figure; imhist(f);
figure; imshow(g); imwrite(g, '灰度扩展图像.tif');
figure; imhist(g);

实验 2 灰度变换与空间滤波_第2张图片

图2 灰度值扩展实验结果

2. 使用对数变换压缩动态范围。

对数变换通过式 ( 1 ) (1) (1)中的表达式实现:
g = c ∗ log ⁡ ( 1 +  double  ( f ) ) (1) g=c^{*} \log (1+\text { double }(f))\tag1 g=clog(1+ double (f))(1)

图 3 是一个取值范围为 0 至 1.5×106 的傅里叶频谱,它被线性地显示在一个 8 比
特系统中。请使用对数变换减小其动态范围,以改善图像的视觉效果。

实验 2 灰度变换与空间滤波_第3张图片

图3 傅里叶频谱

答:

f=imread('2.tif');
g=im2uint8(mat2gray(log(1+double(f))));
%使用函数 mat2gray 可将值限定在范围[0 1];
%使用函数 im2uint8 可将值限定在范围[0 255]内。
imshow(g);
imwrite(g, '对数变换后图像.tif');

实验 2 灰度变换与空间滤波_第4张图片
另一种情况,仅仅使用im2uint8函数

f=imread('傅里叶频谱.tif');
g=im2uint8(log(1+double(f)));
%使用函数 im2uint8 可将值限定在范围[0 255]内。
imshow(g);
imwrite(g, '对数变换后图像.tif');

实验 2 灰度变换与空间滤波_第5张图片
实际上这里会显示出来一个黑白的图片, g g g变成了 0 0 0 255 255 255两种数字,必须先使用mat2gray函数将范围限定到 [ 0 , 1 ] [0 ,1] [0,1] 之间。

执行对数变换后的图像与原图像相比,视觉效果得到了明显的改善,图像中可见细节的丰富程度更明显。

3. 直方图均衡化 histogram equalization

直方图均衡化由工具箱中的函数 histeq 实现,该函数的语法为:
g=histeq(f, nlev)
其中, f 为输入图像, nlev 是为输出图像指定的灰度级数,其默认值为 64。一般来说,我们将 nlev 赋值为灰度级的最大可能数量(通常为 256), 以得到较为正确的执行结果。

图 4 是电子显微镜下放大了近 700 倍的花粉图像,其突出特点是较暗且动态范围较低。请给出其灰度直方图,并给出直方图均衡化之后的结果。

实验 2 灰度变换与空间滤波_第6张图片

图4 花粉图像

答:

f=imread('3.tif');
figure; imhist(f);
ylim('auto'); %自动设定坐标轴的取值范围和刻度线
g=histeq(f, 256);
figure; imshow(g);
imwrite(g, '直方图均衡化后的图像.tif');
figure; imhist(g)
ylim('auto')

实验 2 灰度变换与空间滤波_第7张图片

图5 直方图均衡化

实验 2 灰度变换与空间滤波_第8张图片

图6 `g1=imadjust(f)` 实验结果

实验 2 灰度变换与空间滤波_第9张图片

图6 `g2=histeq(f, 256);` 实验结果

个人视角看,直方图均衡化得到的图片更加的清晰。

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