小波变换处理图像((课程设计)).doc

上传人:文库蛋蛋多 文档编号:3942299 上传时间:2023-03-28 格式:DOC 页数:21 大小:1.91MB
返回 下载 相关 举报
小波变换处理图像((课程设计)).doc_第1页
第1页 / 共21页
小波变换处理图像((课程设计)).doc_第2页
第2页 / 共21页
小波变换处理图像((课程设计)).doc_第3页
第3页 / 共21页
小波变换处理图像((课程设计)).doc_第4页
第4页 / 共21页
小波变换处理图像((课程设计)).doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《小波变换处理图像((课程设计)).doc》由会员分享,可在线阅读,更多相关《小波变换处理图像((课程设计)).doc(21页珍藏版)》请在三一办公上搜索。

1、数字图像处理课程设计报告题 目: 小波变换处理图像 专 业: 信息与计算科学 学 号: 组 长: 指导教师: 成 绩: 二一 年 六 月二十六日一、 课程设计目的小波分析是当前应用数学和工程学科中一个迅速发展的新领域,经过近10年的探索研究,重要的数学形式化体系已经建立,理论基础更加扎实。与Fourier变换相比,小波变换是空间(时间)和频率的局部变换,因而能有效地从信号中提取信息。通过伸缩和平移等运算功能可对函数或信号进行多尺度的细化分析,解决了Fourier变换不能解决的许多困难问题。小波变换联系了应用数学、物理学、计算机科学、信号与信息处理、图像处理、地震勘探等多个学科。小波分析是一个新

2、的数学分支,它是泛函分析、Fourier分析、样调分析、数值分析的完美结晶;小波分析是时间尺度分析和多分辨分析的一种新技术,它在信号分析、语音合成、图像识别、计算机视觉、数据压缩、地震勘探、大气与海洋波分析等方面的研究都取得了有科学意义和应用价值的成果。二、课程设计要求1、对知识点的掌握要求:利用小波变换的基本原理在MATLAB环境下编写程序对静态图像进行分解并压缩,并观察分析其处理效果。2、分组情况:组长: 组员: 分工情况:设计全过程的监督及协助和整个源程序代码的整理。:负责小波变换的分解:负责小波变化的重构算法:负责编写MATLAB程序:负责图像的压缩3、课程设计内容一个图像作小波分解后

3、,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。高分辨率(即高频)子图像上大部分点都接近于0,越是高频这种现象越明显。对一个图像来说,表现一个图像最主要的部分是低频部分,所以利用小波分解就可以达到去掉图像的高频部分而只保留低频部分的目的。MATLAB是矩阵实验室(Matrix Laboratory)的简称,它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、 实现算法、创建用户界面、连接其它编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。本设计利用MATLAB工具箱

4、中的Wavele Toolbox小波工具箱对图像进行小波变换。三、课程设计实现步骤3.1 小波变换的分解和重构算法3.1.1 小波变换的分解算法小波是函数空间(R)中满足下述条件的一个函数或者信号(x)这里,=R-0表示非零实数全体。对于任意的函数或者信号,其小波变换定义为因此,对任意的函数,它的小波变换时一个二元函数。另所谓多分辨分析是指设;是(R)上的一列闭子空间,其中的一函数,如果它们满足如下五个条件,即(1)单调性:,;(2)唯一性:;(3)稠密性:(R);(4)伸缩性:,;(5)Riesz基存在性:存在,使得;构成的Riesz基。称为尺度函数。那么称;,是(R)上的一个多分辨分析。若

5、定义函数,则由多分辨分析的定义,容易得到一个重要结果,即函数族;是空间的标准正交基。关于多分辨分析,在这里以一个三层的分解进行说明,其小波分解树如图2.1所示(A表示低频,D表示高频)。图2.1 小波分解法从图中可以明显看出,多分辨分析只是对低频部分进行进一步分解,而高频部分则不予考虑。分解具有关系,另外强调一点,这里只是以一个层分解进行说明,如果要进行进一步分解,则可以把低频部分分解成低频部分和高频部分,以下再分解,依次类推。在理解多分辨分析时,必须牢牢把握一点,即分解的最终目的是力求构造一个在频率上高度逼近空间的正交小波基,这些频率分辨率不同的正交小波基相当于带宽各异的带通滤波器。从图2.

6、1可以看出,多分辨分析只对低频空间进行进一步的分解,使频率的分辨率变得越来越高。3.1.2 小波变换的重构算法设、(i=1,2,3)是由两个一元两尺度序列得到的二元尺度序列,即=,=,=,=。则有重构算法为=小波重构的数据传递示意图如图2.2所示图2.2 小波重构数据流示意图3.2 小波变换在图像压缩中的应用二维离散小波变换后的系数分布构成了信号的二维正交小波分解系数(如图2.3所示),图2.3 二维正交小波分解系数它们每一个都可被看做一幅图像,给出了垂直方向的高频分量的小波分解系数,给出了水平方向的高频分量的小波分解系数,给出了对角方向高频分量的小波分解系数,给出了的低频分量的小波分解系数。

7、由此可见,若用,分别表示,经21亚抽样后的变换系数(简称为子图像),则任一图像都可以分解为j=-J,-1之间的3J+1个离散子图像:,其中是原图像的一个近似,(i=1,2,3;j=-J,-1)则是图像在不同方向、不同分辨率下的细节;如果原图像有N2个像素,则子图像,分别有个像素,因而分解后总的像素数为可见,分解后总的像素数不变。二维数字信号也即数字图像,对它的处理时基于图像的数字化来实现的。图像的书画结果就是一个巨大数字矩阵,图像处理就在这个矩阵上完成。所以,可将二维数字信号看做,即=并采用与一维情况类似的mallat算法。由于两次一维小波变换来实现一次二维小波变换,所以先对该矩阵的行进行小波

8、变换,再对列进行小波变换。从信号滤波的角度实现二维小波变换的框图分别如图3.4所示。图2.4 二维小波变化的框图3.3MATLAB程序下面的实例是基于二维小波分析对图像进行压缩。一个图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。高分辨率(即高频)子图像上大部分点都接近于0,越是高频这种现象越明显。对一个图像来说,表现一个图像最主要的部分是低频部分,所以一个最简单的压缩方法是利用小波分解,去掉图像的高频部分而只保留低频部分。clc;clear all;a=imread(1.bmp);X=rgb2gray(a);subplot(221);image(X)

9、;colormap(gray(256);title(原始图像);axis square;c,s=wavedec2(X,2,bior3.7);ca1=appcoef2(c,s,bior3.7,1);ch1=detcoef2(h,c,s,1);cv1=detcoef2(v,c,s,1);cd1=detcoef2(d,c,s,1);a1=wrcoef2(a,c,s,bior3.7,1);h1=wrcoef2(h,c,s,bior3.7,1);v1=wrcoef2(v,c,s,bior3.7,1);d1=wrcoef2(d,c,s,bior3.7,1);c1=a1,h1;v1,d1;subplot(2

10、22);image(c1);axis squaretitle(分解后低频和高频信息);ca1=appcoef2(c,s,bior3.7,1);ca1=wcodemat(ca1,440,mat,0);ca1=0.5*ca1;subplot(223);image(ca1);colormap(gray(256);title(第一次压缩图像);axis squareca2=appcoef2(c,s,bior3.7,2);ca2=wcodemat(ca2,440,mat,0);ca2=0.25*ca2;subplot(224);image(ca2);colormap(gray(256);axis squ

11、are;title(第二次压缩图像);ifndef _BMPHEADER_H#define _BMPHEADER_H#pragma pack(1)typedef struct _BmpHeaderchar Identi2; /checkDWORD FileSize; DWORD Reserve1;DWORD DataOffset; /check DWORD HeaderSize; /checkDWORD Width; /checkDWORD Height; /checkWORD Planes;WORD BitsPerPix; /checkDWORD Compression; /checkDWO

12、RD DataSize;DWORD hResolution;DWORD vResolution;DWORD Colors; /checkDWORD ImportantColor; BmpHeader;/size if 54typedef struct _BmpBmpHeader Header;DWORD Palettes256;unsigned char Pix256256; Bmp;/size is 66614/the file store in disk will be 66616 size NdifWavelet.cpp : Defines the class behaviors for

13、 the application./#include stdafx.h#include Wavelet.h#include MainFrm.h#include WaveletDoc.h#include WaveletView.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CWaveletAppBEGIN_MESSAGE_MAP(CWaveletApp, CWinApp)/AFX_MSG_MAP(CWaveletApp)ON_COMMAND(ID_APP_ABOU

14、T, OnAppAbout)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSG_MAP/ Standard file based document commandsON_COMMAND(ID_FILE_NEW, CWinApp:OnFileNew)ON_COMMAND(ID_FILE_OPEN, CWinApp:OnFileOpen)/ Standard print setup

15、commandON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp:OnFilePrintSetup)END_MESSAGE_MAP()/ CWaveletApp constructionCWaveletApp:CWaveletApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstance/ The one and only CWaveletApp objectCWaveletApp theApp;/ CWaveletApp initializ

16、ationBOOL CWaveletApp:InitInstance()AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dContr

17、ols();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endif/ Change the registry key under which our settings are stored./ TODO: You should modify this string to be something appropriate/ such as the name of your company or organizat

18、ion.SetRegistryKey(_T(Local AppWizard-Generated Applications);LoadStdProfileSettings(); / Load standard INI file options (including MRU)/ Register the applications document templates. Document templates/ serve as the connection between documents, frame windows and views.CSingleDocTemplate* pDocTempl

19、ate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CWaveletDoc),RUNTIME_CLASS(CMainFrame), / main SDI frame windowRUNTIME_CLASS(CWaveletView);AddDocTemplate(pDocTemplate);/ Parse command line for standard shell commands, DDE, file openCCommandLineInfo cmdInfo;ParseCommandLine(cmdI

20、nfo);/ Dispatch commands specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;/ The one and only window has been initialized, so show and update it.m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-UpdateWindow();return TRUE;/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public

21、 CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)

22、/ No message handlers/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(

23、CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ App command to run the dialogvoid CWaveletApp:OnAppAbout()CAboutDlg aboutDlg;aboutDlg.DoModal();/ CWaveletApp message handler四、结果及分析双线性内插法得到的放大图像。从图像的效果看出分辨率小的图像放大后得到的效果与原始图像相差很大。相比较而言,最近邻域法放大的图像平滑程度不如双线性法放大的,所以在实际应用中双线性内插法通常是首选。 从上面的图可以看

24、出,在偏暗的图像中,直方图的组成成分集中在灰度级低的一侧,图像的对比度很低,为了使图像的对比度增加,采用了直方图均衡化,使图像所占的灰度登记得到扩展,对比度加强,使整个图像得到增强。数字图像均衡化后,其直方图并非完全均匀分布,这是因为图像的象素个数和灰度等级均为离散值,而且均衡化使灰度级并归。因此,均衡化后,其直方图并非完全均匀分布。从上图我们使用的是一副对比度较强的图像来做直方图均衡化,得到的均衡化后的图像效果并不好,这是因为对原来直方图就充满整个灰度级的图像再做均衡化使得部分灰度级变化后出现重叠的现象,使得得到的图像效果并不好。上图是对一副被椒盐噪声污染的图像分别使用3*3,5*5,7*7

25、模板进行平滑滤波的到的,从图像的效果来看,使用7*7模板对噪声的平滑效果最好,但与此同时,原始图像的也被平滑了,所以在选择模板大小时要综合考虑对噪声的平滑度和对原始图像的平滑度。 这是对上面的图像进行中值滤波后的结果,从图像的效果来看中值滤波对处理脉冲噪声非常有效,这是因为中值滤波器是将邻域内的像素灰度的中值代替该像素的值。而椒盐噪声就是那些灰度为最大或最小的点,采用中值滤波能过有效的消除这些点,而且模糊程度明显比均匀滤波器要低 采用拉普拉斯滤波后的图像在叠加到原始图像中,就可以使图像中的各灰度值得到复原,而且通过拉普拉斯变换增强了图像中灰度突变处的对比度。最终的结果是使图像中的细节部分得到增

26、强,并良好保留了图像的背景色调。 1原始 2高斯噪声 3 椒盐噪声 均为彩色图像 从上图来看,对被高斯噪声污染的图像进行频域滤波的效果不如被椒盐噪声污染的图像同样处理那样好,这是因为高斯噪声的频谱均匀的充满整个频域,低频(图像主要所在)处也有频谱,进行频域滤波后高频的噪声的确被滤除了,但是低频的噪声仍然存在,所以效果不怎么好。而椒盐噪声的频谱集中的高频部分,所以椒盐噪声效果还是可以的。频域滤波实现除噪的原理是原始图像的频谱集中在低频部分,在高频处图像的信噪比就比较低,显得图像效果不好,而进行了低通滤波后虽然牺牲了原始图像的边缘部分,但是滤除了高频的噪声,在低频的噪声和原始图像相比显得不那么明显

27、,目的就达到了。原始图像RGBHSI彩色除噪原理 对彩色图像进行除噪的过程应该是先将I分量提取处理来,单独对I 分量进行除噪。如果直接对RGB分量进行除噪处理,会出现新的颜色分量,这样的图像和原始图像差的很多。 从图中可以看出,第一次压缩我们是提取原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3);第二次压缩是提取第一层分解低频部分的低频部分(即小波分解第二层的低频部分),其压缩比比较大(1/12),压缩效果在视觉上也基本过得去,它不需要经过其它处理即可获得较好的压缩效果。 mask=1 1 1 1 0 0 0 0从模板可以看出,使用DCT 1 1 1 0 0 0

28、0 0变化可以有效的减少图像占 1 1 0 0 0 0 0 0用的空间。DCT变化后数据 1 0 0 0 0 0 0 0 左上角是低频,右下角是高 0 0 0 0 0 0 0 0频,忽略高频采用Z字排列. 0 0 0 0 0 0 0 0这种方法会有两种误差,首 0 0 0 0 0 0 0 0先是分块误差,还有忽略高 0 0 0 0 0 0 0 0;频误差,所以能看到反变化的图像多了一条白杠。五、心得体会这次设计利用小波变换完成了对静态图像进行压缩和复原的目的,基本上实现了设计的要求。图像压缩是一个很有发展前途的研究领域,它的研究就是寻找高压缩比的方法且压缩后的图像要有合适的信噪比,在压缩传输后

29、还要恢复原信号,且在压缩、传输、恢复的过程中,还要求图像的失真度小。而将小波分析引入图像压缩的研究范畴,当一个图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的.高分辨率子图像上大部分点的数值都接近0,越高就越明显。而对于一个图像来说,表现一个图像的最主要部分是低频部分。而且小波分析能使压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变。在数字图像处理中具有很强的使用价值。六、参考文献1 谢平、王娜、林洪彬等编 数字信号处理 燕山大学2007年3月。2 邹鲲、袁俊泉、龚享铱编 MATLAB6.x信号处理 清华大学出版社 2002年5月 。 3 薛年喜主编 MATLAB在数字信号处理中的应用 清华大学出版社 2003年。

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号