天天看點

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

如果你對傅裡葉變換到底是幹嘛的不太熟悉,可參考:0704:傅裡葉變換

這裡主要說一下傅裡葉變換應用于圖像處理,顯示原圖像的頻譜圖像.

在Python中,實作傅裡葉的變換主要有兩種方法,一種是使用numpy,一種是OpenCV.

1.numpy

① 傅裡葉變換

函數1:numpy.fft.fft2()

功能:實作傅裡葉變換;

傳回:一個複數數組.

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖1 fft2函數

複數包括實數與虛數,複數可以寫成: z=a+bi .
其中a為實部,b為虛部,i為虛數機關,當a、b都不為0時,
z為虛數.當b=0時,z為實數. 當a=0時,z為純虛數.
           

函數2:numpy.fft.fftshift()

功能:将零頻率分量移到頻譜中心.

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖2 fftshif函數

函數3:20*np.log(np.abs(fshift))

功能:傅裡葉變換得到的結果是一個複數數組,不能直接用于顯示圖像,要想得到頻譜灰階圖像,我們需要一個映射,把複數映射[0, 255]之間.

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖3 映射函數

實驗1:

import 
           
傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖4 原圖像與頻譜圖像

Q1:現在我們得到頻譜圖,現在我們應該想一個問題,我們對圖像作傅裡葉變換是為了啥?

A1:

★ 傅裡葉變換變換可以得到高頻與低頻,針對高頻與低頻處理,可以實作不同的目的;

★ 傅裡葉變換是可逆的,通過逆傅裡葉變換,可以恢複原圖像;

★ 如果對高頻與低頻進行處理,然後進行逆傅裡葉變換,所做的處理會反映到逆變換圖像上.

附加:在資料可視化方面,推薦看這篇文章:0704:matplotlib: 資料可視化

前面提到了逆傅裡葉變換,那怎麼做呢?

② 逆傅裡葉變換

函數:np.abs(i_img)

功能:設定值範圍

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖5 設定值範圍

實驗2:

import 
           
傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖6 原圖像與逆變換圖像

2. 高通濾波

① 低頻、高頻

低頻對應圖像内變化較為緩慢的灰階分量. 例如:在一幅廣袤的綠色大草原上,一大片綠色就代表着低頻(沒什麼變化).

高頻對應圖像内變化較快的灰階分量,是由灰階的尖銳過度造成的,例如:如果這個大草原上,有一隻雄獅,獅子的邊緣就代表着高頻.

② 濾波

接受(通過)或拒絕一定頻率的分量,就稱為為濾波.

通過低頻的濾波器,稱為低通濾波器.

通過高頻的濾波器,稱為高能濾波器.

③ 頻域濾波

Q2:前面,我們已經說過傅裡葉變換,逆傅裡葉變換,現在我們該怎麼在頻域的基礎上,對圖像進行處理呢?

A2:對圖像進行傅裡葉變換,修改頻譜圖像,然後IDFT傳回到圖像域.

特殊目的:圖像增強、圖像去噪、邊緣檢測、特征提取、壓縮、加密等等.

衰減高頻而通過低頻,低通濾波器,将模糊一幅圖像.

衰減低頻而通過高頻,高通濾波器,将增強尖銳的邊緣,但是會導緻圖像的對比度下降(丢失了低頻細節資訊).

★ 高通濾波

頻譜圖像中,中間較亮的部分是低頻資訊(像素值比較大),我們可以通過設定低頻部分的像素值來減弱低頻,如圖7所示:

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖7 高通濾波

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖8 頻譜腌膜圖像

實驗3:

import 
           
傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖9 高通濾波效果

3.OpenCV

① 傅裡葉變換

函數2:cv2.dft()

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖10 dft函數

函數2:

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖11 fftshift函數

函數3:

cv2.magnitude(參數1,參數2)

其實這個函數的作用與numpy數組:np.abs(fshift)是一回事,np.abs(fshift)是求複數數組fshift中每個複數的大小(注:fshift是一個 一維 的複數數組),而cv2.dft()傳回的是一個 二維 數組(一維是複數的實部,一個是複數的虛部).
傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖12 magnitude函數

實驗4:

import 
           
傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖13 效果圖

② 逆傅裡葉變換

函數1:cv2.idft()

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖14 idft函數

函數2:numpy.fft.ifftshift()

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖15 ifftshift函數

實驗5:

import 
           
傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖16 逆傅裡葉變換

4.低通濾波

低通濾波器:去掉高頻,保留低頻

傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖17 低通濾波器

實驗6:

import 
           
傅裡葉變換尺度變換性質_圖像處理之傅裡葉變換

圖18 低通濾波

繼續閱讀