#

DCT图像处理


图像处理————傅里叶变换

定义:

对于数字图像来说,它的储存方式主要为二维矩阵,因此引进连续二元函数的二维傅里叶变换及反变换定义(学过傅里叶变换的看应该很容易理解,就不细讲):

F(u,v)=++f(x,y)ej2π(ux+vy)dxdyf(x,y)=++F(u,v)ej2π(ux+vy)dudv\begin{array}{l} F(u, v)=\int_{-\infty}^{+\infty} \int_{-\infty}^{+\infty} f(x, y) \mathrm{e}^{-\mathrm{j} 2 \pi(u x+v y)} \mathrm{d} x \mathrm{d} y \\ f(x, y)=\int_{-\infty}^{+\infty} \int_{-\infty}^{+\infty} F(u, v) \mathrm{e}^{\mathrm{j} 2 \pi(u x+v y)} \mathrm{d} u \mathrm{d} v \end{array}

由于计算机对数字图像的储存为离散形式,因此得到离散形式的傅里叶变换与逆变换:

F(u,v)=m=0M1n=0N1f(m,n)ej2πumej2πvn,m=0,1,,M1,n=0,1,,N1f(m,n)=m=0M1n=0N1F(u,v)ej2πumej2πvn,u=0,1,,M1,v=0,1,,N1\begin{array}{l} F(u, v)=\sum\limits_{m=0}^{M-1} \sum\limits_{n=0}^{N-1} f(m, n) \mathrm{e}^{-\mathrm{j} 2 \pi u m} \mathrm{e}^{-\mathrm{j} 2 \pi v n}, \quad m=0,1, \cdots, M-1, n=0,1, \cdots, N-1 \\ f(m, n)=\sum\limits_{m=0}^{M-1} \sum\limits_{n=0}^{N-1} F(u, v) \mathrm{e}^{\mathrm{j} 2 \pi u m} \mathrm{e}^{\mathrm{j} 2 \pi v n}, \quad u=0,1, \cdots, M-1, v=0,1, \cdots, N-1 \end{array}

实现

二维离散傅里叶变换fft2

Y = fft2(X)
Y = fft2(X , m, n)

其中XX为需变换的矩阵,m,nm,n为返回YY的行数和列数,若m,nm,n大于XX的维数,则在YY相应的位置补0

二维离散傅里叶逆变换ifft2

Y = ifft2(X)
Y = ifft2(X , m, n)

其中XX为需变换的矩阵,m,nm,n为返回YY的行数和列数,若m,nm,n大于XX的维数,则在YY相应的位置补0

nn维离散傅里叶变换fftn

Y = fftn(X)
Y = fftn(X , m, n)

其中XX为需变换的矩阵,m,nm,n为返回YY的行数和列数,若m,nm,n大于XX的维数,则在YY相应的位置补0

n维离散傅里叶逆变换ifftn

Y = fft2(X)
Y = fft2(X , m, n)

其中XX为需变换的矩阵,m,nm,n为返回YY的行数和列数,若m,nm,n大于XX的维数,则在YY相应的位置补0

将零频分量移到频谱中心fftshift

通过将零频分量移动到数组中心,重新排列傅里叶变换 XX,利于观察频谱。

Y = fftshift(X)
Y = fftshift(X,dim)

频率响应freqz2(h)

freqz2用于求解频率响应,下图为高斯滤波器处理下的频响图

离散余弦变换DCT

离散余弦变换DCT是图像压缩的一种常见的变换,它将图像表示为具有不同振幅和频率的正弦曲线和。类似于离散傅里叶变换,他利用傅里叶变换的对称性将图像变化成偶函数的形式,然后进行二维傅里叶变换,变换的结果仅包含余弦项,因此称为离散余弦变换。
我们可以根据离散余弦变换的几个系数表示出图像的大部分信息,可以用于图像的压缩。

离散余弦变换DCT

在图像处理中,我们经常利用二维DCT变换,而二维是建立在一维的基础之上,因此了解一维很重要,维基百科上给出八种常见形式,摘选出其中一种:

fp=m=0n1xmcos[πnp(m+12)]f_{p}=\sum_{m=0}^{n-1} x_{m} \cos \left[\frac{\pi}{n} p\left(m+\frac{1}{2}\right)\right]

二维DCT定义

对于一个M×NM\times N的矩阵AA,其DCT变换为(通过一维定义可以看出,严格证明此处省略):

Bpq=αpαum=0M1n=0N1Amncosπ(2m+1)p2Mcosπ(2n+1)q2N,0pM1,0qN1αp={1/M,p=02/M,1pM1,αq={1/N,q=02/N,1qN1\begin{array}{l} B_{p q}=\alpha_{p} \alpha_{u} \sum\limits_{m=0}^{M-1} \sum\limits_{n=0}^{N-1} A_{m n} \cos \frac{\pi(2 m+1) p}{2 M} \cos \frac{\pi(2 n+1) q}{2 N}, 0 \leqslant p \leqslant M-1,0 \leqslant q \leqslant N-1 \\ \alpha_{p}=\left\{\begin{array}{l} 1 / \sqrt{M}, p=0 \\ \sqrt{2 / M}, 1 \leqslant p \leqslant M-1 \end{array}, \alpha_{q}=\left\{\begin{array}{l} 1 / \sqrt{N}, q=0 \\ \sqrt{2 / N}, 1 \leqslant q \leqslant N-1 \end{array}\right.\right. \end{array}

这里的BpqB_{pq}可以看做是基函数的权重

DCT变换矩阵

计算DCT一般有两种方法:

  • 使用dct2()函数实现快速傅里叶变换
B = dct2(A)
B = dct2(A,m,n)
B = dct2(A,[m n])
  • 使用DCT变换矩阵由函数dctmtx()返回

DCT图像变换

DCT算法进行压缩即进行DCT变换后在进行逆变换。其中DCT系数:

变换前后两张图为:

代码如下:

RGB = imread('公众号.jpg');
I = rgb2gray(RGB);
J = dct2(I);
imshow(log(abs(J)),[]);
colormap(jet(64));
colorbar
J(abs(J) < 10) =0;
K = idct2(J);
subplot(121),imshow(I);
subplot(122),imshow(K,[0 255]);

文章作者: 王胜鹏
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 王胜鹏 !
评论
 上一篇
混沌优化算法 混沌优化算法
混沌优化算法 基于Logistic映射产生混沌运动轨道的遍历性,可将其混沌用于函数优化问题: 混沌优化算法的基本思想是将变量从混沌空间变换到解空间,然后利用混沌变量所具有的丰富的非线性动力学特征————随机性、遍历性、规律性的特点进行搜索。
2020-07-18
下一篇 
离散&连续联合概率密度 离散&连续联合概率密度
连续与离散联合概率密度 在概率论中,教材介绍的随机变量都是连续或离散的联合概率密度,讨论了Z=X+YZ=X+YZ=X+Y,当X,YX,YX,Y都是离散型或都是连续型时概率分布的计算方法,下面按照我的理解方式来举例说明如何求解: 设XXX~U
2020-05-09
  目录