当前位置:文档之家› 实验一 图像增强(附参考程序)

实验一 图像增强(附参考程序)

实验一 图像增强(附参考程序)
实验一 图像增强(附参考程序)

实验一图像增强

一、实验目的

1 掌握灰度直方图的概念及其计算方法;

2 熟练掌握直方图均衡化的计算过程;

3 掌握各种灰度变换技术,加深对灰度变换的理解;

4 掌握在空域中进行图像噪声消除、图像平滑和图像锐化等各种改善图像质量的方法;

5 利用MA TLAB程序进行图像增强。

二、实验内容

1选择一幅对比度不足的图像,对其进行直方图均衡化处理,并对比均衡化前后的直方图。

2 利用二个低通邻域平均模板(3×3和9×9)对一幅图像进行平滑,验证模板尺寸对图像的模糊效果的影响。

3 利用一个低通模板对一幅有噪图像(GAUSS白噪声)进行滤波,检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×5中值滤波器)对噪声的滤波效果。

三、参考程序

1 直方图均衡化

I=imread(‘原图像名.gif); % 读入原图像

J=histeq(I); %对原图像进行直方图均衡化处理

imshow(I); %显示原图像

title(‘原图像’); %给原图像加标题名

figure;imshow(J); %对原图像进行屏幕控制;显示直方图均衡化后的图像

title(‘直方图均衡化后的图像’) ; %给直方图均衡化后的图像加标题名

tigure; subplot(1,2,1) ;%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图

imhist(I,64); %将原图像直方图显示为64级灰度

title(‘原图像直方图’) ; %给原图像直方图加标题名

subplot(1,2,2); %作第2幅子图

imhist(J,64) ; %将均衡化后图像的直方图显示为64级灰度

title(‘均衡变换后的直方图’) ; %给均衡化后图像直方图加标题名

2利用低通邻域平均模板进行平滑

I=imread('girl.bmp');

subplot(1,3,1);

imshow(I);

title('原图');

J=fspecial('average');

J1=filter2(J,I)/255;

subplot(1,3,2);

imshow(J1);

title('3*3滤波');

K=fspecial('average',9);

K1=filter2(K,I)/255;

subplot(1,3,3);

imshow(K1);

title('9*9滤波');

3 中值滤波和均值滤波

I=imread('girl.bmp');

J=imnoise(I,'gaussian',0,0.01);

subplot(2,2,1);

imshow(I);

title('原图');

subplot(2,2,2);

imshow(J);

title('noise');

K=fspecial('average',5);

K1=filter2(K,J)/255;

subplot(2,2,3);

imshow(K1);

title('average');

L=medfilt2(J,[3 5]);

subplot(2,2,4);

imshow(L);

title('medium');

四、实验步骤

1 打开计算机,启动MA TLAB程序;

2 调入数字图像,分别进行直方图均衡化处理、均值滤波处理和中值滤波处理;

3 记录和整理实验报告

五、实验仪器

1计算机;

2 MA TLAB程序;

3移动式存储器(移动硬盘、U盘等)。

六、实验报告内容

1叙述实验过程;

2提交实验的原始图像和结果图像。

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

实验一图像增强实验

实验一图像增强实验 实验目的:1.掌握图像增强的算法 2.学习利用MATLAB进行图像的增强 实验内容:1.图像的点操作、邻域操作算法 2.图像的直方图处理算法 实验步骤: 1.读入图像,用MATLAB函数实现图像读入 (1)启动MATLAB (2)在命令行窗口直接输入MATLAB命令,按“回车”键后执行(3)读入命令和显示命令分别为 imread 和 imshow (4)如A=imread('D:\上官军\medical image\woman.jpg') Imshow (A) 结果显示

2.实现图像点操作运算(gamma校正和对数校正)(1)根据图像线形变换三种形式,图像反转 S=L-1-r 、对数变换S=c*log(1+r) 、幂次变换 S=c*r .^γ编写图像点操作函数 (2)建立新的M文件,点操作函数代码如下: function s=dian(r,leixing,chengshu,gamma1) % r为处理图像,leixing为操作类型 s1=imread(r); s2=im2double(s1); %将图像转为double数据型 switch leixing case 'fanzhuan' s=1-s2; case 'duishu' s=chengshu*log(1+s2); case 'gamma' s=chengshu*s2.^gamma1; otherwise error('错误') end subplot(1,2,1), imshow(s1); subplot(1,2,2),imshow(s);

(3)实际操作,如反转: Y=dian('D:\上官军\medical image\woman.jpg','fanzhuan',1,1); 3.图像邻域处理 (1)图像邻域处理是通过设计相应的滤波器来处理相邻图像像素,主要为均值滤波器、中指滤波器、高斯滤波器等 (2)建立新的M文件,均值滤波函数代码如下: function d=avefilt(x,n) a(1:n,1:n)=1; %a即n×n模板,元素全是1 p=size(x);

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

最新单片机原理实验教案参考程序

单片机原理实验教案 参考程序

广东松山职业技术学院《MCS-51单片机原理》实验指导书 宁玉珊黄晓林 使用Proteus辅助设计与仿真

实训项目1 Proteus辅助设计与仿真的使用 一、实训目的 学习并熟练掌握PROTEUS辅助设计与仿真软件的使用。通过使用Proteus的ISIS组件绘制AT89C51功能接口原理图,并对原理图编写程序和调试程序,观察在仿真条件下的实现功能的效果。 二、实训内容 在PROTEUS仿真环境下实现一个发光二极管(LED)闪烁。要求LED亮0.5s灭1s,并绘制原理图和编写实现程序,同时用虚拟的示波器观察硬件和软件实现的效果。 三、实训器材 安装有Proteus7软件的计算机 1 台。 四、实训步骤 1)在硬盘建立文件夹用来保存新建项目的所有文件。如在D盘建立PROJECT文件夹。 2)选择‘开始→程序→Proteus7 professional→ISIS professional(或者双击桌面图标ISIS)’,进入Proteus仿真环境,如图P1_1和P1_2所示。 图P1-1

图P1-2 3)选择菜单【File/New Design】创建一个新的设计项目,如图P1_3所示。 图P1-3 4)此时系统会弹出模板选择窗口,选择‘DEFAULT’点击【OK】即可,如图P1_4所示。

图P1_4 5)点击界面左侧工具栏中的图标,接着点击元件池上方的按钮,将要用到的元器件从系统库调到当前设计文件库中。在弹出的Pick Devices对话框左上角的‘Keywords’文本框中键盘输入元件名(或元件的其它关键词)搜索到需要的元器件。双击‘Results’栏下的目标元件,该元件即调出到当前设计文件库的元件列表中,如图P1_5所示。本实训中所要用到的元件如表PS1_1所示。 图P1_5 元件名称搜索关键词元件序 数值备注 号 电阻器Resistor R1 10k 电阻器Resistor R2 1k 电解电容器MINELECT1U63V C1 4.7μ 陶瓷电容器CERAMIC22P C2、C3 22p 晶振CRYSTAL X1 12MHz 单片机AT89C51 U1

实验二-图像增强处理实习报告

实验二图像增强处理实习报告 1.实验目的和内容 1.1.实验目的 掌握图像合成和显示增强的基本方法,理解存储的图像数据与显示的图像数据之间的1.2.实验要求 熟练根据图像中的地物特征进行图像合成显示、拉伸、图像均衡化等显示增强操作。 理解直方图的含义,能熟练的利用直方图进行多波段的图像显示拉伸增强处理。 1.3.软件和数据 ENVI 软件。 TM 图像数据。上次实验合成后的图像数据文件AA。 1.4.实验内容 图像的彩色合成显示 图像的基本拉伸方法 图像均衡化方法 图像规定化 2.实验过程 通过合成和拉伸增强显示图像中的信息。 2.1.图像合成 图像合成方法:伪彩色合成、彩色合成两种方式。其中彩色合成包括:真彩色合成、假彩色合成、模拟真彩色合成。 操作: 使用(4,3,2)进行RGB 合成显示图像。图像窗口为#1。

移动图像窗口的红色选框到玄武湖,将光标十字放在红框内,双击,显示光标位置窗口。该窗口中出现了Scrn 和Data,二者后面的RGB 的值是不同的。

2.1.1伪彩色合成 在新的窗口显示第4 波段图像,窗口为#2。

操作: 菜单:窗口菜单Tools-Color Mapping-Density slice…,选择Band 4,确定。在“Density Slice”窗口中,点击“应用”按钮,窗口#2 的图像变成了彩色。

设置默认的分级数为3 个:在“Density Slice”窗口,点击Options-Set number of default range,输入3,确定。点击Options-Apply default range,点击Apply 按钮。查看窗口#2 内的变化。

数字图像处理实验

(1)矩阵图像的傅里叶变换 f=zeros(30,30); f(5:24,13:17)=1; imshow(f,'notruesize') F=fft2(f); F2=log(abs(F)); figure;imshow(F2,[-1 5],'notruesize');colormap(jet);colorbar;

-0.5 00.5 11.522.533.544.5 (2)图像的傅里叶变换 I=imread('concordorthophoto.png'); imshow(I); B=ffshift(fft2(I)); figure; imshow(log(abs(B)),[]),colorbar;

图像离散余弦变换 RGB=imread('hestain.png'); I=rgb2gray(RGB); imshow(RGB); J=dct2(I); figure,imshow(log(abs(J)),[]),colorbar; J(abs(J)<10)=0; K=idct2(J)/255; figure,imshow(K)

二(1) 直方图均衡化增强图像对比度程序I=imread('trees.tif'); J=imnoise(I,'salt & pepper',0.02); imshow(I);figure,imshow(J) K1=filter2(fspecial('average',3),J)/255; K2=filter2(fspecial('average',5),J)/255; K3=filter2(fspecial('average',7),J)/255; figure,imshow(K1) figure,imshow(K2) figure,imshow(K3)

C++程序设计实验七_参考答案

广东金融学院实验报告 课程名称:C++程序设计 实验编号 实验7数组与指针练习系别参考答案及实验名称 姓名学号班级 实验地点新电403实验日期2011-11-24实验时数4 指导教师曲政同组其他成员无成绩 一、实验目的及要求 1.学习C/C++数组和指针的概念和使用方法。 2.练习C++/CLI托管数组的创建方法和元素访问方法。 二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等) 硬件设备:联网的个人计算机 操作系统:Windows XP 编译系统:Visual Studio2005

三、实验内容及步骤(包含简要的实验步骤流程) 1.内容和步骤 ⑴仔细阅读本课件的知识点和例题,努力理解其中的文字阐述和源代码,必要时可将源代码拷入Visual Studio2005生成的C++/CLR框架编译和运行,将运行结果与源代码对照,加深对C/C++数组和指针的理解。 ⑵在理解本课件内容的基础上,编写C/C++程序实现下列文字描述: a.声明一个int型变量x,并赋初值3; b.打印x的值; c.打印x的地址; d.声明一个指向int的指针p,并让其指向变量x; e.打印p所指变量的值 f.打印p的值; g.声明一个有10个元素的一维本地整型数组A,并为其赋初值0~9; h.在一个循环中打印A的所有元素的值; i.打印A的值; j.打印A的第一个元素的地址; k.声明一个指向int的指针q,并让其指向A的第一个元素; l.在一个循环中通过q后跟下标,打印出A的所有元素的值; m.在一个循环中通过q加上循环变量和取值运算,打印出A的所有元素的值; n.在一个循环中通过q的增量和取值运算,打印出A的所有元素的值; o.在一个循环中通过q的负增量,反序打印出A的所有元素的值; p.声明一个int型指针r,在堆中创建一个int型变量,为该变量赋初值3,并将该变量的地址赋给该指针,打印出该变量的值,然后删除该变量。 q.声明一个本地类Point(可以用包含2个int型变量和一个有参数构造函数的结构体表示)的指针s,在堆中创建一个Point类的对象,调用构造函数为该对象的两个数据成员赋初值3和4,并将该对象的地址赋给该指针,打印两个数据成员的值,然后删除该对象。 r.声明一个int型指针t,在堆中创建一个3个元素的int类型数组并将该数组的首地址赋给该指针,为三个数组元素分别赋值3、4、5,在一个循环中打印出所有元素的值,然后删除该数组。 s.声明一个本地类Point类的指针u,在堆中创建一个3个元素的Point类的对象数组(需在Point 中添加无参数构造函数)并将数组的首地址赋给该指针,为三个数组元素分别赋值(1,2)、(3,4)、(5,6),在一个循环中打印该数组所有元素分量的值,然后删除该数组。 t.用基本语法声明并创建一个10个元素的一维托管整型数组B,并在一个循环中为元素赋值0~9; u.在另一个循环中打印B所有元素的值。 v.用初值表方式声明并创建一个10个元素的一维托管整型数组C,并为其元素赋初值10~19; w.在一个循环中打印C所有元素的值。 x.用数组C为数组B赋值。 y.在一个循环中打印B和C所有元素的值。 2.提示和要求 ⑴首先将上面的文字描述拷入Visual Studio2005生成的C++/CLR框架,在每条文字描述之前加“//”将其变为注释,并在其下留一个空行准备编写对应的程序。 ⑵对应于逐条文字描述,在其下编写程序(可能是一个或一组语句),每编写一条文字描述对应的程序,就编译(运行)一次,以保证语法和算法的正确性。 ⑶当全部文字描述所对应的程序编写完成,并编译、运行正确,将文字描述和源代码拷入实验报告。 ⑷对C/C++的数组和指针做简要总结。

图像处理实验-图像增强和图像分割

图像处理实验 图像增强和图像分割 一、实验目的: 掌握用空间滤波进行图像增强的基本方法,掌握图像分割的基本方法。 二、 实验要求: 1、测试图像1中同时含有均值为零的均匀分布噪声和椒盐噪声。用大小为5×5的算术均值滤波器和中值滤波器对图像进行处理,在不同窗口中显示原图像及各处理结果图像,并分析哪一种滤波器去噪效果好? 2、对测试图像2进行图像分割,求出分割测试图像2的最佳阈值。分别显示原图、原图的直方图(标出阈值)、和分割后的二值图。 实验内容: 1. 实验原理 1) 图像增强:流程图: 图像增强可以通过滤波的方式来完成,即消除一部分的噪声。滤波又可以分为均值滤波和中值滤波。 1. 中值滤波原理:中值滤波就是选用一个含有奇数个像素的滑动窗口,将该窗口在图像上扫描,把其中所含像素点按灰度级的升(或降)序排列,取位于中间的灰度值来代替窗口中心点的灰度值。

对于一维序列{N f }: 21,},...,,...,{-=∈=+-m u N i f f f M e d y u i i u i i 对于二维序列{ij F }:为滤波窗口W y ij F Med W ij }{= 2. 均值滤波原理:对于含噪声的原始图像g(s,t)的每一个像素点去一个领 域N ,用N 中所包含的相速的灰度平均值,作为领域平均处理后的图像f(x,y)的像素值,即: ∑∈=xy S t s t s g mn y x f ),(),(1),(? 2) 图像分割: 图像分割:依据图像的灰度、颜色等特征,将一幅图像分为若干个互不重叠的、具有某种同质特征的区域。

本实验中我们是根据灰度值,将灰度值大于阈值T的像素统一置为255,小于的则置为0。如何求出最合适的分割阈值,则需要用到迭代算法。 迭代法算法步骤: (1) 初始化阈值T (一般为原图像所有像素平均值)。 (2) 用T分割图像成两个集合:G1 和G2,其中G1包含所有灰度值小于T的像素,G2包含所有灰度值大于T的像素。 (3) 计算G1中像素的平均值m1及G2中像素的平均值m2。 (4) 计算新的阈值:T =(m1+m2)/2 。 (5)如果新阈值跟原阈值之间的差值小于一个预先设定的范围,停止循环,否则继续(2)-(4)步。 2.程序代码与分析: 1)图像增强: clear all;clc; %读入图像 I1=imread('Fig5.12(b).jpg'); %均值滤波模板 h1=ones(5,'uint8'); %获取分辨率 [a,b]=size(I1); %创建变量 I2=zeros(a+4,b+4,'uint8'); I3=zeros(a+4,b+4,'uint8'); %复制原始图像 for n=3:a+2 for m=3:b+2 I2(n,m)=I1(n-2,m-2); I3(n,m)=I1(n-2,m-2); end end

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

数字信号处理实验及参考程序

数字信号处理实验实验一离散时间信号与系统及MA TLAB实现 1.单位冲激信号: n = -5:5; x = (n==0); subplot(122); stem(n, x); 2.单位阶跃信号: x=zeros(1,11); n0=0; n1=-5; n2=5; n = n1:n2; x(:,n+6) = ((n-n0)>=0); stem(n,x); 3.正弦序列: n = 0:1/3200:1/100; x=3*sin(200*pi*n+1.2); stem(n,x); 4.指数序列 n = 0:1/2:10; x1= 3*(0.7.^n); x2=3*exp((0.7+j*314)*n); subplot(221); stem(n,x1); subplot(222); stem(n,x2); 5.信号延迟 n=0:20; Y1=sin(100*n); Y2=sin(100*(n-3)); subplot(221); stem(n,Y1); subplot(222); stem(n,Y2);

6.信号相加 X1=[2 0.5 0.9 1 0 0 0 0]; X2=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; X=X1+X2; stem(X); 7.信号翻转 X1=[2 0.5 0.9 1]; n=1:4; X2=X1(5-n); subplot(221); stem(n,X1); subplot(222); stem(n,X2); 8.用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 9.用MA TLAB计算差分方程 当输入序列为时的输出结果。 N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n'); ylabel('幅度') 10.冲激响应impz N=64; a=[0.8 -0.44 0.36 0.22];

数字图像处理图像增强实验报告

实验报告 班级:08108班 姓名:王胤鑫 09号学号:08210224

一、实验内容 给出噪声图像Girl_noise.jpg,请选择合适的图像增强算法,给出你认为最优的增强后的图像。 可以使用Matlab - Image Processing Toolbox 中的处理函数。 原始图像如下: 二、算法分析 对于给出的图像中有灰色的噪声,因此首先处理灰色的线条,根据其方差的大小来判断其所在行。对于两条白色的噪声,根据与前后两行的对比来判断其所在位置。程序中设定灰色线条处理的均方差门限为0.1,白线处理的标准为与前后两行的差值超过0.2(转换为double型)。滤除噪声之后再通过中值滤波、拉普拉斯图像增强等方式对图像进行处理。 三、matlab 源程序 clear all;clc; f=imread('girl_noise.jpg'); figure,imshow(f),title('原始图像'); [m,n]=size(f); f0= im2double(f); % 整型转换为 double 类 f1=f0; std_i=zeros(1,m-2); %灰线处理 for i=2:m-1 %灰线处理 std_i(i-1)=std(f0(i,:)); if(std_i(i-1)<0.1) for j=1:m f0(i,j)=(f0(i-1,j)+f0(i+1,j))/2; end

end end figure,imshow(f0),title('滤除灰线后的图像'); fz=f0-f1; [r,c]=find(fz~=0);%寻找灰线噪声的位置 f2=f0; change=0; count=0; for i=3:m-2 %白线处理 for j=1:m if(abs(f0(i,j)-f0(i-1,j))>0.2&&abs(f0(i,j)-f0(i+1,j))>0.2) count=count+1; end if(count>n*0.8) count=0; change=1; break; end end if(change==1) for k=1:m f0(i,k)=(f0(i-1,k)+f0(i+1,k))/2; end change=0; count=0; end end figure,imshow(f0),title('滤除白线后的图像'); fz1=f2-f0; [r1,c1]=find(fz1~=0); %寻找白线噪声的位置 fn = medfilt2(f0); %反射对称填充 figure, imshow(fn),title('中值滤波后的图像'); f0 = im2double(fn); % 整型转换为 double 类 g =2*f0- imfilter(f0,w4, 'replicate'); % 增强后的图像 figure, imshow(g),title('高提升滤波图像(A=2)');

图像处理实验二图像增强

实验二图像的增强 一、实验目的 1)掌握在计算机上进行直方图统计,以及直方图均衡化、线性变换的图像增强的方法 2)掌握在计算机上进行图象平滑、图象锐化特别是中值滤波平滑及拉普拉斯算子锐化 的方法 二、实验要求 1)显示图像(cameraman.tif)及灰度直方图。 2)对指定图像(cameraman.tif)进行直方图均衡化和线性变换,将原始图像及增强 后的图像都显示于屏幕上,比较增强的效果。 3)对指定图像(lena.bmp)加入椒盐噪声,然后进行邻域平滑、中值滤波,将原始图 像及平滑后的图像都显示于屏幕上,比较效果。 4)对指定图像(lena.bmp)进行锐化(简单梯度算法、ROBERT算子,Prewitt边缘算 子和拉普拉斯算子),将原始图像及锐化后的图像都显示于屏幕上,比较锐化的效果。 三、实验仪器设备及软件 HP D538、MATLAB 四、实验原理 以自己的语言结合课堂笔记进行总结,要求过程推导清晰明了。 五、实验步骤及程序 实验步骤、程序流程、实验源程序和注释齐全 实验源程序: (1). 显示图像(cameraman.tif)及灰度直方图: I=imread('cameraman.tif'); subplot(121); imshow(I); title('原始图象'); subplot(122); imhist(I); title('灰度直方图')实验结果与分析

(2)对指定图像(cameraman.tif)进行直方图均衡化和线性变换,将原始图像及增强后的图像都显示于屏幕上,比较增强的效果。 I=imread('cameraman.tif'); subplot(221); imshow(I); title('原始图象'); I1=histeq(I); subplot(222); imshow(I1); title('原始图象均衡化'); subplot(223); imshow(I); title('原始图象'); I2=imadjust(I); subplot(224); imshow(I1); title('原始图象线性变化'); (3)对指定图像(lena.bmp)加入椒盐噪声,然后进行邻域平滑、中值滤波,将原始图像及平滑后的图像都显示于屏幕上,比较效果。

《面向对象程序设计》实验指导书 (1-6个实验,含参考代码).

面向对象程序设计 实验指导书 (适用:电子信息11级) 彭召意陶立新编写 计算机与通信学院 2014.9

目录 实验一 C++基础的应用 (1) 实验二类和对象的应用 (3) 实验三类的构造函数、析构函数的应用 (4) 实验四友员和运算符重载 (5) 实验五类的继承与派生 (6) 实验六类的多态性与虚函数 (7) 附录:各实验的程序代码 (8)

实验一 C++基础的应用 (实验课时:2 实验性质:设计) 实验名称: C++基础的应用 实验目的: (1)进一步学习VC++6.0开发环境及程序调试方法。 (2)练习C++函数的定义及使用; (3)练习C++数组的定义及使用; (4)练习C++指针的定义及使用; (5)练习C++结构体的定义及使用; (6)练习多文件的程序的编译和运行方法; 实验设备:(1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB); (2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C++6.0。 实验内容: (1)熟悉Visual C++6.0编译系统的常用功能,特别是debug调试功能; (2)编程1:编写一个程序c1.cpp,用来求2个或3个整数的最大数。要求:用重载函数的方法来求最大数;函数原型:int max( int a, int b) 和int max( int a, int b,int c)。 (3)编程2:编写一个程序c2.cpp,求:a!+ b! + c!的值。要求:使用递归函数。主程序和函数分开到两个源程序文件中,分别进行编译后,再运行; (4)编程3:有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号; (5)编程4:建立一个动态链表并进行输出和删除管理。链表的每个节点为学生信息,包括:学号,姓名,性别,下一学生信息的指针。程序的工作:(a)建立三个学生信息的节点,然后顺序输出该三个学生信息;(b)删除中间的节点,再顺序输出学生信息。 (6)使用debug调试功能:追踪第2个程序中函数的运行。 (7)思考: 在第2个程序中,如果a,b,c的值较大,则显示的结果会怎样?这时如何解决此问题? (提示:显示的结果会不对,可能还会是负数,定义一个数组来存放最后结果。) 实验要求: (1)掌握Visual C++6.0开发环境的常用功能及使用,能进一步使用Visual C++6.0的debug调试功能:单步调试、设置断点等; (2)掌握C++函数的定义及使用,掌握函数的嵌套调用和递归调用的方法; (3)掌握C++数组、指针、结构体的定义及使用; (4)掌握多文件的程序的编译和运行方法; (5)程序格式规范,程序运行正确; (6)认真书写实验报告,如实填写各项实验内容。

实验四图像增强

信息工程学院实验报告 课程名称:数字图像处理Array 实验项目名称:实验四图像增强实验时间:2016.11.08 班级::学号: 一、实验目的 1.了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。 2. 掌握图像空域增强算法的基本原理。 3. 掌握图像空域增强的实际应用及MATLAB实现。 4. 掌握频域滤波的概念及方法。 5. 熟练掌握频域空间的各类滤波器。 6.掌握怎样利用傅立叶变换进行频域滤波。 7. 掌握图像频域增强增强的实际应用及MATLAB实现。 二、实验步骤及结果分析 1. 基于幂次变换的图像增强 程序代码: clear all; close all; I{1}=double(imread('fig534b.tif')); I{1}=I{1}/255; figure,subplot(2,4,1);imshow(I{1},[]);hold on I{2}=double(imread('room.tif')); I{2}=I{2}/255; subplot(2,4,5);imshow(I{2},[]);hold on for m=1:2 Index=0; for lemta=[0.5 5] Index=Index+1; F{m}{Index}=I{m}.^lemta; subplot(2,4,(m-1)*4+Index+1),imshow(F{m}{Index},[]) end end 执行结果:

图1 幂次变换增强结果 实验结果分析: 由实验结果可知,当r<1时,黑色区域被扩展,变的清晰;当r>1时,黑色区域被压缩,变的几乎不可见。 2.直方图规定化处理 程序代码: clear all clc close all %0.读图像 I=double(imread('lena.tiff')); subplot(2,4,1); imshow(I,[]); title('原图') N=32; Hist_image=hist(I(:),N); Hist_image=Hist_image/sum(Hist_image); Hist_image_cumulation=cumsum(Hist_image);%累 计直方图 subplot(245); stem(0:N-1,Hist_image); title('原直方图'); %1.设计目标直方图 Index=0:N-1; %正态分布直方图 Hist{1}=exp(-(Index-N/2).^2/N); Hist{1}=Hist{1}/sum(Hist{1}); Hist_cumulation{1}=cumsum(Hist{1}); subplot(242); title('规定化直方图1'); %倒三角形状直方图 Hist{2}=abs(2*N-1-2*Index); Hist{2}=Hist{2}/sum(Hist{2}); Hist_cumulation{2}=cumsum(Hist{2}); subplot(246); stem(0:N-1,Hist{2}); title('规定化直方图2'); %2. 规定化处理 Project{1}=zeros(N); Project{2}=zeros(N); Hist_result{1}=zeros(N); Hist_result{2}=zeros(N); for m=1:2 Image=I; %SML处理(SML,Single Mapping Law单映射规则 for k=1:N Temp=abs(Hist_image_cumulation(k)-Hist_cumulati on{m}); [Temp1,Project{m}(k)]=min(Temp); end %2.2 变换后直方图 for k=1:N

数字图像实验报告

图像处理实验报告 1、实验目的: (1)用高斯低通滤波器对图像进行处理,并了解效果以及产生该效果的原因。 (2)生成图片,并对该图片进行多种滤波器处理:算术均值,几何均值,谐波均值,逆谐波均值,中值滤波,中点滤波,最大,最小值滤波等。并分析比较。 2、实验思路: (1) 先将原图像进行零填充,然后再FFT。使用函数paddedsize.计算图像FFT所用的填充尺寸,获得填充参数,使用dftuv函数获得U,V的值,代入高斯滤波器传递函数,最后通过频域滤波得到图像。 (2)实验要求的滤波器都可以用自定义函数spfilt实现。主要的难点在于是spfilt函数的使用。 3、实验代码 (1) f = imread('c.bmp'); subplot(2,2,1),imshow(f,[]), title('原始图像'); PQ = paddedsize(size(f));%用函数paddedsize获得填充参数 [U,V]= dftuv(PQ(1),PQ(2));%计算PQ1*PQ2大小的矩形每一点到矩形原点距离的平方 D0=30; H = exp(-(U.^2 +V.^2)/(2*(D0^2)));%高斯滤波传递函数 for i=1:1:10; F = fft2(f,PQ(1),PQ(2));%得到有填充的傅里叶变换 g = dftfilt(f,H);%频域处理得到滤波图像 f=g; end;

subplot(2,2,2),imshow(g,[]), title('D0=30'); D0=30;%改变循环的值重复以上步骤 H = exp(-(U.^2 +V.^2)/(2*(D0^2))); for i=1:1:20; F = fft2(f,PQ(1),PQ(2)); g = dftfilt(f,H); f=g; end; subplot(2,2,3),imshow(g,[]), title('20次滤波'); D0=30; H = exp(-(U.^2 +V.^2)/(2*(D0^2))); for i=1:1:50; F = fft2(f,PQ(1),PQ(2)); g = dftfilt(f,H); f=g; end; subplot(2,2,4),imshow(g,[]), title('50次滤波'); (2) tk = 1 : 17+7 : (17+7)*10; I = zeros(210+10*2, (17+7)*10); for i = 1 : length(tk)-1 I(10:10+210, tk(i+1):tk(i+1)+6) = 1; end

单片机实验参考程序

实验一键盘输入实验 参考程序: ;4*4矩阵键盘读取程序,利用P0口,列线左起P0.0-P0.3 ;行线上起P0.4-P0.7,行线默认接高电平, ;P3.7作为键盘被读取的提示灯 ; 0 1 2 3 ; 4 5 6 7 ; 8 9 A B ; C D E F ;不考虑有两个或以上按键同时按下的情况, ;每次扫描到一个有按下则结束本次扫描 SETB P3.7 ;确认关闭键盘响应指示灯 MAIN: MOV R0,#0EFH ;用于给键盘行列线确定的电平 MOV R1,#0H ;循环次数,R1=0对应第一行,=1为第二行,以此类推SMAIN: MOV P0,R0 ;改变行线的状态,列线全处于高电平 NOP NOP MOV A,P0 JB ACC.0,L1 ;判断某行的第一列是否按下,按下则P0.0为低电平 MOV R2,#0H ; 将某行的列码保存至R2,显示程序会根据此值和R1的值计算具体为何按键按下 ACALL DISP SJMP MAIN ; 每次扫描到一个有按下则结束本次所有扫描

L1: JB ACC.1,L2 ;判断某行的第二列是否按下,按下则P0.1为低电平MOV R2,#01H ACALL DISP SJMP MAIN L2: JB ACC.2,L3 ;判断某行的第三列是否按下,按下则P0.2为低电平MOV R2,#02H ACALL DISP SJMP MAIN L3: JB ACC.3,SKIP ;判断某行的第四列是否按下,按下则P0.3为低电平MOV R2,#03H ACALL DISP SJMP MAIN ; SKIP: INC R1 ;R1加1,共计4行, MOV A,R0 RL A ;左移R0内的值,以并扫描下一行 MOV R0,A CJNE R1,#04H,SMAIN ;若四行扫描完毕,则跳转至程序最初,相关参数为初始值NO: MOV P2,#0FFH ;程序能执行到此说明四行扫描完毕并且一个按键都没按下,关闭数码管和指示灯 SETB P3.7 SJMP MAIN DISP: CLR P3.7 ;点亮键盘响应指示灯 MOV A,R1 RL A RL A ;R1对应行,具体的按键计算为R1*2+R2 ADD A,R2 ADD A,#3H ;下列指令与表格见有3字节的距离 MOVC A,@A+PC MOV P2,A ;十六进制的高位用数码管L1显示 RET ;共阳数码管0-F的显示码 DIS: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH DELAY: m ov r7,#255;延时 del1: mov r6,#255; del2: djnz r6,del2 djnz r7,del1 ret END

数字图像实验三图像增强

实验三、图像增强 一、实验目的 (1)熟悉并学会使用MATLAB中图像增强的相关函数。 (2)掌握图像灰度修正、平滑去噪、锐化加强边缘和轮廓的方法,并编程实现。 二、实验主要仪器设备 (1)台式机或笔记本电脑。 (2)MATLAB软件(含图像处理工具箱)。注意:由于软件版本的缘故,软件的界面可能有所差异,读者可以根据实际安装的软件选择相关的命令。 (3)典型的灰度、彩色图像文件。 三、实验原理 数码相机的曝光量指到达DC感光器件上的光线总量,用曝光值(EV)表示。图像的过度曝光、曝光不足时,用曝光补偿调节曝光量,这种功能可修正自动曝光设置值为上升或下降几级。例如,某些DC的EV调整范围为+3~0~-3。尝试对同一景象进行正确曝光、过度曝光和曝光不足三种情况成像情况。 (1)将一幅图像视为一个二维矩阵,用MATLAB进行图像增强。 (2)利用MATLAB图像处理工具箱中的函数imread(读入),imshow(显示),imnoise (加噪),filter2(滤波)对图像进行去噪处理。 (3)图像灰度修正:灰度变换。对不满意的图像通过线性或非线性灰度映射关系进行变换,其效果可以得到明显提高。通过分析,会发现变换前后图像的直方图 也发生相应的变化。 (4)图像平滑方法:领域平均、中值滤波。分析图像降质的性质,区分平稳性还是非平稳型、加性还是乘性等,采用合适的去噪方法,可以去除或降低噪声对图 像的影响。从频率域看,平均操作在降低噪声的同时衰减了图像的高频分量, 会影响图像细节的重现。中值滤波对某些信号具有不变形,适用于消除图像中 的突发干扰,但如果图像含有丰富的细节,则不宜使用。 (5)图像锐化方法:人眼对目标的边缘和轮廓较为敏感,对图像进行锐化,有助于突出图像的这些特征。从频率域看,锐化提升了图像的高频分量。 四、实验内容 MATLAB图像增强:①图像灰度修正;②图像平滑方法;③图像锐化方法。 五、实验步骤 MATLAB图像增强。 (1)图像灰度修正。测试图像为pout.tif、tire.tif。读入一幅灰度级分布不协调的图像,分析其直方图。根据直方图,设计灰度变换表达式,或调用imadjuct函数。调 整变换表达式的参数,直到显示图像的灰度级分布均衡为止。 (2)不均匀光照的校正。测试图像为pout.tif。采用分块处理函数blkproc和图像相减函数imsubtract校正图6.6存在的不均匀光照现象。 (3)三段线性变换增强。测试图像为eight.tif。选择合适的转折点,编程进行三段线

相关主题
文本预览
相关文档 最新文档