APP下载

基于ASP.NET的全景激光测绘系统设计

2018-06-13马华泽张宗达于永江

吉林大学学报(信息科学版) 2018年3期
关键词:树莓画布全景

马华泽, 张宗达, 于永江, 杨 罕

(吉林大学 电子科学与工程学院, 长春 130012)

0 引 言

当前, 测绘行业以互联网作为载体高速发展, 激光测绘技术成为继GPS(Global Positioning System)后最重要的测绘手段[1]。由于激光测绘能满足高精确度的测量要求、 在无光等苛刻复杂环境条件中表现出色, 已经成为高效快速的主流测绘手段, 有极其广泛的应用前景。但是, 激光测绘在建模等方面具有应用范围较小、 激光设备的使用对操控人员要求高等缺点[2]。为解决上述问题, 笔者设计了基于ASP.NET的全景激光测绘系统。该系统能将全景图片和空间测绘联系起来, 将全景图片与空间数据图、 数据点相结合, 弥补了传统激光测绘测量方法较单一的不足, 为使用者提供了直观体验和专业的、 高精度的测绘数据[3]。全景激光测绘系统是将激光测距和全景图像两种技术融合, 该系统将全景图像应用于测绘领域, 进而将全景图像与激光测绘数据点相结合完成图像与空间方位矢量点的一一对应, 实现了“有点可看, 有图可查”的功能。

1 系统总体概述

全景激光测绘系统由上位机系统和下位机系统两部分组成, 实现了对空间区域的实时化、 精度化、 图形化的空间测绘功能。用户通过在上位机上的相应操作可获得空间点间距、 局部面积、 全面积、 空间角度等测绘数据; 由下位机测量得到数据的点、 图, 通过上位机存入SQL(Structured Query Language)数据库, 系统的功能框图如图1所示。

图1 系统功能框图Fig.1 Functional block diagram of the system

图2 下位机示意图Fig.2 Lower machine diagram

全景激光测绘系统搭载在智能移动平台上。下位机控制智能移动平台旋转拍照、 视频录像和方位移动, 其示意图如图2所示。下位机主控为STM32和树莓派控制器, 上位机发送的平台移动、 拍照、 录像的控制指令由下位机的Wi-Fi模块接收, Wi-Fi模块接收数据后将数据通过串口发送至STM32控制器, 控制器解析指令控制移动平台作出回应[4]。若是平台移动指令, 则STM32主控通过控制L298N直流电机驱动器控制直流减速电机驱动移动平台前进、 左拐、 右拐和后退; 若是拍照指令, 则STM32主控则将指令发送给树莓派从控, 树莓派控制步进电机驱动器驱动步进电机旋转, 同时驱动树莓派摄像头进行旋转拍照, 拍摄的照片存放在树莓派的SD卡存储器中, 上位机可从树莓派IP地址的根目录获取图片进而存储到浏览器缓存中, 供上位机进行全景图像拼接处理时使用; 如果是录像指令则直接通过STM32主控开启前端摄像头进行录像功能。

上位机系统主要实现了接收、 存储数据, 获取全面积、 局部面积、 点间距、 空间角度、 测绘空间轮廓实时绘制、 方位角度查询和全景图片循环播放的功能。上位机程序分为数据接收程序和图形界面程序。数据接收程序使用WinForm编写, 没有图形界面, 用于接收数据和数据筛选, 并将处理好的数据存储到SQL数据库中。图形界面程序使用WebForm编写, 提取接收程序存储在SQL数据库中的距离和角度数据, 完成图形界面数据显示和图形绘制, 实现全景图像浏览和具体数据的查询与保存。

2 系统实现

2.1 开发环境搭建

本设计使用的软件编译环境为Visual Studio 2013、 Keil for ARM和putty。首先, 在VS中创建一个基于ASP.NET(Microsoft.NET Framework中用于生成动态Web应用程序和Web服务的技术)的WebForm项目工程[5]。WebForm项目工程中有3个文件: WebForm_Add.aspx类似html页面, 主要编写前段显示界面; WebForm Add.aspx.c是触发的事件, 主要负责后台事件触发和处理; WebForm_Add.aspx.Designer.cs是控件元素的声明, 窗体中局部变量可声明在.aspx中, 成员变量可声明在.aspx.cs中。其次, 再在工程文件中添加一个SQL类库, 主要负责从SQL数据库中存储、 提取数据。然后, 在Keil中建立一个ARM工程, 主要编写Wi-Fi接收程序、 各模块间的通信协议和数据回传和移动平台的驱动[6]。最后打开putty终端, 编写树莓派控制电机和树莓派摄像头的Python脚本, 完成旋转拍照功能。

2.2 激光雷达与全景拼接

2.2.1 激光雷达

图3 雷达数据传输格式示意图Fig.3 Radar data transmission format diagram

该设计使用高精度旋转激光雷达, 其扫描频率高达4 000次/s, 配合光磁融合专利技术, 可使激光雷达的使用寿命大幅度增加, 并且提高雷达的稳定性[7]。该设计中雷达的通信方式为串口通信。雷达数据传输格式如图3所示。开始扫描时, 外部控制器通过串口向雷达发送扫描请求报文,雷达接收到请求扫描报文后, 回复应答报文并进入扫描状态; 扫描开始后, 雷达控制器不断向外部发送雷达扫描数据, 数据包括1字节质量信息、 2字节角度信息和2字节距离信息, 共5个字节。其中距离信息的距离是以雷达为中心到测绘点的距离, 角度是以雷达正向放置, 正前方为0°, 顺时针0°~360°。

2.2.2 全景拼接

该设计使用SURF(Speeded-up Robust Features)图像拼接算法实现全景图片的拼接[8]。SURF算法是SIFT(Scale-Invariant Feature Transform)拼接算法的改进版, 具有更快的匹配速率, 并且该算法降低了匹配比例阀值, 所以匹配点数会相应减少, 进而更加稳定[9,10]。全景拼接主要分为4个步骤: 1) 特征点提取和匹配, 选取一幅图像与其另一幅图像中欧氏距离最近的两个点; 2) 图像配准, 将两张图像转换为同一坐标; 3) 图像拷贝, 将原始图像拷贝到配准图上; 4) 图像融合, 即去裂缝处理, 处理拼接处由于光照色泽不同造成的过渡不均, 此步处理思路是加权融合。实现全景图片拼接的部分核心代码如下。

//将图像转换为灰度图

cvtColor(imagerb,imageGray, CV_RGB2GRAY);

//获得匹配特征点提取最优配对

matcher.match(imageDescLeft,imageDescRight, matchePoints, Mat());

//获取投影矩阵并配准

Mathomo=findHomography(imagePoints1,imagePoints2,CV_RANSAC,5,inliersMask);

drawMatches(imageRgb1,keyPoint1,imageRgb2,keyPoint2,matches_ransac,secondmatches,Scalar∷all(-1), Scalar∷all(-1),vector(),DrawMatchesFlags∷NOT_DRAW_SINGLE_POINTS);

//透视变化

warpPerspective(imageRgbLeft,imageTransformLeft, adjustHomo, Size(imageRgbRight.cols+abs(scene_corners[0].x), imageRgbRight.rows));

//图像融合

imageOverlap.at〈Vec3b〉(i,j)=(1-weight)*image1ROICopy.at〈Vec3b〉(i,j)+weight*image2Overlap.

at〈Vec3b〉(i,j);ROIMat.copyTo(Mat(imageTransformLeft,Rect(abs(scene_corners[0].x)+(scene_corners[2].x), 0, ROIMat.cols,imageRgbRight.rows)));

2.3 数据库搭建

该设计使用SQL 2012数据库实现了测绘数据的提取和存储[11]。通过语句create database [delicacy]创建数据库, 通过语句create table [dbo].[data]([zizeng] [int] identity(1,1) not null,[angle] [int] null,[distance][int] null,constraint [pk_data] primary key clustered) on [primary]创建数据表。该设计共创建3张数据表, 表名分别为NEWDATA、 FLAG和DATA。第1张NEWDATA表用于存储上位机系统接收的串口数据, 串口数据包括质量信息、 角度信息和距离信息, 所以该表由Quality(质量信息)、 Angle(角度信息)、 distance(距离信息)3个字段组成。第2张FLAG表用于判断数据接收是否完成及摄像头是否进行拍照, 所以该表由ReceiveCompLeted(接收完成)、 TakePhoto(开始拍照)两个字段组成, 当NEWDATA数据表存满360个数据点后, 传值程序将数据库中FLAG表中的ReceiveCompLeted字段置为1, 若收到拍照指令则将字段TakePhoto置为1。第3张DATA表的字段组成与NEWDATA表相同, 若上位机检测到FLAG表中的ReceiveCompLeted字段置为1, 则将NEWDATA表中的360组数据一次性拷贝到DATA数据表中, 并将FLAG表中的ReceiveCompLeted字段置为0。

2.4 图形界面设计

图形界面由HTML5(Hyper Text Markup Language)、 CSS3(Cascading Style Sheet)和jQuery(辅助JavaScript开发库)3种语言编译完成, 实现了空间区域轮廓绘制、 全景图像浏览和方位数据实时显示的功能[12]。雷达图(图中蓝色区域, 测绘显示区)由3张画布层叠实现, 通过HTML5语句〈canvas id=“Canvas” width=“XXX” height=“XXX” position: relative;z-index: 层叠结构;〉〈/canvas〉实现画布的创建。3张画布分别为: 背景画布, 指针画布, 轮廓区域绘制画布。背景画布实现雷达图背景、 刻度线、 显示标签及按钮的绘制。指针画布实现雷达图中鼠标相对位置和全景图像滚动距离的一一对应。轮廓区域绘制画布实现测绘区域平面图的绘制。

通过对下位机系统传输数据的计算, 实现了雷达图中测绘轮廓图(雷达图中的白色框区)的绘制。具体过程如下: 通过jQuery语句var ctx=document.getElementById(“Canvas”).getContext(“2d”)获取画布的矢量API, 通过语句context_DrawPoint.arc(x,y,3)(x,y为在画布中的坐标, 3表示3个像素的圆半径)确定数据点在画布中的相对位置和半径。通过语句context_DrawPoint.fill()填充颜色, 完成一个数据点的绘制。依次对数据显示区的360组数据进行换算绘制, 便可绘制出完整的测绘轮廓图[13]。

使用javascript中的滚动属性实现了雷达图与全景图像的对应关系[14]。具体实现如下: 默认全景图像的0度标线对应雷达图的0度标线。当鼠标在雷达图上滑动时, 计算机通过语句e.pageX-offset.left:x坐标e.pageY-offset.top:y计算鼠标在雷达图中的相对位置。通过语句$(“.left’).scrollLeft($(“角度”).val()*PanoramaImage/360+PanoramaImage*圈数)控制全景图像进行相应滚动(滚动距离=(当前角度值/360+圈数)×图片宽度的像素值), 从而实现雷达图方位和全景图像的一一对应。同理滑动全景图片时, 雷达图中指针标线也会相应转动[15]。

图形操作界面如图4所示, 界面上半部分为全景图像显示区, 通过滑动滚动条或在雷达图中指定位置, 即可浏览测绘区域各个角度的图片信息。功能按钮包括开始按钮和刷新按钮。单击开始按钮, 图片会以每秒20像素点的速度将全景图像循环滚动显示, 同时雷达图中出现一条由原点经过鼠标位置向外辐射的直线, 与全景图片同步滚动。界面右下方为数据显示区, 第1列为角度信息, 第2列为距离信息, 对测绘数据实时进行显示。数据显示区中功能按钮包括Start(开始)、 Stop(停止)、 保存和拍照, 单击Start按钮, 传值进程(用于接收下位机传来的数据的进程)开启, 测绘系统开始工作; 单击Stop按钮, 传值进程停止, 测绘系统关闭; 单击拍照按钮, 上位机通过Wi-Fi模块给下位机发送拍照指令; 单击保存按钮, 系统保存当前测得的360组数据。界面左下方为雷达图, 该区域将下位机系统传给上位机系统的360组数据转化为雷达图中的白色框图。该区左上角有点间距、 局部面积、 获取全面积3个功能标签, 分别实现了雷达图中任意两点间距离、 局部面积(两次点击后由白色框线和两条黄线所围成的区域)和空间全面积(白色框线所围成的面积)的计算。雷达图区左下角有比例尺的放大、 缩小功能按钮, 单击放大按钮雷达图以1.5倍放大, 单击缩小按钮雷达图以1.5倍缩小, 并在右下方的白色方框中显示当前比例尺。

2.5 系统总体性能

笔者设计的基于ASP.NET的全景激光测绘系统达到的技术指标为: 激光测距分辨率为2 mm, 雷达角度分辨率为0.9°, 系统采样频率为2 000 Sa/s, 数据更新速率为360 group/s, 系统功耗为5 W。经测试, 能完成测绘半径为12 m的区域建模, 可满足在日常设计中快速定向、 定高、 测角和区域建模的工程需求。

3 结 语

基于ASP.NET的全景激光测绘系统, 集成了图形化的便捷操作界面和抗复杂环境干扰能力强的激光测距雷达, 将全景图像上的点和实际测绘数据点一一对应, 使用户在查看全景图片的同时也可查看该点真实数据, 做到了“有点可看, 有图可查”, 实现了测量点间距、 局部面积、 全面积的实时查询和浏览全景图片的功能。该设计通过实时测量、 实时建模的“边测边绘”的手段完善了传统测绘方式通常在同一时间只能得到测绘数据或者测绘图片后需要后期进行融合的不足, 实现了图片和数据的快速整合, 大大缩短了测绘周期, 节约了时间成本。

参考文献:

[1]赵燕东, 涂佳炎, 刘圣波, 等. 基于WPF的粮仓三维激光测绘系统设计与开发 [J]. 农业工程学报, 2016, 32(11): 265-269.

ZHAO Yandong, TU Jiayan, LIU Shengbo, et al. Design and Development of System for Mapping Granary on Basis of WPF 3D Application [J]. Journal of Agricultural Engineering, 2016, 32(11): 265-269.

[2]卢韶芳, 韩雪, 关馨. 基于三维标志物的虚实配准方法研究 [J]. 吉林大学学报: 信息科学版, 2017, 35(3): 288-295.

LU Shaofang, HAN Xue, GUAN Xin. Research of Virtual-Real Registration Method Based on Three-Dimensional Marker [J]. Journal of Jilin University: Information Science Edition, 2017, 35(3): 288-295.

[3]何鼎乾. 全景图像获取和显示技术研究 [D].郑州: 解放军信息工程大学地理空间信息学院, 2013.

HE Dingqian. Panoramic Image Acquisition and Display Technology Research [D]. Zhengzhou: School of Geospatial Information, PLA Information Engineering University, 2013.

[4]苏祥林, 陈文艺, 闫洒洒. 基于树莓派的物联网开放平台 [J]. 电子科技, 2015, 28(9): 35-41.

SU Xianglin, CHEN Wenyi, YAN Sasa. Open Platform for Internet of Things Based on Raspberry Pi [J]. Electronic Technology, 2015, 28(9): 35-41.

[5]仰燕兰, 金晓雪, 叶桦. ASP.NET AJAX框架研究及其在Web开发中的应用 [J]. 计算机应用与软件, 2011, 28(6): 195-198.

YANG Yanlan, JIN Xiaoxue, YE Hua. ON ASP.Net Ajax Framework and Its Application in Web Development [J]. Computer Application and Software, 2011, 28(6): 195-198.

[6]周原, 曾颖, 刘明山, 等. 基于Wi-Fi的PROFIBUS-DP无线Web接人方法 [J]. 吉林大学学报: 信息科学版, 2016, 34(4): 477-483.

ZHOU Yuan, ZENG Ying, LIU Mingshan, et al. Wireless Web Access Method for PROFIBUS-DP Based on Wi-Fi [J]. Journal of Jilin University: Information Science Edition, 2016, 34(4): 477-483.

[7]文斐. 激光雷达数据采集系统框架研究 [D].合肥: 中国科学技术大学物理电子学院, 2013.

WEN Fei. The Study of Framework of Data Acquisition System for Lidar [D]. Hefei: College of Physics Electronics, University of Science and Technology of China, 2013.

[8]宋宝森. 全景图像拼接方法研究与实现 [D].哈尔滨: 哈尔滨工程大学信息与通讯工程学院, 2012.

SONG Baosen. Panorama Image Mosaicing Research and Implementation [D]. Harbin: School of Information and Communication Engineering, Harbin Engineering University, 2012.

[9]杨海燕, 罗文超, 刘国栋. 基于SURF算法和SC-RANSAC算法的图像配准 [J]. 计算机应用研究, 2013, 30(5): 1586-1588.

YANG Haiyan, LUO Wenchao, LIU Guodong. Image Registration Based on SURF Algorithm and SC-RANSAC Algorithm [J]. Application Research of Computers, 2013, 30(5): 1586-1588.

[10]王茜, 宁纪锋, 曹宇翔, 等. 基于SIFT算法的无人机遥感图像拼接技术 [J]. 吉林大学学报: 信息科学版, 2017, 35(2): 188-197.

WANG Xi, NING Jifeng, CAO Yuxiang, et al. Matching Technologies of UAV Remote Sensing Image Based on SIFT [J]. Journal of Jilin University: Information Science Edition, 2017, 35(2): 188-197.

[11]林子雨, 杨冬青, 王腾蛟, 等. 基于关系数据库的关键字查询 [J]. 软件学报, 2010, 21(10): 2454-2476.

LIN Ziyu, YANG Dongqing, WANG Tengjiao, et al. Keyword Query Based on Relational Database [J]. Journal of Software, 2010, 21(10): 2454-2476.

[12]刘华星, 杨庚. HTML5-下一代Web开发标准研究 [J]. 计算机技术与发展, 2011, 21(8): 54-62.

LIU Huaxing, YANG Geng. HTML5-Next Generation Web Development Standard Research [J]. Computer Technology and Development, 2011, 21(8): 54-62.

[13]潘杰, 周传生. 基于jQuery框架的Web研究与实现 [J]. 沈阳师范大学学报: 自然科学版, 2015, 33(1): 96-99.

PAN Jie, ZHOU Chuansheng. Web Research and Implementation Based on jQuery Framework [J]. Journal of Shenyang Normal University: Natural Science, 2015, 33(1): 96-99.

[14]张红琴, 陈焕英. 基于CSS和JavaScript的网页滚动字幕 [J]. 长春工业大学学报: 自然科学版, 2012, 33(2): 165-170.

ZHANG Hongqin, CHEN Huanying. Web Scrolling Marquee Based on CSS and JavaScript [J]. Journal of Changchun University of Technology: Natural Science Edition, 2012, 33(2): 165-170.

[15]宋占伟, 赵烁, 王盼星, 等. 基于物联网的社区服务信息交互终端与系统 [J]. 吉林大学学报: 信息科学版, 2016, 34(4): 515-521.

SONG Zhanwei, ZHAO Shuo, WANG Panxing, et al. Community Service Information Interaction Terminal and System Based on Internet of Things [J]. Journal of Jilin University: Information Science Edition, 2016, 34(4): 515-521.

猜你喜欢

树莓画布全景
戴上耳机,享受全景声 JVC EXOFIELD XP-EXT1
在画布上做梦的画家 夏加尔
为什么要在画布上割一刀?
基于树莓派的骑行智能头盔设计
让鲜花在画布上盛开
全景敞视主义与侦探小说中的“看”
基于树莓派的远程家居控制系统的设计
从5.1到全景声就这么简单 FOCAL SIB EVO DOLBY ATMOS
全景搜索
响应面法优化红树莓酒发酵工艺