资源描述
数字图像实验chengxu
———————————————————————————————— 作者:
———————————————————————————————— 日期:
16
个人收集整理 勿做商业用途
数字图像处理实验报告
系 别
专 业
班级/学号
学生姓名
实验日期
成 绩
实验1 点运算和直方图处理
一、 实验目的
1. 掌握利用Matlab图像工具箱显示直方图的方法
2。 掌握运用点操作进行图像处理的基本原理。
3. 进一步理解利用点操作这一方法进行图像处理的特点.
4. 掌握利用Matlab图像工具箱进行直方图均衡化的基本方法。
二、 实验的硬件、软件平台
硬件: 计算机
软件: 操作系统:WINDOWS 2000
应用软件:MATLAB
三、 实验内容及步骤
1。 了解Matlab图像工具箱的使用。
2. 利用Matlab图像工具箱对图像进行点操作,要求完成下列3个题目中的至少2个。
⑴ 图1灰度范围偏小,且灰度偏低,改正之.
⑵ 图2暗处细节分辨不清,使其能看清楚。
⑶ 图3亮处细节分辨不清,使其能看清楚。
图1 图2 图3
3. 给出处理前后图像的直方图。
4。 利用MatLab图像处理工具箱中函数对以上图像进行直方图均衡化操作,观察结果。
四、程序
点操作:
图一
I=imread(’e:\picture\POINT2。bmp');
A=rgb2gray(I);%转化为灰度图
subplot(221);%画两行两列第一个图
imshow(A);%显示图像
subplot(222);
imhist(A);%显示直方图
[l,h]=size(A);%读图像大小
for m=1:l%m从1到l循环
for n=1:h
B(m,n)=A(m,n)*1.72+6;%A图的所有灰度值乘以1.72加6之后的图
end
end
subplot(223);
imshow(B);
subplot(224);
imhist(B);
图二:
clc
clear all;
B1=imread('e:\picture\POINT1.bmp’);
B2=rgb2gray(B1);
[C,K]=size(B2);
for i=1:C
for j=1:K
if B2(i,j)<30%当B点像素值小于30时
A(i,j)=1.5*B2(i,j)+20;%B所有灰度值乘以1。5加20
else A(i,j)=B2(i,j);
end
end
end
subplot(221)
imshow(B1);
subplot(223)
imshow(A);
subplot(222)
imhist(B2);
subplot(224)
imhist(A);
直方图:
I=imread('e:\picture\POINT2.bmp');
A=rgb2gray(I);%转化为灰度值
[l,h]=size(A);%读取图的大小
subplot(221);
imshow(A);
subplot(222);
imhist(A);
subplot(223);
B=imadjust(A,[0,0.45],[0,1],1.6);%进行图像的灰度变换
imshow(B);
subplot(224);
imhist(B);
对比图像处理前后的直方图可知。源图像的灰度范围较小,图像均衡化处理后。灰度级取值的动态范围扩大了,但灰度级减少了.直方图变得更稀疏。并且灰度级值整体增大了。体现在直方图整体向右平移了一段距离。
四、 思考题
1. 点操作能完成哪些图像增强功能?
点操作可以扩大灰度值的范围。并且可以改变某点灰度值的大小,实现增强或减弱图像亮度、增强对比度以及直方图均衡化处理。
2。 直方图均衡化后直方图为何并不平坦?为何灰度级会减少?
均衡化后的直方图不平坦是由于图像中各灰度级出现的概率不同。均衡化后的直方图使灰度级分布具有均匀概率密度.扩展了像素取值的动态范围,但减少了灰度级
五、学到的东西
通过这次实验,我学会了如何用点操作和直方图处理图像,对于一些基本语句的使用有了更深刻的认识.比如imadjust语句的使用等等。
实验2 图像平滑实验
一、实验目的
1.通过实验掌握图像去噪的基本方法;
2.学会根据情况选用不同方法。
二、实验的硬件、软件平台
硬件:计算机
软件:操作系统:WINDOWS 2000
应用软件:MATLAB
三、实验内容及要求
1.实验内容
请在如下面方法中选择多个,完成图像去噪操作,并进行分析、比较。
(1)对静态场景的多幅图片取平均;
(2)空间域模板卷积(不同模板、不同尺寸);
(3)频域低通滤波器(不同滤波器模型、不同截止频率);
(4)中值滤波方法。
2.实验要求
(1)图片可根据需要选取;
(2)对不同方法和同一方法的不同参数的实验结果进行分析和比较,如空间域卷积模板可有高斯型模板、矩形模板、三角形模板和自己根据需求设计的模板等;模板大小可以是3×3,5×5,7×7或更大。频域滤波可采用矩形或巴特沃斯等低通滤波器模型,截止频率也是可选的.
(3)分析比较不同方法的结果。
四、程序
a1=imread(’E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise1.bmp’);
a2=imread(’E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise2。bmp’);
a3=imread('E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise3。bmp’);
a4=imread('E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise4。bmp’);
a5=imread(’E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise5。bmp');
a6=imread(’E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise6.bmp’);
a7=imread(’E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise7.bmp’);
a8=imread(’E:\picture\ͼÏñ´úÊýÔËËãÓÃͼƬ\lenna_noise8。bmp’);
b1=double(a1)/255;
b2=double(a2)/255;
b3=double(a3)/255;
b4=double(a4)/255;
b5=double(a5)/255;
b6=double(a6)/255;
b7=double(a7)/255;
b8=double(a8)/255;
c=(b1+b2+b3+b4+b5+b6+b7+b8)/8;%°Ë·ùͼȡƽ¾ù
subplot(331),imshow(a1);
subplot(332),imshow(a2);
subplot(333),imshow(a3);
subplot(334),imshow(a4);
subplot(335),imshow(a5);
subplot(336),imshow(a6);
subplot(337),imshow(a7);
subplot(338),imshow(a8);
subplot(339),imshow(c)
clear all
i=imread(’E:\picture\MCH。BMP');
i=rgb2gray(i)
i=double(i)/255;
subplot(231);
imshow(i);
title('原图像’)
subplot(232);
h=fspecial(’gaussian’,[5 5]); %选用高斯模板
a=filter2(h,i);
imshow(a);
title(’高斯模版’)
h=1/48*[0 1 2 1 0;1 2 4 2 1;2 4 8 4 2;1 2 4 2 1;0 1 2 1 0]; %选用加权模板
b=filter2(h,i);
subplot(233);
imshow(b);
title('加权模版’)
h=medfilt2(i,[5 5]);%中值滤波
subplot(234);
imshow(h)
title('中值滤波’)
subplot(235);
h=fspecial('average',[5,5]);%平均模版
c=filter2(h,i);
imshow(c);
title(’平均模版')
从图片上分析,中值滤波的效果最好,分析出的图片最清晰
滤波器:
i=imread(’E:\picture\平滑用图像\Panda_jiaoyan。bmp’); %读入图像
subplot(221);
imshow(i); %显示图像
a=fft2(double(i)); %进行傅里叶变换
fc=fftshift(a); %把频谱移中 fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。
[m,n]=size(fc); %获取频谱图大小
for i=1:m %进行点运算
for j=1:n
u=floor(i-m/2); %计算频率平面道远点的距离
v=floor(j-n/2);
d=(u^2+v^2)^0。5; 30HZ
h(i,j)=1/(1+(d/30)^2); %定义巴特沃斯低通滤波器
fe(i,j)=h(i,j)*fc(i,j); %进行巴特沃斯低通滤波
end
end
FF=ifftshift(fe); %对经巴特沃斯处理的频谱进行逆移中
ff=real(ifft2(FF)); %取傅里叶逆变换的实数部分
subplot(222);
imshow(uint8(ff)); %显示图像
[m,n]=size(fc); %获取频谱图大小
for i=1:m %进行点运算
for j=1:n
u=floor(i-m/2); %计算频率平面道远点的距离
v=floor(j-n/2);
d=(u^2+v^2)^0.5; 60HZ
h(i,j)=1/(1+(d/60)^2); %定义巴特沃斯低通滤波器
fe(i,j)=h(i,j)*fc(i,j); %进行巴特沃斯低通滤波
end
end
FF=ifftshift(fe); %对经巴特沃斯处理的频谱进行逆移中
ff=real(ifft2(FF)); %取傅里叶逆变换的实数部分
subplot(223);
imshow(uint8(ff)); %显示图像
[m,n]=size(fc); %获取频谱图大小
for i=1:m %进行点运算
for j=1:n
u=floor(i-m/2); %计算频率平面道远点的距离
v=floor(j-n/2);
d=(u^2+v^2)^0。5; 80HZ
h(i,j)=1/(1+(d/80)^2); %定义巴特沃斯低通滤波器
fe(i,j)=h(i,j)*fc(i,j); %进行巴特沃斯低通滤波
end
end
FF=ifftshift(fe); %对经巴特沃斯处理的频谱进行逆移中
ff=real(ifft2(FF)); %取傅里叶逆变换的实数部分
subplot(224);
imshow(uint8(ff)); %显示图像
依次显示原图、30HZ、60HZ、80HZ的图片
五、思考题
1.不同空间域卷积器模板的滤波效果有何不同?
高斯滤波器和均值滤波器的滤波效果比其余两模板的滤波效果要好.
2.空间域卷积器模板的大小的滤波效果有何影响?
对比两图中经过滤波器处理过的图片,可知空间域卷积滤波中,模板的大小对滤波的效果没有太大的影响,但是模板越大,处理后的图像越模板,从视觉上看,滤波的效果更好。
3.用多幅图像代数平均的方法去噪对图像有何要求?
用多幅图代数平均的方法去噪时,要求有在不同干扰下拍摄的多张图像
4.不同频域滤波器的效果有何不同?
滤波器不同的频域滤掉的波段不同
六、学到的东西
通过这次实验,我学到了如何用不同算子处理图像,各种不同的算子在平时上课的时候只是一个抽象的概念,在这里被具体化了,通过实验我们更深刻的了解到了不同算子对图像处理的作用。同时我还学到了如何使用滤波器处理图片。
实验三 图像的边缘检测
一、实验目的
1.进一步理解边沿检测的基本原理。
2.掌握对图像边沿检测的基本方法。
3.学习利用Matlab图像工具箱对图像进行边沿检测.
二、实验原理
边缘检测在图像处理中可分为空域下的操作和频域下的操作。本实验以空域下的操作为主要实验内容,其他方法同学们可以在课后自行实验。空域下的图像边缘检测主要应用的是领域运算.
三、实验要求
对边缘检测的要求:使用Matlab图像处理工具箱中的不同方法对下图的边缘进行提取;注意观察不同操作对垂直方向、水平方向、斜方向的提取效果有何区别;注意观察提取后的边界是否连续,若不连续可采用什么方法使其连续。
四、实验步骤
1.打开计算机,启动MATLAB程序;
2.调入实验指导书所示的数字图像,利用MATLAB图像工具箱中已有函数进行编程以实现图像的边缘检测;
3.显示原图和处理过的图像。
4.记录和整理实验报告
五、实验仪器
1.计算机;
2.MATLAB程序;
3.记录用的笔、纸。
六、程序
clear all;
a=imread(’E:\picture\Image1.bmp');
A=rgb2gray(a);
h1=[1,1,1;0,0,0;—1,—1,-1];%水平
h2=[0,1,1;—1,0,1;—1,—1,0]; %45度
h3=[1 0 -1;1 0 —1;1 0 —1];%竖直
h4=[0,—1,—1;1,0,—1;1,1,0];%135度
j1=imfilter(A,h1);%对数组进行滤波
j2=imfilter(A,h2);
j3=imfilter(A,h3);
j4=imfilter(A,h4);
x=uint8(j1); %转化成uint8型的
y=uint8(j2) ;
z=uint8(j3);
m=uint8(j4);
D=imadd(x,y);
D1=imadd(D,z);
D2=imadd(D1,m);%叠加
subplot(121),imshow(A)
subplot(122),imshow(D2)
七、学到的东西
通过这次实验,我了解到了图片的边缘提取,单线和双线的不同提取,通过实验可以了解边缘提取的用处
展开阅读全文