为何图像处理中(互)相关运算不满足交换律?
相关运算不满足交换律的示例验证
你测试的示例之所以结果相同,核心原因有两个:一是你选择的模板F = [1, 2, 3]是对称数组(反转后与原数组完全一致);二是你可能混淆了相关运算中两个操作数的角色——相关运算的本质是一个数组作为模板在另一个数组(信号)上滑动,对应元素相乘求和,交换两者的角色后,结果的长度和内容都会发生变化。
关键原理回顾
卷积满足交换律,是因为卷积会先将其中一个数组反转,再做滑动相乘求和;而相关运算不会反转任何数组,直接滑动对应相乘,因此仅当其中一个数组是对称数组时,交换后的结果才会在特定模式下看起来一致,否则交换律不成立。
反例演示
我们选择非对称模板和长度不同的信号来验证:
- 非对称模板
T = [1, 0, 2](反转后为[2, 0, 1],与原数组不同) - 信号
S = [3, 2, 1, 4](长度4)
1. 计算 T corr S(模板T在信号S上滑动,valid模式,仅保留完全重叠的结果)
结果长度为 len(S) - len(T) + 1 = 4 - 3 + 1 = 2:
- 第一个元素:
1×3 + 0×2 + 2×1 = 3 + 0 + 2 = 5 - 第二个元素:
1×2 + 0×1 + 2×4 = 2 + 0 + 8 = 10
最终结果:[5, 10]
2. 计算 S corr T(信号S作为模板在T上滑动,same模式,结果长度与原信号T一致)
由于模板S长度大于信号T,需要补零后滑动:
- 第一个元素:
3×1 + 2×0 + 1×2 = 3 + 0 + 2 = 5 - 第二个元素:
2×1 + 1×0 + 4×2 = 2 + 0 + 8 = 10 - 第三个元素:
1×1 + 4×0 + 0×2 = 1 + 0 + 0 = 1
最终结果:[5, 10, 1]
显然,[5, 10] 和 [5, 10, 1] 长度与内容均不相同,直接证明了相关运算不满足交换律。
补充说明
如果坚持使用valid模式,当模板长度大于信号长度时,S corr T 将没有完全重叠的位置,结果为空,与T corr S的非空结果差异更明显。
内容的提问来源于stack exchange,提问作者Zeus Kim
相关产品推荐
相关产品推荐

