数字图像处理matlab版实验报告.docx
《数字图像处理matlab版实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理matlab版实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
![数字图像处理matlab版实验报告.docx](https://file1.bdocx.com/fileroot1/2023-5/20/233feef4-2251-40bf-b26d-ac9863eb2d3e/233feef4-2251-40bf-b26d-ac9863eb2d3e1.gif)
数字图像处理matlab版实验报告
数字图像处理实验报告(matlab版)
一.实验目的:
熟悉数字图像处理中各种椒盐噪声的实质,明确各种滤波算法的的原理。
进一步熟悉matlab的编程环境,熟悉各种滤波算法对应的matlab函数。
实验结果给以数字图像处理课程各种算法处理效果一个更直观的印象。
二.实验原理:
1.IPT(图像处理工具箱)基本函数介绍
1.imread函数
该函数用于从图形文件中读出图像。
格式A=IMRAED(FILENAME,FMT)。
该函数把FILENAME中的图像读到A中。
若文件包含一个灰度图,则为二维矩阵。
若文件包含一个真彩图(RGB),则A为一三维矩阵。
FILENAME指明文件,FMT指明文件格式。
格式[X,MAP]=IMREAD(FILENAME,FMT).把FILENAME中的索引图读入X,其相应的调色板读到MAP中.图像文件中的调色板会被自动在范围[0,1]内重新调节。
FMT的可能取值为jpg或jpeg,tif或tiff,bmp,png,hdf,pcx,xwd。
2.imwrite函数
该函数用于把图像写入图形文件中。
格式IMWRITE(A,FILENAME,FMT)把图像A写入文件FILENAME中。
FILENAME指明文件名,FMT指明文件格式。
A既可以是一个灰度图,也可以是一个真彩图像。
格式IMWRITE(X,MAP,FILENAME,FMT)把索引图及其调色板写入FILENAME中。
MAP必须为合法的MATLAB调色板,大多数图像格式不支持多于256色的调色板。
FMT的可能取值为tif或tiff,jpg或jpeg,bmp,png,hdf,pcx,xwd。
3.imshow函数
显示图像。
格式IMSHOW(I,N).用N级离散灰度级显示灰度图象I。
若省略N,默认用256级灰度显示24位图像,64级灰度显示其他系统。
格式IMSHOW(I,[LOWHIGH]),把I作为灰度图显示。
LOW值指定为黑色,HIGH指定为白色,中间为按比例分布的灰色。
若[LOW,HIGH]为[],则函数把图像中的最小值显示为黑色,最大值显示为白色。
2.图像几何变换
1.imcrop函数
该函数用于把一幅图像经裁剪后放入一指定的矩形中。
例如在以下的语法格式中IMCORP显示输入图像,并等待用鼠标指定矩形。
2.imrotate函数
该函数用于旋转图像。
格式B=IMROTATE(A,ANGLE,METHOD)。
用于把图像A按逆时针方向和特殊的填充方法旋转ANGLE度,METHOD可取以下值:
“nearest”:
默认值,用最近邻插值。
“bilinear”:
用双线性插值。
“bicubic”:
用双立方插值。
3.直方图绘制
IMHIST函数
该函数用于计算图像数据的直方图。
格式IMHIST(I,N).用于显示灰度图像I的N级直方图。
对灰度图默认N为256,对二值图默认N为2。
格式IMHIST(X,MAP)。
用于显示索引图的直方图。
5.直方图均衡
HISTEQ函数
该函数用直方图均衡的方法增强图像的对比度。
例如用直方图均衡的方法增强一幅灰度图。
三.实验内容:
1.给出一幅灰度图像,请加上高斯噪声,绘制其直方图,选择合适的滤波器滤波,并做直方图均衡。
(利用IPT函数)
实验代码:
f=imread('Fig0318(a)(ckt-board-orig).tif');
imshow(f);
H=imnoise(f,'salt&pepper',0.05)
imhist(f);
figure;
imshow(H);
H1=fspecial('average',[33]);%3*3均值滤波
MotionBlur1=imfilter(H,H1,'replicate');
figure;
imshow(MotionBlur1)
J=histeq(H);%直方图均衡化
figure;
imhist(J);%直方图均衡化后的直方图
figure,imshow(J);%直方图均衡化后的图片
实验原始图像:
加上椒盐噪声后的照片:
加入椒盐噪声后的直方图:
使用均值滤波器后的图片:
直方图均衡化后的直方图:
直方图均衡化后的图片:
2.给出一幅图像,请加上高斯噪声,选择合适的滤波器滤波,并做直方图均衡。
(不能使用IPT加噪声、滤波与直方图均衡函数)
实验代码:
I=imread('Fig0318(a)(ckt-board-orig).tif');
imshow(I);%实验图像
figure,imhist(I);
array1=size(I);
a=im2double(I)
s=0.01;
J=a+sqrt(s)*randn(array1);
figure,imshow(J);%加入高斯噪声后的图像
figure,imhist(J);
n=3;
p=size(I);
p1=double(I);
p2=p1;
fori=1:
p
(1)-n+1
forj=1:
p
(2)-n+1
c=p1(i:
i+(n-1),j:
j+(n-1)).*1;
s=sum(sum(c));
p2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);
end
end
K=uint8(p2);
figure,imshow(K);%均值滤波后的图像
figure,imhist(K);
array1=double(K);
[m,n]=size(K);
c=255;
result=0;
x=zeros(1,256);
y=zeros(1,256);
z=zeros(1,256);
fori=1:
m
forj=1:
n
t=array1(i,j);
y(t+1)=y(t+1)+1;
end
end
fork=1:
256
z(k)=y(k)/(m*n);
end
forl=1:
256
result=result+z(l);
x(l)=result;
end
x=round(c*x);
fori1=1:
m
forj1=1:
n
M(i1,j1)=x(array1(i1,j1)+1);
end
end
P=uint8(M);
figure,imshow(P);%直方图均衡后的图像
figure,imhist(P);
实验图像:
原图像直方图:
加高斯噪声后的图像:
加高斯噪声后的直方图:
均值滤波后的图像:
均值滤波后图像的直方图:
直方图均衡后的图像:
直方图均衡后的图像的直方图
四.实验总结:
Matlab数字图像处理整体来说比c语言好用的多。
很多时候,我们可以直接利用现成的函数而不必了解其中的具体过程。
但是,第二题的,主要还是利用了滤波的真正算法思想,相当于在matlab中将整个滤波,加噪声的算法重新过了一遍。
整个实验,进一步熟悉了matlab编程,熟悉掌握matlab中与数字头图像处理有关的函数及其用法,也进一步巩固了之前所学的算法的基本思想。
也让我明白在实际应用之中,对于特定的情形,一般会有最好的滤波等处理方法,我们应该努力寻找此情景下的最佳算法。