实验 2 灰度变换与空间滤波
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
实验 2 灰度变换与空间滤波
一、实验目的
- 掌握灰度变换的原理和应用。
- 掌握对数变换、幂律变换和直方图均衡化的原理和应用。
- 掌握线性空间滤波和非线性空间滤波中相关函数的使用。
二、实验例题
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]。
答
f=imread('Pout.tif');
g=imadjust(f);
figure; imshow(f);
figure; imhist(f);
figure; imshow(g); imwrite(g, '灰度扩展图像.tif');
figure; imhist(g);
2. 使用对数变换压缩动态范围。
对数变换通过式
(
1
)
(1)
(1)中的表达式实现
g
=
c
∗
log
(
1
+
double
(
f
)
)
(1)
g=c^{*} \log (1+\text { double }(f))\tag1
g=c∗log(1+ double (f))(1)
图 3 是一个取值范围为 0 至 1.5×106 的傅里叶频谱它被线性地显示在一个 8 比
特系统中。请使用对数变换减小其动态范围以改善图像的视觉效果。
答
f=imread('2.tif');
g=im2uint8(mat2gray(log(1+double(f))));
%使用函数 mat2gray 可将值限定在范围[0 1]内;
%使用函数 im2uint8 可将值限定在范围[0 255]内。
imshow(g);
imwrite(g, '对数变换后图像.tif');
另一种情况仅仅使用im2uint8
函数
f=imread('傅里叶频谱.tif');
g=im2uint8(log(1+double(f)));
%使用函数 im2uint8 可将值限定在范围[0 255]内。
imshow(g);
imwrite(g, '对数变换后图像.tif');
实际上这里会显示出来一个黑白的图片
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 倍的花粉图像其突出特点是较暗且动态范围较低。请给出其灰度直方图并给出直方图均衡化之后的结果。
答
f=imread('3.tif');
figure; imhist(f);
ylim('auto'); %自动设定坐标轴的取值范围和刻度线
g=histeq(f, 256);
figure; imshow(g);
imwrite(g, '直方图均衡化后的图像.tif');
figure; imhist(g)
ylim('auto')
个人视角看直方图均衡化得到的图片更加的清晰。