
简介这份PDF从图像融合的学科背景出发面向数字图像处理、计算机视觉方向的学生与研究人员解决如何利用小波变换整合多源图像信息的问题。内容先介绍线性加权、PCA、多分辨金字塔等经典融合方法再重点讲解小波分解、系数融合、逆小波变换的完整流程并对比Haar、Daubechies等小波基的适用性同时给出主观与客观评价指标可用于课程设计、论文调研或入门自学。小波变换的多分辨率特性使其能捕捉局部特征与非平稳信号这也是该方法区别于传统傅里叶分析的关键。文中还结合遥感、医学成像、军事侦察等典型应用场景说明算法潜力并指出融合策略、小波基选择与评价体系仍是后续研究重点。资源包共1个文件类型为PDF大小635KB便于离线阅读。已有53人学习读者可借此快速掌握小波融合的原理、方法对比与质量评估思路。1. 小波变换图像融合一篇毕业论文级别的 PDF为什么值得你花一个周末复现图像融合不是把两张图叠加在一起就完事。真正的融合要解决一个两难问题可见光图像有丰富的纹理和颜色信息但夜间或恶劣天气下对比度差、细节丢失红外图像能捕捉热辐射目标却缺乏场景的纹理和色彩。怎么把两者的优势同时保留下来就是图像融合做的工作。而在众多融合算法里基于小波变换的方法最让我觉得“论文说得清楚、代码也能落地”因为小波变换天然把图像拆成低频近似分量和多个方向的高频细节分量低频负责轮廓和亮度高频负责边缘和纹理这跟人眼感知系统高度契合。这篇标题叫《基于小波变换的图像融合的研究.pdf》的文档我把它当作一个“学生论文型”技术参考来用前半部分讲小波理论中间给了融合规则后半部分是实验结果。按它的思路走一遍再用现代 Python 工具重写一次你就能在本地跑出一套像样的融合框架。这篇文章适合两类人一是要做毕业设计或课程设计、需要快速跑通一个可解释算法的学生二是摄影测量、红外监控或医学影像方向想用现成手段做预处理的工程师。2. 小波变换在图像融合里凭什么站得住先理解系数在说什么2.1 小波变换的核心直觉一张图变成四种分量要对图像做离散小波变换DWT你不需要把数学推到多深只需要理解一件事小波变换把一张二维图像分解成一个低频近似图 A 和三个方向的高频细节图 H、V、D。A 是原图的缩小版保留了大部分能量和整体亮度分布H 是水平方向的边缘变化V 是垂直方向的边缘变化D 是对角方向的纹理跳动。在 Python 里用 PyWavelets 库做一次单层分解代码比想象中短得多import pywt import numpy as np import cv2 # 读取灰度图统一为 float32避免后续运算溢出 img cv2.imread(vis.png, cv2.IMREAD_GRAYSCALE).astype(np.float32) # 单层二维离散小波分解 # haar 是最简单的小波基边界模式 periodization 适合图像尺寸为偶数的情况 coeffs pywt.dwt2(img, haar, modeperiodization) cA, (cH, cV, cD) coeffs print(低频近似图尺寸:, cA.shape) print(水平细节尺寸:, cH.shape)这段代码的输出会告诉你低频图尺寸大约是原图的一半三个细节图尺寸相同。这一层分解对应的是“小波变换图像增强 python”相关实现里最常见的起点。为什么选 haar 而不是更复杂的小波基因为 haar 是正交、对称、计算量最小的适合先把流程跑通。做研究时再换 db2、sym3 也不迟后面我会专门说不同小波基带来的差异。系数矩阵本身没有视觉意义你需要把细节系数做线性拉伸才能看到边缘图。可真正重要的是低频系数 A 决定了融合结果的全局亮度和对比度高频系数 H、V、D 决定了融合结果的纹理清晰度。融合规则分开作用于这两个部分就是小波融合和简单像素平均的本质区别。2.2 为什么不是傅里叶变换局部性和方向性傅里叶变换把图像转到频域以后得到的是全局频率信息——你知道这张图有哪些频率成分却不知道这些频率出现在图像的哪个位置。小波变换同时保留了频率和位置信息这就是“时频局部化能力”。对于图像融合来说这个性质几乎是一票决定性的一张多聚焦图像的前半部分清晰、后半部分模糊清晰和模糊的区域对应的是不同位置的边缘响应你必须在空间上区分它们才能做出“哪边取哪边”的决策。另一个原因是方向性。小波分解把高频拆成水平、垂直、对角三个方向。这意味着当两幅图像在同一区域的清晰度表现不同时你可以按方向选择系数自由度更高。比如可见光图像的水平边缘丰富而红外图像的对角边缘更清楚那在融合时就可以对不同方向使用不同的权重。2.3 小波基、分解层数和边界模式三个先行参数复现论文融合结果时最先要确定的不是融合规则而是三个前置参数小波基、分解层数、边界扩展模式。小波基决定滤波器的长度和形状分解层数决定你从“像素级别”往“多分辨率级别”走多深边界模式决定图像边缘处的小波系数是否会失真。我在复现时常用的参数组合如下# 推荐的三层分解参数组合 wavelet db2 # Daubechies-2比 haar 光滑边缘更自然 level 3 # 三层分解覆盖更多尺度 mode periodization # 周期扩展避免边界延拓造成的伪边缘 # 对两幅输入图分别完成多层分解 coeffs_vis pywt.wavedec2(img_vis, wavelet, levellevel, modemode) coeffs_ir pywt.wavedec2(img_ir, wavelet, levellevel, modemode) # coeffs_vis 的结构 # [cA3, (cH3, cV3, cD3), (cH2, cV2, cD2), (cH1, cV1, cD1)] print(返回子带数量:, len(coeffs_vis))参数说明wavedec2 返回的列表长度是 level 1第一个元素是最后一层的低频近似后面每层是三个高频细节的元组。层数越高低频图越粗糙、细节图越能表现大尺度结构。层数过高会导致融合结果出现“块状感”因为奇数尺寸下周期扩展会让图像边缘出现伪周期这种现象在医学影像融合里尤其明显。一般 2 到 4 层就够用先不要追求层数。2.4 多聚焦图像与红外可见光融合同一套框架两种侧重点围绕小波图像融合最常见的两类应用是多聚焦图像融合和红外可见光图像融合。多聚焦融合的目标是两张图分别在不同区域清晰融合结果全场清晰。这种场景的融合规则重心在高频系数——高频能量大的地方说明局部更清晰就取谁的系数。红外可见光融合的目标是保留可见光纹理和色彩同时把红外目标的热辐射信息叠进来。这种场景的重心在低频系数——红外低频代表热辐射的分布可见光低频代表场景亮度两者要做加权而不是取大。我的建议是先用多聚焦图对验证代码流程再切到红外可见光图对调参数。多聚焦图对是“标准答案”最清楚的网上也容易找到公开图集适合用来判断融合规则是否写对而红外可见光融合的评估主观性较强更适合用客观指标来控制调参方向。3. 用 Python 在本地跑通小波图像融合最小可复现代码3.1 数据准备从哪里找输入图像、需要预处理什么要做融合实验你需要成对的输入图像。多聚焦图对可以用公开数据集的样例比如“clock”、“book”这些经典图。红外可见光图对在相关论文里常见你可以从学术公开资源中获取。无论哪类都要先做三步预处理统一尺寸、转灰度或统一通道、归一化到 [0,1] 区间。我一般这样预处理def preprocess(img_path, size(256, 256)): # 读取图像统一尺寸保留单通道灰度 img cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) if img is None: raise ValueError(f无法读取图像: {img_path}) img cv2.resize(img, size, interpolationcv2.INTER_CUBIC) # 转 float32 并归一化到 [0, 1]防止后续小波系数范围差异过大 img img.astype(np.float32) / 255.0 return img预处理里有一个隐藏坑尺寸必须是偶数。小波变换在周期扩展模式下如果遇到奇数尺寸某些小波基会报错或产生尺寸不一致的子带。用 INTER_CUBIC 做缩放是为了保留更多边缘信息INTER_NEAREST 会直接让图像的锯齿边缘带入小波系数导致融合边缘失真。这一步是“肉眼可见”的差异值得先做规范。3.2 三层小波分解与系数合并融合流程的中间阶段是分解和合并。分解已经在上文写了合并规则在这里给出一个最通用的版本——低频系数取平均高频系数取绝对值大者def fuse_coeffs(coeffs_a, coeffs_b): 低频取平均高频逐层按绝对值取大 fused [] # coeffs_a[0] 是低频近似分量 fused.append((coeffs_a[0] coeffs_b[0]) / 2.0) # 其余元素是高频细节按层处理 for i in range(1, len(coeffs_a)): cA_h coeffs_a[i] cB_h coeffs_b[i] # 每个高频子带都是一个三元组 (H, V, D) fused_tuple tuple( np.where(np.abs(a) np.abs(b), a, b) for a, b in zip(cA_h, cB_h) ) fused.append(fused_tuple) return fused这段代码的逻辑说明低频系数直接取均值可以避免融合结果亮度偏向某一幅图高频系数用 np.where 做逐元素比较谁在当前位置的绝对值大谁就代表更强的边缘或纹理。为什么取绝对值而不是直接取大小波高频系数有正有负正负代表边缘的梯度方向直接取大会把负值边缘也判为低能量导致边缘极性混乱。这个融合规则虽然简单却是论文里最常作为基线的“绝对值取大法”。你可以在它的基础上改成加权平均、区域能量取大、或基于窗口的显著性比较这些都只是把比较对象从单个像素换成局部区域。3.3 逆变换重建与输出保存合并完系数以后用 waverec2 重建图像。注意 waverec2 的输入结构必须和 wavedec2 完全一致层数、小波基、边界模式都要对上否则重建结果会错位。# 使用与分解相同的参数完成逆变换 fused_img pywt.waverec2(fused_coeffs, waveletdb2, modeperiodization) # 裁剪到 [0,1] 并转回 8bit 灰度图 fused_img np.clip(fused_img, 0, 1) fused_img_8bit (fused_img * 255.0).astype(np.uint8) # 保存结果 cv2.imwrite(fused_result.png, fused_img_8bit)重建后出现灰度超出 [0,1] 的情况非常正常因为小波重建本质上是线性叠加某些像素可能越界。用 np.clip 强行截断到合法范围这也是论文里几乎都默默做了但很少写明的一步。如果发现重建图像出现明显的棋盘格伪影多半是 waverec2 的边界模式传错了或者分解和重建使用了不同的小波基。我踩过这个坑后面避坑章节会细讲。3.4 三通道彩色图像怎么处理通道独立与 YCbCr 空间的选择很多初学复现的人在这里停下论文实验用的是灰度图但实际应用里要给用户看彩色融合结果。彩色图像融合的常见做法有两种。第一种是 RGB 三通道各自做同一套小波融合再合并通道。实现简单但融合结果容易出现色彩偏移因为三个通道独立处理后的低频亮度比例会互相干扰。第二种更推荐的做法是把图像从 RGB 转到 YCbCr对亮度通道 Y 做融合色度通道 Cb 和 Cr 直接用可见光图像的分量最后转回 RGB。这样融合结果的颜色来自可见光纹理和亮度来自融合结果更符合视觉效果。def fuse_rgb_via_ycbcr(img_a_bgr, img_b_bgr, waveletdb2, level3): # 转到 YCbCr 色彩空间 ycrcb_a cv2.cvtColor(img_a_bgr, cv2.COLOR_BGR2YCrCb) ycrcb_b cv2.cvtColor(img_b_bgr, cv2.COLOR_BGR2YCrCb) # 拆分通道 y_a, cr_a, cb_a cv2.split(ycrcb_a) y_b, cr_b, cb_b cv2.split(ycrcb_b) # 亮度通道归一化并融合 y_a_f y_a.astype(np.float32) / 255.0 y_b_f y_b.astype(np.float32) / 255.0 coeffs_a pywt.wavedec2(y_a_f, wavelet, levellevel, modeperiodization) coeffs_b pywt.wavedec2(y_b_f, wavelet, levellevel, modeperiodization) fused_y_coeffs fuse_coeffs(coeffs_a, coeffs_b) fused_y pywt.waverec2(fused_y_coeffs, wavelet, modeperiodization) fused_y np.clip(fused_y, 0, 1) * 255.0 # 色度通道取可见光原始值保留颜色信息 fused_img cv2.merge([fused_y.astype(np.uint8), cr_a, cb_a]) return cv2.cvtColor(fused_img, cv2.COLOR_YCrCb2BGR)这段代码做到了三件事把颜色和亮度解耦、只在亮度通道做小波融合、色度通道直接用可见光分量。它对应的是红外可见光图像融合里最常用的 YCbCr 方案论文里讲解不多但工程上非常稳定。值得注意的是用 YCrCb 还是 YCbCr 取决于 OpenCV 的函数命名习惯你不需要纠结数学定义只需保证转换前后一致。这段代码做到了三件事把颜色和亮度解耦、只在亮度通道做小波融合、色度通道直接用可见光分量。它对应的是红外可见光图像融合里最常用的 YCbCr 方案论文里讲解不多但工程上非常稳定。值得注意的是用 YCrCb 还是 YCbCr 取决于 OpenCV 的函数命名习惯你不需要纠结数学定义只需保证转换前后一致。3.5 最小执行的验证方法跑通这套流程后不要只看融合结果顺眼不顺眼先做两个客观验证。第一是检查尺寸是否与原图一致第二是计算融合结果与两幅输入图之间的峰值信噪比PSNR和结构相似性SSIM。这两个指标虽然不能完全代表融合质量但能帮你发现代码里的隐性错误。from skimage.metrics import structural_similarity as ssim, peak_signal_noise_ratio # 输入必须是相同尺寸 psnr_a peak_signal_noise_ratio(img_a_8bit, fused_img_8bit) ssim_a structural_similarity(img_a_8bit, fused_img_8bit) print(f融合结果与输入A: PSNR{psnr_a:.2f}, SSIM{ssim_a:.4f})如果你发现融合结果对某一幅图的 SSIM 异常低比如小于 0.3那大概率不是算法问题而是通道顺序或尺寸没对齐。先查数据再调算法这个顺序很重要。4. 融合规则与分解层数的参数设置从“能跑”到“结果能看”4.1 三种常见系数合并规则的适用边界高频系数合并规则是整个融合算法的灵魂也是最容易在复现时被忽略的部分。最常见的三种规则是绝对值取大、加权平均、区域能量取大。绝对值取大的优点是实现简单、边缘锐利度保留好缺点是它对噪声敏感。图像里的随机噪声在小波域同样表现为较大的高频系数只按单点绝对值比较会把噪声当成边缘融进结果出现颗粒感。加权平均的优点是平滑能在一定程度上抑制噪声缺点是边缘会变糊。区域能量取大是前两者的折中比较的不是单个系数而是该像素周围一个窗口内的系数能量总和。我自己在工程中优先用区域能量取大窗口大小取 3x3 或 5x5。窗口太大会让边缘位置偏移太小则和绝对值取大没区别。实现如下def regional_energy_fuse(a, b, window_size3): 按局部区域能量取大融合高频系数 from scipy.ndimage import uniform_filter # 计算每个像素周围窗口内的能量系数平方的均值 energy_a uniform_filter(a**2, sizewindow_size, modemirror) energy_b uniform_filter(b**2, sizewindow_size, modemirror) # 局部能量大的位置取对应系数 return np.where(energy_a energy_b, a, b)参数说明uniform_filter 的 size 控制窗口边长modemirror 避免边界处窗口越界产生零值。窗口内能量用系数平方的和来度量比绝对值更能体现局部边缘强度。很多人问窗口大小怎么定我的经验是如果输入图像是 256x2563x3 够用如果是 512x512 或更大5x5 更稳因为大图里清晰区域更大用 3x3 容易在纹理密集区出现不连续融合边界。4.2 分解层数到底调几层从信息保留和计算量两个维度看分解层数不是越多越好。层数增加低频子带的分辨率越来越低它保留的是图像最主要的亮度分布和大的结构边缘高频子带则越来越“稀疏”每个系数对应的空间范围变大。三层分解是很多论文实验的默认值因为它在计算量和信息保留之间平衡得比较好。层数设置有一个实用经验如果两幅输入图之间存在明显的整体亮度差比如红外图偏亮、可见光图偏暗那么把层数调到 4 层以上让低频分量更加抽象融合时用加权平均能更好地让亮度过渡。如果输入图对只是局部清晰度不同层数 2 到 3 就够了多出来的高频层反而会把微小的不一致性放大。你可以做一个快速实验来确认层数影响分别用 level1、2、3、4 跑同一对图然后计算融合结果的熵和平均梯度。熵反映信息量平均梯度反映清晰度。如果 level 从 3 到 4 时这两个指标变化很小说明 3 层已经是这个场景的拐点。def avg_gradient(img): 平均梯度衡量图像清晰度的常用指标 gx cv2.Sobel(img, cv2.CV_32F, 1, 0, ksize3) gy cv2.Sobel(img, cv2.CV_32F, 0, 1, ksize3) return np.mean(np.sqrt(gx**2 gy**2)) # 对两组不同层数的融合结果计算清晰度 print(level3 平均梯度:, avg_gradient(fused_3)) print(level4 平均梯度:, avg_gradient(fused_4))如果 level4 的结果平均梯度反而低于 level3说明过深的分解引入了子带重建误差。这就是一个明确的停止信号。不要把计算量作为唯一考量因为小波变换的计算成本本身很低真正影响结果的是重建质量。4.3 小波基选择haar、db2、sym3 的肉眼差异不同小波基对融合结果的影响比很多人想象中大。haar 是最简单的小波它的滤波器长度只有 2分解出来的高频系数对应的是相邻像素的差值因此它对边缘的定位最准但融合结果的边缘容易出现“块状感”。db2 的滤波器长度是 4边缘过渡更平滑适合自然图像。sym3 具有近似对称性能减少相位失真适合需要保持边缘位置的场景。我见过一个翻车案例有同学用 haar 做医学图像融合结果在骨骼边缘出现明显的锯齿他觉得是融合规则的问题换了三种规则都一样最后换 db4 就正常了。这说明在实验室里先选 haar 是合理的但做正式结果或交付时至少要对比 haar 和 db2。一个可以抄的选基策略是先固定融合规则为绝对值取大、层数固定为 3然后分别用 haar、db2、sym3 跑一遍用 SSIM 与两幅原图对比选综合表现最好的。这个过程在代码上只需要改一个字符串参数。5. 避坑手册复现小波图像融合论文时最常见的 6 个坑5.1 两幅输入图像没有严格配准融合结果出现“重影”现象融合后的图像在目标边缘有明显重影像相机抖动拍出来的照片。原因小波系数比较是逐像素进行的。只要两幅图有哪怕一个像素的偏移高频系数就会在同一位置比较到不同目标的边缘导致融合结果里两个边缘同时存在。解决在做任何小波分解之前先对两幅图做特征点配准。OpenCV 的 ORB、SIFT 特征匹配加单应性变换是常见做法。如果图对本身来自同一传感器同一角度也要检查裁剪时是否产生偏移。我的习惯是先把两幅图做一次归一化相关匹配计算相对位移量大于 0.5 像素就要先对齐。5.2 系数合并后重建图像出现整体偏暗或偏亮现象融合结果的亮度明显低于两幅源图或者光源区域出现光晕。原因最常见的是低频系数直接取了平均而两幅图的整体亮度相差过大。平均本身是安全的但如果在归一化时忽略了对光照差异的补偿结果就会偏向暗的一侧。解决在融合前先对两幅输入图做直方图匹配或线性亮度校正让它们的均值和标准差接近。另一个可行的做法是低频融合时采用加权平均权重根据两幅图的局部清晰度或亮度均值动态调整。比如红外图像的亮度权重可以设 0.4可见光设 0.6再根据融合指标微调。5.3 wavedec2 和 waverec2 参数不一致导致重建失败现象waverec2 报错或者重建出来的图像尺寸与原图不一致、内容错位。原因分解时用了 level3重建时忘了写 level或者分解时用了 modeperiodization重建时用了默认的 symmetric。这两个函数的参数必须严格一致。解决建议用一个字典保存全部参数分解和重建都从字典读取。这样就不会出现两边参数不一致的低级错误。wave_params { wavelet: db2, mode: periodization, level: 3 } cA pywt.wavedec2(img, **wave_params) img_recon pywt.waverec2(cA, **wave_params)5.4 高频系数取绝对值最大后融合结果出现噪声颗粒现象融合结果边缘清晰度好但平坦区域出现密密麻麻的小颗粒类似老照片的噪点。原因绝对值取大把噪声也当成有效纹理保留下来。这在低照度的红外图像里特别常见因为红外图的噪声本身就比可见光大得多。解决高频融合改用区域能量取大窗口设为 5x5。如果噪声仍然明显在融合前先对红外图做一次小波软阈值去噪这一步不会影响可见光图。阈值可以用 VisuShrink 的通用阈值公式即 sigma 乘以 sqrt(2*log(N))其中 sigma 是噪声标准差N 是像素数。5.5 YCbCr 转换后颜色偏色红色和蓝色的通道接反现象融合结果整体色调偏青人脸肤色变成蓝色。原因OpenCV 默认的图像通道顺序是 BGR并且使用 YCrCb 而不是 YCbCr。如果从 RGB 转换的代码里写了 cv2.COLOR_BGR2YCrCb读回的顺序就对应 Cr、Cb 而不是 Cb、Cr。很多论文里的伪代码是按 YCbCr 写的直接照搬就会把两个色度通道搞混。解决统一用 OpenCV 的转换函数并始终记住 Python 层的通道顺序。如果你是从其他语言代码改写过来在调色度通道时先打印一下数组形状和数值范围对比源图确认哪个通道是 Cb、哪个是 Cr。5.6 输入图像尺寸不是偶数小波分解报错或子带形状不一致现象程序在 wavedec2 时抛出尺寸相关异常或分解后的子带尺寸不能完美重建。原因周期延拓模式要求图像每个维度都能被 2^level 整除。如果图像是 257x253三层分解后低频子带尺寸为 33x32重建时维度不对齐。解决在预处理阶段强制把尺寸缩放到能被 2^level 整除的数值。比如统一缩放为 256x256或者更保险的 512x512。注意 resize 之后要重新检查图像的实际尺寸因为有些读取函数会自动做奇怪的对齐。6. 进阶把融合结果量化评估关项目才算真正立得住图像融合的验收不能只靠眼睛。论文里常用的客观评估指标主要有三类信息量指标如信息熵反映融合结果包含的信息丰富程度结构保真度指标如 SSIM反映融合结果与源图的结构相似度边缘保持度指标如 Qabf反映边缘信息从源图到融合结果的传递效率。如果你要做实验对比至少算前两个。我自己的习惯是把这些小指标封装成一个函数每次跑完实验直接输出一张评估表方便横向对比不同参数组合。下面是一个可用的评估脚本骨架import pandas as pd from skimage.metrics import structural_similarity as ssim from scipy.stats import entropy def evaluate_fusion(fused, src_a, src_b): hist np.histogram(fused.ravel(), bins256, range(0, 256))[0] ent entropy(hist, base2) # 信息熵 ssim_a ssim(fused, src_a) ssim_b ssim(fused, src_b) # 平均梯度 gx cv2.Sobel(fused, cv2.CV_32F, 1, 0, ksize3) gy cv2.Sobel(fused, cv2.CV_32F, 0, 1, ksize3) grad np.mean(np.sqrt(gx**2 gy**2)) return { entropy: round(ent, 4), ssim_a: round(float(ssim_a), 4), ssim_b: round(float(ssim_b), 4), avg_gradient: round(float(grad), 4) }用这个脚本评估时你会在反复调参中发现一个规律信息熵和 SSIM 往往是互相拉扯的。熵高的融合结果通常细节多但结构失真也更大SSIM 高的结果保真度好但可能平滑过头。这背后就是“融合算法要同时保留互补信息和抑制不一致信息”的本质矛盾没有任何参数组合能在所有指标上同时封顶。因此在你看论文实验表格时要特别留意作者是在什么指标上“更好”——有些人只挑对自己算法有利的指标说事这在图像融合论文里非常普遍不是学术不端而是评价体系本身就允许多元化。一个实用技巧是设定一个硬性指标门槛比如 SSIM 必须大于 0.75然后在这个前提下追求熵和平均梯度的最大化。这个思路比直接最大化单一指标更接近工程交付的逻辑。做完客观评估后再找几个不相关的同事做人眼主观评价融合算法的好坏最终只能由人眼在具体场景里拍板。我这几年做图像算法落地的一个体会是小波变换图像融合这套东西放到今天不算新但它的数学结构干净、可解释性强、运行速度快特别适合做复杂深度学习方案的基线或预处理模块。你要真把它用在产线上建议先把输出结果做成视频序列观察连续帧之间融合结果是否稳定。单帧效果好不算什么连续帧闪烁才是致命的——这通常说明你的融合规则在高频系数决策上不稳定可以尝试引入时间维度的平滑比如用上一帧的决策图做加权。希望这篇沿着论文标题展开的复现笔记能帮你把思路捋顺少走几个我走过的弯路。如果一次没跑通别急着怀疑算法先检查配准、尺寸和参数一致性八成问题都在那。希望帮到你。本文还有配套的精品资源点击获取