当前位置: 首页 > news >正文

OpenCV图像拼接(5)图像拼接模块的用于创建权重图函数createWeightMap()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::detail::createWeightMap 是 OpenCV 库中用于图像拼接模块的一个函数,主要用于创建权重图。这个权重图在图像拼接过程中扮演着重要角色,它帮助决定哪些像素在最终的全景图中更为重要,特别是对于那些重叠区域。

原型

void cv::detail::createWeightMap 	
( 	InputArray  	mask,float  	sharpness,InputOutputArray  	weight 
) 		

参数

  • InputArray mask: 这是一个输入数组,通常是一个单通道二值图像(比如通过阈值处理得到),它定义了你希望考虑的图像区域。在这个二值图像中,前景(即感兴趣的区域)应该用非零值表示,而背景则用0表示。

  • float sharpness: 这个参数决定了权重图的锐度。简而言之,它控制了从图像中心到边缘的权重变化速度。较高的sharpness值会导致权重更快速地下降,意味着离中心越远的像素其重要性越低。

  • InputOutputArray weight: 这是输出权重图,它会根据提供的mask和sharpness参数进行计算。此权重图与输入的mask大小相同,并且也是单通道的。该图中的每个像素值代表对应于mask中相同位置像素的重要性权重。这些权重值将被后续的图像拼接步骤所使用。

调用这个函数可以生成一个基于给定mask和sharpness的权重图,这在进行图像融合时非常有用,尤其是当你想要减少接缝或重影现象时。权重图有助于平滑地过渡不同图像之间的边界,从而产生更加自然的全景图像。

代码示例

include <opencv2/opencv.hpp>using namespace cv;
using namespace cv::detail;int main() {// 创建一个 500x500 的二值掩膜图像,中心有一个白色圆形区域Mat mask = Mat::zeros(500, 500, CV_8UC1);circle(mask, Point(250, 250), 150, Scalar(255), -1);// 定义锐度参数float sharpness = 0.1f; // 可根据需求调整// 初始化输出权重图Mat weight;// 调用 createWeightMap 函数createWeightMap(mask, sharpness, weight);// 显示原掩膜和生成的权重图imshow("Mask", mask);imshow("Weight Map", weight);waitKey(0); // 等待按键以关闭窗口return 0;
}

运行结果

在这里插入图片描述


http://www.mrgr.cn/news/95955.html

相关文章:

  • 嵌入式硬件工程师从小白到入门-PCB绘制(二)
  • 进程通信(进程池的模拟实现) read write函数复习 Linux ─── 第23课
  • 数据结构day04
  • python康复日记-request库的使用,爬虫自动化测试
  • 26考研——图_图的存储(6)
  • 26考研——图(6)
  • 2.基于多线程的TCP服务器实现
  • sql server如何提高索引命中率
  • 亚马逊云科技全面托管DeepSeek-R1模型现已上线
  • 【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权主体功能开发
  • 142. 环形链表 II——考察数学,难!
  • 26考研——图_图的应用(6)
  • Proximal Policy Optimization(PPO)算法
  • Flutter项目之table页面实现
  • 【Python】pillow库学习笔记1-Image类
  • 1.基于TCP的简单套接字服务器实现
  • AI深度思考系列——大模型被当成了某度
  • 【Hugging Face 开源库】Diffusers 库 —— 扩散模型
  • LeetCode 第25、27、28题
  • Axure项目实战:智慧城市APP(三)教育查询(显示与隐藏交互)