当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:针对分布式孔径数字全息系统要求保密性高,数据量大等特点,文中设计了基于C++语言与OpenCV函数库的三孔径数字成像系统软件。软件首先对各孔径间装配导致的再现像缩放、旋转误差进行校正,然后进行孔径综合,并通过微软基础类库进行人机界面的编写。

引 言

基于数字全息探测的分布式孔径综合成像技术是一种先 进的主动成像技术 [1],能够在低照度、复杂背景条件下获取 远距离景物的高分辨率三维图像 [2,3],具有模块化、可靠性 高等优点。该成像体制采用多个子孔径对目标进行全息探测, 然后将各子孔径上的目标光复振幅根据其空间位置综合起来, 从而获得较大的数值孔径 [4,5]。

在分布式孔径各孔径间记录时会因为 CCD 记录的位置、 角度、焦点等不同造成子孔径间全息图间存在位移、缩放、旋 转等误差。根据参考文献 [6] 知,全息图间放大率误差等于 各自重构出的物体图像间尺度误差的倒数。而重构图像间的 旋转、尺度误差可通过图像配准的方式得到 [6]。重构图像间 的误差可以利用图像处理技术来标定。SURF[7](Speeded Up Robust Features,SURF)算法是一种基于特征点匹配的图像 拼接算法。可以处理两幅图像间的位移、缩放、旋转等变化 情况下的特征匹配问题,具有匹配性能稳定、速度快等优点 [8]。

由于国内大多数分布式孔径数字全息系统还停留在实验 室阶段,尚未有成型的产品。而当前的软件产品源代码保密性 高,调用的函数库较多,消耗了大量系统资源,且设备驱动繁琐, 导致在实际应用中结合本系统特点进行二次开发和应用的难 度较大,限制环节较多。所以,自主开发具有校装配误差的 数字全息系统十分必要。C++ 语言具有高效、支持继承和重 用等特点 [9],所以本系统可通过 MFC(Microsoft Foundation Classes,MFC)与 C++ 编程进行人机界面的展示。

1 分布式孔径数字全息

分布式孔径综合成像系统示意图如图 1 所示。激光器发 射出的相干光束被分为两束,一束光作为物光射向目标物体, 再由物体反射回光电探测器 ;另一束光作为参考光再次分束 直接照向各子孔径光电探测器。子孔径内的光电探测器分别 记录参考光与物光的干涉信号 [10]。在数字信号处理器中,首 先利用傅立叶变换等方法从干涉信号中分别复原出子孔径探测 器上的目标,返回光复振幅,然后利用菲涅耳衍射公式计算出 各子孔径入瞳面上的目标光复振幅 Ui(x,y),最后按照子孔径 空间位置对 Ui(x,y)进行综合,并通过菲涅耳衍射公式计算 出目标平面上的光复振幅。

基于C++语言与OpenCV的分布式孔径成像系统设计

在实际系统中,由于装配误差会影响孔径综合的效果, 所以本系统对孔径综合算法进行了误差校正,程序流程如图 2 所示。

在重建像中选取一幅作为参考图像,分别与其他重建像 进行 SURF 算法缩放、位移误差计算。目标光复振幅旋转误差对应重建像相应的旋转,目标光复振幅缩放误差对应重建 像缩放误差的倒数。对目标光复振幅矩阵做相应旋转、缩放 的坐标变换进行校正。最后,将各子孔径校正后的目标光复 振幅进行叠加、重建,即得到高分辨率的三孔径成像。

基于C++语言与OpenCV的分布式孔径成像系统设计

2 分布式孔径数字全息处理系统

2.1 分布式孔径系统数据采集系统

建立图 3 所示的模拟分布式孔径系统数据采集系统。激 光器的出射光束经过准直和扩束后由分束镜分为两路,一路照 向目标光作为物光,另外一路作为本地参考光。CCD 记录目 标散射光和参考光形成的离轴全息图。激光器波长为 635 nm, CCD 像素数为 1 300×1 024,每个像素大小为 4.65 μm,目标 与 CCD 的距离约为 1.03 m,目标是一枚直径为 0.25 m 的金属 币。通过多次数据采集模拟多个孔径,并人为地将 CCD 分别 旋转至-15°、0°、+15°来模拟 3 个孔径的装配误差,如图 4 所示。

基于C++语言与OpenCV的分布式孔径成像系统设计

2.2 基于 C++ 语言与 OpenCV 的软件设计

C++不仅拥有计算机高效运行的实用性特征,同时还能 提高大规模程序的编程质量与程序设计语言的问题描述能力。 OpenCV 是一个集成好的机器视觉函数库,由 C++ 语言编写, 其主要接口也采用 C++ 语言编写。因此,三孔径数字全息系 统软件由 C++ 语言编写,并利用 OpenCV 函数库进行 SURF 算法编程,对各孔径间缩放、旋转误差进行校正。软件主要 包括数据重建、误差配准、目标光复振幅校正、孔径综合等 模块。

(1)数据重建模块是对各目标光复振幅根据式(1)进行 的图像重建 ;

(2)误差配准模块通过 SURF 算法对两幅重建图像进行 误差配准 ;

(3)目标光复振幅校正模块用配准得到的误差对目标光 复振幅进行误差校正;

(4)孔径综合模块是对各孔径校正后的目标光复振幅进 行叠加,并重建。

其中,用于误差配准的 SURF 算法和目标光重建模块的坐标 变换利用 OpenCV 函数库进行。

2.3 基于 MFC 平台的人机界面搭建

MFC 是微软基础类库的简称,是微软公司实现的一个 C++ 类库,封装了大部分 Windows API 函数。VC++ 是微软 公司开发的 C/C++ 集成开发环境,灵活性较大。所以本系统 采用图 5 所示的基于 MFC 的人机界面。


基于C++语言与OpenCV的分布式孔径成像系统设计

 

图 5 中,左侧三个 rebulid 按钮分别调用数据重建模块 来对各子孔径进行图像重建,并显示在按钮上的图像控件上。 中间两个按钮用来调用误差配准模块,以中间再现像为标准图 像,分别对上侧再现像和下侧再现像进行 SURF 算法图像校正, 并将校正后的图像显示在按钮上的图像控件中,分别将角度 误差、横向缩放误差、纵向缩放误差显示在按钮下方的 edit 控件中。最右侧按钮则通过目标光伏振幅模块将各孔径目标光 复振幅进行校正,之后利用孔径综合模块进行孔径综合并再 现综合成像,将成像结果显示在按钮上的图像控件上。

3 结 语

文中自主设计了基于 C++ 语言的分布式孔径数字成像系 统,利用 OpenCV 函数库对各孔径间的误差进行配准并矫正, 同时还编写了基于 MFC 的人机界面。运行结果说明,本系统 可以很好地矫正孔径间的误差,提高综合成像质量,并进行直 观展示。




本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

高性能计算领域,分支预测失败导致的流水线清空是现代CPU的致命弱点。当处理器遇到条件分支时,其分支预测单元会基于历史数据猜测执行路径,若预测错误将导致20-40个时钟周期的浪费。无分支编程技术通过消除条件跳转指令,使代码...

关键字: C C++ 基准

在资源受限的嵌入式系统中,C++继承机制常被视为"奢侈特性",但合理运用可显著提升代码复用性与可维护性。本文从嵌入式开发特性出发,解析继承机制的最佳应用场景与实践准则。

关键字: C++ 嵌入式开发

在大型C/C++项目开发中,头文件依赖管理是决定编译效率与代码可维护性的关键因素。不当的头文件组织会导致编译时间指数级增长、隐藏的编译错误,甚至破坏模块间的隔离性。本文通过分析典型问题,提出有效的依赖管理策略与编译隔离方...

关键字: 模块化设计 头文件 编译隔离 C++

在面向对象程序设计领域,设计模式是解决特定问题的经典方案。桥接模式(Bridge Pattern)作为一种结构型设计模式,其核心思想是将抽象部分与实现部分分离,使两者可以独立变化。这种分离机制在系统需要同时应对多个维度的...

关键字: C++ 桥接模式

北京2025年11月27日 /美通社/ -- 秉承"全球专家、卓越智慧"的理念,由 CSDN 与奇点智能研究院举办的「2025 全球 C++ 及系统软件技术大会」将于 12 月 12-13 日在北京金隅喜来登大酒店正式举...

关键字: 系统软件 C++ AI ST

因此,我们可以在米尔RK3576开发板上运行opencv代码,来完成一些视觉内容,充分发挥该板的性能。要先编译opencv需要一些预先的准备工作首先更新软件包并安装必要的依赖:

关键字: 开发板 OpenCV

本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志 T527开发板)的OpenCV行人检测方案测试。

关键字: 开发板 OpenCV 工业机器人

这一次,我们将在Vitis HLS 2022.2和PYNQ-Z2 HDMI用法- 2:HDMI Passthrough中结合构建和安装OpenCV来执行实时索贝尔滤波器图像处理。

关键字: 索贝尔滤波器 OpenCV HDMI
关闭