目录
- 二维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π(u0x/M+v0y/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π(u0x/M+v0y/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+k1M,v)=F(u,v+k2N)=F(u+k1M,v+k2N)(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+k1M,y)=f(x,y+k2N)=f(x+k1M,y+k2N)(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−1y=0∑N−1we(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,