Opencv实验合集——实验四:图片融合

news2024/9/27 7:24:42

1.概念

图像融合是将两个或多个图像结合在一起,创建一个新的图像的过程。这个过程的目标通常是通过合并图像的信息来获得比单个图像更全面、更有信息量的结果。图像融合可以在许多领域中应用,包括计算机视觉、遥感、医学图像处理等。

融合的方法有很多:

  1. 加法融合(Additive Fusion): 将每个图像的对应像素相加。这种方法通常用于合并具有相似亮度的图像,例如红外图像和可见光图像。

  2. 权重融合(Weighted Fusion): 对每个图像分配一个权重,然后通过加权和的方式将它们结合在一起。权重可以根据图像的特性动态调整,以获得最佳效果。

  3. 最大值融合(Max Fusion): 对于每个像素,选择输入图像中具有最大值的像素。这种方法通常用于图像分割和目标检测。

  4. 最小值融合(Min Fusion): 对于每个像素,选择输入图像中具有最小值的像素。这种方法通常用于处理深度信息。

  5. 平均融合(Average Fusion): 将每个图像的对应像素取平均值。这种方法可用于平滑噪声或减小图像中的不确定性。

  6. 梯度域融合(Gradient Domain Fusion): 考虑图像的梯度信息,以确保融合的图像在边缘处更加平滑。这在图像合成时常用,例如在图像编辑中。

  7. 无缝克隆(Seamless Cloning): 将源图像的一部分融合到目标图像中,使得融合边缘平滑且无缝。这通常涉及到掩码的使用,以确定源图像的哪些区域应该被融合。

本次实验主要进行无缝克隆融合

2.有关的函数方法

cv2.seamlessClone(src, dst, mask, center, flags)

  • src:源图像,即希望融合到目标图像上的图像。
  • dst:目标图像,即希望将源图像融合到的图像。
  • mask:掩码图像,指定了源图像中哪些区域应该被融合。掩码图像必须是单通道的、与源图像尺寸相同的灰度图像。通常,白色区域表示要融合的部分,黑色区域表示不融合的部分。
  • center:一个二元组 (x, y),表示源图像在目标图像中的放置位置。
  • flags:一个标志参数,控制克隆的方式。

flags主要分为三种克隆方式:

1.cv2.NORMAL_CLONE

这种克隆方式表示进行常规的图像克隆,即将源图像的一部分融合到目标图像上,使得融合边缘平滑且无缝。在这种克隆方式下,函数会尽可能地保持源图像和目标图像之间的一致性,以使得融合后的图像看起来更加自然。该方法对于一般的图像融合任务通常是合适的选择。

2.cv2.MIXED_CLONE

混合克隆在处理具有半透明区域的图像时效果更好,因为它考虑了源图像的透明度信息。在混合克隆中,源图像的每个像素都以一种混合的方式与目标图像对应位置的像素相结合。这个混合考虑了源图像中像素的颜色、透明度以及目标图像中对应位置的像素颜色。这种方法使得融合的边缘更加平滑,可以更好地处理半透明和半不透明的图像区域。

3.cv2.MONOCHROME_TRANSFER

用于指定单色传输的方式。单色传输主要用于处理单通道图像的克隆,例如灰度图像。在单色传输中,源图像的单通道信息(例如亮度)被传输到目标图像的相应位置。这种方式通常用于确保源图像的强度信息在融合后得到保留。当使用到灰色图像(三通道)的时候,可以优先考虑此克隆方式

 注意:此方法只接受三通道的图片


示例代码: 

import cv2
import numpy as np

im = cv2.imdecode(np.fromfile(r'C:\Users\xiaoou\Desktop\picture/logo.jpg',dtype=np.uint8), cv2.IMREAD_COLOR)
obj = cv2.imdecode(np.fromfile(r'C:\Users\xiaoou\Desktop\picture/baicaoshi.png',dtype=np.uint8), cv2.IMREAD_COLOR)
im = cv2.resize(im,(516,516))
obj = cv2.resize(obj,(256,64))
mask = 255 * np.ones(obj.shape,obj.dtype)#掩码,表示所有位置都可以被融合
width, height, channel = im.shape
center = (int(height/2), int(width/2))
#正常克隆方式
normal_clone = cv2.seamlessClone(obj,im,mask,center,cv2.NORMAL_CLONE)
cv2.imshow('normal_clone',normal_clone)
cv2.waitKey(0)

#混合克隆方式
mix_clone = cv2.seamlessClone(obj,im,mask,center,cv2.MIXED_CLONE)
cv2.imshow('mix_clone',mix_clone)
cv2.waitKey(0)

im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
obj = cv2.cvtColor(obj, cv2.COLOR_BGR2GRAY)
im = cv2.merge((im, im, im))
obj = cv2.merge((obj, obj, obj))#将多个单通道的图像合并成一个多通道的图像

#单色混合方式
MONO_clone = cv2.seamlessClone(obj,im,mask,center,cv2.MONOCHROME_TRANSFER)
cv2.imshow('MONO_clone',MONO_clone)
cv2.waitKey(0)

效果演示:

 

 

个人认为第二种方法较好,考虑的方面较多,今天这个实验可能相对来说限制较大,因为需要输入融合图像的中心位置,对于很多情况都是很难知道真正融合的位置的中心位置。 

本次实验展示了图像融合(图像克隆)功能,官方文档请看OpenCV: OpenCV Tutorials

如有错误或遗漏,希望小伙伴批评指正!!!! 

希望这篇博客对你有帮助!!!!

 实验三:Opencv实验合集——实验三:背景减除-CSDN博客

 实验四:Opencv实验合集——实验五:高动态范围-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1323863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同义词替换器降低论文重复率的最新技术动态

大家好,今天来聊聊同义词替换器降低论文重复率的最新技术动态,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:同义词替换器降低论文重复率的最…

Jmeter的接口测试详细步骤并实现业务闭环

一、首先是了解Jmeter接口测试用到的组件 1、测试计划:Jmeter的起点和容器2、线程组:代表一定的虚拟用户3、取样器:发送请求的最小单元4、逻辑控制器:控制组件的执行顺序5、前置处理器:在请求之前的操作6、后置处理器…

SOME/IP SubscriberEventGroup

1 SOME/IP SubscriberEventGroup SubscriberEventGroup是SOME/IP中的一种服务发现和注册的消息类型,它用于让服务使用者订阅服务提供者的事件组。 事件组是一种将服务的方法和字段分组的方式,它可以让服务使用者只接收感兴趣的数据,而不是所有的数据。 SubscriberEventGrou…

接口测试 — 8.接口测试的认证

1、接口的安全机制 一般在实际项目的接口开发中,接口的安全机制是绕不开的一个话题。不管是自己内部使用的接口也好,还是给第三方使用的接口也好。如果毫无限制的给任何人调用,那么必然会带来诸多安全问题。 例如:重要数据泄密&…

node.js mongoose schemaTypes

目录 官方文档 简介 SchemaType 示例 配置SchemaType规则 通用规则 特定schemaType规则 String Number Date Map monggose会根据shcemaType将文档值转换成指定的类型 官方文档 Mongoose v8.0.3: SchemaTypes 简介 SchemaTypes是在使用Mongoose时,用于…

Oracle定时任务的创建与禁用/删除

在开始操作之前,先从三W开始,即我常说的what 是什么;why 为什么使用;how 如何使用。 一、Oracle定时器是什么 Oracle定时器是一种用于在特定时间执行任务或存储过程的工具,可以根据需求设置不同的时间段和频率来执行…

基于EasyDarwin、ffmpeg实现rtsp推流

目录 1 安装EasyDarwin 2 编译安装ffmpeg 3 启动EasyDarwin 4 ffmepg推流 5 百度网盘备份 某项目中测试时需要用到推流,于是用EasyDarwin、ffmpeg实现了RTSP推流,简单记录下过程, 1 安装EasyDarwin 这个可以去官网下载:Eas…

【openwrt学习笔记】IPV6 ND协议学习和socket编程

目录 一、参考链接二、学习目标三、代码解析3.1 仅解析NA报文保存设备mac和ipv6地址信息3.1.1 open_ns_socket3.1.2 recv_ns_pack 3.2 解析NA和NS报文中DAD报文保存设备mac和ipv6地址信息3.2.1 open_ns_na_socket3.2.2 recv_ns_na_pack 四、代码优化4.1 BPF参考学习资料4.2 代码…

DSSAT作物模型建模方法与进阶基于Python语言快速批量运行DSSAT模型及交叉融合、扩展应用技术应用

随着数字农业和智慧农业的发展,基于过程的作物生长模型(Process-based Crop Growth Simulation Model)在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农业碳中和、农田固碳减排等领域扮演着越来越重要的作用。Decisi…

跨境卖家必看!TikTok带货经验分享,TikTok直播带货怎么做?

如今直播带货正发展得如火如荼,不少跨境人也纷纷做起了带货,其中TikTok带货的力量不容小觑,也已经成为了跨境电商运营非常火爆的营销方式,有很多朋友问龙哥TikTok带货怎么做,其实以龙哥这么多年的经验来看,…

智能物联网汽车3d虚拟漫游展示增强消费者对品牌的认同感和归属感

汽车3D虚拟展示系统是一种基于web3D开发建模和VR虚拟现实技术制作的360度立体化三维汽车全景展示。它通过计算机1:1模拟真实的汽车外观、内饰和驾驶体验,让消费者在购车前就能够更加深入地了解车辆的性能、特点和设计风格。 华锐视点云展平台是一个专业的三维虚拟展…

JRT打印元素绘制协议整合PDF

打印不光要能打印内部的单据,对于检验的打印还有外送回传的PDF报告也需要能够打印,所以需要把打印PDF文件整合进来,为此给打印元素绘制协议增加PDF类型的元素。 定义如下,由绘制协议按地址下载文件后和其他打印元素整合&#xff…

【BEV感知】BEVFormer 融合多视角图形的空间特征和时序特征 ECCV 2022

前言 本文分享BEV感知方案中,具有代表性的方法:BEVFormer。 它基于Deformable Attention,实现了一种融合多视角相机空间特征和时序特征的端到端框架,适用于多种自动驾驶感知任务。 主要由3个关键模块组成: BEV Que…

14 v-model绑定输入框

概述 v-model用于实现双向数据绑定,使用v-model绑定输入框是Vue3中最常见的用法之一。 比如,在制作登录界面的时候,我们会使用v-model绑定用户名和密码,这里的用户名和密码都是输入框。 基本用法 我们创建src/components/Demo…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现

一.项目介绍 基于SpringBootVue 电影院订票管理系统 分为前端和后端。 前端(用户): 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票(需选择影院座位)、看过(评论…

接口测试和测试用例分析

只要有软件产品的公司百分之九十以上都会做接口测试,要做接口测试的公司那是少不了接口测试工程师的,接口测试工程师相对于其他的职位又比较轻松并且容易胜任。如果你想从事接口测试的工作那就少不了对接口进行分析,同时也会对测试用例进行研…

error while writing to output stream

unable to start device cairo_pdf 报错一般2种原因: 1.文件路径错误 2. 有其他软件打开文件导致不能写入

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(三)FEEMD

往期精彩内容: 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测(三)EMD-LSTM-Attention模型-CSDN博客 风速预测(四&#xf…