数字图像处理实验一_数字图像处理实验全
数字图像处理实验一由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数字图像处理实验全”。
一、实验目的及内容 内容: 灰度变换和空间滤波 1.灰度变换
利用imadjust函数(可结合stretchlim函数)对图像对比度拉伸 2.直方图绘制、均衡和匹配
利用imhist,histeq函数完成图2.8及图2.11的功能 3.空间滤波
线性空间滤波:
利用滤波函数imfilter函数完成图2.16中b,c,d,e的图像平滑效果
利用fspecial函数生成average,disk,gauian滤波器完成图像的平滑效果
利用fspecial函数生成prewitt, sobel,laplacian滤波器完成图像的锐化效果
非线性空间滤波
利用中值滤波函数medfilt2去除椒盐噪声
二、实验原理
①、函数imadjust是一个基本的图像处理工具箱函数,用于对灰度级图像进行灰度变换。
g=imadjust(f,[low_in high_in],[low_out high_out],gamma),该函数将图像f中的灰度值映射为图像g中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。
②、函数imhist是处理图像直方图的核心函数
h=imhist(f,b),其中f为输入图像,h为其直方图,b是用来形成直方图的“容器”的数目。
③、函数histeq是实现直方图匹配的函数
g=histeq(f,hspec),其中f为输入图像,hspec为规定的直方图,g为输出图像,输出图像的直方图近似于指定的直方图hspec。
④、函数imfilter用来实现线性空间滤波
-1-g=imfilter(f,w,filtering_mode,boundary_options,size_options),其中f为输入图像,w为滤波模板,g为滤波后的结果。
用于平滑的滤波器有:’average’,’disk’,’gauian’ 用于锐化的滤波器有:’laplacian’,’prewit’,’sobel’
三、实验源代码及结果
1、灰度变换、直方图绘制、均衡和匹配 f=imread('anna.jpg')%读取anna.jpg图片 subplot(2,4,1)imshow(f),title('原图')%显示原图
f1=imadjust(f,[0.2 0.5],[ 0 1])%将图片的灰度级别在0.2至0.5之间的部分拉伸
至0到1之间
subplot(2,4,2)imshow(f1),title('灰度拉伸之后')%显示灰度拉伸之后的图片 subplot(2,4,3)imhist(f),title('原图直方图')f2=histeq(f,128)%进行直方图均衡化,灰度级数设为128 subplot(2,4,4)imhist(f2),title('均衡化')%显示均衡化之后的直方图 g=imread('bag.png')%读取bag.png图像
h=imhist(g)%生成bag.png图像的直方图赋值给向量h subplot(2,4,5)imhist(g),title('规定的直方图')f3=histeq(f,h)%进行直方图匹配 subplot(2,4,6)imshow(f3),title('直方图匹配')运行结果
2、线性空间滤波
a=imread('block.png')%读取block.png图像 figure,subplot(2,3,1)imshow(a),title('原图')w=1/(31*31)*ones(31)%生成31*31的全为1的矩阵,命名为w a1=imfilter(a,w)%利用imfilter函数进行滤波 subplot(2,3,2)imshow(a1)a2=imfilter(a,w,'replicate')%图像的大小通过复制图像边界外的值来扩展 subplot(2,3,3)imshow(a2)a3=imfilter(a,w,'symmetric')%图像的大小通过边界镜像反射来扩展 subplot(2,3,4)
-3-imshow(a3)a4=imfilter(a,w,'circular')%图像的大小通过将图像处理为二维周期函数的一个周期来扩展
subplot(2,3,5)imshow(a4)aa=im2uint8(a)a5=imfilter(aa,w,'replicate')subplot(2,3,6)imshow(a5)
b=imread('anna.jpg')figure,subplot(2,2,1)imshow(b),title('原图')w1=fspecial('average',[4])%生成average平滑滤波器 b1=imfilter(b,w1)%进行滤波 subplot(2,2,2)imshow(b1),title('average')w2=fspecial('disk',5)%生成disk平滑滤波器 b2=imfilter(b,w2)subplot(2,2,3)imshow(b2),title('disk')w3=fspecial('gauian',[3 3],0.5)%生成gauian平滑滤波器 b3=imfilter(b,w3)
-4-subplot(2,2,4)imshow(b3),title('gauian')
c=imread('anna.jpg')figure,subplot(2,2,1)imshow(c),title('原图')w4=fspecial('prewitt')%生成prewitt锐化滤波器 c1=imfilter(c,w4)subplot(2,2,2)imshow(c1),title('prewitt')w5=fspecial('sobel')%生成sobel锐化滤波器 c2=imfilter(c,w5)subplot(2,2,3)imshow(c2),title('sobel')w6=fspecial('laplacian')%生成laplacian锐化滤波器 c3=imfilter(c,w6)subplot(2,2,4)imshow(c3),title('laplacian')运行结果
3、非线性空间滤波
d=imread('anna.jpg')%读取anna.jpg图像,赋值给d d1=imnoise(d,'salt & pepper',0.3)%用imnoise函数对d生成椒盐噪声 figure,subplot(1,2,1)imshow(d1),title('被椒盐噪声污染的图像')d2=medfilt2(d1)&用中值滤波器进行滤波 subplot(1,2,2)imshow(d2),title('去除椒盐噪声的图像')运行结果
四、实验总结(心得体会)
通过这次实验,首先我熟悉了Matlab的基本操作,掌握了图像处理的基本操作,比如如何读一张图片进来、如何显示一张图片等等。这些都是最基本的操作。其次我知道了灰度变换的函数imadjust的使用,它是将选定的灰度级别范围变换为规定的范围,可以自由变换图像的灰度级别;还有掌握了如何画图像的直方图、将直方图均衡化等等。还学会了图像的滤波处理,通过函数imfilter进行滤波。常用的平滑滤波器有average,disk,gauian、锐化滤波器有prewitt, sobel,laplacian。还学会了用中值滤波去除椒盐噪声。这些都是一些比较初级的函数,后面还有很多图像处理方法需要学习。