实验四 图像增强
实验内容:(1)直方图均衡化处理:给定一幅图片,作出均衡化后的直方图,并将原图和均衡化后的图片进行对比。
(2)对一副图像采用多种方法(如均值滤波)实现图像平滑;及采用“原图-低通图像(均值滤波)”、及“原图+高通图像(各种算子)”的方法锐化图像。
实验原理:(1)直方图均衡化是图像增强的重要手段,把输入图像的直方图进行均衡化处理后,可以获得更加清晰的图像。
(2)锐化和平滑是图像增强的重要手段,采用前者可以突出图像的细节,采用平滑可以滤除图像中的噪声,从而达到图像清晰的目的。
实验报告要求:给出实验代码,和实验结果图,并对实验结果进行分析。
所用函数:
(1) Imhist
函数功能:该函数用于获取图像数据直方图。
调用格式:imhist(I,n)
其中,n为指定的灰度级数目,缺省值为256
(2) histeq
g=histeq(f,n)
对图像f进行均衡化处理,n为输出图像指定的灰度级数,默认值为64;
k=histeq(f,p)
对图像f进行规定化处理,p为指定的直方图,k为输出图像,其直方图近似于指定的直方图p。
(3)fspecial
用于建立预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,para)
其中type指定算子的类型(可以为'average'——均值滤波,参数为hsize代表模板尺寸,默认值为【3,3】; 'disk'——圆形区域均值滤波,参数为radius代表区域半径,默认值为5;'gaussian'——高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为【3 3】,sigma为滤波器的标准值,单位为像素,默认值为0.5。'laplacian'——拉普拉斯算子,参数alpha用于控制算子形状,取值范围为【0,1】,默认值为0.2。'log'——拉普拉斯高斯算子,有两个参数,hsize表示模板尺寸,默认值为【3 3】,sigma为滤波器的标准差,单位为像素,默认值为0.5。’motion’——运动模糊算子,有两个参数,表示摄像物体
逆时针方向以theta角度运动了len个像素,len的默认值为9,theta的默认值为0;'prewitt'——用于边缘增强,无参数;'sobel'——用于边缘提取,无参数;'unsharp'——为对比度增强滤波器),参数alpha用于控制滤波器的形状,范围为【0,1】,默认值为0.2。para指定相应的参数。
(4)filter2
基于卷积的图象滤波函数,其语法格式为:
Y = filter2(h,X)
其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。
1.图像均衡化处理
程序:
clear all
I=imread('D:\\matlab图片\\12_gray.bmp');
H=histeq(I); %均衡化后图像I的直方图'
subplot(2,2,1),imshow(I),title('原始图像');
subplot(2,2,2),imhist(I),title('显示原始图像直方图');
subplot(2,2,3),imshow(H),title('均衡化处理的图像');
subplot(2,2,4),imhist(H),title('显示均衡化后图像的直方图');
结果:
2.图像平滑、锐化处理:
程序1
I=imread('D:\\matlab图片\\lena_gray.bmp');
a=0.01;
pic=imnoise(I,'gaussian',0,a);
%b=[1 2 2;3 4 2;1 2 4];
y1=medfilt2(pic,[3,3]);%中值滤波
y2=medfilt2(pic,[16,16]);%中值滤波
subplot(2,2,1),imshow(I),title('原图像');
subplot(2,2,2),imshow(pic),title('加噪声后的图像');
subplot(2,2,3),imshow(y1),title('中值滤波3*3处理以后的图像');
subplot(2,2,4),imshow(y1),title('中值滤波16*16处理以后的图像');
结果:
程序2
clear all
%I = imread('D:\\matlab图片\\lena_gray.bmp');
I = imread('D:\\matlab图片\\12_gray.bmp');
w=fspecial('laplacian',0);
w8=[-1,-1,-1;-1,8,-1;-1,-1,-1];
I1= imfilter(I,w, 'replicate');
f = im2double(I);
f1= imfilter(f,w, 'replicate');
f2= imfilter(f,w8, 'replicate');
f3 = f-f1;%得到平滑,突出边界
f4 = f-f2;
subplot(2,3,1),imshow(I),title('原图像');
subplot(2,3,2),imshow(I1),title('拉普拉斯算子处理图像');
subplot(2,3,3),imshow(f1),title('拉普拉斯算子处理图像');
subplot(2,3,4),imshow(f2),title('自定义算子处理图像');
subplot(2,3,5),imshow(f3),title('相减以后的图像');
subplot(2,3,6),imshow(f4),title('相减以后的图像');
因篇幅问题不能全部显示,请点此查看更多更全内容