C# CvDnn部署CoupledTPS实现旋转图像矫正

💡 原文中文,约10600字,阅读约需26分钟。
📝

内容提要

该文章介绍了一个名为TPAMI2024的半监督耦合薄板样条模型,用于旋转校正等任务。文章提供了代码实现和模型信息。代码使用了VS2022、.net framework 4.8和OpenCvSharp 4.8。

🔎

延伸解读

模型架构与输入输出解析

文章详细说明了CoupledTPS模型由两个ONNX模型组成:feature_extractor.onnx和regressnet.onnx。特征提取器输入为Float[1,3,384,512]的图像张量,输出Float[1,256,24,32]的特征图;回归网络输入该特征图,输出Float[1,7,9,2]的网格运动参数。这种设计将特征提取与网格回归分离,便于在C#中通过OpenCvSharp的DNN模块分别加载和推理。

迭代推理与图像矫正流程

在CoupledTPS_RotationNet.cs的detect方法中,模型通过iter_num控制迭代次数(示例中为3)。每次迭代利用回归网络预测网格运动,结合预计算的薄板样条变换矩阵生成流场,并通过grid_sample进行特征或图像变形。迭代过程中,流场会累积并用于更新特征,最终将原始输入图像根据最终流场矫正,输出旋转校正后的图像。

C#部署环境与依赖

项目使用VS2022、.NET Framework 4.8和OpenCvSharp 4.8进行开发。OpenCvSharp提供了CvDnn模块用于加载ONNX模型,并支持BlobFromImage、Forward等推理接口。此外,代码中使用了unsafe指针操作和自定义的tps2flow、grid_sample等辅助类,这些类未在文章中给出,但可从参考的GitHub仓库获取。

实际应用与性能考量

Form1.cs实现了图像加载、推理和保存的完整界面流程。推理耗时通过DateTime计算并显示在文本框中,便于评估性能。由于模型输入固定为384x512,输入图像会被缩放,可能影响矫正精度。迭代次数iter_num可调整,但增加迭代会提升计算量。保存功能支持多种图像格式,方便结果导出。

❓

Q&A

TPAMI2024模型的主要功能是什么?

TPAMI2024模型主要用于旋转校正等任务。

该模型使用了哪些技术栈?

该模型使用了VS2022、.NET Framework 4.8和OpenCvSharp 4.8。

TPAMI2024模型的输入和输出是什么格式?

模型输入为Float[1, 3, 384, 512],输出为Float[1, 256, 24, 32]。

如何在项目中实现图像加载和处理?

在Form1.cs中实现了图像加载、处理和保存功能。

CoupledTPS_RotationNet类的主要作用是什么?

CoupledTPS_RotationNet类实现了模型的前向推理过程,包括特征提取和网格运动回归。

如何保存处理后的图像?

使用SaveFileDialog选择保存路径和格式,然后调用Bitmap的Save方法保存图像。

🏷️

标签

➡️

继续阅读