目錄
- 二維DFT和IDFT的一些性質
- 空間間隔和頻率間隔的關系
- 平移和旋轉
- 周期性
- 對稱性
二維DFT和IDFT的一些性質
空間間隔和頻率間隔的關系
Δu=1MΔT(4.69)\Delta u = \frac{1}{M \Delta T} \tag{4.69}Δu=MΔT1?(4.69)
Δv=1NΔZ(4.70)\Delta v = \frac{1}{N \Delta Z} \tag{4.70}Δv=NΔZ1?(4.70)
平移和旋轉
f(x,y)ej2π(u0x/M+v0y/N)?F(u?u0,v?v0)(4.71)f(x, y) e^{j2\pi(u_0 x/M + v_0 y /N)} \Leftrightarrow F(u - u_0, v - v_0) \tag{4.71}f(x,y)ej2π(u0?x/M+v0?y/N)?F(u?u0?,v?v0?)(4.71)
f(x?x0,y?y0)?F(u,v)e?j2π(u0x/M+v0y/N)(4.72)f(x - x_0, y - y_0) \Leftrightarrow F(u, v) e^{-j2\pi(u_0 x/M + v_0 y /N)} \tag{4.72}f(x?x0?,y?y0?)?F(u,v)e?j2π(u0?x/M+v0?y/N)(4.72)
也就是說,用所示的指數項乘以f(x,y)f(x, y)f(x,y)將使DFT的原點移到點(u0,v)(u_0, v_)(u0?,v)?處;反之,用負指數項乘以F(u,v)F(u, v)F(u,v)將使f(x,y)f(x, y)f(x,y)的原點移到點(x0,y0)(x_0, y_0)(x0?,y0?)處。平移不影響F(u,v)F(u, v)F(u,v)的幅度(譜)
使用極坐標
x=rcosθ,y=rsinθ,u=ωcosφ,v=ωsinφx = r \text{cos}\theta, \quad y = r\text{sin}\theta, \quad u = \omega\text{cos}\varphi, \quad v = \omega\text{sin}\varphix=rcosθ,y=rsinθ,u=ωcosφ,v=ωsinφ
可得下面的變換對:
f(r,θ+θ0)?F(ω,φ+θ0)(4.73)f(r, \theta + \theta_0) \Leftrightarrow F(\omega, \varphi + \theta_0) \tag{4.73}f(r,θ+θ0?)?F(ω,φ+θ0?)(4.73)
周期性
二維傅里葉變換及其反變換在uuu方向和vvv方向是無限周期的,即有(k1,k2k_1,k_2k1?,k2?是整數):
F(u,v)=F(u+k1M,v)=F(u,v+k2N)=F(u+k1M,v+k2N)(4.74)F(u, v) = F(u + k_1M, v) = F(u, v+k_2N) = F(u + k_1M, v + k_2N) \tag{4.74}F(u,v)=F(u+k1?M,v)=F(u,v+k2?N)=F(u+k1?M,v+k2?N)(4.74)
f(x,y)=f(x+k1M,y)=f(x,y+k2N)=f(x+k1M,y+k2N)(4.75)f(x, y) = f(x + k_1M, y) = f(x, y + k_2N) = f(x + k_1M, y + k_2N) \tag{4.75}f(x,y)=f(x+k1?M,y)=f(x,y+k2?N)=f(x+k1?M,y+k2?N)(4.75)
對稱性
任意實函數或復函數w(x,y)w(x, y)w(x,y)均可表示為廳數部和偶數部之和,其中奇數部和偶數部鄧可以是實數,也可以是復數:
w(x,y)=we(x,y)+wo(x,y)(4.77)w(x, y) = w_{e}(x, y) + w_{o}(x, y) \tag{4.77}w(x,y)=we?(x,y)+wo?(x,y)(4.77)
偶數部:
we(x,y)?w(x,y)+w(?x,?y)2(4.78)w_{e}(x, y) \triangleq \frac{w(x, y) + w(-x, -y)}{2} \tag{4.78}we?(x,y)?2w(x,y)+w(?x,?y)?(4.78)
奇數部:
wo(x,y)?w(x,y)?w(?x,?y)2(4.79)w_{o}(x, y) \triangleq \frac{w(x, y) - w(-x, -y)}{2} \tag{4.79}wo?(x,y)?2w(x,y)?w(?x,?y)?(4.79)
根據上述式子,可得到
we(x,y)=we(?x,?y)(4.80)w_{e}(x, y) = w_{e}(-x, -y) \tag{4.80}we?(x,y)=we?(?x,?y)(4.80)
wo(x,y)=?wo(?x,?y)(4.81)w_{o}(x, y) = -w_{o}(-x, -y) \tag{4.81}wo?(x,y)=?wo?(?x,?y)(4.81)
也就是說偶函數是對稱的,奇函數是反對稱的。
因為DFT和IDFT中所有指數都是非負的整數,所以當我們談論對稱 性(反對稱性)時,指的是關于序列中心點的對稱性(反對稱性),此時介數部和奇數部定義為:
we(x,y)=we(M?x,N?y)(4.82)w_{e}(x, y) = w_{e}(M - x, N - y) \tag{4.82}we?(x,y)=we?(M?x,N?y)(4.82)
wo(x,y)=?wo(M?x,N?y)(4.83)w_{o}(x, y) = -w_{o}(M - x, N - y) \tag{4.83}wo?(x,y)=?wo?(M?x,N?y)(4.83)
兩個偶函數的積或兩個奇函數的積是偶函數,而一個偶函數和一個奇函數的積是奇函數。
對于任意兩個離散的偶函數wew_{e}we?和奇函數wow_{o}wo?有
∑x=0M?1∑y=0N?1we(x,y)wo(x,y)(4.84)\sum_{x=0}^{M-1} \sum_{y=0}^{N-1} w_{e}(x, y) w_{o}(x, y) \tag{4.84}x=0∑M?1?y=0∑N?1?we?(x,y)wo?(x,y)(4.84)
離散函數是奇函數的唯一條件是其所有樣本之和為零
我的理解是,如果偶數個離散點的話,我們需要找到對稱中心,中心一般是floor(M/2)。如果是偶數個點的話,那需要補多一個數,這樣才能有對稱的中心。
下面的題,給出的序列是4個數,中心為2。如果是5個數的話,那中心還是2,但左邊是2個數,右邊也是兩個數。
但后面又說這樣做不對,不知道是如何理解呢?
# 離散偶數性
f = np.array([2, 1, 1, 1])
M = f.shape[0]
print(f'M = {M}')# f(x) = f(4 - x), f(0) = f(4), f(1) = f(3), f(2) = f(2), f(3) = f(1)
fx = np.zeros([M + 1])
fx[:M] = f
fx[M] = f[0]
print(fx)
M = 4
[2. 1. 1. 1. 2.]
奇序列的性質,即其第一項wo(0,0)w_{o}(0, 0)wo?(0,0)永遠是0,當M為偶數是,一維奇序列在伴0和M/2處的值總為零
# 離散奇數性
g = np.array([0, -1, 0, 1])
M = g.shape[0]
print(f'M = {M}')# g(x) = -g(4 - x), g(0) = 0, g(1) = -g(3), g(2) = g(2), g(3) = -g(1)
gx = np.zeros([M + 1])
gx[:M] = g
gx[M] = g[0]
print(gx)
M = 4
[ 0. -1. 0. 1. 0.]
序列的偶序列還是奇序列取決于序列的長度。{0, -1, 0, 1}是奇序列,但{0, -1, 0, 1,0}既不是奇序列,也不是偶序列
例如下面一個6×66\times66×6的二維陣列 [ 記住,從(0, 0)開始計數 ] 是奇序列,
KaTeX parse error: Expected group after '\begin{array}' at position 15: \begin{array} _? & 0 & 0 & 0 & …
然后,添加一行為和一列0后得到的結果即不是奇陣列又不是偶陣列。
一般來說,將偶數維的二維陣列插入一個較大的零陣列時,只要中心生命,那么得到的陣列也是偶數維的,這個陣列保留了較小陣列的對稱性。
奇數維的二維陣列可以插入奇數維的更多大零陣列,而不影響基對稱性。
實函數f(x,y)f(x, y)f(x,y)的傅里葉變換是共軛對稱的
F?(u,v)=F(?u,?v)(4.85)F^*(u, v) = F(-u, -v) \tag{4.85}F?(u,v)=F(?u,?v)(4.85)
二維DFT及其反變換的一些對稱 性質
空間域 | 頻率域 | ||
---|---|---|---|
1) | f(x,y)f(x, y)f(x,y)實函數 | ?\Leftrightarrow? | F?(u,v)=F(?u,?v)F^*(u, v) = F(-u, -v)F?(u,v)=F(?u,?v) |
2) | f(x,y)f(x, y)f(x,y)虛函數 | ?\Leftrightarrow? | F?(?u,?v)=?F(u,v)F^*(-u, -v) = -F(u, v)F?(?u,?v)=?F(u,v) |
3) | f(x,y)f(x, y)f(x,y)實函數 | ?\Leftrightarrow? | R(u,v)R(u, v)R(u,v)偶函數;I(u,v)I(u, v)I(u,v)奇函數 |
4) | f(x,y)f(x, y)f(x,y)虛函數 | ?\Leftrightarrow? | R(u,v)R(u, v)R(u,v)奇函數;I(u,v)I(u, v)I(u,v)偶函數 |
5) | f(?x,?y)f(-x, -y)f(?x,?y)實函數 | ?\Leftrightarrow? | F?(u,v)F^*(u, v)F?(u,v)復函數 |
6) | f(?x,?y)f(-x, -y)f(?x,?y)復函數 | ?\Leftrightarrow? | F(?u,?v)F(-u, -v)F(?u,?v)復函數 |
7) | f?(x,y)f^*(x, y)f?(x,y)復函數 | ?\Leftrightarrow? | F?(?u,?v)F^*(-u, -v)F?(?u,?v)復函數 |
8) | f(x,y)f(x, y)f(x,y)實函數和偶函數 | ?\Leftrightarrow? | F(u,v)F(u, v)F(u,v)實函數和偶函數 |
9) | f(x,y)f(x, y)f(x,y)實函數和奇函數 | ?\Leftrightarrow? | F(u,v)F(u, v)F(u,v)虛函數和偶函數 |
10) | f(x,y)f(x, y)f(x,y)虛函數和偶函數 | ?\Leftrightarrow? | F(u,v)F(u, v)F(u,v)虛函數和偶函數 |
11) | f(x,y)f(x, y)f(x,y)虛函數和奇函數 | ?\Leftrightarrow? | F(u,v)F(u, v)F(u,v)實函數和奇函數 |
12) | f(x,y)f(x, y)f(x,y)復函數和偶函數 | ?\Leftrightarrow? | F(u,v)F(u, v)F(u,v)復函數和偶函數 |
13) | f(x,y)f(x, y)f(x,y)復函數和偶函數 | ?\Leftrightarrow? | F(u,v)F(u, v)F(u,v)復函數和奇函數 |
R(u,v)R(u, v)R(u,v),I(u,v)I(u, v)I(u,v)分別是F(u,v)F(u, v)F(u,v)的實部和虛部
下面是一維函數性質的一些說明
def print_array(arrs):for arr in arrs:if arr.imag >= 0:print(str(arr.real) + "+" + str(arr.imag) +"j", end=', ')else:print(str(arr.real) + str(arr.imag) +"j", end=', ')
# 性質3 實函數 <=> R偶函數,I奇函數
f = np.array([1, 2, 3, 4])F = np.fft.fft(f)
print_array(F)
10.0+0.0j, -2.0+2.0j, -2.0+0.0j, -2.0-2.0j,
# 性質4 虛函數 <=> R奇函數,I偶函數
f = np.array([1j, 2j, 3j, 4j]) / 4F = np.fft.fft(f)
print_array(F)
0.0+2.5j, -0.5-0.5j, 0.0-0.5j, 0.5-0.5j,
# 性質8 實函數和偶函數 <=> 實函數和偶函數
f = np.array([2, 1, 1, 1])F = np.fft.fft(f)
print_array(F)
5.0+0.0j, 1.0+0.0j, 1.0+0.0j, 1.0+0.0j,
# 性質9 實函數和奇函數 <=> 虛函數和奇函數
f = np.array([0, -1, 0, 1])F = np.fft.fft(f)
print_array(F)
0.0+0.0j, 0.0+2.0j, 0.0+0.0j, 0.0-2.0j,
# 性質10 虛函數和偶函數 <=> 虛函數和偶函數
f = np.array([2j, 1j, 1j, 1j])F = np.fft.fft(f)
print_array(F)
0.0+5.0j, 0.0+1.0j, 0.0+1.0j, 0.0+1.0j,
# 性質11 虛函數和奇函數 <=> 實函數和奇函數
f = np.array([0j, -1j, 0j, 1j])F = np.fft.fft(f)
print_array(F)
0.0+0.0j, -2.0+0.0j, 0.0+0.0j, 2.0+0.0j,
# 性質12 復函數和偶函數 <=> 復函數和偶函數
f = np.array([4+4j, 3+2j, 0+2j, 3+2j])F = np.fft.fft(f)
print_array(F)
10.0+10.0j, 4.0+2.0j, -2.0+2.0j, 4.0+2.0j,
# 性質13 復函數和奇函數 <=> 復函數和奇函數
f = np.array([0+0j, 1+1j, 0+0j, -1-1j])F = np.fft.fft(f)
print_array(F)
0.0+0.0j, 2.0-2.0j, 0.0+0.0j, -2.0+2.0j,