python加权平均融合矩阵运算(Image Stitching 1)
考虑到python通过for循环实现加权平均融合效率比较低,本文采用矩阵运算的形式实现加权平均融合。其中加权平均融合的公式如下:
是融合图像,
是需要拼接的两幅图像,
是渐入渐出法中的权重,权重的计算公式如下:
也就是上面的两个公式,挺简单的,相对于C++而言,用python实现加权平均融合的矩阵运算更加容易理解。直接上结果图,以下是加权平均融合之前与融合之后的对比。
加权平均融合前对比融合后,拼接的折痕消失了 ,这就是加权平均融合的作用所在。
具体上python代码:
def removal_seam(self, img_trans, img_targ, transform_corners, threshold=20):# img_trans warpPerspective image# img_targ target image# transform_corners the 4 corners of warpPerspective image# corners_orig = np.array([[0, 0, 1],# [0, img.shape[0], 1],# [img.shape[1], 0, 1],# [img.shape[1], img.shape[0], 1]])# obtain 4 corners from T transform pano = copy.deepcopy(img_trans)pano[0:img_targ.shape[0], 0:img_targ.shape[1]] = img_targx_right = img_targ.shape[1]x_left = int(min(transform_corners[0, 0], transform_corners[0, 1]))rows = pano.shape[0]# calculate weight matrixalphas = np.array([x_right - np.arange(x_left, x_right)] * rows) / (x_right - x_left)alpha_matrix = np.ones((alphas.shape[0], alphas.shape[1], 3))alpha_matrix[:, :, 0] = alphasalpha_matrix[:, :, 1] = alphasalpha_matrix[:, :, 2] = alphas# common area one image no pixelsalpha_matrix[img_trans[0:rows, x_left:x_right, :] <= threshold] = 1img_targ = pano[:, 0:img_targ.shape[1]]pano[0:rows, x_left:x_right] = img_targ[0:rows, x_left:x_right] * alpha_matrix \+ img_trans[0:rows, x_left:x_right] * (1 - alpha_matrix)retrun pano
为了更好理解removal_seam函数,有必要绘制一个简单的示意图(关于img_trans, img_targ)。img_trans的变换需要通过特征匹配计算变换矩阵T,特征提取可以选择为SIFT、SURF、ORB等。
参考code:YMilton/multi_video_stitching: multi realtime video stitching,contain global and local alignment, opencv stitching, search optimal seam, etl. For real-time video stitching reference. (github.com)
python加权平均融合矩阵运算(Image Stitching 1)相关推荐
- 加权平均融合消除图像拼接的拼缝(Python 代码)
这里提供一种采用加权平均融合消除图像拼缝的算法,供大家使用. https://blog.csdn.net/xiaoxifei/article/details/103045958 如下图所示,如果两张图 ...
- python中numpy矩阵运算操作大全(非常全)!
python中numpy矩阵运算操作大全(非常全) //2019.07.10晚 python矩阵运算大全 1.矩阵的输出形式: 对于任何一个矩阵,python输出的模板是: import numpy ...
- python未知数的矩阵运算_python如何进行矩阵运算
python进行矩阵运算的方法: 1.矩阵相乘 >>>a1=mat([1,2]); >>>a2=mat([[1],[2]]); >>>a3=a1* ...
- ArcGIS Pro地理空间数据处理完整工作流实训及python技术融合深度
[原文]:ArcGIS Pro地理空间数据处理完整工作流实训及python技术融合深度应用 <第一章.ArcGIS Pro基础 >: ArcGIS Pro 安装与配置 ArcGIS Pro ...
- python矩阵运算实例_Python矩阵常见运算操作实例总结 python 怎么实现矩阵运算
python 怎么查看一个矩阵的维数你是知道的,等你,我已经栖息了疲惫的憧憬,夜夜抚慰残梦的翅膀. 都是复制党,百度知道回答真的质量太低了,真的很心疼,言归正传 利用numpy分享矩阵维数: impo ...
- python数组与矩阵运算
python数组与矩阵运算 本文内容 numpy数组和矩阵的建立 numpy数组和矩阵的运算 numpy array维度 reference 本文内容 初学python试图通过矩阵简化运算,感谢网友智 ...
- 基于Python的加权平均融合实现图像全景拼接且去除缝隙
目标: 将数张有重叠部分的图像通过特征点检测,匹配,图像变换拼成一幅无缝的全景图. 待拼接的上方图片 待拼接的下方图片 #拼接成功后的图片 在图像拼接中首先利用SIFT算法提取图像特征进而进行特征匹配 ...
- 【Python】机器学习矩阵运算必学库Numpy首秀!
公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 开始更新numpy相关的文章,本文介绍numpy中的25个小案例,主要内容是如何利用numpy来生成向量(一维数组),矩 ...
- python矩阵计算_PYTHON 矩阵运算
python 矩阵运算 第一次看见 Python 的运行感觉就让我想起了 matlab, 于是就上网嗖嗖他在矩阵方面的运算 如何,如果不想安装 Matlab 那么大的软件,而你又只是想计算些矩阵,py ...
最新文章
- 永洪科技携手华为构建金融智慧运营与商业智能方案,解决金融敏捷分析难题
- kaggle中的MAP理解
- java web mvc 拆分_JAVA WEB初接触——简单的MVC架构
- java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...
- 台式计算机机箱都一样吗,别以为组装台式机很简单,机箱选择大有学问
- android导航屏幕,发现具有软件导航栏的Android设备的真实屏幕尺寸(以像素为单位)...
- 网站免费空间和服务器的区别,网站空间和服务器的区别
- 实用常识 | 将桌面文件移动到其他硬盘内
- Spring Boot应用的打包和部署
- 第一课--BD的使用
- java对公项目_5个让人激动的Java项目
- 计算机应用实训任务与要求怎么写,计算机应用基础项目实训任务
- Java虚拟机之HotSpot虚拟机
- 电视助手 Android,无屏助手TV版|无屏助手电视版 V4.0.3 安卓版 下载_当下软件园_软件下载...
- 笔记本更改计算机开机时用户名和密码错误,怎样修改联想电脑开机账号密码怎么办...
- 计算机键盘上的符号英语怎么说,电脑键盘上特殊符号和标点符号名称的输入方法汇总...
- CCF所有领域best paper合集!发顶会论文必看!中国计算机学会推荐会议的Best paper~
- 闭着眼学基础python 保姆教程:组合数据类型(2)映射与集合类型
- [紧急通告]关于蓝色理想经典论坛无法访问的声明
- Field usersMapper in com.example.test.impl.UsersServiceImpl required a bean of type ‘com.example.tes
热门文章
- 中国企业服务产业:七年了,七个人
- 腾讯近三年 78 道软件测试面试 题(包含答案)
- 浅析——ExpandableListView的使用
- 戴尔移动工作站 Precision7540拆机简介(2个 M.2 2280+1个2.5英寸)
- Android技术馆系列之:Android 碎片的介绍
- mysql集群session_PHP集群session共享
- html工厂函数,jQuery的工厂函数$()的妙用
- 花椰菜的 8 大健康益处,为你一一盘点
- 递归回溯算法一文读懂详解图文
- 思特威车规级图像传感器再添新芯SC120AT,集成ISP二合一功能闪亮登场