图像增强函数说明和程序1Word格式文档下载.docx
《图像增强函数说明和程序1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图像增强函数说明和程序1Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
%直方图的值赋予h
hh=imhist(i1)/numel(i1);
%得到归一化的直方图值
figure
(1)
imhist(i1)%figure1显示直方图
figure
(2)
imhist(i1,2)
三、直方图均衡化处理
直方图均衡化处理由工具箱中的函数histeq实现,该函数的语法为:
g=histeq(f,nlev)
其中,f为输入图像,nelv为输出图像指定的灰度级数。
若nlev等于输入图像中可能的灰度级数总数L,则histeq直接执行变换函数,若nlev小于L,则histeq试图划分灰度级,以便能够得到较为平坦的直方图。
i2=histeq(i1);
%直方图均衡化处理后得到的图像
四、中值滤波
工具箱提供了一个二维中值滤波函数:
g=medfilt2(f,[m,n],padopt)
其中,f为输入函数,数组[m,n]定义了一个大小为m×
n的邻域,中值就在该邻域上计算,而padopt指定了三个可选择的边界填充项之一:
’zero’(默认值);
’symmetric’,表示f按照镜像反射方式对称地沿边界扩展;
’indexed’,若f是double类图像,则以1来填充图像,否则以0来填充图像。
该函数的默认形式为:
g=medfilt2(f)
它使用一个大小为3×
3的邻域来计算中值,并以0来填充图像的边界。
I=imread('
J=imnoise(I,'
0.02);
K=medfilt2(J);
imview(J),imview(K)
五、线性空间滤波
1、imfilter函数
工具箱使用imfilter函数来实现线性空间滤波,该函数的语法为:
g=imfilter(f,w,filtering_mode,boundary_options,size_options)
其中,f为输入图像,w为滤波掩模,g为滤波结果。
filtering_mode指定在滤波过程中是使用相关(’corr’)还是卷积(’conv’)。
boundary_options指定边界填充方法,size_options可以是’same’或’full’,’same’表示g同f大小相同,’full’表示g的大小是f扩展后的结果。
其他参数见下表。
选项
描述
filtering_mode
’corr’
滤波通过使用相关来完成,该值是默认值
’conv’
滤波通过使用卷积来完成
boundary_options
P
边界扩充通过使用值p(无引号)进行。
P的默认值为0
‘replicate’
边界扩充通过使用f外边界的值
‘symmetric’
边界扩充通过镜像反射f的边界
‘circular’
把原图像f看成是一个二维周期函数来扩充边界
size_options
‘full’
g的大小是f扩展后的结果
‘same’
g同f大小相同,该值为默认值。
i4=imnoise(i1,'
0,0.002);
w=ones(3)/9;
g11=imfilter(i4,w,'
replicate'
figure(4),imshow(g11)
figure(5),imshow(i4)
2、fspecial函数
工具箱支持一些预定义的二维线性空间滤波器,这些滤波器可以通过使用函数fspecial来实现,其语法如下:
w=fspecial(‘type’,parameter)
其中,’type’表示滤波器类型,parameter进一步定义了滤波器。
见下表给给出的参数定义。
类型
函数和参数
‘average’
fspecial(‘average’,[r,c])。
大小为r×
c的一个矩形平均滤波器。
默认值为3×
3,若一个数来代替[r,c],则表示方形滤波器。
‘disk’
fspecial(‘disk’,r)。
一个圆形平均滤波器(包含在2r+1大小的正方形内),半径为r。
默认半径为5。
‘gaussian’
fspecial(‘gaussian’,[r,c],sig)一个大小为r×
c的高斯低通滤波器,标准差为sig(正)。
3和0.5。
若一个数来代替[r,c],则表示方形滤波器。
‘laplacian’
fspecial(‘laplacian’,alpha)。
一个大小为3×
3的拉普拉斯滤波器,其形状由alpha指定,alpha是范围[0,1]一个数。
Alpha的默认值是0.5。
‘log’
fspecial(‘log,[r,c],sig)一个大小为r×
c的高斯-拉普拉斯滤波器,标准差为sig(正)。
默认值为5×
5和0.5。
‘motion’
fspecial(‘motion’,len,theta)。
输出一个滤波器。
这个滤波器与图像做卷积的效果,就像照相机沿theta所指的方向运动len个像素造成的效果一样(就像照相机与景物的关系)。
运动方向由theta指定,其单位为度,即从水平方向逆时针转动的角度。
默认值为9和0,表示沿水平方向9个像素的运动。
(请阅matlab中的help文档)
‘prewitt’
fspecial(‘prewitt’)。
输出一个大小为3×
3的prewitt掩模mv,它近似于垂直梯度。
水平梯度掩模可通过置换结果wh=wv‘得到。
‘sobel’
fspecial(‘sobel’)。
3的sobel掩模sv,近似于垂直梯度。
水平梯度掩模可通过置换结果sh=sv‘得到。
‘unsharp’
fspecial(‘unsharp,alpha’)。
3的非锐化对比度增强滤波器。
参数alpha控制形状:
它必须是一个大于0和小于或等于1的数。
默认值为0.2。
对应的函数名为kongjianlvbo.m
实例1:
1%线性空间滤波
%使用imfilter和fspecial两个函数
%w=ones(3)/9;
w=fspecial('
average'
3)
p1=imfilter(i1,w,'
p2=imfilter(i2,w,'
p3=imfilter(i3,w,'
subplot(2,3,1),imshow(i1),title('
原始图像'
)
subplot(2,3,2),imshow(i2),title('
加椒盐噪声图像'
subplot(2,3,3),imshow(i3),title('
加高斯噪声图像'
subplot(2,3,4),imshow(p1),title('
原始图像均值'
subplot(2,3,5),imshow(p2),title('
椒盐噪声图像均值'
subplot(2,3,6),imshow(p3),title('
高斯噪声图像均值'
disk'
y1=imfilter(i1,w,'
y2=imfilter(i2,w,'
y3=imfilter(i3,w,'
subplot(2,3,4),imshow(y1),title('
原始图像圆形均值'
subplot(2,3,5),imshow(y2),title('
椒盐噪声图像圆形均值'
subplot(2,3,6),imshow(y3),title('
高斯噪声图像圆形均值'
g1=imfilter(i1,w,'
g2=imfilter(i2,w,'
g3=imfilter(i3,w,'
figure(3)
subplot(2,3,4),imshow(g1),title('
原始图像高斯低通'
subplot(2,3,5),imshow(g2),title('
椒盐噪声图像高斯低通'
subplot(2,3,6),imshow(g3),title('
高斯噪声图像高斯低通'
laplacian'
l1=imfilter(i1,w,'
l2=imfilter(i2,w,'
l3=imfilter(i3,w,'
figure(4)
subplot(2,3,4),imshow(l1),title('
原始图像拉普拉斯'
subplot(2,3,5),imshow(l2),title('
椒盐噪声图像拉普拉斯'
subplot(2,3,6),imshow(l3),title('
高斯噪声图像拉普拉斯'
log'
l11=imfilter(i1,w,'
l22=imfilter(i2,w,'
l33=imfilter(i3,w,'
figure(5)
subplot(2,3,4),imshow(l11),title('
原始图像高斯拉普拉斯'
subplot(2,3,5),imshow(l22),title('
椒盐噪声图像高斯拉普拉斯'
subplot(2,3,6),imshow(l33),title('
高斯噪声图像高斯拉普拉斯'
实例2:
subplot(2,2,1);
imshow(I);
title('
OriginalImage'
H=fspecial('
motion'
20,45);
MotionBlur=imfilter(I,H,'
subplot(2,2,2);
imshow(MotionBlur);
MotionBlurredImage'
10);
blurred=imfilter(I,H,'
subplot(2,2,3);
imshow(blurred);
BlurredImage'
unsharp'
sharpened=imfilter(I,H,'
subplot(2,2,4);
imshow(sharpened);
SharpenedImage'
六、非线性空间滤波器
1、排序滤波器
图像处理工具箱中的一个非线性空间滤波器是排序滤波器rankfilter(也成为统计排序滤波器order-statistic)。
滤波器响应是基于对图像邻域中所包含的像素进行排序,然后使用排序结果确定的值来替代邻域中心像素的值。
排序滤波器处理函数如下:
g=ordfilt2(f,order,domain)
其中,f为输入图像,该函数生成输出图像的方式为:
使用邻域的一组排序元素中的第order个元素来替代f中的每个元素,而该邻域则由domain中的非零元素指定。
这里,domain是一个由0和1组成的大小为m×
n的矩阵,该矩阵指定了将在计算中使用的邻域中的像素位置。
在这种情况下,domain的作用类似于掩模。
例如,要实现大小为m×
n的最小滤波器,可使用语句:
g=ordfilt2(f,1,ones(m,n))
在该语句中,1表示mn个样本中的第一个样本,ones(m,n)创建了一个元素为1、大小为m×
n的矩阵,表明邻域内的所有样本都将用于计算。
在统计学术语中,一组排序元素中的第一个样本称为第0个百分位;
同样,第100个百分位指的是这组排序元素中的最后一个样本值。
相应地,最大滤波器的语句为:
g=ordfilt2(f,m*n,ones(m,n))
中值滤波器为:
它对应的是第50个百分位。
median计算排序序列1,2,…,mn的中值。
g=ordfilt2(f,median(1:
m*n),ones(m,n))
对应的函数名为zhongzhilvbo.m
%各种滤波窗口的中值滤波
%水平一字型窗口、窗口有5个元素的中值滤波
w0=ones(5);
w0(1,1:
5)=0;
w0(2,1:
w0(4,1:
w0(5,1:
of1=ordfilt2(i1,3,w0);
of2=ordfilt2(i2,3,w0);
of3=ordfilt2(i3,3,w0);
subplot(2,3,1),imshow(i1)
subplot(2,3,2),imshow(i2)
subplot(2,3,3),imshow(i3)
subplot(2,3,4),imshow(of1)
subplot(2,3,5),imshow(of2)
subplot(2,3,6),imshow(of3)
%垂直一字型窗口、窗口有5个元素的中值滤波
w1=ones(5);
w1(1:
5,1)=0;
5,2)=0;
5,4)=0;
5,5)=0;
ofw1=ordfilt2(i1,3,w1);
ofw2=ordfilt2(i2,3,w1);
ofw3=ordfilt2(i3,3,w1);
subplot(2,3,4),imshow(ofw1)
subplot(2,3,5),imshow(ofw2)
subplot(2,3,6),imshow(ofw3)
%十字型窗口、窗口有5个元素的中值滤波
w2=ones(3);
w2(1,1)=0;
w2(3,1)=0;
w2(1,3)=0;
w2(3,3)=0;
ow1=ordfilt2(i1,3,w2);
ow2=ordfilt2(i2,3,w2);
ow3=ordfilt2(i3,3,w2);
subplot(2,3,4),imshow(ow1)
subplot(2,3,5),imshow(ow2)
subplot(2,3,6),imshow(ow3)
%十字型窗口、窗口有9个元素的中值滤波
w3=zeros(5);
w3(3,1:
5)=1;
w3(1:
5,3)=1;
o1=ordfilt2(i1,5,w3);
o2=ordfilt2(i2,5,w3);
o3=ordfilt2(i3,5,w3);
subplot(2,3,4),imshow(o1)
subplot(2,3,5),imshow(o2)
subplot(2,3,6),imshow(o3)
%3*3窗口的中值滤波
ii3=medfilt2(i2);
ii33=medfilt2(i2,[3,3],'
symmetric'
ii4=medfilt2(i3);
subplot(2,3,1),imshow(i1)
subplot(2,3,2),imshow(i2)
subplot(2,3,4),imshow(ii3)
subplot(2,3,5),imshow(ii33)
subplot(2,3,6),imshow(ii4)
七、局部标准差滤波
图像局部标准差(LSD)算子,也叫图像局部标准差梯度。
它反映了在一幅图像当中局部区域对比度的变化。
假设f(i,j)为图像F中(i,j)位置处像素的灰度值,图像大小为MXN,w为以(i,j)为中心,大小为lxl的窗口,l为奇数且l>
1,W看作是图像中的局部区域,计算其局部标准差。
标准差反映了图像灰度局部的对比度变化程度。
在标准差大的地方,图像灰度起伏较大,即出现图像边缘的几率大,也有可能是被噪声污染;
相反,在标准差小的地方,图像灰度变化平缓,即出现图像边缘的几率小。
因此,可以根据图像局部标准差(LSD)将图像中潜在的边缘检测出来。
图像局部标准差(LSD)是窗口中全部像素点的共同贡献,在计算局部标准差过程中使用窗口内像索的平均值来代替中心点处像素,这样对于检测孤立点边缘不敏感,具有一定的平滑滤波的效果。
在像点(i,j)的l×
l的局部邻域内,确定包含像点(i,j)的若干个更小的局部邻域,假定这些更小的局部邻域的个数为n个。
在每一个更小的局部邻域内,计算包含在该邻域内所有像素的平均值和标准差,得到n个均值和n个标准差。
比较n个标准差,找出最小标准差,用这个最小标准差对应的均值作为像点(I,j)的新的灰度值,也就是局部标准差滤波后的灰度值。
局部标准差滤波在一定程度上既能滤除噪声,又能维持边缘清晰。
在deviationfilt1中,包含像点(i,j)(图中黑色圆圈所示)、在3×
3邻域内的若干个更小的局部邻域见图2,即与方形(正方形或长方形)相交的像点组成的邻域。
在deviationfilt2中,包含像点(i,j)、在3×
3邻域内的若干个更小的局部邻域见图1,即与红色圆圈相交的像点组成的邻域。
在deviationfilt3中,在3×
3邻域内的,包含像点(i,j)、与长方形和十字形相交的像点组成的邻域,见图2。
图1图2
对应的程序名为:
LSDfiltering,被调用的函数为:
deviationfilt1、deviationfilt2、deviationfilt3。
0.04);
0,0.01);
%对加噪声的lena图像采用局部标准差滤波结果图像
bw10=deviationfilt1(i4,[1,1],'
bw11=deviationfilt1(i3,[1,1],'
subplot(2,3,1),imshow(i1);
subplot(2,3,2),imshow(i4);
subplot(2,3,3),imshow(i3);
subplot(2,3,5),imshow(bw10);
subplot(2,3,6),imshow(bw11);
bw12=deviationfilt2(i4,[1,1],'
bw13=deviationfilt2(i3,[1,1],'
subplot(2,3,5),imshow(bw12);
subplot(2,3,6),imshow(bw13);
bw14=deviationfilt3(i4,[