outline
- 图像分解和线性时不变系统
- 二维傅立叶变换
- 图像采样
图像分解和线性时不变系统
图像数学表达
图像由基本的像素点组成,如果将每一个像素点看作一个脉冲,则每个像素点的值可以看作是脉冲的幅值,这样图像就可以看作是由一系列脉冲组成的。
单个像素点的数学表达式:
f ( i , j ) = A δ ( x − i , y − j ) f(i,j) = A\delta(x-i,y-j) f(i,j)=Aδ(x−i,y−j)
其中,A是像素点的幅值, δ ( x − x 0 , y − y 0 ) \delta(x-x_0,y-y_0) δ(x−x0,y−y0)是二维脉冲函数,表示在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处的脉冲。
则图像可表示为一些列脉冲的叠加,其数学表达式:
f ( x , y ) = ∑ i = 1 N ∑ j = 1 N f ( i , j ) δ ( x − i , y − i ) f(x,y) = \sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)\delta(x-i,y-i) f(x,y)=i=1∑Nj=1∑Nf(i,j)δ(x−i,y−i)
其中,N是图像中的像素点个数,A_i是第i个像素点的幅值, ( x i , y i ) (x_i,y_i) (xi,yi)是第i个像素点的坐标。
图像处理系统
f ( x , y ) → image processing T → g ( x , y ) \ f(x,y) \rightarrow \begin{array}{|c|} \hline \text{image processing T} \\ \hline \end{array} \rightarrow g(x,y) f(x,y)→image processing T→g(x,y)
其中,f(x,y)是输入图像,g(x,y)是输出图像, T是图像处理系统.
所以数学表达式为:
g ( x , y ) = T [ f ( x , y ) ] = T [ ∑ i = 1 N ∑ j = 1 N f ( i , j ) δ ( x − i , y − i ) ] g(x,y) = T[f(x,y)] = T\left[\sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)\delta(x-i,y-i)\right] g(x,y)=T[f(x,y)]=T[i=1∑Nj=1∑Nf(i,j)δ(x−i,y−i)]
如果T是线性的,则有:
g ( x , y ) = ∑ i = 1 N ∑ j = 1 N f ( i , j ) T [ δ ( x − i , y − i ) ] g(x,y) = \sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)T[\delta(x-i,y-i)] g(x,y)=i=1∑Nj=1∑Nf(i,j)T[δ(x−i,y−i)]
令 h ( x , y ) = T [ δ ( x , y ) ] h(x,y) = T[\delta(x,y)] h(x,y)=T[δ(x,y)],即为T的冲激响应。
如果T是时不变系统,则h(x,y)是固定的,不随输入的位置变化,可以在整个空间内平移。则有:
g ( x , y ) = ∑ i = 1 N ∑ j = 1 N f ( i , j ) h ( x − i , y − i ) = f ( x , y ) ∗ h ( x , y ) g(x,y) = \sum_{i=1}^{N} \sum_{j=1}^{N} f(i,j)h(x-i,y-i)=f(x,y)*h(x,y) g(x,y)=i=1∑Nj=1∑Nf(i,j)h(x−i,y−i)=f(x,y)∗h(x,y)
- 只用时不变系统才能用卷积计算,时不变系统指的是输入信号发生平易,输出信号也发生平移,不会因位置的不同而产生额外的变化。
T { δ ( x − i , y − j ) } = h ( x − i , y − j ) T \{\delta(x-i,y-j)\} = h(x-i,y-j) T{δ(x−i,y−j)}=h(x−i,y−j)
- h(x,y)也就是滤波器,是固定的,不随输入的位置变化,则其在空间内平移就可以计算图像输出,而不需要做额外的变化。
- 如果h(x,y)是变化的,则在不同的位置输出不一样,不能用单一的h(x,y)来计算输出。
二维傅立叶变换
傅立叶变换为将信号从时域转化为频域。其核心思想是将一个信号分解为不同频率的正弦波叠加。其视觉呈现可参考3B1B的视频。
https://www.youtube.com/watch?v=spUNpyF58BY&t=441s
基础公式
- 欧拉公式:
e i θ = cos θ + i sin θ e^{i\theta} = \cos\theta + i\sin\theta eiθ=cosθ+isinθ - 连续傅立叶变换:
F ( u , v ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( x , y ) e − i 2 π ( u x + v y ) d x d y F(u,v) = \int_{-\infty}^{\infty}\int_{-\infty}^{\infty}f(x,y)e^{-i2\pi(ux+vy)}dxdy F(u,v)=∫−∞∞∫−∞∞f(x,y)e−i2π(ux+vy)dxdy - 离散傅立叶变换:
F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − i 2 π ( u x / M + v y / N ) F(u,v) = \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)e^{-i2\pi(ux/M+vy/N)} F(u,v)=x=0∑M−1y=0∑N−1f(x,y)e−i2π(ux/M+vy/N) - 逆傅立叶变换:
f ( x , y ) = ∫ − ∞ ∞ ∫ − ∞ ∞ F ( u , v ) e i 2 π ( u x + v y ) d u d v f(x,y) = \int_{-\infty}^{\infty}\int_{-\infty}^{\infty}F(u,v)e^{i2\pi(ux+vy)}dudv f(x,y)=∫−∞∞∫−∞∞F(u,v)ei2π(ux+vy)dudv - 离散傅立叶变换的逆变换:
f ( x , y ) = 1 M N ∑ u = 0 M − 1 ∑ v = 0 N − 1 F ( u , v ) e i 2 π ( u x / M + v y / N ) f(x,y) = \frac{1}{MN}\sum_{u=0}^{M-1}\sum_{v=0}^{N-1}F(u,v)e^{i2\pi(ux/M+vy/N)} f(x,y)=MN1u=0∑M−1v=0∑N−1F(u,v)ei2π(ux/M+vy/N) - 傅立叶变换具有可分离性,即:
F ( u , v ) = ∫ − ∞ ∞ [ ∫ − ∞ ∞ f ( x , y ) e − i 2 π v y d y ] e − i 2 π u x d x = ∫ − ∞ ∞ F x ( u , y ) e − i 2 π u x d x F(u,v) = \int_{-\infty}^{\infty}\left[\int_{-\infty}^{\infty}f(x,y)e^{-i2\pi vy}dy\right]e^{-i2\pi ux}dx = \int_{-\infty}^{\infty}F_x(u,y)e^{-i2\pi ux}dx F(u,v)=∫−∞∞[∫−∞∞f(x,y)e−i2πvydy]e−i2πuxdx=∫−∞∞Fx(u,y)e−i2πuxdx - 离散傅立叶变换的可分离性:
F ( u , v ) = 1 M N ∑ x = 0 M − 1 [ ∑ y = 0 N − 1 f ( x , y ) e − i 2 π v y / N ] e − i 2 π u x / M = 1 M ∑ x = 0 M − 1 F x ( u , y ) e − i 2 π u x / M F(u,v) = \frac{1}{MN}\sum_{x=0}^{M-1}\left[\sum_{y=0}^{N-1}f(x,y)e^{-i2\pi vy/N}\right]e^{-i2\pi ux/M} = \frac{1}{M}\sum_{x=0}^{M-1}F_x(u,y)e^{-i2\pi ux/M} F(u,v)=MN1x=0∑M−1[y=0∑N−1f(x,y)e−i2πvy/N]e−i2πux/M=M1x=0∑M−1Fx(u,y)e−i2πux/M
DFT 性质
傅立叶变换得到的频谱图像是复数,通常用幅度谱和相位谱来表示,幅度谱是复数的模,相位谱是复数的辐角。数学表达:
F ( u , v ) = R ( u , v ) + j I ( u , v ) = ∣ F ( u , v ) ∣ e i θ ( u , v ) F(u,v) = R(u,v) + jI(u,v)= |F(u,v)|e^{i\theta(u,v)} F(u,v)=R(u,v)+jI(u,v)=∣F(u,v)∣eiθ(u,v)
其中:
∣ F ( u , v ) ∣ = R 2 ( u , v ) + I 2 ( u , v ) |F(u,v)| = \sqrt{R^2(u,v) + I^2(u,v)} ∣F(u,v)∣=R2(u,v)+I2(u,v)
θ ( u , v ) = arctan ( I ( u , v ) R ( u , v ) ) \theta(u,v) = \arctan\left(\frac{I(u,v)}{R(u,v)}\right) θ(u,v)=arctan(R(u,v)I(u,v))
在图像应用中,通常用幅度谱来表示频谱图像,因为幅度谱包含了图像的主要信息,而相位谱则包含了图像的细节信息。
- 周期性
F ( u , v ) = F ( u + m , v ) = F ( u , v + n ) F(u,v) = F(u+m,v) = F(u,v+n) F(u,v)=F(u+m,v)=F(u,v+n) - 共轭对称性
F ( u , v ) = F ∗ ( − u , − v ) F(u,v) = F^*(-u,-v) F(u,v)=F∗(−u,−v) - 线性性
a F 1 ( u , v ) + b F 2 ( u , v ) = F ( a u , v ) + F ( b u , v ) aF_1(u,v) + bF_2(u,v) = F(au,v) + F(bu,v) aF1(u,v)+bF2(u,v)=F(au,v)+F(bu,v) - 卷积
f ( x , y ) ∗ g ( x , y ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( α , β ) g ( x − α , y − β ) d α d β f ( x , y ) ∗ g ( x , y ) ⟺ F ( u , v ) G ( u , v ) f ( x , y ) g ( x , y ) ⟺ F ( u , v ) ∗ G ( u , v ) f(x,y) * g(x,y) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(\alpha, \beta) g(x - \alpha, y - \beta) d\alpha d\beta \\ f(x,y) * g(x,y) \iff F(u,v) G(u,v) \\ f(x,y) g(x,y) \iff F(u,v) * G(u,v) f(x,y)∗g(x,y)=∫−∞∞∫−∞∞f(α,β)g(x−α,y−β)dαdβf(x,y)∗g(x,y)⟺F(u,v)G(u,v)f(x,y)g(x,y)⟺F(u,v)∗G(u,v) - 旋转
x = r cos θ , y = r sin θ , u = ω cos φ , v = ω sin φ f ( r , θ + θ 0 ) ⟺ F ( ω , φ + θ 0 ) x = r \cos \theta, \quad y = r \sin \theta, \quad u = \omega \cos \varphi, \quad v = \omega \sin \varphi \\ f(r, \theta + \theta_0) \iff F(\omega, \varphi + \theta_0) x=rcosθ,y=rsinθ,u=ωcosφ,v=ωsinφf(r,θ+θ0)⟺F(ω,φ+θ0)
- 旋转不变性
g ( u , v ) = 1 π ∫ 0 2 π ∫ 0 1 e − j ( 2 π u r 2 + v θ ) f ( r , θ ) d r d θ g(u,v) = \frac{1}{\pi} \int_0^{2\pi} \int_0^1 e^{-j(2\pi ur^2 + v\theta)} f(r, \theta) dr d\theta g(u,v)=π1∫02π∫01e−j(2πur2+vθ)f(r,θ)drdθ
zero padding
zero padding 主要是为了要解决周期性混叠以及循环卷积的问题。采样定理是解决信号混叠的问题,不能解决循环卷积以及周期性混叠的问题。
首先要了解周期延拓的概念:在DFT变换时,隐式的认为信号是无限重复的。
因为信号是无限周期重复的,所以在做卷积运算时,当计算至数据的末尾时,会将下一个周期的头部数据纳入计算,出现循环卷积的现象。
正是因为这种计算方式,导致可能会将图片的左边和右边混在一起。所以需要在图片两边做zero padding.
- zero padding 的尺寸
- DFT 计算一维信号时,如果有2个信号分别为 N 和 M,那么需要做 zero padding 到 N+M-1 的尺寸
- DFT 计算二维信号时,如果有2个信号分别为 NxM 和 PxQ,那么需要做 zero padding 到 (N+P-1)x(M+Q-1) 的尺寸
为什么滤波用DFT, 而图像压缩用DCT?
- DFT 计算为复数,可以同时表示信号的幅度和相位信息,便于详细的滤波处理。
- DCT 计算为实数,减少了存储和计算的复杂性。
- DCT 变换后大多数的能量集中在低频信号,更符合人眼的视觉特性。
图像采样
连续信号 $ f_c(x,y)$ 转化为 f d ( x , y ) f_d(x,y) fd(x,y) 需要经过以下两步:
- 采样 Sampling
采样主要是将连续的 ( x , y ) (x,y) (x,y)转化为离散的 ( m , n ) (m,n) (m,n),决定图片的分辨率,决定了图片保留的信息。如果采样不足,会产生不可逆的信息丢失。 - 量化 Quantization
量化主要是针对 f d ( m , n ) f_d(m,n) fd(m,n)量化,将其映射到有限的灰度级上。主要决定了灰度的精度以及视觉效果。
综上:采样过程影响的更大。所以重点关注采样过程。
采样过程
真实世界的信号一般都是带限信号(band-limited)即:
F ( u , v ) = 0 , for ∣ u ∣ > U 0 or ∣ v ∣ > V 0 F(u,v) = 0, \quad \text{for} \quad |u| > U_0 \quad \text{or} \quad |v| > V_0 F(u,v)=0,for∣u∣>U0or∣v∣>V0
其中, U 0 U_0 U0和 V 0 V_0 V0是带限信号的最大频率。
针对真实信号的采样函数为:
s ( x , y ) = ∑ k = − ∞ ∞ ∑ l = − ∞ ∞ δ ( x − m Δ x , n − Δ y ) s(x,y) = \sum_{k=-\infty}^{\infty} \sum_{l=-\infty}^{\infty} \delta(x-m \Delta x,n-\Delta y) s(x,y)=k=−∞∑∞l=−∞∑∞δ(x−mΔx,n−Δy)
其傅立叶变换为:
S ( u , v ) = 1 Δ x Δ y ∑ k = − ∞ ∞ ∑ l = − ∞ ∞ δ ( u − k Δ x , v − l Δ y ) S(u,v) = \frac{1}{\Delta x \Delta y} \sum_{k=-\infty}^{\infty} \sum_{l=-\infty}^{\infty} \delta(u-\frac{k}{\Delta x},v-\frac{l}{\Delta y}) S(u,v)=ΔxΔy1k=−∞∑∞l=−∞∑∞δ(u−Δxk,v−Δyl)
故连续信号 f ( x , y ) f(x,y) f(x,y) 转换为离散信号可以表示为:
f d ( x , y ) = f c ( x , y ) s ( x , y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) δ ( x − m Δ x , y − n Δ y ) \textcolor{red}{f_d(x, y)} = f_c(x,y) s(x,y) = \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} \delta(x - m\Delta x, y - n\Delta y) fd(x,y)=fc(x,y)s(x,y)=m=−∞∑∞n=−∞∑∞fc(mΔx,nΔy)δ(x−mΔx,y−nΔy)
其傅立叶变换为:
F d ( u , v ) = F c ( u , v ) ∗ S ( u , v ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ F c ( u − m Δ x , v − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ F c ( u − m f x s , v − n f y s ) \textcolor{red}{F_d(u, v)} = F_c(u,v) * S(u,v) = \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} F_c(u-\frac{m}{\Delta x},v-\frac{n}{\Delta y}) = \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} F_c(u - mf_{xs},v - nf_{ys}) Fd(u,v)=Fc(u,v)∗S(u,v)=m=−∞∑∞n=−∞∑∞Fc(u−Δxm,v−Δyn)=m=−∞∑∞n=−∞∑∞Fc(u−mfxs,v−nfys)
可以得到其以 ( 1 Δ x , 1 Δ y ) (\frac{1}{\Delta x}, \frac{1}{\Delta y}) (Δx1,Δy1)为周期的周期延拓. 故若不想出现频率混叠,且已知 U 0 U_0 U0和 V 0 V_0 V0是带限信号的最大频率,则有:
f x s = 1 Δ x ≥ 2 U 0 , f y s = 1 Δ y ≥ 2 V 0 f_{xs} =\frac{1}{\Delta x}\geq 2U_0, f_{ys} = \frac{1}{\Delta y}\geq 2V_0 fxs=Δx1≥2U0,fys=Δy1≥2V0
其中$ \frac{1}{2U_0} 和 和 和 \frac{1}{2V_0}$分别为Nyquist间隔。上述不等式即描述采样定理。若满足上述不等式,即可不丢失信息的情况下对信号进行采样。
恢复原始信号
可以应用理想低通滤波器恢复原始信号:
H ( u , v ) = { Δ x Δ y , ( u , v ) ∈ ( − U 0 , U 0 ) × ( − V 0 , V 0 ) 0 , others H(u,v)=\left\{ \begin{array}{ll} \Delta x\Delta y, & (u,v) \in (-U_0, U_0) \times (-V_0, V_0)\\ 0, & \text{others} \end{array} \right. H(u,v)={ΔxΔy,0,(u,v)∈(−U0,U0)×(−V0,V0)others
其恢复的信号为:
f c ( x , y ) = h ( x , y ) ∗ f d ( x , y ) = h ( x , y ) ∗ ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) δ ( x − m Δ x , y − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) h ( x , y ) ∗ δ ( x − m Δ x , y − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f c ( m Δ x , n Δ y ) h ( x − m Δ x , y − n Δ y ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ f d ( m , n ) h ( x − m Δ x , y − n Δ y ) \begin{aligned} f_c(x,y) &= h(x,y) * \textcolor{red}{f_d(x,y)} \\ &= h(x,y) * \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} \delta(x - m\Delta x, y - n\Delta y) \\ &= \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} h(x,y) * \delta(x - m\Delta x, y - n\Delta y) \\ &= \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{blue}{f_c(m\Delta x, n\Delta y)} h(x - m\Delta x, y - n\Delta y) \\ &= \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \textcolor{green}{f_d(m,n)} h(x - m\Delta x, y - n\Delta y) \end{aligned} fc(x,y)=h(x,y)∗fd(x,y)=h(x,y)∗m=−∞∑∞n=−∞∑∞fc(mΔx,nΔy)δ(x−mΔx,y−nΔy)=m=−∞∑∞n=−∞∑∞fc(mΔx,nΔy)h(x,y)∗δ(x−mΔx,y−nΔy)=m=−∞∑∞n=−∞∑∞fc(mΔx,nΔy)h(x−mΔx,y−nΔy)=m=−∞∑∞n=−∞∑∞fd(m,n)h(x−mΔx,y−nΔy)
综上:若想避免混叠,可以在采样前先对原始图像 f c ( x , y ) f_c(x,y) fc(x,y)进行低通滤波,使其带宽小于采样频率,避免混叠。