这里提供一种采用加权平均融合消除图像拼缝的算法,供大家使用。

https://blog.csdn.net/xiaoxifei/article/details/103045958

如下图所示,如果两张图像直接进行拼接,就会在拼接位置处产生一条拼接缝,拼接缝的产生来源于两张图像光场有差别所导致的两者虽然是连续的结构,但是在两张图中的具体数字存在一定的差异。对于具有重叠部分的两张图像,消除这种拼缝的方法主要是基于特征点匹配所涉及;但是加权平均融合方法是最为简单有效的办法,这里将此算法的python代码给出。

第一步,计算权重,这里采用的是s型曲线所计算的权重,权重如下图所示分布

第二步是进行融合,融合结果如下所示,这里已经看不清有拼缝。

代码如下所示:

  1. def calWeight(d,k):

  2. '''

  3. :param d: 融合重叠部分直径

  4. :param k: 融合计算权重参数

  5. :return:

  6. '''

  7. x = np.arange(-d/2,d/2)

  8. y = 1/(1+np.exp(-k*x))

  9. return y

  10. def imgFusion(img1,img2,overlap,left_right=True):

  11. '''

  12. 图像加权融合

  13. :param img1:

  14. :param img2:

  15. :param overlap: 重合长度

  16. :param left_right: 是否是左右融合

  17. :return:

  18. '''

  19. # 这里先暂时考虑平行向融合

  20. w = calWeight(overlap,0.05) # k=5 这里是超参

  21. if left_right: # 左右融合

  22. col, row = img1.shape

  23. img_new = np.zeros((row,2*col-overlap))

  24. img_new[:,:col] = img1

  25. w_expand = np.tile(w,(col,1)) # 权重扩增

  26. img_new[:,col-overlap:col] = (1-w_expand)*img1[:,col-overlap:col]+w_expand*img2[:,:overlap]

  27. img_new[:,col:]=img2[:,overlap:]

  28. else: # 上下融合

  29. row,col = img1.shape

  30. img_new = np.zeros((2*row-overlap,col))

  31. img_new[:row,:] = img1

  32. w = np.reshape(w,(overlap,1))

  33. w_expand = np.tile(w,(1,col))

  34. img_new[row-overlap:row,:] = (1-w_expand)*img1[row-overlap:row,:]+w_expand*img2[:overlap,:]

  35. img_new[row:,:] = img2[overlap:,:]

  36. return img_new

  1. if __name__ =="__main__":

  2. img1 = cv2.imread(r".\test_new1.png",cv2.IMREAD_UNCHANGED)

  3. img2 = cv2.imread(r".\test_new2.png",cv2.IMREAD_UNCHANGED)

  4. img1 = (img1 - img1.min())/img1.ptp()

  5. img2 = (img2 - img2.min())/img2.ptp()

  6. img_new = imgFusion(img1,img2,overlap=128,left_right=False)

  7. img_new = np.uint16(img_new*65535)

  8. cv2.imwrite(r'.\test_new3.png',img_new)

即可得上述效果

加权平均融合消除图像拼接的拼缝(Python 代码)相关推荐

  1. python图像融合算法_图像融合质量评价方法的python代码实现——MS-SSIM

    图像融合质量评价方法的python代码实现--MS-SSIM 图像融合质量评价方法的python代码实现--MS-SSIM 文章目录 1 前言 2 MS-SSIM介绍 2 MS-SSIM的代码 2.1 ...

  2. 集成学习-模型融合学习笔记(附Python代码)

    1 集成学习概述 集成学习(Ensemble Learning)是一种能在各种的机器学习任务上提高准确率的强有力技术,其通过组合多个基分类器(base classifier)来完成学习任务.基分类器一 ...

  3. Stacking 模型融合详解(附python代码)

    向AI转型的程序员都关注了这个号

  4. python加权平均融合矩阵运算(Image Stitching 1)

    考虑到python通过for循环实现加权平均融合效率比较低,本文采用矩阵运算的形式实现加权平均融合.其中加权平均融合的公式如下: 是融合图像,是需要拼接的两幅图像,是渐入渐出法中的权重,权重的计算公式 ...

  5. IHS图像融合方法+Python代码

    IHS图像融合方法+Python代码 1.方法原理 HIS为:亮度(I ).色调(H).饱和度(S): 强度表示光谱的整体亮度大小,对应于图像的空间分辨率: 传统的IHS图像融合方法基本思想是将IHS ...

  6. 《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)

    基于深度残差收缩网络的故障诊断(翻译) 赵明航,钟诗胜,付旭云,汤宝平,Michael Pecht 论文连接:https://ieeexplore.ieee.org/document/8850096 ...

  7. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...

  8. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  9. 一个让Python代码运行更快的最佳方式!

    作者 | Serdar Yegulalp 译者 | 姜松浩,责编 | 屠敏 转载自 CSDN(ID:CSDNnews) Python因其强大.灵活且易于使用等特性,而赢得了声誉.这些优点使其在各种各样 ...

最新文章

  1. 关于自动驾驶汽车的7大误解
  2. (iOS)Storyboard/xib小技巧
  3. 计算机里有个不能进入的磁盘分区,新电脑只有一个分区怎么办? 教你们如何不进pe给硬盘创建新分区!...
  4. C语言 const 修饰变量 - C语言零基础入门教程
  5. poj3233(矩阵快速幂的和)
  6. doc文件在线预览 vue_跨平台(uniapp)文件在线预览解决方案
  7. 拼多多开除即将拿到股票的安全大佬;虾米音乐将永久关停;GitHub 解禁伊朗开发者使用权
  8. FAT32,EXFAT,FAT16和FAT12的所有信息
  9. 成功安装Visual Studio 2008.
  10. 基于Python实现相关分析案例
  11. .NET 指南:属性与方法之间的选择
  12. oracle客户端添加sqlldr
  13. java 正则表达式 tab_JAVA 正则表达式 (超详细)
  14. KMeans聚类分析实战——如何把城市划分成不同的种类
  15. html设置线条颜色渐变,CSS3 - 设置渐变颜色背景,线性/放射性/循环(附在线渐变生成工具)...
  16. 康托尔点集matlab实数,为什么康托尔集内的数和实数个数一样多
  17. csps2019格雷码
  18. java验证手机号格式
  19. jquery的一些小小实例
  20. 入手评测AMD锐龙r7 6800u和酷睿i7 1260p选哪个 r76800u和i71260p对比

热门文章

  1. LISP 图层前后缀_lisp获取qleader端点_lisp以一个图层来做定义快名称怎么实现
  2. python基础语言与应用第五章_《Python基础教程》 读书笔记 第五章(下)循环语句...
  3. 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结
  4. java stream操作案例
  5. SSRS 2012 聚合函数 -- 隔行换色示例
  6. 修改Ubuntu的aptget源为阿里源的方法
  7. AOSuite V2.7 发布,JavaEE快速开发平台
  8. springmvc的异常处理对静态的资源的处理
  9. SpringOSGINoDM项目的插件说明
  10. 数据结构遍历顺序栈_链栈的初始化与遍历