精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

圖像傅里葉變換、反變換的實現

時間:2023-05-01 12:36:09 資料 我要投稿
  • 相關推薦

圖像傅里葉變換、反變換的實現

課程大作業實驗報告

圖像傅里葉變幻、反變換的實現

課程名稱:數字圖像處理

組 長: 王文雄 學號:200730590323 年級專業班級:07通信3班 成員一: 龐柱堅 學號:200730590318 年級專業班級:07通信3班 成員二: 王彌光 學號:200730590322 年級專業班級: 07通信3班 成員三: 學號: 年級專業班級:07通信3班

指導教師 鄧繼忠

報告提交日期

2010年 6 月1日

項目答辯日期

2010年 6 月1日

目 錄

1. 項目要求............................................................... 3 2. 項目開發環境........................................................... 3 3. 系統分析............................................................... 3 3.1. 系統的主要功能分析 ............................................... 3 3.2. 系統的關鍵問題及解決方法(或思路) ............................... 6 4. 系統設計............................................................... 8 4.1. 程序流程圖及說明 ................................................... 8 4.2. 程序主要模塊(或功能)介紹 ........................................ 10 4.2.1. 一維 FFT 和 IFFT ............................................. 10 4.2.2. 二維圖像 FFT 和 IFFT: ....................................... 11 5. 實驗結果與分析........................................................ 12 5.1. 實驗結果 .......................................................... 12 5.2. 項目的創新之處 .................................................... 13 5.3. 存在問題及改進設想 ................................................ 13 6. 心得體會.............................................................. 14 6.1. 系統開發的體會 .................................................... 14 6.2. 對本門課程的改進意見或建議 ........................................ 14 7. 附件一................................................................ 15

1. 項目要求

1.基本要求:自修教材相關內容(P52-74)或其它參考資料,在CVI下編程對尺寸為2N(N為正整數)的圖像進行FFT(快速傅里葉變換)和(快速傅里葉反變換)。 (不能利用CVI下的函數)

2.題目拓展:編程實現任意大小圖像的二維傅立葉的變換與反變換。

2. 項目開發環境

項目開發環境主要分為軟件環境和硬件環境

軟件:Lab Windows/CVI和IMAQ_Vision for LabWindows/CVI。Lab Windows/CVI是美國National Instrument(簡稱NI)公司開發的基于C語言的虛擬儀器開發平臺,適用于自動測試、自動控制、測試儀器通信、測試硬件控制、信號分析及圖像處理等軟件的開發。經過版本的不斷更新,Lab Windows/CVI已經成為測控領域應用最為廣泛的軟件開發工具之一。而IMAQ_Vision for LabWindows/CVI是NI公司開發的基于LabWindows/CVI的高級圖像處理和分析軟件包,是進行圖像處理和分析的教學和科研的有力工具。軟件包提供了3個重要的文件:

硬件:個人PC電腦(主頻:2.6GHZ*2 內存:1G*2)

3. 系統分析

3.1. 系統的主要功能分析

傅里葉變換是研究信號頻域特性首要數學工具。在數字圖像頻域處理中,常常要對二維圖像做快速傅里葉變換,由于傅里葉變換的可分離性,二維快速傅里葉變可以分解為對行、列兩個方向的一維快速傅里葉變換,所以在LabWindows/CVI 集成開發

環境下實現二維圖像的快速傅里葉變換的關鍵是一維傅里葉變換的實現。

在本系統設計過程中,主要分成兩個部分完成:

第一部分是一維快速傅里葉變換,該部分所包含的變量函數基本上不依賴于特定的軟件平臺,僅僅與C語言有關,這部分是為二維快速傅里葉服務的。主要有內容及其作用如表格1所示。

表 1 一維快速傅里葉變換及反變換功能模塊列表

第二部分是二維快速傅里葉變換及其反變換,該部分主要是在一維快速傅里葉變換及其反變換的基礎上,完成對一幅二維圖像的快速傅里葉變換及其反變換,并將結果顯示出來。主要函數模塊及其功能如表格2所示。

表2 二維快速傅里葉變換及反變換功能模塊列表

3.2. 系統的關鍵問題及解決方法(或思路)

二維圖像的快速傅里葉變換及其反變換可以分解成行、列兩個方向上的一維快速傅里葉變換及其反變換,由因為快速傅里葉變換和反變換的原理是一致的,所以,在整個系統設計的過程中,最關鍵的問題就是如何用C語言程序描述模擬整個快第一文庫網速傅里葉變換的運算流程。

為了解決這個問題,根據快速傅里葉變換運算流圖,將整個變換過程分層描述,共分解為3個層次:“級”、“組”和“個”。一個快速傅里葉變換運算過程分為i個級,每個級包含j個組,每個組又包含k個單個蝶形運算。例如如圖1所示的N=8的快速傅里葉變換的運算流圖,該流圖共分為3個級:第一級包含4個組,每個組又1個單個蝶形運算;第二級包含2個組,每個組有2個單個蝶形運算;第三級包含1個組,每個組有4個蝶形運算。

圖1 N=8的快速傅里葉變換蝶形運算流圖

在函數fft(int length, complex src[])實現時使用3重for循環來描述,最外

層for循環是對“級”的循環,第二層for循環是對每一級里“組”的循環,最內層for

循環是對每一組里“個“,即單個蝶形運算的循環。程序代碼如下所示:

/*快速傅里葉變換*/

void fft(int length, complex src[]) {

int i=0; int j=0; int k=0;

//1次FFT蝶形運算

int Distance=0; //1個FFT蝶形運算跨越的

//計算一級運算當前已經走過的步長 //FFT蝶形運算級數寄存器 //FFT蝶形運算組數寄存器 //FFT蝶形運算個數寄存器 //1個蝶形運算中間結果寄存器 //1個蝶形運算中間結果寄存器

int grade=0; int group=0; int unit=0; complex up;

complex down;

complex product; //1個蝶形運算中間結果寄存器

/*先對原始數據做

/*計算1次FFT的級數總數grade*/ grade=(int)(log(length)/log(2));

for(i=0;i

/*計算第i級運算包含組數group*/ group=(int)pow(2,(double)(grade-1-i));

/*計算單個蝶形運算跨越距離*/ Distance=1

/*一級蝶形運算*/ for(j=0;j

/*計算一級運算當前已經走過的步長*/ Step=2*Distance*j;

/*計算一組蝶形運算中包含的蝶形運算個數unit*/ unit=(int)pow(2,(double)(i));

/*一組蝶形運算*/ for(k=0;k

/*一個蝶形運算*/

mul(src[Step+k+Distance],W[length*k/2/Distance],&product); add(src[Step+k],product,&up); sub(src[Step+k],product,&down); src[Step+k]=up;

src[Step+k+Distance]=down;

} }

4. 系統設計

4.1. 程序流程圖及說明

整體程序流程圖如下所示:

圖2 整體程序流程圖

說明:A.當開始運行程序后,通過點擊“打開一幅圖像并顯示”按鈕,在彈出的對話框

中選擇一幅格式符合要求的圖像并確定,之后程序就會在另一個名為“源圖像”的窗口中顯示原始圖像并在主界面中顯示原始圖像寬度和高度。按鈕“打開一幅圖像并顯示”左邊的指示LED燈亮,表示已經打開一幅圖像,并可以開始下面的操作。

B.打開一幅圖像后,點擊“傅里葉變換”按鈕,對原始圖像進行二維FFT變換,

得到變換后的數據,并在一個名為“FFT圖像”的窗口中顯示經過傅里葉變換后的復數圖像。

C.點擊“傅里葉反變換”按鈕,對第二步中二維傅里葉變換變換得到的數據進行

二維傅里葉反變換,恢復原始圖像,并在一個名為“IFFT圖像”的窗口中顯示。

D.如果此時要退出程序,那么就點擊“退出”按鈕;如果不想退出,想對另外一

幅圖像進行1~3步的操作,那么就點擊“清除”按鈕,程序會重新回到剛運行程序的狀態。

4.2. 程序主要模塊(或功能)介紹 4.2.1. 一維 FFT 和 IFFT 流程圖:

圖3 一維FFT 和 IFFT流程圖

說明:A.FFT和IFFT的運算及其總體流程圖是相同的,均是按以上流程圖來實現。

iWNB.首先,先計算 。

C.對輸入數據x(n)進行位倒序處理。

D.接著,根據運算流圖進行三重for循環運算,最后得出結果。

E.grade是指一次FFT或IFFT運算分級的總數;group是每個級分組的總數;unit是每個組包含蝶形運算的總數。

F.對于得出自然順序的結果,可以用兩種方法去實驗,一是輸入數據經過位倒序處理后再運算,輸出數據為自然順序。二是不先對輸入數據做位倒序處理,運算后在做處理也可以得到自然順序的結果數據。

4.2.2. 二維圖像 FFT 和 IFFT: 流程圖:

圖4 二維FFT和IFFT流程圖

說明:1、二維圖像FFT和IFFT的運算流程圖是相同的,均是按上圖所示。

2、先通過打開圖像來獲得width和height,并定義二維數組

Buffer[width][height]。

3、width和height分別是原始圖像的寬度和高度;Buffer[width][height]是用

來存放原始數據、中間運算數據及最終結果的緩沖區。

4、 其實,二維數組的運算就是一維數組的變換運算,對Buffer數組的第一行進

行FFT或IFFT運算,之后對矩陣進行倒置,再對此矩陣的第一行進行FFT或IFFT運算,再進行多一次倒置,進而得出結果。

5、對于最終結果的顯示是通過在CVI下用復數圖像顯示。

5. 實驗結果與分析

5.1. 實驗結果

(應有實驗結果的圖片,有結果分析或說明)

下面表格里是3組實驗圖片,從左到右分別是原始圖像、經過快速傅里葉變換后的到的數據轉換而來的FFT圖像(complex image)以及通過對快速傅里葉變換得到的數據進行快速傅里葉反變換恢復的圖像。

從3組實驗圖片的FFT圖片表示中,可以看出圖像中央是直流低頻成分,四角是高頻成分。

從3組圖像的源圖像與IFFT圖像的比較中可知,從快速傅里葉變換結果數據用反變換的來的圖像與原始圖像幾乎是相同的,由此證明程序是正確的。

圖5 三組實驗結果

5.2. 項目的創新之處

本設計其實并沒有創新之處。如果要說做的比較好的地方的話,那就是使用malloc

()動態分配內存空間,包括快速傅里葉變換及其反變換的緩沖區,用于數組到圖像轉換的一維數組空間等。使用動態分配空間可以適應不同大小的圖片(圖像寬度和高度可以不同,但仍然需要滿足2的N次方條件),另外就是動態分配的內存空間使用完后及時回收,節省對內存空間的資源和提高利用率。 5.3. 存在問題及改進設想

對本設計中存在的問題是快速傅里葉變換及其反變換所用的時間比較長,原因可能有

以下兩點:一是描述complex數據類型的實部虛部成員使用double類型(64位)過大;二是在快速傅里葉變換及其反變換程序實現時,在一些運算量比較大的地方,例如for循環里,不必要的重復運算過多。

針對上面問題,本組認為可以從選擇合適的數據類型和優化程序代碼等方面入手,

較少運算時間。

6. 心得體會

6.1. 系統開發的體會

在本設計中,本組成員體會比較深刻的是分層和面向過程的程序設計思想。

首先,對于一個比較復雜的程序可以簡化思路,提高代碼可讀性等等,這是對程序設計的縱向優化。在本系統設計中,主要有兩個地方體現了這一思想。一是對于一維快速傅里葉變換及其反變換的實現過程,結合運算流程的特點,將一個運算流程分解成若干級,每個級中包含若干組,每個組中又分成若干個單個的蝶形運算,這樣子分層,可以使得程序設計更為清晰,系統化,也便于理解;二是將一維快速福利葉變換及其反變換與二維的分離開。

其次是面向過程程序設計。在系統設計中,把不同功能的程序封裝成各個獨立的函數,使得代碼重用性,可讀性提高,也便于以后的修改。例如把一維快速傅里葉變換或反變換封裝函數供二維變換調用。 6.2. 對本門課程的改進意見或建議

對本門課程的改進意見或建議:其實,課程的主要目的都是在于提高學生的學習熱情和創新意識,這有利于多方面開發學生智力,提高學生的綜合素質等。 所以,對于這門課程更有利開展,如果條件允許的話,可以嘗試整合課程教學資源,例如包括課程介紹、教學大綱、授課教案、作業習題、實驗指導、參考文獻目錄、授課實況錄像等資源,然后整合完畢后都可以發送到每一個學生手上,有了這些資料,學生就可以嘗試自己開展課程的學習,更有利于提高學生的積極性與自主性。如學生可以根據課堂講授,結合在課后對課堂知識進行消化吸收,加深對課堂內容的理解,深入分析試驗數據,對實驗結果進行論證。其次,課程可以更多結合當今的就業工作所需對學生進行專業性知識講解,使學生對未來就業某個方向有一定了解,也可以使學生提高自己的知識結構。因為每一個學生最關注的都是未來就業的壓力與自己的能力,所以可以適當關注一下這個方向。

附件一

華南農業大學

圖像大作業成績評定表

注:如果小組成員僅僅分工撰寫實驗報告或制作PPT,沒有參與編程,則其成績要低于編程的同學。

【圖像傅里葉變換、反變換的實現】相關文章:

分數階傅里葉變換的數值實現04-28

基于變形分數傅里葉變換的六重密鑰圖像加密04-29

探測波導全息光柵傅里葉變換光譜的新方法04-27

基于正弦變換的紅外圖像均衡算法05-02

二元微分聯合變換相關器實現圖像識別的研究05-01

基于小波變換的圖像配準04-30

數字離軸無透鏡傅里葉變換全息重建方法研究04-27

彝藥金沙青葉膽的傅里葉變換紅外光譜研究04-26

JPEG圖像壓縮技術的實現與優化04-27

基于MATLAB的DCT變換在JPEG圖像壓縮中的應用04-27