变化检测----多元变化检测(Multivariate Alteration Detection)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Rulixiang/article/details/78821485

MAD(Multivariate Alteration Detection)算法是由Allan Nielsen提出的,其数学本质主要是多元统计分析中的(Canonical Correlation Analysis)CCA以及波段差值运算,但该算法仍然不能完全改善目前多元遥感影像处理中的局限性,所以Morton Canty和Allan Nielsen在MAD算法的基础上,结合EM算法,研究并提出了IR-MAD(Iteratively Reweighted MAD)算法。
算法介绍
多元变化检测(MAD)算法的理论基础是CCA,即典型相关分析,基本思路是用投影的特征值方差最大为准则。

典型相关分析(CCA)
例如假设有两个样本  X  Y ,这个方法的基本目的是找到一组最优的解  ab ,使得两者之间的相关系数  corr(aTX,bTY)=cov(aTX,bTY)σaTXσbTY 最大。这样  ab 就是使得两者具有最大关联的权重。

给定两组向量  x1,x2 ,假设  x=(x1,x2)T,x 的均值表示  E(x)=(μ1,μ2)T 。则  x 的协方差矩阵为:

 Σ=Var(x)=Σ11Σ21Σ12Σ22
左上角是  x1 的协方差矩阵,右下角是  x2 的协方差矩阵。右上角是  cov(x1,x2) ,左下角是  cov(x2,x1) ,两者互为转置。从  (x1,x2) 的整体入手,定义:
 u=aTx1,v=bTx2

可以算出u和v的方差和协方差分别为:
 Var(u)=aTΣ11a,Var(v)=bTΣ22b,cov(u,v)=aTΣ12b

具体的推导过程比较简单,省去。而u和v 之间的相关系数为:
 corr(u,v)=aTΣ12baTΣ11abTΣ22b

我们的目标是希望这个相关系数越大越好。也就是这样一个优化目标:
 Maximize:aTΣ12b

 Subject to:aTΣ11a=1,bTΣ22b=1

根据拉格朗日乘子法以及一定的化简可以得到  Σ111Σ12b=λa ,  Σ122Σ21a=λb 。将第二个等式带入第一个:
 Σ111Σ12Σ122Σ21a=λ2a

可以看到,这就是相当于求  Σ111Σ12Σ122Σ21 最大的特征值和对应的特征向量,两者分别对应  λ2a 。第二个式子同理。

多元变化检测(MAD)
上面基本介绍了MAD的理论基础CCA,下面是MAD的主要过程:
假设  X  Y 分别是两个遥感影像,各自有p个波段,那么变化向量可以表示为:

 D=aTX+bTY

a,b分别表示X和Y的投影向量。我们的目标是令变化向量的方差最大:
 argmaxa,b Var(aTX+bTY)

其中约束条件为:  Var(aTX)=1,Var(bTY)=1. 所以目标函数又可以表示为:
 Var(aTX+bTY)=2(1Corr(aTX,bTY))

因此特征值方差最大就相当于  aTXbTY 之间的特征典型相关性最小。我们用ρ来表示两个特征的相关性。为了不失一般性,对原始的数据进行中心化,使得数据的均值为0,从而可以得到:
 ρ=Corr(aTX,bTY)=Cov(aTX,bTY))Var(aTX)Var(bTY)=aTΣYYbaTΣXXa bTΣYYb

根据上式以及CCA的相关内容,最终可以推导出下面两个等式:
 ΣXYΣ1YYΣYXa=ρ2ΣXXa

 ΣYXΣ1XXΣXYb=ρ2ΣYYb

我们可以通过求解对应的广义特征值问题,来求出对应的特征值  ρ2 和特征向量  a,b 。另外需要注意的一点是,特征值应该按照倒序也就是从小到大排列,来满足我们的优化目标  Var(aTX+bTY) 最大。

迭代加权的多元变化检测(IR-MAD):
IR-MAD的主要思想是:对遥感影像的每个像素赋权初始值为1,每一次迭代过程中给两个影像赋予新的权值,权值的区间为  [0,1] ,通过计算,未发生变化的像素具有较大的权重,最终得到的权重是各个像素是否发生变化的唯一依据。经过若干次迭代之后,每个像素的权重会区域稳定,此时每个像素点的权值和阈值进行比较,判定每个像素点是属于变化还是未变化像元。迭代过程中的加权方法:
MAD特征满足高斯分布的性质,所以我们可以计算差值影像的卡方距离,他满足自由度为n的卡方分布,如下表达式:

 Tij=k=1p(Dkijσk2)2χ2(p)

其中p指的是影像的波段数目,  σk 是第  k 波段的方差,如下图,自由度分别为2,4,6的卡方分布概率密度图:

![这里写图片描述](https://img-blog.csdn.net/20171216190359928?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUnVsaXhpYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 权值的求法是通过卡方分布的概率密度分位点来计算:
 wij=P(Tij>t)=P(χ2(n)>Tij)
下一次迭代过程中,均值和方差的计算都考虑权值的作用,迭代收敛后就可以获得更精确的变化检测结果。 **实现过程:** 下面是对算法的实现过程总结和部分重要的实现代码: ①首先读取两个时间的遥感影像,假设影像的大小为  mnp ,reshape成  mnp ; ②初始化权值为全1,然后根据权值,求出影像之间和自身的的协方差矩阵:
[covxy,meanw] = covw([X Y],weight);
cov11 = covxy(1:bands,1:bands);
cov22 = covxy(bands+1:end,bands+1:end);
cov12 = covxy(1:bands,bands+1:end);
cov21 = cov12';

③求特征值和特征向量:

invcov22=inv(cov22);
[v,d]=eig(cov12*invcov22*cov21,cov11);

④求出第一时相影像的投影向量:

aux1 = v'*cov11*v; 
aux2 = 1./sqrt(diag(aux1));
aux3 = repmat(aux2',bands,1);
v1 = v.*aux3;  

⑤同理求出第二时相的影像的投影向量
⑥得到差值影像
⑦计算并更新权值:

sigma2=2*(1-rou);
tj = sum((MAD./repmat(sqrt(sigma2),N,1)).^2,2); 
weight=1-gammainc(0.5*tj,0.5*bands);

⑧重复上述过程直到收敛或者迭代到一定次数。

实验选用了泰州的遥感影像数据,影像的尺寸为  400400 ,包含6个波段。最终的IR-MAD方法变化检测各个波段结果如下图:


这里写图片描述

可以看到,靠后的波段更能反映出变化信息,而之前的波段包含了很多的噪声。
IR-MAD,MAD,CVA,PCA四种变化检测方法的ROC曲线结果对比:


这里写图片描述

从ROC曲线结果可以看出,IR-MAD和MAD的检测效果大致是一个水平的,但前者要更优一些,而CVA和PCA则是一个水平的结果,两者效果比IR-MAD和MAD要差很多。

总结:
多元变化检测算法和迭代加权的多元变化检测过程和原理还是比较复杂的,但变化检测的效果相对是很不错的。至于完整代码这里就不放出了,因为不是我写的,emmm。

=============================================================================

参考:
两篇文章供大家参考:

【1】The Regularized Iteratively Reweighted MAD Method for Change Detection in Multi- and Hyperspectral Data

【2】一篇介绍CCA的文章

猜你喜欢

转载自blog.csdn.net/Rulixiang/article/details/78821485