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

【图像配准】Canny边缘检测+模板配准红外可见光双路数据

研究目的

最近在做无人机遥感红外和可见光双路数据配准,由于红外相机视野范围较小,因此配准的目的主要是在可见光的视野范围内,裁剪出红外图像对应的部分,同时,保持可见光的高分辨率不变。

本文思路

本文尝试使用Canny边缘检测提取红外和可见光的边缘特征,然后使用模板匹配的方式去进行配准。由于红外图像和可见光图像的分辨率并不相同,因此需要对可见光不断进行下采样,以接近红外图像的分辨率。

总体看来,使用传统方法做跨模态配准效果有限,主要是由于红外图像特征较少,不过在光照充足和建筑特征明显的情况下,有一定效果,后续会采用基于深度学习的配准方法,相关图片由于项目原因不对外公布,这里对代码进行归档。

实验代码

import numpy as np
import argparse
import cv2
import osif __name__ == '__main__':ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=False, default=r"lr/Infrared.jpg", help="红外图像路径")ap.add_argument("-v", "--visualize", required=False, default=r"rgb/Zoom.jpg", help="可见光图像路径")ap.add_argument("-o", "--output", required=False, default=r"output", help="输出文件夹路径")args = vars(ap.parse_args())# 读取红外图像/灰度化/边缘检测template = cv2.imread(args["image"])template = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)template = cv2.Canny(template, 50, 200)(tH, tW) = template.shape[:2]# 读取可见光图像image = cv2.imread(args["visualize"])# image = cv2.resize(image, (tW, tH))gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)found = Nonefor scale in np.linspace(0.2, 1.0, 20)[::-1]:# 多尺度缩小可见光图像resized = cv2.resize(gray, (int(gray.shape[1] * scale), int(gray.shape[0] * scale)))r = gray.shape[1] / float(resized.shape[1])# 若缩小的尺度小于红外图像尺寸,跳出循环if resized.shape[0] < tH or resized.shape[1] < tW:break# 对缩小之后的图像进行边缘检测edged = cv2.Canny(resized, 50, 200)'''cv2.matchTemplate  模板匹配:param 检测图像 模板 模板匹配方法:returns 相似度结果矩阵:(宽: image.shape[1]-template.shape[1]+1; 高:image.shape[0]-template.shape[0]+1)'''result = cv2.matchTemplate(edged, template, cv2.TM_CCOEFF)# print("edged_shape:{}".format(edged.shape))  # (3888, 5184)# print("template_shape:{}".format(template.shape))  # (512, 640)# print("result_shape:{}".format(result.shape))  # (3377, 4545)# 查找模板中最大相似度值和位置_, maxVal, _, maxLoc = cv2.minMaxLoc(result)# 可选:查看匹配图范围# clone = np.dstack([edged, edged, edged])# clone = edged# cv2.rectangle(clone, (maxLoc[0], maxLoc[1]), (maxLoc[0] + tW, maxLoc[1] + tH), (0, 0, 255), 2)# cv2.imwrite(os.path.join(args["output"], "Visualize", "visualize.jpg"), clone)# 若在裁剪区域找到相似度更高的匹配点,更新foundif found is None or maxVal > found[0]:found = (maxVal, maxLoc, r)# 得到匹配度最高的矩阵框坐标_, maxLoc, r = found(startX, startY) = (int(maxLoc[0] * r), int(maxLoc[1] * r))(endX, endY) = (int((maxLoc[0] + tW) * r), int((maxLoc[1] + tH) * r))# cv2.rectangle(image, (startX, startY), (endX, endY), (0, 0, 255), 2)crop_img = image[startY:endY, startX:endX]# cv2.imshow("Image", image)# cv2.imshow("Crop Image", crop_img)# cv2.waitKey(0)thermal_image = cv2.imread(args["image"], cv2.IMREAD_COLOR)# cropping out the matched part of the thermal imagecrop_img = cv2.resize(crop_img, (thermal_image.shape[1], thermal_image.shape[0]))# 创建输出文件夹存储裁剪后的可见光影像if not os.path.exists(os.path.join(args["output"], "process")):os.mkdir(os.path.join(args["output"], "process"))# 保存图片cv2.imwrite(os.path.join(args["output"], "process", os.path.basename(args["visualize"])), crop_img)# 创建对比图像final = np.concatenate((crop_img, thermal_image), axis=1)if not os.path.exists(os.path.join(args["output"], "results")):os.mkdir(os.path.join(args["output"], "results"))cv2.imwrite(os.path.join(args["output"], "results", os.path.basename(args["visualize"])), final)

相关文章:

【图像配准】Canny边缘检测+模板配准红外可见光双路数据

研究目的 最近在做无人机遥感红外和可见光双路数据配准&#xff0c;由于红外相机视野范围较小&#xff0c;因此配准的目的主要是在可见光的视野范围内&#xff0c;裁剪出红外图像对应的部分&#xff0c;同时&#xff0c;保持可见光的高分辨率不变。 本文思路 本文尝试使用Ca…...

关于单机流程编排技术——docker compose安装使用的问题

最近在学习docker相关的东西&#xff0c;当我在docker上部署了一个nest应用&#xff0c;其中该应用中依赖了一个基于mysql镜像的容器&#xff0c;一个基于redis镜像的容器。那我&#xff0c;当我进行部署上线时&#xff0c;在启动nest容器时&#xff0c;必须保证redis容器和mys…...

Google Chrome的新“IP保护”功能将隐藏用户的IP地址

导语&#xff1a;在保护用户隐私方面&#xff0c;Google Chrome正在测试一项名为“IP保护”的新功能。通过使用代理服务器掩盖用户的IP地址&#xff0c;这项功能能够增强用户的隐私保护。在意识到IP地址可能被用于秘密追踪后&#xff0c;Google希望在确保用户隐私的同时&#x…...

做机器视觉工程师,苏州德创能不能去工作?

每一家公司都有自身特点&#xff0c;同时也每一家都有自身的bug。 苏州德创作为美国康耐视Cognex产品在华东最大的代理商&#xff0c;也是康耐视外包团队。那么苏州德创有哪些业务构成&#xff0c;业务的构成也是其招聘的主要人员的方向。 设备视觉供应商&#xff0c;如卓越&…...

交换机基础(二):VLAN 基础知识

一、VLAN 基础知识 虚拟局域网 (Virtual Local Area Network,VLAN) 是一种将局域网设 备从逻辑上划分成一个个网段&#xff0c;从而实现虚拟工作组的数据交换技术。 这一技术主要应用于3层交换机和路由器中&#xff0c;但主流应用还是在3层交换机中。 VLAN 是基于物理网络上构建…...

一个基于Vue3搭建的低代码数据可视化开发平台

JNPF是一个Vue3搭建的低代码数据可视化开发平台&#xff0c;将图表或页面元素封装为基础组件&#xff0c;无需编写代码即可完成业务需求。 在JNPF中&#xff0c;至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端UI等组件&#xff0c;这种情况下我们避免了重…...

经验风险最小化与结构风险最小化:优化机器学习模型的两种方法

随着大数据时代的到来&#xff0c;机器学习在各个领域中的应用越来越广泛。然而&#xff0c;在构建机器学习模型时&#xff0c;我们面临着两个主要的挑战&#xff1a;经验风险最小化和结构风险最小化。本文将深入探讨这两种方法&#xff0c;并分析它们在优化机器学习模型中的作…...

Java泛型中的问号是什么意思

通配符概念 因为 List 是泛型类&#xff0c;为了 表示各种泛型 List 的父类&#xff0c;可以使用类型通配符&#xff0c;类型通配符使用问号(?)表示&#xff0c;将一个问号当做类型元素传递个 List&#xff0c;可以表示为 List<?>,意思是 元素类型未知的 List&#xf…...

粤嵌实训医疗项目day02(Vue + SpringBoot)

目录 一、创建vue项目并运行 二、vue-cli中的路由使用 三、element-ui框架、实现页面布局以及vue-路由 四、前端登录页面 五、user登录后端接口完善【后端】 六、user登录前端-请求工具-请求发起【前端】 七、请求的跨域-访问策略 八、完善项目的页面布局、导航菜单以及…...

又是一年1024程序员日

程序员节是每年的10月24日&#xff0c;这是一个特殊的节日&#xff0c;旨在庆祝和表彰程序员们对科技和社会的贡献。作为技术领域的从业者&#xff0c;程序员们在现代社会中扮演着重要的角色&#xff0c;他们致力于编写、测试和维护软件代码&#xff0c;为我们的生活带来了无数…...

acme.sh签发和部署ZeroSSL泛域名证书

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 介绍 acme.sh 是个开源的shell证书生成脚本&#xff0c;他可以自动生成Let’s Encrypt 的证书…...

Calibre拾遗:FDI (Foreign Database Interface)系统简介

Calibre是强大的GDS处理工具&#xff0c;包括查看&#xff0c;验证&#xff0c;分析等操作&#xff0c;操作由浅入深&#xff0c;除过手动编辑GDS的不是很灵活外&#xff0c;其他各种命令和操作策略&#xff0c;都是远&#xff08;遥&#xff09;远&#xff08;遥&#xff09;走…...

记一次渗透测试事件

一、漏洞发现 拿到登录的接口&#xff0c;丢到sqlmap里面跑一把&#xff0c;发现延时注入 进一步查询&#xff0c;发现是sa权限&#xff0c;直接os-shell whomai查询发现是管理员权限 os-shell执行命令太慢了&#xff0c;直接进行nc 反弹 执行base64 加密后的powershell命令&…...

AIGC笔记--基于DDPM实现图片生成

目录 1--扩散模型 2--训练过程 3--损失函数 4--生成过程 5--参考 1--扩散模型 完整代码&#xff1a;ljf69/DDPM 扩散模型包含两个过程&#xff0c;前向扩散过程和反向生成过程。 前向扩散过程对一张图像逐渐添加高斯噪声&#xff0c;直至图像变为随机噪声。 反向生成过程…...

三十七、【进阶】SQL的explain

1、explain 2、基础使用 在使用explain关键字时&#xff0c;只需要在所执行语句前加上explain即可 mysql> explain select * from stu where id3; ---------------------------------------------------------------------------------------------------------- | id | s…...

【Python】取火柴小游戏(巴什博弈)

火柴游戏&#xff1a;Python编程示例 当我们想要玩一个简单而有趣的游戏&#xff0c;同时又想锻炼自己的编程技能时&#xff0c;一个经典的选择就是火柴游戏。这个游戏的规则很简单&#xff1a;有一堆火柴&#xff0c;每次可以拿走1到6根&#xff0c;两名玩家轮流取火柴&#…...

030-第三代软件开发-密码输入框

第三代软件开发-密码输入框 文章目录 第三代软件开发-密码输入框项目介绍密码输入框总结一下 关键字&#xff1a; Qt、 Qml、 echoMode、 TextInput、 Image 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language…...

mysql读取文件

环境地址&#xff1a;phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞 | VULNSPY 参考文章&#xff1a; mysql任意文件读取漏洞学习_BerL1n的博客-CSDN博客 从一道ctf题学习mysql任意文件读取漏洞 - 安全客&#xff0c;安全资讯平台 MYSQL 任意文件读取 小组CTF出题感想 - …...

CentOS(5)——rpm包和源码包区别

目录 一、简介 二、区别 ①包名称 ②概念 ③优缺点 ④安装位置的区别 ⑤安装位置不同带来的影响 ⑥卸载方式的不同 一、简介 最近在公司内网离线升级Git时&#xff0c;遇见两个概念&#xff0c;分别是使用rpm包安装git&#xff0c;另一个这是编译源码包安装git&#x…...

Golang 实现对配置文件加密

引言 在实际的应用中&#xff0c;配置文件通常包含了一些敏感的信息&#xff0c;如数据库密码、API密钥等。为了保护这些敏感信息不被恶意获取&#xff0c;我们可以对配置文件进行加密。本文将介绍如何使用Go语言实现对配置文件的加密。 场景 在这个场景中&#xff0c;我们将…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...