MAD算法和SAD算法有什么区别?
时间: 2023-12-10 19:35:53 浏览: 28
根据提供的引用内容,可以得知MAD算法和SAD算法的思想几乎是完全一致的,只是相似度测量公式有一点改动。具体来说,MAD算法计算的是子图与模板图的L2距离,而SAD算法计算的是子图与模板图的L1距离。L1距离是指两个向量各个元素差的绝对值之和,而L2距离是指两个向量各个元素差的平方和再开方。因此,MAD算法和SAD算法在计算相似度时使用的距离公式不同,导致它们的计算结果也不同。
相关问题
NCC算法和MAD算法的区别
NCC算法和MAD算法的区别在于相似度的计算方式不同。NCC算法是通过计算两个图像的互相关系数来确定它们之间的相似度,而MAD算法则是通过计算两个图像像素值之间的平均绝对差来确定它们之间的相似度。NCC算法对光照、噪声等因素的影响较小,但计算量较大;而MAD算法计算量较小,但对光照、噪声等因素的影响较大。
MAD算法代码
以下是一个使用MAD算法求解异常值的Python代码示例:
```python
import numpy as np
def median_absolute_deviation(data):
"""
计算数据集的中位数和MAD
:param data: 数据集
:return: 中位数,MAD
"""
median = np.median(data)
deviations = np.abs(data - median)
mad = np.median(deviations)
return median, mad
def is_outlier(point, median, mad, threshold=3.5):
"""
判断给定点是否为异常值
:param point: 数据点
:param median: 中位数
:param mad: MAD
:param threshold: 阈值,默认取3.5
:return: True表示为异常值,False表示不是异常值
"""
return abs(point - median) / mad > threshold
# 示例用法
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 100])
median, mad = median_absolute_deviation(data)
outliers = [point for point in data if is_outlier(point, median, mad)]
print(outliers)
```
在该代码中,`median_absolute_deviation`函数计算数据集的中位数和MAD。`is_outlier`函数使用阈值和MAD来判断给定点是否为异常值。在示例中,我们使用一个包含10个数据点和1个异常值的数组来进行测试,并打印出所有的异常值。