第03章图像变换

Download Report

Transcript 第03章图像变换

第3章
图像变换
3.1 二维离散傅里叶变换(DFT)
3.1.1 二维连续傅里叶变换
 二维连续函数 f (x, y)的傅里叶变换定义如下:
 设 f ( x, y) 是独立变量 x, y 的函数,且在   上绝对可
积,则定义积分
 
F (u, v) 

f ( x, y)e  j 2 (ux vy) dxdy
(3.1)

为二维连续函数 f ( x, y) 的付里叶变换,并定义
 
f ( x, y) 

j 2 ( ux vy)
F
(
u
,
v
)
e
dudv

(3.2)

为 F (u , v) 的反变换。f ( x, y) 和 F (u , v)为傅里叶变换对。
 A, x  X , y  Y
f
(
x
,
y
)


【例3.1】求图3.1所示函数
 0, 其 他
的傅里叶变换。
解:将函数代入到(3.1)式中,得
 
F (u, v) 

f ( ,  )e
 j 2 ( u  v )
  
X
dd  A e
 j 2ux
0
sin(uX )  jux sin(vY )  jvY
 AXY 
e

e
uX
vY
其幅度谱为
F (u, v)  AXY
sin uX  sin(vY )
uX
vY
Y
dx e j 2vydy
0
二维信号的图形表示
图3.1 二维信号f (x, y)
二维信号的频谱图
(a)信号的频谱图
(b)图(a)的灰度图
图3.2 信号的频谱图
3.1.2
二维离散傅里叶变换
尺寸为M×N的离散图像函数的DFT
1 M 1 N 1
 j 2 ( ux / M  vy / N )
F (u, v) 
f
(
x
,
y
)
e

MN x 0 y 0
(3.3)
反变换可以通过对F(u,v) 求IDFT获得
M 1 N 1
f ( x, y )   F (u, v)e j 2 (ux / M vy / N ) (3.4)
u 0 v 0
F (u, v)  R(u, v)  jI (u, v)
I (u, v)
 (u, v)  arct an[
]
R(u, v)
(3.5)
(3.6)
DFT变换进行图像处理时有如下特点:
(1)直流成分为F(0,0)。
(2)幅度谱|F(u,v)|对称于原点。
(3)图像f (x, y)平移后,幅度谱不发生
变化,仅有相位发生了变化。
3.1.3
二维离散傅里叶变换的性质
1.周期性和共轭对称性
 周期性和共轭对称性来了许多方便。
 我们首先来看一维的情况。
 设有一矩形函数为,求出它的傅里叶变换:
0 xX
A
f ( x)  
0
F (u )  


其他
X
f ( x)e j 2ux dx  A e j 2ux dx  AX
0
sin uX  juX
e
uX
幅度谱:
(a)幅度谱
F (u )  AX
sin uX
uX
(b)原点平移后的幅度谱
图3.4 频谱图
 DFT取的区间是[0,N-1],在这个区间内频谱
是由两个背靠背的半周期组成的 ,要显示
一个完整的周期,必须将变换的原点移至
u=N/2点。
 根据定义,有
2
2
j
x (u  N / 2)
j
xu
1 N 1
1 N 1
x
N
N
(3.7)
F (u  N / 2)   f ( x)e
  (1) f ( x)e
N x 0
N x 0
 在进行DFT之前用(-1)x 乘以输入的信号
f (x) ,可以在一个周期的变换中(u=0,1,
2,…,N-1),求得一个完整的频谱。
 推广到二维情况。在进行傅里叶变换之前用(-1)x+y
乘以输入的图像函数,则有:
DFT[ f ( x, y)(1) x y ]  F (u  M / 2, v  N / 2) (3.8)
 DFT的原点,即F(0,0)被设置在u=M/2和v=N/2上。
 (0,0)点的变换值为:
1 M 1 N 1
F (0,0) 
f ( x, y)

MN x0 y 0
(3.9)
即 f (x,y) 的平均值。
 如果是一幅图像,在原点的傅里叶变换F(0,0)等于
图像的平均灰度级,也称作频率谱的直流成分。
(a)原始图像
(b) 中心化前的频谱图
(c) 中心化后的频谱图
图3.5 图像频谱的中心化
2.可分性
 离散傅里叶变换可以用可分离的形式表示
1 M 1  j 2ux / M 1 N 1
 j 2vy / N
F (u, v) 
e
f
(
x
,
y
)
e


(3.10)
M x 0
N y 0
1 M 1
 j 2ux / M

F
(
x
,
v
)
e

M x 0
这里
1 N 1
F ( x, v)   f ( x, y)e  j 2vy / N
N y 0
(3.11)
 对于每个x值,当v=0,1,2,…,N-1时,
该等式是完整的一维傅里叶变换。
图3.6
二维DFT变换方法
二维变换可以通过两次一维变换来实现。
同样可以通过先求列变换再求行变换得到2D DFT。
3.离散卷积定理
 设f(x,y)和g(x,y) 是大小分别为A×B和C×D的两个
数组,则它们的离散卷积定义为
M 1 N 1
f ( x, y) * g ( x, y)   f (m, n) g ( x  m, y  n)
(3.12)
m 0 n 0
 卷积定理
DFT[ f ( x, y) * g ( x, y)]  F (u, v)G(u, v) (3.13)
【例3.2】用MATLAB实现图像的傅里叶变换。
解:MATLAB程序如下:
A=imread('pout.tif'); %读入图像
imshow(A);
%显示图像
A2=fft2(A);
%计算二维傅里叶变换
A2=fftshift(A2);
%将直流分量移到频谱图的中心
figure, imshow(log(abs(A2)+1),[0 10]);
%显示变换后的频谱图
(a)原始图像
(b)图像频谱
图3.7 傅里叶变换
3.2
二维离散余弦变换(DCT)
 任何实对称函数的傅里叶变换中只含余弦项,余弦变
换是傅里叶变换的特例,余弦变换是简化DFT的重要
方法。
3.2.1 一维离散余弦变换
 将一个信号通过对折延拓成实偶函数,然后进行傅里
叶变换,我们就可用2N点的DFT来产生N点的DCT。
1.以x=-1/2为对称轴折叠原来的实序列f(n)
f c (n) =
 f (n),0  n  N  1

 f (n  1), N  n  1
得:
(3.14)
f (n)
-N
-1
0
N-1
N
N+1
图3.8 延拓示意
图
2.以2N为周期将其周期延拓,其中f(0)=f
(-1),f(N-1)=f(-N)
f c (n)
 f (n),0  n  N  1
= 
 f (2 N  n  1), N  n  2 N  1
f c (2 N  n  1) = f c (n)
(3.15)
(3.16)
3.对0到2N-1的2N个点的离散周期序列 f c (n) 作
DFT,得
Fc (k ) =
2 N 1

n 0
f c (n)W2nkN
N 1
=

2 N 1
f (n)W
n 0
nk
2N
+
mk
f
(
2
N

m

1
)
W

2N
m N
令i=2N-m-1,则上式为
N 1
Fc (k ) =
=

f (n)W
n 0
k
2
2N
W

nk
2N
+
N 1

n 0
f (n) cos
0

i  N 1
f (i )W2(N2 N i 1) k
 (2n  1)k
2N
 为了保证变换基的规范正交性,引入常量,定
义:
其中
3.2.2
F(k)=C(k)
C(k)=
 1
,

 2
 1,

2
N
N 1

f (n) cos
 (2n  1)k
n 0
k 0
2N
(3.17)
(3.18)
1  k  N 1
二维离散余弦变换
2 M 1N 1
1 
1 


F (u, v)  C (u)C (v)
f ( x, y) cos u( x  ) cos v( y  )

MN x  0 y 0
2 
2 
M
N
(3.19)
DCT逆变换为
f ( x, y) 
2 M 1

MN u 0
1  
1 

C
(
u
)
C
(
v
)
F
(
u
,
v
)
cos
u
(
x

)
cos
v
(
y

) (3.20)

 M
  N
2
2

v 0
N 1
【例3.3】应用MATLAB实现图像的DCT变换。
解:MATLAB程序如下:
A=imread('pout.tif');
%读入图像
I=dct2(A);
%对图像作DCT变换
subplot(1,2,1),imshow(A); %显示原图像
subplot(1,2,2),imshow(log(abs(I)),[0 5]);
(a)原图
(b)DCT系数
图3.10 离散余弦变换
3.3
二维离散沃尔什-哈达玛变换(DHT)
 前面的变换都是余弦型变换,基底函数选用的都是余弦型。
 图像处理中还有许多变换常常选用方波信号或者它的变形。
 沃尔什(Walsh)变换。
 沃尔什函数是一组矩形波,其取值为1和-1,非常便于计
算机运算。
 沃尔什函数有三种排列或编号方式,以哈达玛排列最便于
快速计算。
 采用哈达玛排列的沃尔什函数进行的变换称为沃尔什-哈
达玛变换,简称WHT或直称哈达玛变换。
3.3.1
哈达玛变换
 哈达玛矩阵:元素仅由+1和-1组成的正交方阵。
 正交方阵:指它的任意两行(或两列)都彼此正交,
或者说它们对应元素之和为零。
 哈达玛变换要求图像的大小为N=2n 。
 一维哈达玛变换核为
n 1
 bi ( x )bi (u )
1
g ( x, u )  (1) i 0
N
其中,bk (z ) 代表z的二进制表示的第k位值。
(3.21)
 一维哈达玛正变换为
H (u ) 
1
N
n 1
n 1
 f ( x)(1)
 bi ( x )bi ( u )
i 0
(3.22)
x 0
 一维哈达玛反变换为
n 1
 bi ( x )bi (u )
n 1
f ( x)   H (u )(1) i  0
u 0
(3.23)
 二维哈达玛正反变换为
1
H (u, v) 
N
1
f ( x, y ) 
N
N 1 N 1
n 1
 f ( x, y)(1)
 [bi ( x )bi (u ) bi ( y )bi ( v )]
i 0
(3.24)
x 0 y 0
N 1 N 1
 H (u, v)(1)
u 0 v 0
n 1
 [bi ( x )bi (u ) bi ( y )bi ( v )]
i 0
(3.25)
 二维哈达玛正、反变换也具有相同形式。
 正反变换都可通过两个一维变换实现。
 高阶哈达玛矩阵可以通过如下方法求得:
1 H N 2
HN 

N
N H N 2
1
(3.26)
HN 2 
 H N 2 
 N=8的哈达玛矩阵为
1
1

1

1 1
H8 
2 2 1

1
1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 1
 1

1
 1

1
1

 1
0
7
3
4
1
6
2
5
(3.27)
3.3.2 沃尔什变换
 哈达玛变换矩阵,其列率的排列是无规则的。
 将无序的哈达玛核进行列率的排序,之后得
到的有序的变换就成为沃尔什(Walsh)变换。
 一维Walsh变换核为
n1
bi ( x )bn1i (u )
1
g ( x, u )   (1) i0
N i 0
N 1
 二维沃尔什正变换和反变换为
1
W (u, v) 
N
1
f ( x, y ) 
N
N 1 N 1
n 1
n 1
 f ( x, y) (1)
x 0 y 0
i 0
N 1 N 1
n 1
i 0
n 1
W (u, v)  (1)
u 0 v 0
 [bi ( x )bn 1i (u ) bi ( y )bn 1i ( v )]
i 0
 [bi ( x )bn 1i (u ) bi ( y )bn 1i ( v )]
i 0
(3.28)
N=8时的沃尔什变换核的值为
H8=
1
1

1

1 1
2 2 1

1
1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 1
1

 1
1

 1
1

 1
0
1
2
3
4
5
6
7
(3.29)
3.4 卡胡南-列夫变换(K-L变换)
 Kahunen-Loeve变换是在均方意义下的最佳变换。
 优点:能够完全去除原信号中的相关性,因而具
有非常重要的理论意义。
 缺点:基函数取决于待变换图像的协方差矩阵,
因而基函数的形式是不定的,且计算量很大。
K-L变换基本原理
• 设:随机图像训练集X为N*N阶矩阵的集合,每

张图像写成向量 x  [ x(1,1), x(2,1),...,x( N ,1),...,x( N , N )]


则均值向量为   E[x ]
   T

X的自协方差矩阵为K x = E[(x  )(x  ) ]
  T
= Rx  

其中: Rx 为X的自相关函数


• 在 Rx 中对角线上为 x 各个分量的方差,非对角线
上为各个分量间的协方差。因此K x 为对称矩阵。
• 计算 K x  I  0 的根,有 i , i  1,2,3,...,N 2
在线性代数理论中知:由特征值 i 可以进一步求
得特征向量。


2

K
a


a
,
i

1
,
2
,...,
N
即
x i
i i
1, i  j
T 

ai a j   i , j  
特征向量 a i 满足
0, i  j
由特征向量可构成特征向量矩阵
 

A  [a1, a2 ,...,aN 2 ]
因此有 K x A  A
其中:
0 
1





2


...


 0
N 2 
 
取 A 为变换矩阵,对 ( x   ) 作变换,则有

 
T
F  A  ( x  )
该式称为K-L变换,并有

 F  E[ F ]  0

K F  AT K x A  
因此经K-L变换后,等价于F已完全去处相关性。
• 问题
求变换核 A 需计算协方差矩阵,计算量大且无快
速算法;变换核A与数据X集有关,不适合用于正
交变换领域。
K-L变换的应用
• 把 i , i  1,2,3,...,N 2 从大到小排列,取前M<N个特征值对应
的特征向量构成变换矩阵为AM*N,则
• 一. 基于变换域的数据压缩
 
正变换 Y=A(x   ),其中;X维数为N,Y维数为M
 
逆变换 x   =ATY,注:对于正交变换有AT=A-1
特点: A随数据集合{X}不同而变化,工程应用无意义。
• 二. 统计学习和知识抽取
对Y进一步进行聚类,可以在M维空间上建立Y的描述,进
而完成N维空间上关于X的描述,获得关于X的知识。
• 三. 模式识别
建立对Y的分类器,可实现对X的分类。
K-L变换引入的失真
• 正交变换保持能量守恒,即:
时域能量总和=变换域能量总和
 
x   的协方差矩阵为 K x
Y的协方差矩阵为 K F   因此,信号总能量为:
N
Energyx   i
i 1
M
当作降维操作时有能量保持率为  
i 1
i
N

i 1
N
引入的失真(噪声能量)  
i  M 1
i
N

i 1
i
i
 70%
3.5
二维离散小波变换
 一种窗口大小固定,但形状可改变,因而能满足时频
局部化分析的要求的变换。
3.5.1 连续小波变换
1
2
ˆ (0)  0,按如下方式生成的函数族
 设   L  L 且

1
2
a ,b ( x)  a  (
xb
)
a
a , b  R, a  0
称为分析小波或连续小波。
  (x) 称为基本小波或母波
 a称为伸缩因子,b为平移因子。
(3.30)
3.5.2 离散小波变换
 把连续小波变换离散化更有利于实际应用。
 对a和b按如下规律取样:
a  a0m ,
b  nb0 a0m
(3.31)
其中,a0  1 ;b0  R ;m, n  Z ,得离散小波:

m
2
m
m,n ( x)  a0  (a0 x  nb0 )
离散小波变换和逆变换为
(3.32)

Wm,n   f ( x)m,n ( x)dx  f ( x), m,n ( x) 

f (k )  Wm,n m,n    f , m,n  m,n
m, n
m, n
(3.33)
3.5.3 快速小波变换算法
【例3.4】应用MATLAB实现小波变换的例子。
解:MATLAB程序如下:
• X=imread('pout.tif');
%读入图像
• imshow(X);
• [cA1,cH1,cV1,cD1] = dwt2(X,'bior3.7'); %进行二维小波变换
• A1 = upcoef2('a',cA1,'bior3.7',1);
• H1 = upcoef2('h',cH1,'bior3.7',1);
• V1 = upcoef2('v',cV1,'bior3.7',1);
• D1 = upcoef2('d',cD1,'bior3.7',1);
• subplot(2,2,1); image(wcodemat(A1,192));
• title('Approximation A1')
• subplot(2,2,2); image(wcodemat(H1,192));
• title('Horizontal Detail H1')
• subplot(2,2,3); image(wcodemat(V1,192));
• title('Vertical Detail V1')
• subplot(2,2,4); image(wcodemat(D1,192));
• title('Diagonal Detail D1')
图3.16 小波变换结果图