线性系统的基本理论与运算

线性系统与非线性系统

设系统的特性可以表示成对输入图像进行T运算, 并令f1(x,y)f_1(x,y), f2(x,y)f_2(x,y)T[f1(x,y)]T[f_1(x,y)],T[f2(x,y)]T[f_2(x,y)]分别代表两对不同的输入和输出图像, 则当系统满足:

T[f1(x,y)]+T[f2(x,y)]=T[f1(x,y)+f2(x,y)]T\left[f_{1}(x, y)\right]+T\left[f_{2}(x, y)\right]=T\left[f_{1}(x, y)+f_{2}(x, y)\right]

关系时, 称系统具有叠加性.当系统满足:

T[kf1(x,y)]=kT[f1(x,y)]T\left[k f_{1}(x, y)\right]=k T\left[f_{1}(x, y)\right]

关系时, 称系统具有齐次性.

同时满足叠加性和齐次性的系统称为线性系统.由于图像是二维的, 所以这样的线性系统称为二维线性系统, 由以上两个公式所定义的运算称为二维线性运算. 显然,二维线性系统应一般地满足:

T[kifi(x,y)]=kiT[fi(x,y)]T\left[\sum k_{i} f_{i}(x, y)\right]=\sum k_{i} T\left[f_{i}(x, y)\right]

凡是不满足叠加性和其次性的系统都属于非线性系统.

线性系统的基本理论

移不变系统

当系统的单位脉冲输入为δ(xa,yβ)\boldsymbol{\delta}(\boldsymbol{x}-\boldsymbol{a}, \boldsymbol{y}-\boldsymbol{\beta}), 也即输入的单位脉冲函数延时了α,β\alpha, \beta单位时, 输出为h(xa,yβ)\boldsymbol{h}(\boldsymbol{x}-\boldsymbol{a}, \boldsymbol{y}-\beta), 即 输出结果性态不变, 仅在位置上延迟了α,β\alpha, \beta单位, 则称,这样的系统为移不变系统

显然, 对于移不变系统来说, 系统的输出仅与输入函数的性态有关, 而与输入函数作用的起点无关.且:

T[δ(xα,yβ)]=h(xα,yβ)T[\delta(x-\alpha, y-\beta)]=h(x-\alpha, y-\beta)

线性移不变系统

如果一个系统是线性系统, 又是移不变系统, 则称该系统是线性移不变系统.

对于一个二维线性移不变系统h(x,y)h(x,y), 设其输入为f(x,y)f(x,y), 输出为g(x,y)g(x,y), 线性以不变系统的运算为T,则有:

g(x,y)=T[f(x,y)]=T[f(α,β)δ(xα,yβ)dαdβ]=T[f(α,β)δ(xα,yβ)]dαdβ]=f(α,β)T[δ(xα,yβ)]dadβ=f(α,β)h(xα,yβ)dαdβ=f(x,y)h(x,y)\begin{aligned} g(x, y) &=T[f(x, y)] \\ &=T\left[\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(\alpha, \beta) \delta(x-\alpha, y-\beta) d \alpha d \beta\right] \\ &\left.=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} T[f(\alpha, \beta) \delta(x-\alpha, y-\beta)] d \alpha d \beta\right] \\ &=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(\alpha, \beta) T[\delta(x-\alpha, y-\beta)] d a d \beta \\ &=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(\alpha, \beta) h(x-\alpha, y-\beta) d \alpha d \beta \\ &=f(x, y) * h(x, y) \end{aligned}

即: 线性移不变系统的输出等于系统的输入与系统的脉冲响应的卷积.

同理有:

g(x,y)=f(xα,yβ)h(α,β)dαdβ=h(x,y)f(x,y)\begin{aligned} g(x, y) &=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(x-\alpha, y-\beta) h(\alpha, \beta) d \alpha d \beta \\ &=h(x, y) * f(x, y) \end{aligned}

也有:

h(x,y)f(x,y)=f(x,y)h(x,y)h(x, y) * f(x, y)=f(x, y) * h(x, y)

所以, 二维线性移不变系统的输入, 输出和运算关系可以描述为:

image-20200623144048990

离散傅立叶变换

一维离散傅立叶变换

设f(x)是在时域上的等距离采样得到的N点离散序列, x是离散实变量, u为离散频率变量, 则离散傅立叶变换对定义为:

F(u)=1Nx=0N1f(x)exp[j2πxuN],u=0,1,,N1F(u)=\frac{1}{\sqrt{N}} \sum_{x=0}^{N-1} f(x) \exp \left[-\frac{j 2 \pi x u}{N}\right] \quad, \quad u=0,1, \cdots, N-1

f(x)=1Nu=0N1F(u)exp[j2παxN],x=0,1,,N1f(x)=\frac{1}{\sqrt{N}} \sum_{u=0}^{N-1} F(u) \exp \left[\frac{j 2 \pi \alpha x}{N}\right] \quad, \quad x=0,1, \cdots, N-1

其中, F(u)F(u)为正变换, f(x)=f1[F(u)]f(x)=f^{-1}[F(u)]为反变换;

ej2πNxte^{-j \frac{2 \pi}{N} x t}是正变换核,ej2πNwe^{j \frac{2 \pi}{N} w}是反变换核.

根据欧拉公式e±ix=cosx±isinxe^{\pm i x}=\cos x \pm i \sin x, 有:

exp(j2πxu)=cos2πuxjsin2πux\exp (-j 2 \pi x u)=\cos 2 \pi u x-j \sin 2 \pi u x

所以, F(u)F(u)一般为复数, 并可以写成

F(u)=R(u)+jI(u)F(u)=R(u)+j I(u)

其中, R(u)和I(u)分别为F(u)F(u)的实部和虚部, 指数形式为:

F(u)=R(u)+exp[jϕ(u)]F(u)=|R(u)|+\exp [-j \phi(u)]

且:F(u)=R2(u)+I2(u)|F(u)|=\sqrt{R^{2}(u)+I^{2}(u)}, φ(u)=arctan[I(u)R(u)]\varphi(u)=\arctan \left[\frac{I(u)}{R(u)}\right]

其中, Φ(u)\boldsymbol{\Phi}(\boldsymbol{u})称为相位角, 反映了f(x)f(x)的相频特性.

二维离散傅立叶变换

f(x,y)f(x,y)是在空间域等间隔采样得到的 M×NM \times N的二维离散信号, x和y是离散实变量, u和v是离散频率变量, 则二维离散傅立叶变换对一般地定义为:

F(u,v)=1MNx=0M1y=0N1f(x,y)exp[j2π(xuM+yvN)]\begin{aligned} F(u, v) &=\sqrt{\frac{1}{M N}} \sum_{x=0}^{M-1} \sum_{y=0}^{N-1} f(x, y) \exp \left[-j 2 \pi\left(\frac{x u}{M}+\frac{y v}{N}\right)\right] \\ \end{aligned}

(u=0,1,,M1;v=0,1,,N1)(\boldsymbol{u}=\mathbf{0}, \mathbf{1}, \ldots, \boldsymbol{M}-\mathbf{1} ; \boldsymbol{v}=\mathbf{0}, \mathbf{1}, \ldots, \boldsymbol{N}-\mathbf{1})

f(x,y)=1MNu=0M1N1F(u,v)exp[j2π(uxM+vyN)]f(x, y)=\sqrt{\frac{1}{M N}} \sum_{u=0}^{M-1 N-1} F(u, v) \exp \left[j 2 \pi\left(\frac{u x}{M}+\frac{v y}{N}\right)\right]

(x=0,1,,M1;y=0,1,,N1)(x=0,1, \dots, M-1 ; y=0,1, \dots, N-1)

在图像处理中有时为了讨论方便, 取M=N, 并考虑到正变换与反变换的对称性, 就将二维离散傅立叶变换对定义为:

F(u,v)=1Nx=0N1y=0N1f(x,y)expFj2π(xu+y)N]\left.F(u, v)=\frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y) \exp F \frac{j 2 \pi(x u+y)}{N}\right]

f(x,y)=1Nu=0N1v=0N1F(u,v)exp[j2π(ux+vy)N]f(x, y)=\frac{1}{N} \sum_{u=0}^{N-1} \sum_{v=0}^{N-1} F(u, v) \exp \left[\frac{j 2 \pi(u x+v y)}{N}\right]

其中, x,y,u,v=0,1,,N1x, y, u, v=0,1, \dots, N-1

与一维的情况类似. 可将二维离散傅立叶变换的频谱和相位角定义为:

P(u,v)=F(u,v)2=R2(u,v)+I2(u,v)P(u, v) = \left.| F(u, v)\right|^{2}=R^{2}(u, v)+I^{2}(u, v)

ϕ(u,v)=arctan[I(u,v)/R(u,v)]\phi(u, v)=\arctan [I(u, v) / R(u, v)]

将二维离散傅立叶变换频谱的平方定义为功率谱, 记为:

P(u,v)=F(u,v)2=R2(u,v)+I2(u,v)P(u, v) = \left.| F(u, v)\right|^{2}=R^{2}(u, v)+I^{2}(u, v)

反映了二维离散信号的能量在空间频率域上的分布情况.

图像傅立叶变换的意义

  1. 简化计算, 也即傅立叶变换可将空间域中复杂的卷积运算转化为频率域中简单的乘积运算.
  2. 对于某些在空间域中难以处理或处理起来比较复杂的问题, 利用傅里叶变换把空间域表示的图像映射到频率域, 再利用频率域滤波或频域分析的方法对其进行处理和分析 ,然后再把其在频域中处理和分析的结果变换回空间域, 从而达到简化处理和分析的目的.
  3. 某些只能在频率域处理的特定应用需求, 比如在频率域进行图像特征提取, 数据压缩, 纹理分析, 水印嵌入等.

离散傅立叶变换的若干重要性质

1. 基图像

由离散傅立叶变换的反变换式:

f(x,y)=1Nv=0N1u=0N1F(u,v)exp[j2π(xu+yv)N]f(x, y)=\frac{1}{N} \sum_{v=0}^{N-1} \sum_{u=0}^{N-1} F(u, v) \exp \left[\frac{j 2 \pi(x u+y v)}{N}\right]

可知, 由于 u和v 均有0,1,…,N-1的N个可能取值, 所以f(x,y)f(x,y)N2N^2个频率分量组成, 所以每个频率分量都与一个特定的(u,v)值相对应; 且对于某个确定的值来说, 当(x,y)取遍所有可能的值(x=0,1,…,N-1;y=0,1,…,N-1)时, 就可得到对应于该特定值(u,v)的一幅基图像.

fu,v=1N[exp[j2π((0u+0v)/N)]exp[j2π((0u+(N1)v)/N)]exp[j2π(((N1)u+0v)/N)]exp[j2π(((N1)u+(N1)0v)/N)]]f_{u, v}=\frac{1}{N}\left[\begin{array}{ccc} \exp [j 2 \pi((0 u+0 v) / N)] & \cdots & \exp [j 2 \pi((0 u+(N-1) v) / N)] \\ \vdots & \ddots & \vdots \\ \exp [j 2 \pi(((N-1) u+0 v) / N)] & \cdots & \exp [j 2 \pi(((N-1) u+(N-1) 0 v) / N)] \end{array}\right]

2. 可分离性

将二维离散傅立叶变换对写成如下分离形式:

F(u,v)=1Nx=0N1exp[j2παuN]y=0N1f(x,y)exp[j2πyvN])\left.F(u, v)=\frac{1}{N} \sum_{x=0}^{N-1} \exp \left[\frac{-j 2 \pi \alpha u}{N}\right] \sum_{y=0}^{N-1} f(x, y) \exp \left[\frac{-j 2 \pi y v}{N}\right]\right)

f(x,y)=1Nu=0N1exp[j2πuxN](v=0N1F(u,v)exp[j2πvyN])f(x, y)=\frac{1}{N} \sum_{u=0}^{N-1} \exp \left[\frac{j 2 \pi u x}{N}\right]\left(\sum_{v=0}^{N-1} F(u, v) \exp \left[\frac{j 2 \pi v y}{N}\right]\right)

上述的可分离表示形式说明, 可以连续运用两次一维离散傅立叶变换来实现一个二维离散傅立叶变换.

以式F(u,v)=1Nx=0N1exp[j2παuN]y=0N1f(x,y)exp[j2πyvN])\left.F(u, v)=\frac{1}{N} \sum_{x=0}^{N-1} \exp \left[\frac{-j 2 \pi \alpha u}{N}\right] \sum_{y=0}^{N-1} f(x, y) \exp \left[\frac{-j 2 \pi y v}{N}\right]\right)为例, 可先沿着y轴方向进行一维的列变换而求得:

F(x,v)=1Ny=0N1f(x,y)exp[j2πvyN]F(x, v)=\frac{1}{\sqrt{N}} \sum_{y=0}^{N-1} f(x, y) \exp \left[\frac{-j 2 \pi v y}{N}\right]

然后在对F(x,v)F(x,v)沿着x方向进行一维的行变换得到最后的结果:

F(u,v)=1Nx=0N1F(x,v)exp[j2πuxN]F(u, v)=\frac{1}{N} \sum_{x=0}^{N-1} F(x, v) \exp \left[\frac{-j 2 \pi u x}{N}\right]

3. 平均值

一幅图像的灰度平均值可以表示为:

fˉ=1N2x=0N1y=0N1f(x,y)\bar{f}=\frac{1}{N^{2}} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y)

如果将u=v=0代入式:F(u,v)=1Nx=0N1y=0N1f(x,y)exp[j2π(xu+yv)N]F(u, v)=\frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y) \exp \left[\frac{j 2 \pi(x u+y v)}{N}\right]可得:

F(0,0)=1Nx=0N1y=0N1f(x,y)F(0,0)=\frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y)

所以, 一幅图像的灰度平均值可由DFT在原点处的值求得, 即:

fˉ=1NF(0,0)\bar{f}=\frac{1}{N} F(0,0)

4. 周期性

对于$M\times N$的图像和二维离散傅立叶变换的一般定义形式, $F(u,v)$的周期性定义为:

F(u,v)=F(u+mM,v+nN)F(u, v)=F(u+m M, v+n N)

(m,n=0,±1,±2,)(m, n=0,\pm 1,\pm 2, \cdots)

5. 共轭对称性

设$f(x,y)$为实函数, 则其傅立叶变换$F(u,v)$具有共轭对称性:

F(u,v)=F(u,v)F(u, v)=F^{*}(-u,-v)

F(u,v)=F(u,v)|F(u, v)|=|F(-u,-v)|

6. 平移性

对于$M\times N$的图像和二维离散傅立叶变换的一般定义形式傅立叶变换的平移性可以表示为: $$f(x, y) \exp \left[j 2 \pi\left(\frac{u_{0} x}{M}+\frac{v_{0} y}{N}\right)\right] \Leftrightarrow F\left(u-u_{0}, v-v_{0}\right)$$(1) $$F(u, v) \exp \left[-j 2 \pi\left(\frac{x_{0} u}{M}+\frac{y_{0} v}{N}\right)\right] \Leftrightarrow f\left(x-x_{0}, y-y_{0}\right)$$(2) 其中, (1)式说明, 给函数乘一个指数项, 就相当于对其变换后的傅立叶频谱在频率域进行平移.(2)式说明, 给傅立叶频谱乘以一个指数项, 就相当于把其反变换后得到的函数在空间域进行平移.

图像傅立叶变换的频谱分析

图像傅立叶频谱关于(M/2,N/2)的对称性

f(x,y)f(x,y)是一幅大小为M×NM\times N的图像, 根据离散傅立叶变换的周期性公式:

F(u,v)=F(u+mM,v+nN)F(u, v)=F(u+m M, v+n N)

有:

F(u,v)=F(u+M,v+N)|F(u, v)|=|F(u+M, v+N)|

再根据离散傅立叶变换的共轭对称公式:

F(u,v)=F(u,v)|F(u, v)|=|F(-u,-v)|

就可得:

F(u,v)=F(Mu,Nv)|F(u, v)|=| F(M-u, N-v)|

对于u=0 :

  • 当v=0时:F(0,0)=F(M,N)|F(0,0)|=F(M, N) |
  • 当v=1时:F(0,1)=F(M,N1)|F(0,1)|=F(M, N-1) |
  • 当v=2时:F(0,2)=F(M,N2)|F(0,2)|=F(M, N-2) |
  • 当v=N/2时:F(0,N/2)=F(M,N/2)|F(0,N/2)|=F(M, N/2) |

image-20200623160009298

同理, 对于v=0:

  • 当u=0时:F(0,0)=F(M,N)|F(0,0)|=F(M, N) |
  • 当u=1时:F(1,0)=F(M1,N)|F(1,0)|=F(M-1, N) |
  • 当u=2时:F(2,0)=F(M2,N)|F(2,0)|=F(M-2, N) |
  • 当u=M/2时:F(M/2,0)=F(M/2,N)|F(M/2,0)|=F(M/2, N) |

image-20200623160241462

由此可得:

频谱图A区与D区和B区与C区关于坐标(M/2,N/2)对称.

下图是原点坐标位于(0,0)的图像的傅立叶频谱关于(M/2,N/2)对称的两个例子.

image-20200623160611518

1
fft2(I)

图像傅立叶频谱特性及其频谱图

由于图像的傅立叶频谱显示图像的能量分布在图像的四周, 为了便于观察分析, 采用如下的平移策略对图像的傅立叶频谱进行平移, 使得平移后的频谱图中能量集中在图像中央显示.在Matlab中可以使用fftshif(I)实现该操作.

image-20200623160737244

对于式:f(x,y)exp[j2π(u0xM+v0yN)]F(uu0,vv0)f(x, y) \exp \left[j 2 \pi\left(\frac{u_{0} x}{M}+\frac{v_{0} y}{N}\right)\right] \leftrightarrow F\left(u-u_{0}, v-v_{0}\right)u0=M/2,v0=N/2\mathbf{u}_{0}=\mathbf{M} / \mathbf{2}, \boldsymbol{v}_{\mathbf{0}}=\mathbf{N} / \mathbf{2}时, 有:

exp[j2π(u0xM+v0yN)]=exp[j2π(M2xM+N2yN)]\exp \left[j 2 \pi\left(\frac{u_{0} x}{M}+\frac{v_{0} y}{N}\right)\right]=\exp \left[j 2 \pi\left(\frac{M}{2} \cdot \frac{x}{M}+\frac{N}{2} \cdot \frac{y}{N}\right)\right]

ejπ(x+y)=(ejπ)(x+y)=(cosπ+jsinπ)(x+y)=(1)(x+y)e^{j \pi(x+y)}=\left(e^{j \pi}\right)^{(x+y)}=(\cos \pi+j \sin \pi)^{(x+y)}=(-1)^{(x+y)}

也即:

f(x,y)(1)(x+y)F(uM2,vN2)f(x, y)(-1)^{(x+y)} \leftrightarrow F\left(u-\frac{M}{2}, v-\frac{N}{2}\right)

也就是说, 上面的频谱图(a),(b)实质上是函数f(x,y)(1)(x+y)f(x, y)(-1)^{(x+y)}的傅立叶频谱图.

傅立叶变换在图像处理中的应用

  1. 基本思路是:

    先用(1)x+y(-1)^{x+y}乘以图像得f(x,y)(1)(x+y)f(x, y)(-1)^{(x+y)};然后对其进行傅立叶正变换得到原点在(M/2,N/2)之处的F(u,v)F(u,v); 接着根据图像的频率特性, 利用有关的低通滤波器, 或者高通滤波器等, 对其进行滤波处理; 再将处理的结果进行傅立叶反变换; 最后给反变换的结果在乘以(1)x+y(-1)^{x+y}就可得到最终的结果.

  2. 典型的应用有:

    • 去除图像噪声
    • 图像数据压缩
    • 图像识别
    • 图像重构和图像描述等
1
2
3
4
5
6
7
I=imread('f:\lena.jpg'); %读入图像
F=fft2(im2double(I)); %FFT
F=fftshift(F); %FFT频谱搬移
F=real(F);
T=log(F+1); % 频谱对数变换
subplot(1,2,1),imshow(I),title('原始图像');
subplot(1,2,2),imshow(T,[]),title('原始图像其频谱图');

image-20200623162717077

图像的离散余弦变换

Discrete Cosine Transform, 简写为 DCT

  • 函数的偶对称性使DCT只有实数域变换结果, 不再涉及复数运算, 运算简单, 费时少;
  • 又保持了变换域的频率特性
  • 与人类视觉系统相适应
  • 得到了更加广泛的应用

二维偶DCT

基本思想:

把一个N×NN\times N的图像数据矩阵延拓成二维平面上的偶对称阵列. 延拓方式有两种:

  1. 围绕图像边缘(但不重叠)将其折叠成对称形式而得到的变换称为偶离散余弦变换;
  2. 通过重叠图像的第一列像素和第N-1行像素将其折叠成对称形式得到的变换称为奇离散余弦变换.

下面只介绍偶离散余弦变换.

f(x,y)f(x,y)为一N×NN\times N的图像数据阵列, 将f(x,y)f(x,y)围绕其左边缘和下边缘不重叠的折叠成偶对称图像, 即下图:

image-20200623171722515

并表示为:

fs(x,y)={f(x,y)x0,y0f(x1,y)x<0,y0f(x,y1)x,y<0f(x1,y1)x<0,y<0f_{s}(x, y)=\left\{\begin{array}{ll} f(x, y) & x \geq 0, y \geq 0 \\ f(-x-1, y) & x<0, y \geq 0 \\ f(x,-y-1) & x \geq, y<0 \\ f(-x-1,-y-1) & x<0, y<0 \end{array}\right.

可见, 2N×2N2N\times 2N的新图像的对称中心位于图像中细十字虚线的交叉处, 也就是(-1/2,-1/2)处.

对上述新图像fs(x,y)f_{s}(x, y)取二维傅立叶变换可得:

Fs(u,v)=12Nx=NN1y=NN1fs(x,y)exp(j2π[u(x+12)+v(y+12)]2N)F_{s}(u, v)=\frac{1}{2 N} \sum_{x=-N}^{N-1} \sum_{y=-N}^{N-1} f_{s}(x, y) \exp \left(-\frac{j 2 \pi\left[u\left(x+\frac{1}{2}\right)+v\left(y+\frac{1}{2}\right)\right]}{2 N}\right)

由于fs(x,y)f_{s}(x, y)是实对称函数, 欧拉展开式后的正弦项为0值, 所以上式可简化为:

Fs(u,v)=12Nx=NN1y=NN1fs(x,y)cos[π(2x+1)u2N]cos[π(2y+1)v2N]F_{s}(u, v)=\frac{1}{2 N} \sum_{x=-N}^{N-1} \sum_{y=-N}^{N-1} f_{s}(x, y) \cdot \cos \left[\frac{\pi(2 x+1) u}{2 N}\right] \cdot \cos \left[\frac{\pi(2 y+1) v}{2 N}\right]

由于该对称函数四个象限的变换结果完全相同,所以

Fs(u,v)=2Nx=0N1y=0N1f(x,y)cos[π(2x+1)u2N]cos[π(2y+1)v2N]F_{s}(u, v)=\frac{2}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y) \cdot \cos \left[\frac{\pi(2 x+1) u}{2 N}\right] \cdot \cos \left[\frac{\pi(2 y+1) v}{2 N}\right]

把上述变换矩阵定义成归一正交矩阵形式,可得fs(x,y)f_{s}(x, y)的二维DCT为:

F(u,v)=2NK(u)K(v)x=0N1y=0N1f(x,y)cos[π(2x+1)u2N]cos[π(2y+1)v2N]F(u, v)=\frac{2}{N} K(u) K(v) \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y) \cdot \cos \left[\frac{\pi(2 x+1) u}{2 N}\right] \cdot \cos \left[\frac{\pi(2 y+1) v}{2 N}\right]

其中

K(u)={12u=01u=1,2,,N1K(u)=\left\{\begin{array}{ll} \frac{1}{\sqrt{2}} & u=0 \\ 1 & u=1,2, \cdots, N-1 \end{array}\right.

K(v)={12v=01v=1,2,,N1K(v)=\left\{\begin{array}{ll} \frac{1}{\sqrt{2}} & v=0 \\ 1 & v=1,2, \cdots, N-1 \end{array}\right.

一种更直观的二维正DCT表示形式为:

F(0,0)=1Nx=0N1y=0N1f(x,y)F(0,0)=\frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y)

F(u,0)=2Nx=0N1y=0N1f(x,y)cos[π(2x+1)u2N](u0)F(u, 0)=\frac{\sqrt{2}}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y) \cdot \cos \left[\frac{\pi(2 x+1) u}{2 N}\right] \quad(u \neq 0)

F(0,v)=2Nx=0N1y=0N1f(x,y)cos[π(2x+1)v2N](v0)F(0, v)=\frac{\sqrt{2}}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y) \cdot \cos \left[\frac{\pi(2 x+1) v}{2 N}\right] \quad(v \neq 0)

F(u,v)=2Nx=0N1y=0N1f(x,y)cos[π(2x+1)u2N]cos[π(2y+1)v2N]F(u, v)=\frac{2}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y) \cdot \cos \left[\frac{\pi(2 x+1) u}{2 N}\right] \cdot \cos \left[\frac{\pi(2 y+1) v}{2 N}\right]

其中,f(x,y)f(x,y)是二维空间向量元素,F(u,v)F(u,v)是变换系数矩阵之元素.

二维离散余弦变换的正反变换核是相同的,对称的,可分离的, 即:

Q(x,y,u,v)=2NK(u)K(v)cos[π(2x+1)u2N]cos[π(2y+1)v2N]=q1(x,u)q2(y,v)=q1(x,u)q1(y,v)\begin{aligned} Q(x, y, u, v) &=\frac{2}{N} K(u) K(v) \cdot \cos \left[\frac{\pi(2 x+1) u}{2 N}\right] \cdot \cos \left[\frac{\pi(2 y+1) v}{2 N}\right] \\ &=q_{1}(x, u) \cdot q_{2}(y, v)=q_{1}(x, u) \cdot q_{1}(y, v) \end{aligned}

并记:

q=q1(x,u)=2NK(u)cos[π(2x+1)u2N]q=q_{1}(x, u)=\sqrt{\frac{2}{N}} K(u) \cdot \cos \left[\frac{\pi(2 x+1) u}{2 N}\right]

二维DCT的正反变换空间矢量表示形式为:

F=qfqTF=q \cdot f \cdot q^{T}

f=qTFqf=q^{T} F \cdot q

变换矩阵的形式为:

qT=2N[121212cosπ2Ncos3π2Ncos(2N1)π2Ncos(N1)π2Ncos3(N1)π2Ncos(2N1)(N1)π2N]q^{T}=\sqrt{\frac{2}{N}}\left[\begin{array}{cccc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & \cdots & \frac{1}{\sqrt{2}} \\ \cos \frac{\pi}{2 N} & \cos \frac{3 \pi}{2 N} & \cdots & \cos \frac{(2 N-1) \pi}{2 N} \\ \vdots & \vdots & \ddots & \vdots \\ \cos \frac{(N-1) \pi}{2 N} & \cos \frac{3(N-1) \pi}{2 N} & \cdots & \cos \frac{(2 N-1)(N-1) \pi}{2 N} \end{array}\right]

DCT变换的基函数和基图像

如前所述, DCT正变换核反变换可以描述为:

F(u,v)=x=0N1y=0N1f(x,y)Q(x,y,u,v)F(u, v)=\sum_{x=0}^{N-1} \sum_{y=0}^{N-1} f(x, y)\cdot Q(x, y, u, v)

f(x,y)=u=0N1v=0N1F(u,v)Q(x,y,u,v)f(x, y)=\sum_{u=0}^{N-1} \sum_{v=0}^{N-1} F(u, v) \cdot Q(x, y, u, v)

其中, 正反变换核Q(x,y,u,v)Q(x,y,u,v)也称二维DCT变换的基函数或基图像,F(u,v)F(u,v)称为变换系数.

当N=4时的二维DCT变换的基图像如下图:

image-20200623173657706

DCT变换的实例

image-20200623173808389

image-20200623173826920

image-20200623173842446

1
2
3
4
5
6
7
8
9
RGB=imread('C:\Users\Adminstrator');
figure(1);
imshow(RGB);
GRAY=rgb2gray(RGB);
figure(2);
imshow(GRAY);
DCT=dct2(GRAY);
figure(3);
imshow(log(abs(DCT)),[]);