小波變換處理圖像((課程設計))_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  《數(shù)字圖像處理》</b></p><p><b>  課程設計報告</b></p><p>  題 目: 小波變換處理圖像 </p><p>  專 業(yè): 信息與計算科學 </p><p>  學 號: </p>

2、<p>  組 長: </p><p>  指導教師: </p><p>  成 績: </p><p>  二〇一〇 年 六 月二十六日</p><p><b>  課程設計目的</b></p>

3、<p>  小波分析是當前應用數(shù)學和工程學科中一個迅速發(fā)展的新領域,經過近10年的探索研究,重要的數(shù)學形式化體系已經建立,理論基礎更加扎實。與Fourier變換相比,小波變換是空間(時間)和頻率的局部變換,因而能有效地從信號中提取信息。通過伸縮和平移等運算功能可對函數(shù)或信號進行多尺度的細化分析,解決了Fourier變換不能解決的許多困難問題。小波變換聯(lián)系了應用數(shù)學、物理學、計算機科學、信號與信息處理、圖像處理、地震勘探等多個學

4、科。小波分析是一個新的數(shù)學分支,它是泛函分析、Fourier分析、樣調分析、數(shù)值分析的完美結晶;小波分析是時間—尺度分析和多分辨分析的一種新技術,它在信號分析、語音合成、圖像識別、計算機視覺、數(shù)據(jù)壓縮、地震勘探、大氣與海洋波分析等方面的研究都取得了有科學意義和應用價值的成果。</p><p><b>  二、課程設計要求</b></p><p>  1、對知識點的掌握

5、要求:</p><p>  利用小波變換的基本原理在MATLAB環(huán)境下編寫程序對靜態(tài)圖像進行分解并壓縮,并觀察分析其處理效果。</p><p><b>  2、分組情況:</b></p><p><b>  組長: </b></p><p><b>  組員: </b><

6、/p><p><b>  分工情況:</b></p><p> ?。涸O計全過程的監(jiān)督及協(xié)助和整個源程序代碼的整理。</p><p> ?。贺撠熜〔ㄗ儞Q的分解</p><p> ?。贺撠熜〔ㄗ兓闹貥嬎惴?lt;/p><p>  :負責編寫MATLAB程序</p><p><b

7、> ?。贺撠焾D像的壓縮</b></p><p><b>  3、課程設計內容</b></p><p>  對知識點的掌握要求:</p><p>  利用小波變換的基本原理在MATLAB環(huán)境下編寫程序對靜態(tài)圖像進行分解并壓縮,并觀察分析其處理效果MATLAB是矩陣實驗室(Matrix Laboratory)的簡稱,它在數(shù)學類科技

8、應用軟件中在數(shù)值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、 </p><p>  實現(xiàn)算法、創(chuàng)建用戶界面、連接其它編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。</p><p>  本設計利用MATLAB工具箱中的Wavele Toolbox——小波工具箱對圖像進行小波變換。</p>&

9、lt;p>  三、課程設計實現(xiàn)步驟</p><p>  3.1 小波變換的分解和重構算法</p><p>  3.1.1 小波變換的分解算法</p><p>  小波是函數(shù)空間(R)中滿足下述條件的一個函數(shù)或者信號ψ(x)</p><p>  這里,=R-{0}表示非零實數(shù)全體。</p><p>  對于任意的函

10、數(shù)或者信號,其小波變換定義為</p><p>  因此,對任意的函數(shù),它的小波變換時一個二元函數(shù)。</p><p>  另所謂多分辨分析是指設{;}是(R)上的一列閉子空間,其中的一</p><p>  函數(shù),如果它們滿足如下五個條件,即</p><p><b> ?。?)單調性:,;</b></p>&l

11、t;p><b> ?。?)唯一性:;</b></p><p> ?。?)稠密性:(R);</p><p><b>  (4)伸縮性:,;</b></p><p> ?。?)Riesz基存在性:存在,使得{;}構成的Riesz基。稱為尺度函數(shù)。那么稱{{;},}是(R)上的一個多分辨分析。</p><

12、;p>  若定義函數(shù),,則由多分辨分析的定義,容</p><p>  易得到一個重要結果,即函數(shù)族</p><p><b>  {;}</b></p><p>  是空間的標準正交基。關于多分辨分析,在這里以一個三層的分解進行說明,其小波分解樹如圖2.1所示(A表示低頻,D表示高頻)。</p><p>  圖2.1

13、 小波分解法</p><p>  從圖中可以明顯看出,多分辨分析只是對低頻部分進行進一步分解,而高頻部分則不予考慮。分解具有關系,</p><p>  另外強調一點,這里只是以一個層分解進行說明,如果要進行進一步分解,則可以把低頻部分分解成低頻部分和高頻部分,以下再分解,依次類推。在理解多分辨分析時,必須牢牢把握一點,即分解的最終目的是力求構造一個在頻率上高度逼近空間的正交小波基,這些頻

14、率分辨率不同的正交小波基相當于帶寬各異的帶通濾波器。從圖2.1可以看出,多分辨分析只對低頻空間進行進一步的分解,使頻率的分辨率變得越來越高。</p><p>  3.1.2 小波變換的重構算法</p><p>  設{}、{}(i=1,2,3)是由兩個一元兩尺度序列得到的二元尺度序列,即</p><p>  =,=,=,=。則有重構算法為</p>&l

15、t;p><b>  =</b></p><p>  小波重構的數(shù)據(jù)傳遞示意圖如圖2.2所示</p><p>  圖2.2 小波重構數(shù)據(jù)流示意圖</p><p>  3.2 小波變換在圖像壓縮中的應用</p><p>  二維離散小波變換后的系數(shù)分布</p><p>  構成了信號的二維正交

16、小波分解系數(shù)(如圖2.3所示),</p><p>  圖2.3 二維正交小波分解系數(shù)</p><p>  它們每一個都可被看做一幅圖像,給出了垂直方向的高頻分量的小波分解系數(shù),給出了水平方向的高頻分量的小波分解系數(shù),給出了對角方向高頻分量的小波分解系數(shù),給出了的低頻分量的小波分解系數(shù)。由此可見,若用,,,分別表示,,,經2∶1亞抽樣后的變換系數(shù)(簡稱為子圖像),則任一圖像都可以分解為j=

17、-J,…,-1之間的3J+1個離散子圖像:,,,其中是原圖像的一個近似,(i=1,2,3;j=-J,…,-1)則是圖像在不同方向、不同分辨率下的細節(jié);如果原圖像有N2個像素,則子圖像,,,分別有個像素,因而分解后總的像素數(shù)為</p><p>  可見,分解后總的像素數(shù)不變。</p><p>  二維數(shù)字信號也即數(shù)字圖像,對它的處理時基于圖像的數(shù)字化來實現(xiàn)的。圖像的書畫結果就是一個巨大數(shù)字矩

18、陣,圖像處理就在這個矩陣上完成。所以,可將二維數(shù)字信號看做,即</p><p><b>  ==</b></p><p>  并采用與一維情況類似的mallat算法。由于兩次一維小波變換來實現(xiàn)一次二維小波變換,所以先對該矩陣的行進行小波變換,再對列進行小波變換。從信號濾波的角度實現(xiàn)二維小波變換的框圖分別如圖3.4所示。</p><p>  圖2

19、.4 二維小波變化的框圖</p><p>  3.3MATLAB程序</p><p>  下面的實例是基于二維小波分析對圖像進行壓縮。一個圖像作小波分解后,可得到一系列不同分辨率的子圖像,不同分辨率的子圖像對應的頻率是不相同的。高分辨率(即高頻)子圖像上大部分點都接近于0,越是高頻這種現(xiàn)象越明顯。對一個圖像來說,表現(xiàn)一個圖像最主要的部分是低頻部分,所以一個最簡單的壓縮方法是利用小波分解,去

20、掉圖像的高頻部分而只保留低頻部分。</p><p><b>  clc;</b></p><p>  clear all;</p><p>  a=imread('1.bmp');</p><p>  X=rgb2gray(a);</p><p>  subplot(221);im

21、age(X);colormap(gray(256));</p><p>  title('原始圖像');</p><p>  axis square;</p><p>  [c,s]=wavedec2(X,2,'bior3.7');</p><p>  ca1=appcoef2(c,s,'bior3.7

22、',1);</p><p>  ch1=detcoef2('h',c,s,1);</p><p>  cv1=detcoef2('v',c,s,1);</p><p>  cd1=detcoef2('d',c,s,1);</p><p>  a1=wrcoef2('a',

23、c,s,'bior3.7',1);</p><p>  h1=wrcoef2('h',c,s,'bior3.7',1);</p><p>  v1=wrcoef2('v',c,s,'bior3.7',1);</p><p>  d1=wrcoef2('d',c,s,

24、9;bior3.7',1);</p><p>  c1=[a1,h1;v1,d1];</p><p>  subplot(222);image(c1);</p><p>  axis square</p><p>  title('分解后低頻和高頻信息');</p><p>  ca1=appc

25、oef2(c,s,'bior3.7',1);</p><p>  ca1=wcodemat(ca1,440,'mat',0);</p><p>  ca1=0.5*ca1;</p><p>  subplot(223);image(ca1);colormap(gray(256));</p><p>  titl

26、e('第一次壓縮圖像');</p><p>  axis square</p><p>  ca2=appcoef2(c,s,'bior3.7',2);</p><p>  ca2=wcodemat(ca2,440,'mat',0);</p><p>  ca2=0.25*ca2;</p&

27、gt;<p>  subplot(224);image(ca2);colormap(gray(256));</p><p>  axis square;</p><p>  title('第二次壓縮圖像');</p><p>  ifndef _BMPHEADER_H</p><p>  #define _BMP

28、HEADER_H</p><p>  #pragma pack(1)</p><p>  typedef struct _BmpHeader</p><p><b>  {</b></p><p>  char Identi[2]; //check</p><p>  DWORD FileSi

29、ze; </p><p>  DWORD Reserve1;</p><p>  DWORD DataOffset; //check </p><p>  DWORD HeaderSize; //check</p><p>  DWORD Width; //check</p><p>  DWORD

30、Height; //check</p><p>  WORD Planes;</p><p>  WORD BitsPerPix; //check</p><p>  DWORD Compression; //check</p><p>  DWORD DataSize;</p><p>  DWOR

31、D hResolution;</p><p>  DWORD vResolution;</p><p>  DWORD Colors; //check</p><p>  DWORD ImportantColor;</p><p>  } BmpHeader;</p><p>  //size if 5

32、4</p><p>  typedef struct _Bmp</p><p><b>  {</b></p><p>  BmpHeader Header;</p><p>  DWORD Palettes[256];</p><p>  unsigned char Pix[256][256];

33、</p><p><b>  } Bmp;</b></p><p>  //size is 66614</p><p>  //the file store in disk will be 66616 size </p><p><b>  Ndif</b></p><p>

34、;  Wavelet.cpp : Defines the class behaviors for the application.</p><p><b>  //</b></p><p>  #include "stdafx.h"</p><p>  #include "Wavelet.h"</p

35、><p>  #include "MainFrm.h"</p><p>  #include "WaveletDoc.h"</p><p>  #include "WaveletView.h"</p><p>  #ifdef _DEBUG</p><p>  #

36、define new DEBUG_NEW</p><p>  #undef THIS_FILE</p><p>  static char THIS_FILE[] = __FILE__;</p><p><b>  #endif</b></p><p>  // CWaveletApp</p><p&

37、gt;  BEGIN_MESSAGE_MAP(CWaveletApp, CWinApp)</p><p>  //{{AFX_MSG_MAP(CWaveletApp)</p><p>  ON_COMMAND(ID_APP_ABOUT, OnAppAbout)</p><p>  // NOTE - the ClassWizard will add and remo

38、ve mapping macros here.</p><p>  // DO NOT EDIT what you see in these blocks of generated code!</p><p>  //}}AFX_MSG_MAP</p><p>  // Standard file based document commands</p&g

39、t;<p>  ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)</p><p>  ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)</p><p>  // Standard print setup command</p><p>  ON_COMMAND(ID_FIL

40、E_PRINT_SETUP, CWinApp::OnFilePrintSetup)</p><p>  END_MESSAGE_MAP()</p><p>  // CWaveletApp construction</p><p>  CWaveletApp::CWaveletApp()</p><p><b>  {</b&

41、gt;</p><p>  // TODO: add construction code here,</p><p>  // Place all significant initialization in InitInstance</p><p><b>  }</b></p><p>  // The one and

42、 only CWaveletApp object</p><p>  CWaveletApp theApp;</p><p>  // CWaveletApp initialization</p><p>  BOOL CWaveletApp::InitInstance()</p><p><b>  {</b><

43、/p><p>  AfxEnableControlContainer();</p><p>  // Standard initialization</p><p>  // If you are not using these features and wish to reduce the size</p><p>  // of your

44、final executable, you should remove from the following</p><p>  // the specific initialization routines you do not need.</p><p>  #ifdef _AFXDLL</p><p>  Enable3dControls();// C

45、all this when using MFC in a shared DLL</p><p><b>  #else</b></p><p>  Enable3dControlsStatic();// Call this when linking to MFC statically</p><p><b>  #endif<

46、/b></p><p>  // Change the registry key under which our settings are stored.</p><p>  // TODO: You should modify this string to be something appropriate</p><p>  // such as the n

47、ame of your company or organization.</p><p>  SetRegistryKey(_T("Local AppWizard-Generated Applications"));</p><p>  LoadStdProfileSettings(); // Load standard INI file options (inclu

48、ding MRU)</p><p>  // Register the application's document templates. Document templates</p><p>  // serve as the connection between documents, frame windows and views.</p><p>

49、  CSingleDocTemplate* pDocTemplate;</p><p>  pDocTemplate = new CSingleDocTemplate(</p><p>  IDR_MAINFRAME,</p><p>  RUNTIME_CLASS(CWaveletDoc),</p><p>  RUNTIME_CLASS(

50、CMainFrame), // main SDI frame window</p><p>  RUNTIME_CLASS(CWaveletView));</p><p>  AddDocTemplate(pDocTemplate);</p><p>  // Parse command line for standard shell commands,

51、 DDE, file open</p><p>  CCommandLineInfo cmdInfo;</p><p>  ParseCommandLine(cmdInfo);</p><p>  // Dispatch commands specified on the command line</p><p>  if (!Process

52、ShellCommand(cmdInfo))</p><p>  return FALSE;</p><p>  // The one and only window has been initialized, so show and update it.</p><p>  m_pMainWnd->ShowWindow(SW_SHOW);</p>

53、<p>  m_pMainWnd->UpdateWindow();</p><p>  return TRUE;</p><p><b>  }</b></p><p>  // CAboutDlg dialog used for App About</p><p>  class CAboutDlg

54、 : public CDialog</p><p><b>  {</b></p><p><b>  public:</b></p><p>  CAboutDlg();</p><p>  // Dialog Data</p><p>  //{{AFX_DATA(CAb

55、outDlg)</p><p>  enum { IDD = IDD_ABOUTBOX };</p><p>  //}}AFX_DATA</p><p>  // ClassWizard generated virtual function overrides</p><p>  //{{AFX_VIRTUAL(CAboutDlg)<

56、/p><p>  protected:</p><p>  virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support</p><p>  //}}AFX_VIRTUAL</p><p>  // Implementation</p><p>

57、;  protected:</p><p>  //{{AFX_MSG(CAboutDlg)</p><p>  // No message handlers</p><p>  //}}AFX_MSG</p><p>  DECLARE_MESSAGE_MAP()</p><p><b>  };</

58、b></p><p>  CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)</p><p><b>  {</b></p><p>  //{{AFX_DATA_INIT(CAboutDlg)</p><p>  //}}AFX_DATA_INIT</p>

59、<p><b>  }</b></p><p>  void CAboutDlg::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p><p>  CDialog::DoDataExchange(pDX);</p><p&g

60、t;  //{{AFX_DATA_MAP(CAboutDlg)</p><p>  //}}AFX_DATA_MAP</p><p><b>  }</b></p><p>  BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)</p><p>  //{{AFX_MSG_MAP(CAboutDl

61、g)</p><p>  // No message handlers</p><p>  //}}AFX_MSG_MAP</p><p>  END_MESSAGE_MAP()</p><p>  // App command to run the dialog</p><p>  void CWaveletApp:

62、:OnAppAbout()</p><p><b>  {</b></p><p>  CAboutDlg aboutDlg;</p><p>  aboutDlg.DoModal();</p><p><b>  }</b></p><p>  // CWaveletApp

63、 message handler</p><p><b>  四、結果及分析</b></p><p>  雙線性內插法得到的放大圖像。從圖像的效果看出分辨率小的圖像放大后得到的效果與原始圖像相差很大。相比較而言,最近鄰域法放大的圖像平滑程度不如雙線性法放大的,所以在實際應用中雙線性內插法通常是首選。</p><p>  從上面的圖可以看出,在偏

64、暗的圖像中,直方圖的組成成分集中在灰度級低的一側,圖像的對比度很低,為了使圖像的對比度增加,采用了直方圖均衡化,使圖像所占的灰度登記得到擴展,對比度加強,使整個圖像得到增強。</p><p>  數(shù)字圖像均衡化后,其直方圖并非完全均勻分布,這是因為圖像的象素個數(shù)和灰度等級均為離散值,而且均衡化使灰度級并歸。因此,均衡化后,其直方圖并非完全均勻分布。</p><p>  從上圖我們使用的是一

65、副對比度較強的圖像來做直方圖均衡化,得到的均衡化后的圖像效果并不好,這是因為對原來直方圖就充滿整個灰度級的圖像再做均衡化使得部分灰度級變化后出現(xiàn)重疊的現(xiàn)象,使得得到的圖像效果并不好。</p><p>  上圖是對一副被椒鹽噪聲污染的圖像分別使用3*3,5*5,7*7模板進行平滑濾波的到的,從圖像的效果來看,使用7*7模板對噪聲的平滑效果最好,但與此同時,原始圖像的也被平滑了,所以在選擇模板大小時要綜合考慮對噪聲的

66、平滑度和對原始圖像的平滑度。</p><p>  這是對上面的圖像進行中值濾波后的結果,從圖像的效果來看中值濾波對處理脈沖噪聲非常有效,這是因為中值濾波器是將鄰域內的像素灰度的中值代替該像素的值。而椒鹽噪聲就是那些灰度為最大或最小的點,采用中值濾波能過有效的消除這些點,而且模糊程度明顯比均勻濾波器要低</p><p>  采用拉普拉斯濾波后的圖像在疊加到原始圖像中,就可以使圖像中的各灰度值

67、得到復原,而且通過拉普拉斯變換增強了圖像中灰度突變處的對比度。最終的結果是使圖像中的細節(jié)部分得到增強,并良好保留了圖像的背景色調。</p><p>  1原始 2高斯噪聲 3 椒鹽噪聲 均為彩色圖像</p><p>  從上圖來看,對被高斯噪聲污染的圖像進行頻域濾波的效果不如被椒鹽噪聲污</p><p>  染的圖像同樣處理那樣好,這是因為高斯噪聲的頻譜均勻的充滿整

68、個頻域,低頻</p><p>  (圖像主要所在)處也有頻譜,進行頻域濾波后高頻的噪聲的確被濾除了,但是低頻的噪聲仍然存在,所以效果不怎么好。而椒鹽噪聲的頻譜集中的高頻部分,所以椒鹽噪聲效果還是可以的。</p><p>  頻域濾波實現(xiàn)除噪的原理是原始圖像的頻譜集中在低頻部分,在高頻處圖像的信噪比就比較低,顯得圖像效果不好,而進行了低通濾波后雖然犧牲了原始圖像的邊緣部分,但是濾除了高頻的噪

69、聲,在低頻的噪聲和原始圖像相比顯得不那么明顯,目的就達到了。</p><p><b>  原始圖像</b></p><p>  RGB</p><p>  HSI</p><p><b>  彩色除噪原理</b></p><p>

70、;  對彩色圖像進行除噪的過程應該是先將I分量提取處理來,單獨對I 分量進行除噪。如果直接對RGB分量進行除噪處理,會出現(xiàn)新的顏色分量,這樣的圖像和原始圖像差的很多。</p><p>  從圖中可以看出,第一次壓縮我們是提取原始圖像中小波分解第一層的低頻信息,此時壓縮效果較好,壓縮比較小(約為1/3);第二次壓縮是提取第一層分解低頻部分的低頻部分(即小波分解第二層的低頻部分),其壓縮比比較大(1/12),壓縮效果

71、在視覺上也基本過得去,它不需要經過其它處理即可獲得較好的壓縮效果。</p><p>  mask=[1 1 1 1 0 0 0 0從模板可以看出,使用DCT</p><p>  1 1 1 0 0 0 0 0變化可以有效的減少圖像占</p><p>  1 1 0 0 0 0 0 0用的空間。DCT變化后數(shù)據(jù)</p><p>

72、  1 0 0 0 0 0 0 0 左上角是低頻,右下角是高</p><p>  0 0 0 0 0 0 0 0頻,忽略高頻采用Z字排列.</p><p>  0 0 0 0 0 0 0 0這種方法會有兩種誤差,首</p><p>  0 0 0 0 0 0 0 0先是分塊誤差,還有忽略高</p><p>  0 0

73、0 0 0 0 0 0];頻誤差,所以能看到反變化的圖像多了一條白杠。</p><p><b>  五、心得體會</b></p><p>  這次設計利用小波變換完成了對靜態(tài)圖像進行壓縮和復原的目的,基本上實現(xiàn)了設計的要求。</p><p>  圖像壓縮是一個很有發(fā)展前途的研究領域,它的研究就是尋找高壓縮比的方</p><

74、;p>  法且壓縮后的圖像要有合適的信噪比,在壓縮傳輸后還要恢復原信號,且在壓縮、傳輸、恢復的過程中,還要求圖像的失真度小。而將小波分析引入圖像壓縮的研究范疇,當一個圖像作小波分解后,可得到一系列不同分辨率的子圖像,不同分辨率的子圖像對應的頻率是不相同的.高分辨率子圖像上大部分點的數(shù)值都接近0,越高就越明顯。而對于一個圖像來說,表現(xiàn)一個圖像的最主要部分是低頻部分。而且小波分析能使壓縮比高、壓縮速度快,壓縮后能保持信號與圖像的特征基

75、本不變。在數(shù)字圖像處理中具有很強的使用價值。</p><p><b>  六、參考文獻</b></p><p>  [1] 謝平、王娜、林洪彬等編 《數(shù)字信號處理》 燕山大學2007年3月。</p><p>  [2] 鄒鯤、袁俊泉、龔享銥編 《MATLAB6.x信號處理》 清華大學出版社 2002年5月 。 </p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論