迭代加权多元变化检测(IRMAD) python实现

本文介绍了如何利用Python实现迭代加权多元变化检测(IRMAD)方法,该方法基于高斯混合模型(GMM)的期望最大化(EM)算法进行阈值分割。此外,还提到了IRMAD在多光谱和高光谱数据中的应用,并引用了相关资源,包括典型相关分析(CCA)原理和基于CCA的MAD算法,以及提供了一个GitHub资源链接。
摘要由CSDN通过智能技术生成

原论文标题:The Regularized Iteratively Reweighted MAD Method for Change Detection in Multi and Hyperspectral Data 

import numpy as np
from numpy.linalg import inv, eig # 求逆,求特征值
from scipy.stats import chi2 # 卡方分布

def irmad(X, Y, max_iter=150, epsilon=1e-6):
    assert(X.shape==Y.shape)
    c, n = X.shape

    # 正则化项,避免不同波段线性相关的情况,一般是对于高光谱影像
    # L = np.eye(c-2, c) - 2*np.eye(c-2, c, k=1) +np.eye(c-2, c,k=2)
    # Ohm = L.T @ L

    w = np.ones((1, n)) # 权重
    lambd_last = 100*np.ones((c, 1))
    for _iter in range(max_iter):
        # 加权平均
        X_mean = np.sum(w*X, axis=1, keepdims=True) / w.sum()
        Y_mean = np.sum(w*Y, axis=1, keepdims=True) / w.sum()

        # 加权协方差
        X_centered = X - X_mean
        Y_centered = Y - Y_mean
        V = np.concatenate([X_centered, Y_centered], axis=0)
        S = ( w*V @ V.T )/( (n-1) *w.sum()
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值