[C#]使用深度学习算法opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像

本文主要是介绍[C#]使用深度学习算法opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【论文地址】

https://arxiv.org/abs/2301.01661

【训练源码】

https://github.com/KangLiao929/RecRecNet

【参考源码】

https://github.com/hpc203/recrecnet-opencv-dnn

【算法介绍】

广角镜头在VR技术中显示出诱人的应用,但它会在捕获的图像中引入严重的径向失真。为了恢复逼真的场景,之前的工作致力于校正广角图像的内容。然而,这种校正解决方案不可避免地会扭曲图像边界,从而改变相关的几何分布并误导当前的视觉感知模型。在这项工作中,我们通过贡献一种新的学习模型,即矩形校正网络(RecRecNet),探索在内容和边界上构建双赢的表示。特别地,我们提出了一种薄板样条(TPS)模块来描述图像的矩形化非线性非刚性变换。通过学习校正图像上的控制点,我们的模型可以灵活地将源结构扭曲到目标域,实现端到端的无监督变形。为了减轻结构近似问题的复杂性,我们激励我们的RecRecNet通过基于自由度(DoF)的课程学习来学习渐进变形规则。通过增加每个课程阶段的自由度,即从相似性变换(4-DoF)到单应性变换(8-DoF),网络能够研究更详细的变形,从而在最终的矩形化任务上实现快速收敛。实验表明,我们的解决方案在定量和定性评估方面都优于比较方法。

问题
给定一个校正的广角图像,RecRecNet旨在从校正技术的角度在图像内容和边界上构建双赢表示。

特点
首次实现大视野(FoV)视觉的双赢表示
提出了一个薄板样条(TPS)运动模块,以灵活地形成非线性非刚性校正变换
设计了一种基于DoF的课程学习,以掌握渐进变形规则并减轻复杂结构近似的负担
深入分析了为什么变形的图像边界会显著影响视觉感知模型

【界面展示】 

【效果展示】

【部分实现代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;namespace FIRC
{public partial class Form1 : Form{Mat src = new Mat();RecRecNet net=new RecRecNet();public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";openFileDialog.RestoreDirectory = true;openFileDialog.Multiselect = false;if (openFileDialog.ShowDialog() == DialogResult.OK){src = Cv2.ImRead(openFileDialog.FileName);pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);}}private void button2_Click(object sender, EventArgs e){if(pictureBox1.Image==null){return;}var resultMat = net.Inference(src);pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap}private void Form1_Load(object sender, EventArgs e){net.LoadWeights(Application.StartupPath+ "\\weights\\model_deploy.onnx");}private void button3_Click(object sender, EventArgs e){}}
}

 【测试环境】

vs2019

netframeowrk==4.7.2

opencvsharp==4.8.0

【视频演示】

C#使用opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像_哔哩哔哩_bilibili【测试环境】vs2019netframeowrk==4.7.2opencvsharp==4.8.0更多信息参考博文:https://blog.csdn.net/FL1623863129/article/details/139760635, 视频播放量 0、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:C#使用onnxruntime部署Detic检测2万1千种类别的物体,yolov5最新版onnx部署Android安卓ncnn,C#使用纯opencvsharp部署yolov8-onnx图像分类模型,图像二值化工具使用教程,OpenCvSharp利用微信二维码引擎实现二维码识别,C# winform使用纯opencvsharp部署yolox-onnx模型,C# winform YOLO区域入侵检测任意形状区域绘制射线算法实现演示,我在B站上大学!【完整版-麻省理工-微积分重点】全18讲!学数学不看的微积分课程,看完顺滑一整年。_人工智能数学基础/机器学习/微积分/麻省理工/高等数学,C#使用dlibdotnet实现人脸检测人脸对齐特征点检测人脸对比facemesh等功能,👴一定是天才 6.1icon-default.png?t=N7T8https://www.bilibili.com/video/BV1zJ4m1u7VZ/

【源码下载】

https://download.csdn.net/download/FL1623863129/89448917

这篇关于[C#]使用深度学习算法opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074531

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W