数字图像处理实验程序
第一篇:数字图像处理实验程序
《数字图像处理》实验教案
数 字 图 像 处 理
实 验 指 导 书
信息科学与工程学院电子系
二○○六年
前
言
数字图像处理是研究数字图像处理的基本理论、方法及其在智能化检测中应用的学科,是电子信息类本科专业的专业课。
本课程侧重于数字图像的基本处理,并对图像分析的基本理论和实际应用进行系统介绍;目的是使学生系统掌握数字图像处理的基本概念、原理和实现方法,学习图像分析的基本理论、典型方法和实用技术,具备解决通信领域的图像相关问题的初步能力,为今后的研究与开发打下扎实的基础。
目
录
实验一 常用的图像文件格式与格式转换和图像矩阵的显示方实验二 实验三
法 …………………………………………………………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)
xy 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除的情形,同时分子中含有项,在处,。当时,,此时维纳滤波就变成 了逆滤波;当时,,表明维纳滤波避免了逆滤波中 出现的对噪声过多的放大作用,也就是说图像维纳复原比逆滤波复原效果好。
第三篇:简易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
利用 T DFT 分析信号频谱
一、实验目的
1.加深对 DFT 原理的理解。
2.应用 DFT 分析信号的频谱。
3.深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境
计算机、MATLAB 软件环境 三、实验基础理论
T 1.DFT 与 与 T DTFT 的关系
有限长序列 的离散时间傅里叶变换 在频率区间的 N 个等间隔分布的点 上的 N 个取样值可以由下式表示:
212 /0( )| ( ) ( ) 0 1Nj knjNk NkX e x n e X k k N 由上式可知,序列 的 N 点 DFT ,实际上就是 序列的 DTFT 在 N 个等间隔频率点 上样本 。
2.利用 T DFT 求 求 DTFT
方法 1 1:由恢复出的方法如下:
由图 2.1 所示流程可知:
101( ) ( ) ( )Nj j n kn j nNn n kX e x n e X k W eN 由上式可以得到:
IDFT DTFT
第五篇:《数字信号处理》实验三用双线性变换法设计IIR数字滤波器
实验三 用双线性变换法设计IIR数字滤波器
一、 实验目的
1、熟悉用双线性变换法设计IIR数字滤波器的原理与方法
2、掌握数字滤波器的计算机仿真方法
3、通过观察对实际心电图信号的滤波作用获得数字滤波的感性知识。
二、 实验内容及原理
1、用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。设计指标参数为在通带内截止频率低于0.2时最大衰减小于1dB在阻带内0.3频率区间上最小衰减大于15dB。
2、以0.02为采样间隔打印出数字滤波器在频率区间0/2上的幅频响应特性曲线。
3、用所设计的滤波器对实际心电图信号采样序列进行仿真滤波处理并分别打印出滤波前后的心电图信号波形图观察总结滤波作用与效果。 教材例中已求出满足本实验要求的数字滤波系统函数 31kkzHzH 3211212121kzCzBzzAzHkkk 式中 A0.09036 2155.09044.03583.00106.17051.02686.1332211CBCBCB
三、实验结果 心电图信号采样序列 0510152025303540455055-100-50050nxn心电图信号采样序列xn 用双线性变换法设计IIR数字滤波器一级滤波后的心电图信号 0102030405060-100-80-60-40-2002040ny1n一级滤波后的心电图信号 二级滤波后的心电图信号 0102030405060-100-80-60-40-2002040ny2n二级滤波后的心电图信号 三级滤波后的心电图信号 0102030405060-80-60-40-2002040ny3n三级滤波后的心电图信号 用双线性变换法设计IIR数
验字滤波器滤代波器的幅频响应曲线 码 00.050.10.150.20.250.30.350.40.450.5-50-40-30-20-10010w/pi20lgHjw滤波器的幅频响应曲线
四、实x-4-20-4-6-4-2-4-6-6-4-4-6-6-261280-16-38-60-84-90-66-32-4-2-48121210666400000-2-4000-2-200-2-2-2-20 n0:55 subplot111 stemnx. axis0 55 -100 50 xlabeln ylabelxn title心电图信号采样序列xn N56 A0.09036 20.09036 0.09036 B1 -1.2686 0.7051 B11 -1.0106 0.3583 B21 -0.9044 0.2155 y1filterABx n0:55 figure subplot111 stemny1. xlabeln ylabely1n title一级滤波后的心电图信号 y2filterAB1y1 n0:55 figure 用双线性变换法设计IIR数字滤波器subplot111 stemny2. xlabeln ylabely2n title二级滤波后的心电图信号 y3filterAB2y2 n0:55figure subplot111 stemny3. xlabeln ylabely3n title三级滤波后的心电图信号 A0.09036 20.09036 0.09036 B11 -1.2686 0.7051 B21 -1.0106 0.3583 B31 -0.9044 0.2155 H1wfreqzAB1100 H2wfreqzAB2100 H3wfreqzAB3100 H4H1.H2 HH4.H3 magabsH db20log10mageps/maxmag figure subplot111 plotw/pidb axis0 0.5 -50 10 xlabelw/pi ylabel20lgHjw title滤波器的幅频响应曲线
五、实验总结 双线性变换法的特点 对频率的压缩符合下列公式 11112zzTs sTsTz22 用双线性变换法设计IIR数字滤波器这样的变换叫做双线性变换。用双线性变换法来设计数字滤波器由于从s面映射到s1面具有非线性频率压缩的特点因此不可能产生频率混叠现象而且转换成的Hz是因果稳定的这是双线性变换法的最大优点。其缺点是w与之间的非线性关系直接影响数字滤波器频香逼真的模仿模拟滤波器的频响。 数字滤波器的输入和输出均为数字信号通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分。数字滤波器可以通过模拟其网络传输函数进行实现。如图中所示滤波器对其高于截止频率的频段产生很高的衰减所得信号较之原信号剔除了高频的成分。