数字图象处理实验

2022-08-27

第一篇:数字图象处理实验一

《数字图像处理》实验教案

数 字 图 像 处 理

实 验 指 导 书

信息科学与工程学院电子系

二○○六年

数字图像处理是研究数字图像处理的基本理论、方法及其在智能化检测中应用的学科,是电子信息类本科专业的专业课。

本课程侧重于数字图像的基本处理,并对图像分析的基本理论和实际应用进行系统介绍;目的是使学生系统掌握数字图像处理的基本概念、原理和实现方法,学习图像分析的基本理论、典型方法和实用技术,具备解决通信领域的图像相关问题的初步能力,为今后的研究与开发打下扎实的基础。

实验一 常用的图像文件格式与格式转换和图像矩阵的显示方实验二 实验三

法 …………………………………………………………2

傅立叶变换……………………………………………………4 图像增强及编程处理…………………………………………5

实验一 常用的图像文件格式与格式转换和图像矩阵的显示方法

1. 实验目的

熟悉Matlab语言的初步使用;

熟悉常用的图像文件格式与格式转换;

熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色); 熟悉图像矩阵的格式转换 2. 实验内容

练习图像读写命令imread和imwrite并进行图像文件格式间的转换。特别是索引图像与1,4,8,16比特图像的存储与转换。

熟悉下列模块函数 Image file I/O.

imread

- Read image file.

imwrite

Create and display image

imagesc

Make movie from multiframe indexed image.

imshow

- Display image.

subimage

- Display multiple images in single figure.

truesize

- Adjust display size of image.

warp

- Display image as texture-mapped surface. zoom

- Zoom in and out of image or 2-D plot. 3. 实验步骤

a. Load cameraman.tif image from your hard disk (using function imread). b. Show the image in a figure window (using function image or imshow). c. Draw a brightness bar on the right side of the image(using function colorbar). d. Get image data from the current figure(axes) (using function getimage). e. Show the gray level of the image between 64 to 128 (using function imagesc). f. Make a movie from a 4-D image (load mri, make the movie by immovie, then show movie by function movie).

object.

g. Draw the cameraman image on a cylinder (using function warp). Question: how to show the cameraman like this

Requirement: write a report to do the experiment from a to g.

实验二

傅立叶变换

1.实验目的

熟悉傅立叶变换的概念和原理; 理解Fourier变换的意义。

2.实验内容

用Fourier变换算法对图像进行Fourier变换; 评价人眼对图像幅频特性和相频特性的敏感度。

3.实验步骤

<1>产生如图所示图像f1(x,y)(128×128 大小,暗处=0,亮处=255),用MATLAB中的fft2函数对其进行FFT;

<2>同屏显示原图f1和FFT(f1)的幅度谱图;

<3>若令f2(x,y)=(-1)

xy f1(x,y),重复以上过程,比较两幅图像的幅度谱的异同,简述理由;

<4>若将f2(x,y)顺时针旋转45度得到f3(x,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;

<5>评价人眼对图像幅频特性和相频特性的敏感度。

4. 实验报告

<1>简述实验目的及原理;

<2>给出实验代码,并加以注释; <3>对实验现象加以说明和讨论。

实验三

图像增强及编程处理

1. 实验目的

观察数字图像增强的效果; 熟悉数字图像增强的一般方法;

掌握数字图像增强的一般方法的Matlab编程实现。 2. 实验内容

使用Photoshop观察数字图像增强的效果; 练习和掌握图像增强的Matlab编程。

熟悉下列模块函数 Image enhancement.

histeq

Adust imae intensity values or colormap. Image noising. imnoise

- Add noise to an image. Image filtering

medfilt2

- Perform 2-D median filtering.

ordfilt2

Perform 2-D adaptive noise-removal filtering.

3. 实验步骤

<1> 使用Photoshop观察数字图像增强的效果 a. 对比度增强

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。

3)在图像菜单调整子菜单中选亮度/对比度项,调节对比度滑块,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 b. 灰度变换

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。 3)在图像菜单调整子菜单中选反相项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 5)画出灰度变换曲线。

6)在编辑菜单中选返回项,恢复原始图像。

7)在图像菜单调整子菜单中阈值项,调节阈值色阶滑块,观察图像变化。

8)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 9)画出灰度变换曲线。

c. 直方图均衡化

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。 3)在图像菜单调整子菜单中选色调均化项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。

d. 图像平滑

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。

3)在滤镜菜单模糊子菜单中选进一步模糊项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 5)在编辑菜单中选返回项,恢复原始图像。

6)在滤镜菜单模糊子菜单中选高斯模糊项,观察图像变化。

7)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。 8)在Matlab Help菜单中, 选Demos项。

9)打开ToolboxesImage Processing项,选Noise Reduction Filtering,并运行。

10)选图像Blood、噪声类型Salt & Pepper、滤波器类型Median、邻域3x3,比较原始图像、受噪声污染图像、滤波后图像。 11)改变参数,重做(10)。

12)选其他图像,重做(10)-(11)。

13)思考何种滤波器对抑制何种类型噪声更有效,邻域大小对抑制噪声效果及图像模糊程度的影响。

<2> 图像增强的Matlab编程

a. Load cameraman.tif image from your hard disk (using function imread). b. Show the image in a figure window. c. Show the histogram of the image (using function imhist). d. Enhance the contrast of the image using histogram equalization. e. Show the histogram of the image after processing. f. Compare the qualities of two images and makes a discussion about them. g. Add noises, such as gaussian, salt&pepper, speckle noise into the image respectively. Compare with the influence of the different Means and Variance. h. Remove the added noise from the image by function medfilt2, ordfilt2 and wiener2 respectively. Compare the qualities of the original images with the processed images and discuss the effect of the methods.

Requirement:

Write a report to do the experiment . Make sure the report includes the discussion about the experiment. If the report just is a copy from others, the report will have a zero mark.

第二篇:数字图像处理图像变换实验报告

数字图象处理实验指导书

实验一 图象变换实验

实 验

实验名称:图像处理姓名:刘强

班级:电信

学号:

报 告

1102

1404110128

数字图象处理实验指导书

实验一 图象变换实验

实验一 图像变换实验——图像点运算、几何变换及正交变换

一、 实验条件

PC机 数字图像处理实验教学软件

大量样图

二、 实验目的

1、 学习使用“数字图像处理实验教学软件系统”,能够进行图像处理方面的简单操作;

2、 熟悉图像点运算、几何变换及正交变换的基本原理,了解编程实现的具体步骤;

3、 观察图像的灰度直方图,明确直方图的作用和意义;

4、 观察图像点运算和几何变换的结果,比较不同参数条件下的变换效果;

5、 观察图像正交变换的结果,明确图像的空间频率分布情况。

三、 实验原理

1、 图像灰度直方图、点运算和几何变换的基本原理及编程实现步骤

图像灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度分布情况,为图像的相关处理操作提供了基本信息。

图像点运算是一种简单而重要的处理技术,它能让用户改变图像数据占据的灰度范围。点运算可以看作是“从象素到象素”的复制操作,而这种复制操作是通过灰度变换函数实现的。如果输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:

B(x,y)=f[A(x,y)] 其中f(x)被称为灰度变换(Gray Scale Transformation,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系。一旦灰度变换函数确定,该点运算就完全确定下来了。另外,点运算处理将改变图像的灰度直方图分布。点运算又被称为对比度增强、对比度拉伸或灰度变换。点运算一般包括灰度的线性变换、阈值变换、窗口变换、灰度拉伸和均衡等。

图像几何变换是图像的一种基本变换,通常包括图像镜像变换、图像转置、图像平移、图像缩放和图像旋转等,其理论基础主要是一些矩阵运算,详细原理可以参考有关书籍。

实验系统提供了图像灰度直方图、点运算和几何变换相关内容的文字说明,用户在操作过程中可以参考。下面以图像点运算中的阈值变换为例给出编程实现的程序流程图,如下:

数字图象处理实验指导书

实验一 图象变换实验

2、 图像正交变换的基本原理及编程实现步骤 数字图像的处理方法主要有空域法和频域法,点运算和几何变换属于空域法。频域法是将图像变换到频域后再进行处理,一般采用的变换方式是线性的正交变换(酉变换),主要包括傅立叶变换、离散余弦变换、沃尔什变换、霍特林变换和小波变换等。正交变换被广泛应用于图像特征提取、图像增强、图像复原、图像压缩和图像识别等领域。

正交变换实验的重点是快速傅立叶变换(FFT),其原理过于复杂,可以参考有关书籍,这里不再赘述。至于FFT的编程实现,系统采用的方法是:首先编制一个一维FFT程序模块,然后调用该模块对图像数据的列进行一维FFT,再对行进行一维FFT,最后计算并显示幅度谱。程序流程图如下:

四、 实验内容

图像灰度直方图

点运算:图像反色、灰度线性变换、阈值变换、窗口变换、灰度拉伸和灰度

数字图象处理实验指导书

实验一 图象变换实验

均衡

几何变换:图像镜像变换、图像转置、图像平移、图像缩放和图像旋转 正交变换:傅立叶变换、离散余弦变换、沃尔什变换、霍特林变换和小波正反变换

注意:

1、 所有实验项目均针对8位BMP灰度图像进行处理,其它格式(如JPG)的图像可以利用系统提供的图像格式转换工具进行转换,再进行处理;

2、 本次实验的重点是图像的灰度直方图和点运算,几何变换和正交变换只作一般性了解。

五、 实验步骤

以图像灰度阈值变换为例说明实验的具体步骤,其它实验项目的步骤与此类似。

1、 打开计算机,在系统桌面上双击“数字图像处理实验教学软件系统”的可执行文件“图象处理”的图标,进入实验系统;

2、 执行文件→打开,在OPEN对话框中选择待处理的图像,按【OK】后系统显示出图像;

3、 执行查看→图像基本信息,将显示图像基本信息对话框,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

4、 执行查看→灰度直方图,查看图像的灰度直方图,如图所示;

5、 执行图像变换→正交变换→傅立叶变换,查看图像的频率域分布情况,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

6、 执行图像变换→正交变换→小波变换,查看图像经过小波变换的效果,如图所示;

7、 执行图像变换→点运算→阈值变换,修改阈值变换对话框中的阈值参数,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

8、 设置完阈值参数后按【OK】,系统显示阈值变换后的图像,与原图像进行比较,观察阈值变换的效果,如图所示;

9、 重复步骤4,查看阈值变换后图像的直方图分布情况;

数字图象处理实验指导书

实验一 图象变换实验

10、 重复步骤5,查看阈值变换后图像的频率域分布情况;

11、执行文件→保存或另存为,保存处理后的图像;

12、执行文件→重新加载,重新加载原始图像,但要注意先前对图像的处理将会丢失; 注意:

13、在执行步骤2时可能会出现有些图像文件不能打开的情况,如图所示,此时可以先利用图像格式转换工具将图像文件转换为8位BMP图像,再利用系统进行处理。步骤14和15是使用图像格式转换工具的方法;

14、在桌面上双击图像格式转换工具Jpg2bmp的图标,进入转换工具界面,如图所示;

15、按照界面提示,把JPG格式的图像文件转换成8位BMP图像。

数字图象处理实验指导书

实验一 图象变换实验

步骤13示意图

步骤14示意图

六、 思考题

1、 图像灰度线性变换、阈值变换、窗口变换、灰度拉伸和灰度均衡之间有何区别?

灰度线性变换就是将图像的像素值通过指定的线性函数进行变换,以此增强或者减弱图像的灰度。

灰度的阈值变换可以让一幅图像变成黑白二值图。

灰度的窗口变换也是一种常见的点运算。它的操作和阈值变换类似。从实现方法上可以看作是灰度折线变换的特列。窗口灰度变换处理结合了双固定阈值法,与其不同之处在于窗口内的灰度值保持不变。

灰度拉伸又叫做对比度拉伸,它与线性变换有些类似,不同之处在于灰度拉伸使用的是分段线性变换,所以它最大的优势是变换函数可以由用户任意合成。

灰度均衡是增强图像的有效方法之一。灰度均衡同样属于改进图像的方法,灰度均衡的图像具有较大的信息量。从变换后图像的直方图来看,灰度分布更加均匀。

2、 利用图像镜像和旋转变换可以实现图像转置吗?如果可以,应该怎样实现?

可以。进行一次镜像变换,顺(逆)时针旋转两次,再以与第一次相反的方向镜像变换。

数字图象处理实验指导书

实验一 图象变换实验

实验二 图像增强及复原实验

七、 实验条件

PC机 数字图像处理实验教学软件

大量样图

八、 实验目的

1、 熟练使用“数字图像处理实验教学软件系统”;

2、 熟悉图像增强及复原的基本原理,了解编程实现的具体步骤;

3、 观察图像中值滤波、平滑、锐化和伪彩色编码的结果,比较不同参数条件下的图像增强效果;

4、 观察图像退化和复原的结果,比较不同复原方法的复原效果。

九、 实验原理

1、 图像增强和复原的基本原理

对降质图像的改善处理通常有两类方法:图像增强和图像复原。

图像增强不考虑图像降质的原因,只将图像中感兴趣的特征有选择地进行突出,并衰减图像的次要信息,改善后的图像不一定逼近原始图像,只是增强了图像某些方面的可读性,如突出了目标轮廓,衰减了各种噪声等。图像增强可以用空域法和频域法分别实现,空域法主要是在空间域中对图像象素灰度值直接进行运算处理,一般包括中值滤波、模板平滑和梯度锐化等,空域法可以用下式来描述:

g(x,y)=f(x,y)*h(x,y) 其中f(x,y)是处理前图像,g(x,y)表示处理后图像,h(x,y)为空间运算函数。图像增强的频域法是在图像的频率域中对图像的变换值进行某种运算处理,然后变换回空间域,系统涉及的各种滤波器属于频域法增强,这是一种间接处理方法,可以用下面的过程模型来描述:

其中:F(u,v)=[ f(x,y)],G(u,v)= F(u,v)H(u,v),g(x,y)=1[ G(u,v)],和1分别表示频域正变换和反变换。实验系统提供了图像增强相关内容的文字说明,用户在操作过程中可以参考。

图像复原是针对图像降质的原因,设法去补偿降质因素,使改善后的图像尽可能逼近原始图像,提高了图像质量的逼真度。关于图像复原的详细原理可以参考相关书籍,这里不再赘述。本系统提供了图像的噪声退化、卷积退化和运动模糊退化操作,并提供了相应的逆滤波复原、维纳复原和运动模糊复原操作。本次

数字图象处理实验指导书

实验一 图象变换实验

实验中图像复原只作一般性了解。

2、 编程实现步骤

下面以图像增强中的中值滤波操作为例给出编程实现的程序流程图,如下:

十、 实验内容

图像增强:中值滤波、图像模板平滑、理想低通滤波器平滑、巴特沃斯低通滤波器平滑、梯度锐化、拉普拉斯锐化、理想高通滤波器锐化、巴特沃斯高通滤波器锐化和伪彩色编码

图像复原:图像的噪声退化、卷积退化、卷积加噪声退化、运动模糊退化、逆滤波复原、维纳复原和运动模糊复原

注意:

3、 所有实验项目均针对8位BMP灰度图像进行处理;

4、 本次实验的重点是图像增强中的中值滤波和模板平滑,图像复原只作一般性了解。

十一、 实验步骤

以图像中值滤波操作为例说明实验的具体步骤,其它实验项目的步骤与此类似。

11、 打开计算机,在系统桌面上双击“数字图像处理实验教学软件系统”的可执行文件“图象处理”的图标,进入实验系统;

12、 执行文件→打开,在OPEN对话框中选择待处理的图像,按【OK】后系统显示出图像;

数字图象处理实验指导书

实验一 图象变换实验

13、 执行查看→图像基本信息,将显示图像基本信息对话框,如图所示;

14、 执行查看→灰度直方图,查看图像的灰度直方图,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

15、 执行图像变换→正交变换→傅立叶变换,查看图像的频率域分布情况,如图所示;

16、 执行图像增强→中值滤波,选择或自定义对话框中的滤波器参数,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

17、 设置完滤波器参数后按【OK】,系统显示中值滤波后的图像,与原图像进行比较,观察中值滤波的效果,如图所示;

18、

重复步骤4,查看中值滤波后图像的直方图分布情况;

数字图象处理实验指导书

实验一 图象变换实验

19、 重复步骤5,查看中值滤波后图像的频率域分布情况;

10、执行文件→保存或另存为,保存处理后的图像;

11、执行文件→重新加载,重新加载原始图像,但要注意先前对图像的处理将会丢失。

数字图象处理实验指导书

实验一 图象变换实验

十二、

思考题

1、 图像中值滤波和模板平滑之间有何区别?

图像平滑处理就是用平滑模板对图像进行处理,以减少图像的噪声。而中值滤波是一种非线性的信号处理方法。

2、 图像增强和图像复原之间有何区别?

图像增强:利用一定的技术手段,不用考虑图像是否失真(即原 始图像在变换后可能会失真)而且不用分析图像降质的原因。针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。

图像复原:针对质量降低或者失真的图像,恢复图像原始的内容或者质量。图像复原的过程包含对图像退化模型的分析,再对退化的图像进行复原。图像退化是由于成像系统受各种因素的影响,导致了图像质量的降低,称之为图像退化。这些因素包括传感器噪声、摄像机聚焦不佳、物体与摄像机之间的相对移动、随机大气湍流、光学系统的象差、成像光源和射线的散射等。 图像复原大致可以分为两种方法:

一种方法适用于缺乏图像先验知识的情况,此时可对退化过程建立模型进行描述,进而寻找一种去除或消弱其影响的过程,是一种估计方法;

另一种方法是针对原始图像有足够的先验知识的情况,对原始图像建立一个数学模型并根据它对退化图像进行拟合,能够获得更好的复原效果。

3、 图像维纳复原为什么比逆滤波复原效果好?

维纳滤波复原的原理可表示为

对于维纳滤波,由上式可知,当

时,由于存在 项,所以数字图象处理实验指导书

实验一 图象变换实验

不会出现被0除的情形,同时分子中含有项,在处,。当时,,此时维纳滤波就变成 了逆滤波;当时,,表明维纳滤波避免了逆滤波中 出现的对噪声过多的放大作用,也就是说图像维纳复原比逆滤波复原效果好。

第三篇:数字信号处理实验-FFT的实现

学生姓名:

学 号:

指导教师:

一、实验室名称:数字信号处理实验室

二、实验项目名称:FFT的实现

三、实验原理:

一.FFT算法思想:

1.DFT的定义:

对于有限长离散数字信号{x[n]},0  n  N-1,其离散谱{x[k]}可以由离散付氏变换(DFT)求得。DFT的定义为:

N1X[k]通常令ej2Nx[n]en0j2Nnk,k=0,1,…N-1 WN,称为旋转因子。

2.直接计算DFT的问题及FFT的基本思想:

由DFT的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N点DFT需要(N-1)2次复数乘法和N(N-1)次加法。因此,对于一些相当大的N值(如1024)来说,直接计算它的DFT所作的计算量是很大的。

FFT的基本思想在于,将原有的N点序列分成两个较短的序列,这些序列的DFT可以很简单的组合起来得到原序列的DFT。例如,若N为偶数,将原有的N

22点序列分成两个(N/2)点序列,那么计算N点DFT将只需要约[(N/2) ·2]=N/2次复数乘法。即比直接计算少作一半乘法。因子(N/2)2表示直接计算(N/2)点DFT所需要的乘法次数,而乘数2代表必须完成两个DFT。上述处理方法可以反复使用,即(N/2)点的DFT计算也可以化成两个(N/4)点的DFT(假定N/2为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT运算的情况。

3.基2按时间抽取(DIT)的FFT算法思想:

设序列长度为N2L,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。

将长度为N2L的序列x[n](n0,1,...,N1),先按n的奇偶分成两组:

x[2r]x1[r]x[2r1]x2[r],r=0,1,…,N/2-1 DFT化为:

N1N/21N/21X[k]DFT{x[n]}N/21n0x[n]WnkN2rkr0x[2r]W2rkNr0x[2r1]WN(2r1)kN/21r0N/21x1[r]Wx1[r]W2rkNWWkNr0N/21x2[r]WN

r0rkN/2kNr0x2[r]WN/22rkrk上式中利用了旋转因子的可约性,即:WNN/21NrkN/21rkWN/2。又令

rkX1[k]r0x[1r]W,/X2[k]2r0x[r]WN2,则上式可以写成: /2X[k]X1[k]WNX2[k](k=0,1,…,N/2-1)

k可以看出,X1[k],X2[k]分别为从X[k]中取出的N/2点偶数点和奇数点序列的N/2点DFT值,所以,一个N点序列的DFT可以用两个N/2点序列的DFT组合而成。但是,从上式可以看出,这样的组合仅表示出了X[k]前N/2点的DFT值,还需要继续利用X1[k],X2[k]表示X[k]的后半段本算法推导才完整。利用旋转因子的周期性,有:WN/2WN/2X1[N2N/21rkr(kN/2),则后半段的DFT值表达式:

rkk]r0x1[r]W2N/2r(Nk)N/21r0x1[r]WN/2X1[k],同样,X2[N2k]X2[k]

(k=0,1,…,N/2-1),所以后半段(k=N/2,…,N-1)的DFT值可以用前半段k值表达式获得,中间还利用到WN(N2k)NWN2Wk得到后半段的X[k]值表达式W,

k为:X[k]X1[k]WNkX2[k](k=0,1,…,N/2-1)。

这样,通过计算两个N/2点序列x1[n],x2[n]的N/2点DFTX1[k],X2[k],可以组合得到N点序列的DFT值X[k],其组合过程如下图所示:

X1[k] X1[k]WNkX2[k]

X2[k] WNnk -1 X1[k]WNkX2[k]

比如,一个N = 8点的FFT运算按照这种方法来计算FFT可以用下面的流程图来表示:

x(0)W0x(1)W0x(2)W0x(3)W2W0W1W0x(5)W0x(6)W0x(7)W2X(7)W3X(6)W2X(5)X(3)X(2)X(1)X(0)x(4)X(4)

4.基2按频率抽取(DIF)的FFT算法思想:

设序列长度为N2L,L为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。

在把X[k]按k的奇偶分组之前,把输入按n的顺序分成前后两半:

N1N/21nkNN1X[k]DFT{x[n]}N/21N/21x[n]Wn0(nn0N2)kx[n]WnkNnN/2x[n]WNnkn0N/21x[n]WnkNn0x[nNkN2]WNnk

Nn0[x[n]x[nN2NkN2]W2N]WN,k0,1,...,N1因为W2N1,则有WX[k](1),所以:

kkN/21n0[x[n](1)x[nN2]]WN,k0,1,...,N1

nk按k的奇偶来讨论,k为偶数时:

N/21X[2r]n0[x[n]x[nN2]]WN,k0,1,...,N1 N22rnN/21k为奇数时:X[2r1]前面已经推导过WNN/21n0[x[n]x[n]]WN(2r1)n,k0,1,...,N1

2rkWN/2,所以上面的两个等式可以写为:

N2]]WN/2,r0,1,...,N/21 N2rnrkX[2r]n0[x[n]x[nN/21X[2r1]n0{[x[n]x[n]]WN}WN/2,r0,1,...,N/21

nnr通过上面的推导,X[k]的偶数点值X[2r]和奇数点值X[2r1]分别可以由组合而成的N/2点的序列来求得,其中偶数点值X[2r]为输入x[n]的前半段和后半段之和序列的N/2点DFT值,奇数点值X[2r1]为输入x[n]的前半段和后半段之差再与WN相乘序列的N/2点DFT值。

令x1[n]x[n]x[nN/21nN2],x2[n][x[n]x[nN/21N2]]WN,则有:

nX[2r]n0x1[n]WrnN/2,X[2r1]n0x2[n]WrnN/2,r0,1,...,N21

这样,也可以用两个N/2点DFT来组合成一个N点DFT,组合过程如下图所示:

x[n] x[n]x[nN2]

x[nN2] -1 WNn [x[n]x[nN2]]WNn

二.在FFT计算中使用到的MATLAB命令:

函数fft(x)可以计算R点序列的R点DFT值;而fft(x,N)则计算R点序列的N点DFT,若R>N,则直接截取R点DFT的前N点,若R

四、实验目的:

离散傅氏变换(DFT)的目的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由逆DFT变换到时域。FFT是DFT的一种快速算法。在数字信号处理系统中,FFT作为一个非常重要的工具经常使用,甚至成为DSP运算能力的一个考核因素。

本实验通过直接计算DFT,利用FFT算法思想计算DFT,以及使用MATLAB函数中的FFT命令计算离散时间信号的频谱,以加深对离散信号的DFT变换及FFT算法的理解。

五、实验内容:

a) 计算实数序列x(n)cos516n,0n256的256点DFT。

b) 计算周期为1kHz的方波序列(占空比为50%,幅度取为+/-512,采样频率为25kHz,取256点长度) 256点DFT。

六、实验器材(设备、元器件):

安装MATLAB软件的PC机一台,DSP实验演示系统一套。

七、实验步骤:

(1) 先利用DFT定义式,编程直接计算2个要求序列的DFT值。

(2) 利用MATLAB中提供的FFT函数,计算2个要求序列的DFT值。 (3) (拓展要求)不改变序列的点数,仅改变DFT计算点数(如变为计算1024点DFT值),观察画出来的频谱与前面频谱的差别,并解释这种差别。通过这一步骤的分析,理解频谱分辨力的概念,解释如何提高频谱分辨力。

(4) 利用FFT的基本思想(基2-DIT或基2-DIF),自己编写FFT计算函数,并用该函数计算要求序列的DFT值。并对前面3个结果进行对比。

(5) (拓展要求)尝试对其他快速傅立叶变换算法(如Goertzel算法)进行MATLAB编程实现,并用它来计算要求的序列的DFT值。并与前面的结果进行对比。

(6) (拓展要求)在提供的DSP实验板上演示要求的2种序列的FFT算法(基2-DIT),用示波器观察实际计算出来的频谱结果,并与理论结果对比。

八、实验数据及结果分析:

程序: (1) 对要求的2种序列直接进行DFT计算的程序

(2) 对要求的2种序列进行基2-DIT和基2-DIF FFT算法程序 (3) 对要求的2种序列用MATLAB中提供的FFT函数进行计算的程序

结果:(1)对2种要求的序列直接进行DFT计算的频域波形

(2)对2种要求的序列进行基2-DIT和基2-DIF FFT算法频域波形 (3)对2种要求的序列用MATLAB中提供的FFT函数计算的频域波形。 (4)(拓展要求)分析利用上面的方法画出的信号频谱与理论计算出来的频谱之间的差异,并解释这种差异。

(5)(拓展要求)保持序列点数不变,改变DFT计算点数(变为1024点),观察频谱的变化,并分析这种变化,由此讨论如何提高频谱分辨力的问题。

九、实验结论:

十、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

第四篇:简易photoshop代码数字图像处理实验报告

一.一个简单的“photoshop”软件 二.设计目的:

数字图像处理,就是用数字计算机及其他有关数字技术,对图像进行处理,以达到预期的目的。随着计算机的发展,图像处理技术在许多领域得到了广泛应用,数字图像处理已成为电子信息、通信、计算机、自动化、信号处理等专业的重要课程。

数字图像处理课程设计是在完成数字图像处理的相关理论的学习后,进行的综合性训练课程,其目的主要包括:

1、使学生进一步巩固数字图像处理的基本概念、理论、分析方法和实现方法;

2、增强学生应用VC++编写数字图像处理的应用程序及分析、解决实际问题的能力;

3、尝试将所学的内容解决实际工程问题,培养学生的工程实践能力,提高工科学生的就业能力。

三.设计内容: 1.打开图像: 主要代码:

static char szFilter[]="BMP文件(*.bmp)|*.bmp||"; //定义过滤文件的类型

CString filename;

int ret=dlg.DoModal(); //运行打开文件对方框

if(ret==IDOK)

{

filename=dlg.GetFileName();

//获取所选择图像的路径

m_dib.LoadFromFile(filename);

//加载图像

if(!m_dib.m_bLoaded)

//判断是否加载图像成功

{ AfxMessageBox("图像打不开");

} return;

CFileDialog dlg(TRUE,"bmp",NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义文件对话框对

效果图:

2.水平镜像:把图像的第一列和最后一列调转,第二列和倒数第二列换过来,以此类推下去,直到第nw/2为止。 代码: int temp,i,j;

for(j=0;j

for(i=0;i

{

temp=m_dib.m_pdata[j*nw+i];

m_dib.m_pdata[j*nw+i]=m_dib.m_pdata[nw-i-1+j*nw];

m_dib.m_pdata[nw-i-1+j*nw]=temp;

} 效果图:

3.素描风格:先把灰度值与右下的作对比,如果差值大于一个值则说明这是轮廓,先把非轮廓的位置像素置为黑色,最后对所有像素进行底片化处理 代码: int temp,i,j;

for(j=0;j

for(i=0;i

{

temp=m_dib.m_pdata[j*nw+i]-m_dib.m_pdata[(j+1)*nw+i+1];

} if(temp<10) m_dib.m_pdata[j*nw+i]=0;

//黑色为0

for(j=0;j

for(i=0;i

{

int gray=m_dib.m_pdata[j*nw+i];

m_dib.m_pdata[j*nw+i]=255-gray;

}

图:

4图像雾化:在图像中引入一定的随机值,打乱图像中的像素值

代码:

int i,j,k,dat;

//i表示列,j表行

byte *ptemp=(byte *)new byte[nw*nh];

memset(ptemp,0,nw*nh);

for(j=0;j

for(i=0;i

{

k=rand()%8;//取任意的随机值

dat=j*nw+i+k; if(dat>=nw*nh) dat=nw*nh-1; ptemp[j*nw+i]=m_dib.m_pdata[dat];

} memcpy(m_dib.m_pdata,ptemp,nw*nh); 效果图:

5.浮雕处理:通过勾画图象轮廓和降低周围像素色值,从而生成具有凹凸感的浮雕效果。其方法是生成一缓冲区,计算当前像素的左上角与右下角的像素值之差,再加上一个补值。将其存储到缓冲区。再将缓冲区的数据逐点替换到图像中并显示出来。 代码:

int w=3,i,j;

//w为模板宽度

BYTE *p=new BYTE[nw*nh];

memcpy(p,m_dib.m_pdata,nw*nh);

for(j=w/2;j

for(i= w/2;i

{

p[j*nw+i]=m_dib.m_pdata[(j-1)*nw+i-1]*(1)+m_dib.m_pdata[(j+1)*nw+i+1]*(-1)+120;

}

memcpy(m_dib.m_pdata,p,nw*nh);

delete []p; 效果图:

6.直方图均衡化 代码:

int n[256]={0},g[256]={0}; //定义频数数组n,均衡化每个像素的灰度级的数组g

double f[256],t[256]; //定义频率数组f,累加的频率数组t

int g_max=0,g_mim=255;

int i,j,k,z;

for(j=0;j

//统计灰度级的频数n for(i=0;i

z=m_dib.m_pdata[j*nw+i];

n[z]++;

}

for(k=0;k<=255;k++)

//统计每个灰度级出现的频率

f[k]=n[k]/(nw*nh*1.0);

//累计灰度级的频率

t[0]=f[0]; for(k=1;k<=255;k++)

t[k]=t[k-1]+f[k];

for(j=0;j

for(i=0;i

g_max=w>g_max?w:g_max; //得到最大值

g_mim=w

}

for(k=0;k<=255;k++)

//利用公式求每个像素均衡化后的灰度级

g[k]=(int)((g_max-g_mim)*t[k]+g_mim+0.5);

for(j=0;j

//逐个替换

for(i=0;i

k=m_dib.m_pdata[j*nw+i];

m_dib.m_pdata[j*nw+i]=g[k];

}

for(j=0;j

//计算均衡化的直方图

{

//绘制原图像的直方图

for(i=0;i

{

BYTE temp=m_dib.m_pdata[j*nw+i];

m_hist[temp]++; } m_bHist=true;

CString str; int nh=m_dib.GetDIBHeight(); int i; // 画坐标轴

// 绘制坐标轴

pDC->MoveTo(410,nh+20); //(410,nh+20 )是直方图的左上角坐标

// 垂直轴

pDC->LineTo(410,nh+200);//(410,nh+200 )是直方图的左下角坐标

// 水平轴

pDC->LineTo(710,nh+200);//(710,nh+200 )是直方图的右下角坐标

// 写X轴刻度值

str.Format("0"); pDC->TextOut(410, nh+200+10, str); str.Format("50"); pDC->TextOut(460, nh+200+10, str); str.Format("100"); pDC->TextOut(510, nh+200+10, str); str.Format("150"); pDC->TextOut(560, nh+200+10, str); str.Format("200"); pDC->TextOut(610, nh+200+10, str); str.Format("255"); pDC->TextOut(665, nh+200+10, str); // 绘制X轴刻度 for ( i = 0; i < 256; i += 25) {

if ((i & 1) == 0) {

} // 10的倍数

pDC->MoveTo(i + 10, nh+200-2); pDC->LineTo(i + 10, nh+200+2);

}

else {

} // 10的倍数

pDC->MoveTo(i + 10, nh+200-2); pDC->LineTo(i + 10, nh+200+2); } // 绘制X轴箭头

pDC->MoveTo(705,nh+200-5); pDC->LineTo(710,nh+200); pDC->LineTo(705,nh+200+5); // 绘制y轴箭头

pDC->MoveTo(410,nh+20); pDC->LineTo(405,nh+20+5); pDC->MoveTo(410,nh+20); pDC->LineTo(415,nh+20+5); int max=0; for(i=0;i<256;i++) if(m_yuan[i]>max) {

} max=m_yuan[i];

for(i=0;i<256;i++) pDC->MoveTo(410+i,nh+200); pDC->LineTo(410+i,nh+200-(m_yuan[i]*160/max)); } if(m_bHist==true) //绘画新的直方图 {

CString str; int nh=m_dib.GetDIBHeight(); int i; // 画坐标轴 // 绘制坐标轴

pDC->MoveTo(10,nh+20); //(10,nh+20 )是直方图的左上角坐标

// 垂直轴

pDC->LineTo(10,nh+200);//(10,nh+200 )是直方图的左下角坐标

// 水平轴

pDC->LineTo(310,nh+200);//(310,nh+200 )是直方图的右下角坐标

// 写X轴刻度值 str.Format("0");

pDC->TextOut(10, nh+200+10, str); str.Format("50"); pDC->TextOut(60, nh+200+10, str); str.Format("100"); pDC->TextOut(110, nh+200+10, str); str.Format("150"); pDC->TextOut(160, nh+200+10, str); str.Format("200"); pDC->TextOut(210, nh+200+10, str); str.Format("255"); pDC->TextOut(265, nh+200+10, str); // 绘制X轴刻度 for ( i = 0; i < 256; i += 25) {

if ((i & 1) == 0) { // 10的倍数

} else {

// 10的倍数

pDC->MoveTo(i + 10, nh+200-2); pDC->LineTo(i + 10, nh+200+2); pDC->MoveTo(i + 10, nh+200-2); pDC->LineTo(i + 10, nh+200+2); } } // 绘制X轴箭头

pDC->MoveTo(305,nh+200-5); pDC->LineTo(310,nh+200); pDC->LineTo(305,nh+200+5); // 绘制y轴箭头 pDC->MoveTo(10,nh+20); pDC->LineTo(5,nh+20+5); pDC->MoveTo(10,nh+20); pDC->LineTo(15,nh+20+5); int max=0; for(i=0;i<256;i++) if(m_hist[i]>max) { max=m_hist[i];

for(i=0;i<256;i++) pDC->MoveTo(10+i,nh+200); pDC->LineTo(10+i,nh+200-(m_hist[i]*160/max));

} } 效果图:

四.心得体会:

通过这次数字图像处理的课程设计,对图片有了更深一层的认识,理解了对图像处理的一些原理,在这个课程设计过程中,需要自己去查阅资料,找资料,还需要理解所找到的资料,遇到问题独立去思考,或者去请教同学,给了我一个很好的锻炼机会,做事情一定要坚持,最后一定会有收获的。

五.参考文献:

《数字图像处理》 ——电子工业出版社

《vc++数字图像处理实验指导书》 曹老师、何家峰主编

第五篇:实验一语音信号分析与处理

学号姓名注:1)此次实验作为《数字信号处理》课程实验成绩的重要依据,请同学们认真、独立完成,不得抄袭。

2)请在授课教师规定的时间内完成;

3)完成作业后,请以word格式保存,文件名为:学号+姓名

4)请通读全文,依据第2及第3 两部分内容,认真填写第4部分所需的实验数据,并给出程序内容。

1. 实验目的

(1) 学会MATLAB的使用,掌握MATLAB的程序设计方法

(2) 掌握在windows环境下语音信号采集的方法

(3) 掌握MATLAB设计FIR和IIR滤波器的方法及应用

(4) 学会用MATLAB对语音信号的分析与处理方法

2. 实验内容

录制一段自己的语音信号,对录制的语音信号进行采样,画出采样后语音信号的时域波形和频谱图,确定语音信号的频带范围;使用MATLAB产生白噪声信号模拟语音信号在处理过程中的加性噪声并与语音信号进行叠加,画出受污染语音信号的时域波形和频谱图;采用双线性法设计出IIR滤波器和窗函数法设计出FIR滤波器,画出滤波器的频响特性图;用自己设计的这两种滤波器分别对受污染的语音信号进行滤波,画出滤波后语音信号的时域波形和频谱图;对滤波前后的语音信号进行时域波形和频谱图的对比,分析信号的变化;回放语音信号,感觉与原始语音的不同。

3. 实验步骤

1)语音信号的采集与回放

利用windous下的录音机或其他软件录制一段自己的语音(规定:语音内容为自己的名字,以wav格式保存,如wql.wav),时间控制再2秒之内,利用MATLAB提供的函数wavread对语音信号进行采样,提供sound函数对语音信号进行回放。

[y,fs,nbits]=wavread(file),

采样值放在向量y中,fs表示采样频率nbits表示采样位数。Wavread的更多用法请使用help命令自行查询。

2)语音信号的频谱分析

利用fft函数对信号进行频谱分析

3)受白噪声干扰的语音信号的产生与频谱分析

①白噪声的产生:

N1=sqrt(方差值)×randn(语音数据长度,2)(其中2表示2列,是由于双声道的原因) 然后根据语音信号的频谱范围让白噪声信号通过一个带通滤波器得到一个带限的白噪声信号N2;

带通滤波器的冲激响应为:

hB(n)=c2

sinc(c2

(n))c1

sinc(c1

(n)) 其中ωc1为通带滤波器的下截止频率,

ωc2为通带滤波器的上截止频率。其中下截止频率由每个人的语音信号的最高频率确定 滤波器的长度N由滤波器的过渡带确定,一般不宜太小(大于1000),α=(N-1)/2; ②信号y通过低通滤波器,得到信号为x1

低通滤波器的冲激响应为:

hL(n)c1sinc(c1

(n))其中的ωc1与上面的带通滤波器的下截止频率一致,滤波器的

长度N也于上面的带通滤波器一致,α=(N-1)/2

③将N1加上x1得到一个受到噪声污染的声音信号

4)据语音信号的频带情况,设计FIR和IIR两种滤波器

5)用滤波器对受污染语音信号进行滤波

FIR滤波器fftfilt函数对信号进行滤波,IIR滤波器用filter函数对信号进行滤波

6)比较滤波前后信号的波形与频谱

7)回放滤波后的语音信号

4. 实验数据及实验程序

实验数据

1)原始语音信号的时域波形和频谱图及语音信号的频带范围

2)带限白噪声信号的时域波形和幅频特性

3)受污染语音信号的时域波形和幅频谱图

4)滤波器的频响特性图

FIR滤波器的幅频响特性图

IIR滤波器的幅频响特性图

5)滤波后语音信号的时域波形和频谱图

6)滤波前后的语音信号时域波形对比图和幅频谱对比图

7)将实验的资料的电子文档交给班长(建立一个文件夹,里面包括:①实验报告的电子版;②采集的语音信号电子文件;③受污染的语音信号及滤波后的语音信号存在文件名为“姓名+学号.mat”文件的文件中)

实验程序:

1)实验主程序

2)FIR滤波器子程序

3)IIR滤波器子程序

上一篇:淘宝开店推广全攻略下一篇:思政课教学改革创新