北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx
- 文档编号:16635587
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:21
- 大小:335.53KB
北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx
《北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
原始图像'
)%在原始图像中加标题
subplot(1,2,2),imhist(I)%输出原图直方图
原始图像直方图'
)%在原图直方图上加标题
四.实验步骤
1.启动matlab
双击桌面matlab图标启动matlab环境;
2.在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:
cameraman图像;
再调用相应的直方图函数,设置参数;
最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
五.实验结果
观察图像matlab环境下的直方图分布。
(a)原始图像(b)原始图像直方图
六.实验报告要求
1、给出实验原理过程及实现代码;
2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2灰度均衡
1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;
2.理解和掌握灰度均衡原理和实现方法;
2.软件matlab;
在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
subplot(2,2,1),imshow(I)%输出图像
subplot(2,2,3),imhist(I)%输出原图直方图
a=histeq(I,256);
%直方图均衡化,灰度级为256
subplot(2,2,2),imshow(a)%输出均衡化后图像
均衡化后图像'
)%在均衡化后图像中加标题
subplot(2,2,4),imhist(a)%输出均衡化后直方图
均衡化后图像直方图'
)%在均衡化后直方图上加标题
再调用相应的灰度均衡函数,设置参数;
观察matlab环境下图像灰度均衡结果及直方图分布。
(a)原始图像(b)均衡化后图像
(c)原始图像直方图(d)均衡化后图像直方图
2、输入一幅灰度图像,给出其灰度均衡结果,并进行灰度均衡化前后图像直方图分布对比分析。
实验1.33*3均值滤波
1.熟悉matlab图像处理工具箱及均值滤波函数的使用;
2.理解和掌握3*3均值滤波的方法和应用;
三.程序设计
在matlab环境中,程序首先读取图像,然后调用图像增强(均值滤波)函数,设置相关参数,再输出处理后的图像。
I=imread('
figure,imshow(I);
J=filter2(fspecial(‘average’,3),I)/255;
figure,imshow(J);
再调用相应的图像增强(均值滤波)函数,设置参数;
观察matlab环境下原始图像经3*3均值滤波处理后的结果。
(a)原始图像(b)3*3均值滤波处理后的图像
图(3)
输入一幅灰度图像,给出其图像经3*3均值滤波处理后的结果,然后对每一点的灰度值和它周围24个点,一共25个点的灰度值进行均值滤波,看看对25个点取均值与对9个点取中值进行均值滤波有什么区别?
有没有其他的算法可以改进滤波效果。
实验1.43*3中值滤波
1.熟悉matlab图像处理工具箱及中值滤波函数的使用;
2.理解和掌握中值滤波的方法和应用;
在matlab环境中,程序首先读取图像,然后调用图像增强(中值滤波)函数,设置相关参数,再输出处理后的图像。
J=medfilt2(I,[5,5]);
再调用相应的图像增强(中值滤波)函数,设置参数;
观察matlab环境下原始图像经3*3中值滤波处理后的结果。
(a)原始图像(b)3*3中值滤波处理后的图像
图(4)
输入一幅灰度图像,给出其图像经3*3中值滤波处理后的结果,然后对每一点的灰度值和它周围24个点,一共25个点的灰度值进行排序后取中值,然后该点的灰度值取中值。
看看对25个点取中值与对9个点取中值进行中值滤波有什么区别?
实验1.5图像的缩放
1.熟悉matlab图像处理工具箱及图像缩放函数的使用;
2.掌握图像缩放的方法和应用;
在matlab环境中,程序首先读取图像,然后调用图像缩放函数,设置相关参数,再输出处理后的图像。
scale=0.5;
J=imresize(I,scale);
再调用相应的图像缩放函数,设置参数;
观察matlab环境下图像缩放后的结果。
(a)原始图像(b)缩放后的图像
图(5)
输入一幅灰度图像,给出其图像缩放后的结果,然后改变缩放比率,观察图像缩放后结果柄进行分析。
实验1.6图像旋转
1.熟悉matlab图像处理工具箱及图像旋转函数的使用;
2.理解和掌握图像旋转的方法和应用;
在matlab环境中,程序首先读取图像,然后调用图像旋转函数,设置相关参数,再输出处理后的图像。
theta=30;
K=imrotate(I,theta);
%Tryvaryingtheangle,theta.
figure,imshow(K)
再调用相应的图像旋转函数,设置参数;
观察matlab环境下图像旋转后的结果。
(a)原始图像(b)旋转后的图像
图(7)
输入一幅灰度图像,给出其图像旋转后的结果,然后改变旋转角度,观察图像旋转后结果柄进行分析。
实验1.7边缘检测(Sobel、Prewitt、Log边缘算子)
1.熟悉matlab图像处理工具箱及图像边缘检测函数的使用;
2.理解和掌握图像边缘检测(Sobel、Prewitt、Log边缘算子)的方法和应用;
在matlab环境中,程序首先读取图像,然后调用图像边缘检测(Sobel、Prewitt、Log边缘算子)函数,设置相关参数,再输出处理后的图像。
J1=edge(I,'
sobel'
J2=edge(I,'
prewitt'
J3=edge(I,'
log'
subplot(1,4,1),imshow(I);
subplot(1,4,2),imshow(J1);
subplot(1,4,3),imshow(J2);
subplot(1,4,4),imshow(J3);
再调用相应的边缘检测(Sobel边缘算子、Prewitt边缘算子、Log边缘算子)函数,设置参数;
观察经过图像边缘检测(Sobel、Prewitt、Log边缘算子)处理后的结果。
(a)原始图像(b)Sobel边缘算子
(c)Prewitt边缘算子(d)Log边缘算子
输入一幅灰度图像,给出其图像边缘检测(Sobel、Prewitt、Log边缘算子)后的结果并进行分析对比。
%对图像进行一些简单的几何处理
clc;
clear
invI=imcomplement(I);
%求I的补
K=uint8(filter2(fspecial('
gaussian'
),I));
%对图像进行高斯滤波
[m,n]=size(I);
%获取图像的长宽
i=1:
m;
j=1:
n;
M=zeros(m,n);
M(i,j)=I(i,j)+20;
%给图像所有像素加上一个值
Z=I-K;
%求出经过高斯滤波和源图像的差值
I1=I*1.3;
%做源图像和常数相乘
I2=I./invI;
%做源图像和其不图像相除
J1=imresize(I,0.2);
%将图像变为原来的0.2倍
J2=imresize(I,2.5);
%将图像变为原先的2.5倍
figure
(1);
subplot(3,3,1);
imshow(I,[0255]);
)
subplot(3,3,2);
imshow(invI,[0255]);
图像求逆'
subplot(3,3,3);
imshow(K,[0255]);
图像滤波'
subplot(3,3,4);
imshow(M,[0255]);
图像加法'
subplot(3,3,5);
imshow(Z,[0255]);
图像减法'
subplot(3,3,6);
imshow(I1,[0255]);
图像乘法'
subplot(3,3,7);
imshow(I2,[0255]);
图像除法'
subplot(3,3,8);
imshow(J1,[0255]);
图像缩小'
subplot(3,3,9);
imshow(J2,[0255]);
图像放大'
%图像直方图均衡及其处理
B=imread('
pout.tif'
B1=histeq(B);
%做直方图均衡化
figure
(2);
subplot(2,2,1);
imshow(B);
subplot(2,2,2);
imshow(B1);
均衡化后'
subplot(2,2,3);
imhist(B);
原始图像的直方图'
subplot(2,2,4);
imhist(B1);
均衡化后图像的直方图'
%图像滤波,平滑,边缘提取,增强
C=imread('
F1=[111;
111;
111]/9;
%3*3均值滤波
F2=[121;
000;
-1-2-1];
%求边缘
F3=[-1-1-1;
-19-1;
-1-1-1];
%高通滤波
C1=filter2(F1,C);
%应用3*3均值滤波器
C2=filter2(F2,C);
C3=filter2(F3,C);
figure(3);
imshow(C,[0255]);
原图'
imshow(C1,[0255]);
平滑滤波'
imshow(C2,[0255]);
边缘提取'
imshow(C3,[0255]);
图像增强'
%图像添加噪声并且滤除
D=imread('
eight.tif'
D1=imnoise(D,'
0,0.01);
%给图像添加噪声
D2=medfilt2(D1);
%中值滤波
figure(4);
subplot(1,3,1);
imshow(D,[0255]);
subplot(1,3,2);
imshow(D1,[0255]);
加入椒盐噪声'
subplot(1,3,3);
imshow(D2,[0255]);
中值滤波后'
%8*8矩阵做DCT反变换
clc,clear;
M=zeros(8,8);
%产生一个8*8的全0矩阵
M(1,1)=1;
%让其(0,0)点的系数为1
N1=idct2(M);
%对M做IDCT变换
N1=uint8(N1);
%转换为0-255的整数
M(1,1)=0;
M(1,2)=1;
N2=idct2(M);
N2=uint8(N2);
M(1,2)=0;
M(2,1)=1;
N3=idct2(M);
N3=uint8(N3);
M(2,1)=0;
M(5,5)=1;
N4=idct2(M);
N4=uint8(N4);
subplot(2,2,1),imshow(N1);
0,0点的值为1做dct反变换'
subplot(2,2,2),imshow(N2);
1,2点的值为1做dct反变换'
subplot(2,2,3),imshow(N3);
2,1点的值为1做dct反变换'
subplot(2,2,4),imshow(N4);
5,5点的值为1做dct反变换'
%将dct系数矩阵修改为下面这个矩阵进行变换
N=zeros(8,8);
N(1,1)=1000,N(1,2)=300,N(2,1)=10,N(2,2)=20;
K1=idct2(N);
N(1,1)=2000,N(1,2)=1000,N(2,1)=100,N(2,2)=100
K2=idct2(N);
N(1,1)=100,N(1,2)=200,N(2,1)=10,N(2,2)=20;
N(1,5)=1;
N(5,5)=20;
K3=idct(N);
N(1,1)=600,N(1,2)=300,N(2,1)=60,N(2,2)=70;
N(1,5)=19;
N(5,5)=120,N(5,1)=20;
K4=idct2(N)
subplot(2,2,1),imshow(K1,[0255]);
K1'
subplot(2,2,2),imshow(K2,[0255]);
K2'
subplot(2,2,3),imshow(K3,[0255]);
K3'
subplot(2,2,4),imshow(K4,[0255]);
K4'
%对图像做dct变换和量化
%读入原始图像
J=dct2(I);
%对原始图像做DCT变换
%获取图像大小
K1=zeros(m,n);
K2=K1;
K3=K2;
K1(i,j)=round(J(i,j)/8)%量化
K2(i,j)=round(J(i,j)/4)%量化
K3(i,j)=round(J(i,j)/16)%量化
J1=zeros(m,n);
J2=J1;
J3=J2;
J1(i,j)=K1(i,j)*8;
%反量化
J2(i,j)=K2(i,j)*4;
J3(i,j)=K3(i,j)*16;
I1=zeros(m,n);
I2=I1;
I3=I2;
I1=idct2(J1);
%反dct变换
I2=idct2(J2);
I3=idct2(J3);
figure(3)
subplot(2,2,1),imshow(I);
重建图像(q=4)'
重建图像(q=8)'
imshow(I3,[0255]);
重建图像(q=16)'
%使用量化矩阵对图像做量化
A=imread('
I=im2double(A);
T=dctmtx(8);
B=blkproc(I,[88],'
P1*x*P2'
T,T'
%DCT变换
%%%%%%%%%%%%%%%%%%%%%%%量化
Q=[1611101624405161;
1212141926586055;
1413162440576956;
1417222951878062;
182237586810910377;
243555648110411392;
49647887103121120101;
7292959811210010399];
BQ=blkproc(B,[88],'
x./P1'
Q);
%用量化矩阵量化DCT系数矩阵
BQ=round(BQ*255)/255;
%做四舍五入
IBQ=blkproc(BQ,[88],'
x.*P1'
IB=blkproc(IBQ,[88],'
T'
T);
%进行DCT反变换
%IB=uint8(IB);
%转换为Uint8类型;
imshow(A);
imshow(IB);
重建图像(量化矩阵)'
imshow(imcomplement(uint8(IB*255)-A));
量化后与原图差别求反'
实验二、自编matlab程序
1均值滤波
1均值滤波的概念及用法
均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身)。
再用模板中的全体像素的平均值来代替原来像素值。
均值滤波也称为线性滤波,其采用的主要方法为领域平均法。
线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度个g(x,y),即个g(x,y)=1/m∑f(x,y)m为该模板中包含当前像素在内的像素总个数。
2均值滤波的MATLAB程序
clearall
x=imread('
d:
/te_1.bmp'
b=double(x);
[m,n]=size(b);
c=zeros(m,n);
fori=2:
m-1
forj=2:
n-1
me=round((b(i-1,j-1)+b(i-1,j)+b(i,j-1)+b(i+1,j)+b(i,j+1)+b(i+1,j+1)+b(i-1,j+1)+b(i+1,j-1)+b(i,j))/9);
c(i,j)=me;
end
imshow(c,[]);
2、中值滤波
1.中值滤波的概念及用法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 珠海 学院 数字图像 处理 实验 指导书