北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx

上传人:b****5 文档编号:16635587 上传时间:2022-11-25 格式:DOCX 页数:21 大小:335.53KB
下载 相关 举报
北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx_第1页
第1页 / 共21页
北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx_第2页
第2页 / 共21页
北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx_第3页
第3页 / 共21页
北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx_第4页
第4页 / 共21页
北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx

《北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

北京理工大学珠海学院数字图像处理实验指导书Word文件下载.docx

原始图像'

)%在原始图像中加标题

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.中值滤波的概念及用法

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1