例:对于原图pout.tif ,将其小雨30的灰度不变,将30到150的灰度值拉伸到30到200,同时压缩150到255的灰度值到200与255之间
Matlab 程序如下:
%读入并显示原始图像
I=imread('pout.tif');
imshow(I);
I=double(I);
[M,N]=size(I);
%进行灰度变换
for i=1:M
for j=1:N
if I(i,j)<=30
I(i,j)=I(i,j);
elseif I(i,j)<=150
I(i,j)=(200-30)/(150-30)*(I(i,j)-30)+30;
else
I(i,j)=(255-200)/(255-150)*(I(i,j)-150)+200;
end
end
end
%变换后的结果
figure(2);
imshow(uint8(I));
灰度非线性变换
对数变换在有些情况下,如在显示图像的福利叶谱时,其动态范围远超过显示设备的显示能力,此时,仅有图像中最亮部分可在显示设备上显示,而频谱中的低值将看不见。要消除因动态范围太大所引起的失真,一种有效的方法是对原图像的动态范围进行压缩。常用的是借用对数变换形式对动态范围进行调整,数学表达式为
T=clog(1+|s|)
例:设原图像的灰度值取值范围为[0,512],现要将原图的灰度压缩到[0,256];这时就可以使用对数变换,其公式是t=41*log(1+|s|)
Matlab程序如下:
I=imread('pout.tif');
figure;imshow(I);
I=double(I);
I2=41*log(1+I);
I2=uint8(I2);
figure;
imshow(I2);
实验二直方图(灰度)变换与直方图均衡化
图像直方图是图像的重要统计特征。表示了数字图像中每一个灰度级与该灰度级出现的频率间的统计关系。
若一幅图像其像素占有全部可能的灰度级且分布均匀,则这样的图像有高对比度和多变的灰度色调,从而显示出一幅灰度级丰富且动态范围大的图像。其基本思想是将原始图像不均匀的直方图变换为均匀分布的形式,这样可加大灰度值得动态范围,从而达到增强灰度整体对比度的效果。
Matlab程序如下:
I=imread('circuit.tif');
figure;
subplot(221);
imshow(I);
subplot(222);
imhist(I);
I1=histeq(I);
figure;
subplot(221);
imshow(I1);
subplot(222);
imhist(I1);
实验三图像平滑(滤波)
消除图像噪声的工作称之为图像图像平滑(滤波)。平滑的目的有两个:改善图像质量
以及抽出图像特征。平滑可以在空间域进行,也可以在频域进行。
(1) 图像平均
另一种常用的方法是图像平均处理,它常用于在图像采集中去除噪声。设有一幅混入噪声的图像g(x,y),它是由原始图像f(x,y)和噪声图e(x,y)叠加生成的:g(x,y)= f(x,y)+ e(x,y)
假设各点的噪声是互不相关的,且具有零均值。在这种情况下,我们可以通过将一系列图像{i g (x,y)}相加来消除噪声。设将N 幅图像相加求平均得到一幅图像,即:
∑==N i i y x g N y x g 1
_
),(1),(
那它们的期望值为: ),(),(_y x f y x E g =⎭
⎬⎫⎩⎨⎧ 2),(2
)
,(1_y x e y x N g σσ= 其中,2
),(_y x g σ与2),(y x e σ分别是g _
与e 的方差。因此,考虑新图像和噪声图像各自均方差间的关系,有:
Matlab 程序
I=imread('tire.tif');
[M,N]=size(I);
II1=zeros(M,N);
for i=1:16
II(:,:,i)=imnoise(I,'gaussian',0,0.01);
II1=II1+double(II(:,:,i));
if or(or(i==1,i==4),or(i==8,i==16));
figure;
imshow(uint8(II1/i));
end
end
(2)模版平滑
第一幅图为原始图像,第二幅图为迭加了均匀分布随机噪声的8位灰度图象,最后几幅图依次为3x3、5x5、7x7和9x9平滑模板对原始图像进行平滑滤波的结果。由此可见,当所有平滑模板尺寸增大时,对噪声的消除有所增强,但同时所得到的图像变得更加模糊,细节的锐化程度逐步减弱。