MAD(Multivariate Alteration Detection)算法是由Allan Nielsen提出的,其数学本质主要是多元统计分析中的(Canonical Correlation Analysis)CCA以及波段差值运算,但该算法仍然不能完全改善目前多元遥感影像处理中的局限性,所以Morton Canty和Allan Nielsen在MAD算法的基础上,结合EM算法,研究并提出了IR-MAD(Iteratively Reweighted MAD)算法。
算法介绍
多元变化检测(MAD)算法的理论基础是CCA,即典型相关分析,基本思路是用投影的特征值方差最大为准则。
典型相关分析(CCA):
例如假设有两个样本
给定两组向量
可以算出u和v的方差和协方差分别为:
具体的推导过程比较简单,省去。而u和v 之间的相关系数为:
我们的目标是希望这个相关系数越大越好。也就是这样一个优化目标:
根据拉格朗日乘子法以及一定的化简可以得到
可以看到,这就是相当于求
多元变化检测(MAD):
上面基本介绍了MAD的理论基础CCA,下面是MAD的主要过程:
假设
a,b分别表示X和Y的投影向量。我们的目标是令变化向量的方差最大:
其中约束条件为:
因此特征值方差最大就相当于
根据上式以及CCA的相关内容,最终可以推导出下面两个等式:
我们可以通过求解对应的广义特征值问题,来求出对应的特征值
迭代加权的多元变化检测(IR-MAD):
IR-MAD的主要思想是:对遥感影像的每个像素赋权初始值为1,每一次迭代过程中给两个影像赋予新的权值,权值的区间为
MAD特征满足高斯分布的性质,所以我们可以计算差值影像的卡方距离,他满足自由度为n的卡方分布,如下表达式:
其中p指的是影像的波段数目,
[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);
⑧重复上述过程直到收敛或者迭代到一定次数。
实验选用了泰州的遥感影像数据,影像的尺寸为
可以看到,靠后的波段更能反映出变化信息,而之前的波段包含了很多的噪声。
IR-MAD,MAD,CVA,PCA四种变化检测方法的ROC曲线结果对比:
从ROC曲线结果可以看出,IR-MAD和MAD的检测效果大致是一个水平的,但前者要更优一些,而CVA和PCA则是一个水平的结果,两者效果比IR-MAD和MAD要差很多。
总结:
多元变化检测算法和迭代加权的多元变化检测过程和原理还是比较复杂的,但变化检测的效果相对是很不错的。至于完整代码这里就不放出了,因为不是我写的,emmm。
=============================================================================
参考:
两篇文章供大家参考:
【2】一篇介绍CCA的文章