石新丽 曹梦颖 高雷博 温志达
(1.泊头市气象局 河北沧州061001;2.河北科技大学信息科学与工程学院 石家庄050000;3.沧州天祥防雷检测有限公司 河北沧州061001)
在当今的社会生活中, 农业生产生活占据重要的地位,但是对于农作物所生长的环境,即它处的一个温度、 湿度等环境是否适合于农作物这种监测工作是一个非常巨大的工程。 传统的人力观测农作物生长状况,是一个既耗费时间又耗费体力的过程,所以针对成本价格较高、监测范围较小等问题,整体提出了一个实时检测的方法。
目前监控记录信息的方式主要是以视频为主,它可以直观地反映事物的表象, 大多数的设备都是采用实时画面录像的形式, 随着科技生活的不断进步, 整个物联网应用技术可以利用互联网及智能化设备将一些技术性设备与我们的日常生活进行联系,形成人与物、物与物相连的局面,实现一个信息化、远程管理控制和智能化的前景。 通过造价较低的卡片式电脑树莓派、 单片机和无线网络实现数据和图像自动化、智能化、远程化采集及传输。 也以此得到农作物详细的生长信息, 以便可以对此及时进行调整,减少不必要的损失。
在农作物的生长环境下, 对于硬件这一方面难免会遇到各种自然环境的影响与干扰, 作为需要长时间段记录农作物生长环境的设备, 若想要高效并且准确地监测到真实环境, 是需要基于图像特征的匹配方法来顺利进行的。 这次整体设计将会结合SURF 算法来进行特征匹配及图像的识别工具,该算法是一种基于SIFT 的局部特征检测算法,具有实时性和稳定性。
本研究以树莓派作为核心硬件, 配置一红外摄像头,一大功率红外补光灯板,使用OpenCV 获取农作物所处环境的图像, 采集的图像可以通过阿里云官方的软件开发包将获取到的图像传输至阿里云存储空间 OSS。 然后用 FFmpeg(Fast Forward Mpeg)将图片合成一个直观的动态视频, 合成视频这一个过程可以根据自己的需要改变输出视频的画面质量、输入图片帧速率、输出图片帧速率、视频编码格式、视频的封装格式等。 各种农作物的生长环境是否适合它本身会一目了然地呈现在眼前。 专业种植人员可以通过这段延时摄影来判断作物的长势好坏,以便对作物进行各种作业, 免去了大量的实地观察等工作,既节省了时间又可以达到之前的效果,甚至比以往效率更高。 系统整体结构见图1。
图1 系统整体结构
树莓派是一个只有身份证大小的卡片电脑,运行Linux 操作系统,具有一台PC 的所有基本功能(只需接上外部设备即可使用)。 该树莓派可以通过一系列编程语言,然后装载Linux 系统和相应的应用程序实现多种功能[1]。 此外,树莓派通过 TCP/IP 协议实现了IP 摄像头与树莓派的通讯及图像的实时采集或监视视频。 树莓派硬件资源接口及外设参考见图2。
图2 树莓派硬件资源接口及外设参考
红外摄像头及红外灯板要配合使用, 选择一个可以提供夜视视角的摄像头模块, 选用500 W 像素可调焦的3.6 mm 的一款专门为树莓派设计的摄像头,这个模块通过15 Pin 的软排线与树莓派的csi 接口相连(即树莓派主板上标有“camera”的接口)。但是由于摄像头不能单独在漆黑的夜晚工作, 因此必须要用红外灯为其照明。 红外补光灯板采用光控原理,作为相机夜间采集图像信息的工具, 首选4 颗串联方式连接的LED 发光二极管(有红曝)作为补光灯,供电电源为直流12 V。 可调焦镜头可以根据摄像头的安装位置进行一定的调节, 使用软排线将摄像头与树莓派连接成功后, 需要用软件测试一下它们之间的连接是否良好。 如若全部测试正常,Open CV 就会利用它将画面保存下来。
OpenCV 是一个跨平台的开源计算机视觉库,它的开源性使它可以运行在 Windows、Linux、Mac OS和安卓等的操作品台上。 本设计需要下载它的源代码并对此进行编译。 成功后要执行命令 sudo make install 将编译好的二进制文件放到系统的目录中,完成OpenCV 安装的工作。 其中,变量存储信息是利用OpenCV 中的CV::VideoCapture 这个类选定树莓派的一个摄像头并定义一个变量capture, 保存从摄像头获得的一帧图像,用CV::Mat 定义frame 来存储一个图像结构,再将capture 的内容传递给frame[2]。 拍照流程见图3。
图3 拍照流程
在树莓派中上传图片信息到阿里云对象存储服务需要用到软件开发包,本设计使用C++语言,所以从阿里云官网下载OSS C++ SDK。 照片拍摄完成后需要把图片上传到阿里云存储服务OSS,这个需要事先在操作系统中安装对应的软件开发包。 此时需要使用相应的访问域名来上传文件并对此文件命名。接着从树莓派上通过文件名找到要上传的文件执行上传; 最后释放网络资源, 至此完成图片的上传工作。图像上传流程见图4。图像全部上传后,可以根据工作人员的需求来选择是否需要合成视频。 若想要合成视频,则需要搭建FFmpeg 环境,整体工作进行后就可以使用FFmpeg 工具来根据实际情况合成所需视频。
图4 图像上传流程
在使用红外摄像头与OpenCV 获取图像的过程中,后面要对其进行处理来获取图像的RGB 信息[3],更加准确的一个方法是将二维像素坐标转换为三维点云空间坐标。 由于具有内参矩阵,所以每一个在该空间点的位置和像素坐标都能够用一个简单的矩阵形式来说明,如公式(1)所示。
式中,参数矩阵C如公式(2)所示。 [u,v,d]是图像中的像素坐标,其中d指深度数据。 空间点[x,y,z]和像素坐标[u,v,d]的对应关系如公式(3)所示。
式中,fx、fy是指相机在下x、y两个轴上的焦距,cx、cy指相机的光圈中心,s指深度图的缩放因子。 最后,可以获得三维点云的空间坐标,如公式(4)所示。
特征点的提取与匹配关系到图像配准的精度与整体算法的效率, 该处理使用 SURF 算法进行特征点的提取与匹配, 主要由4 个步骤组成: 第一步是Hessian 矩阵及尺度空间的构建; 第二步是找到定位特征点;第三步是给特征点方向赋值;第四步是得到特征点描述因子。
对于各个像素点都能够得到一个与其对应的Hessian 矩阵, 其中x表示特征点的坐标,σ表示尺度,如公式(5)所示。
匹配特征点时提取出来的特征向量中的欧式距离有一个相关性,但是想要提高整个匹配的精准度,就要剔除一些点 (最近邻欧氏距离和次近邻欧氏距离的比值大于阈值T的点), 即需要满足图5 为阈值T=0.5 的SURF 特征点匹配示例。
图5 阈值T=0.5 的SURF 特征点匹配示例
在完成特征点的匹配之后, 就要从这些所得的匹配点中获取影像的变换矩阵, 这时候图像才能够配准。 但是过程中难免会出现误匹配点,致使所得到的矩阵有些误差。剔除误差时,本研究采用RANSAC算法来进行匹配点筛选并计算出影像变换矩阵。RANSAC 算法的核心在于2 个点集的配准过程,如下表示:pt=Rps+T。 其中,pt与ps为一组对应点,R与T为变换矩阵。
该算法通过一部分“模内点集”迭代估计数学模型的参数,得到一个包含最多点集的最优数学模型。RANSAC 算法具有不确定性, 需要增加迭代次数来提高配准的精度。 对于农作物这种需要长时间记录并不断受自然环境影响的情况, 可以尝试多次迭代来提高所需图像的精准度。
按照流程,硬件与软件都准备好之后,接通电源就可以看到树莓派系统正常运行, 然后进行软件程序的测试,设置定时拍照时间间隔为3 min,拍照完成之后实时上传图片,设置每天1:06 重启树莓派,树莓派本地内存卡保存的照片见图6, FFmpeg 将图片合成视频的结果见图7。
图6 树莓派本地图片
图7 合成视频
本设计以树莓派微核心进行拍照和上传, 树莓派通过OpenCV 实现对作物进行拍照再通过OSS C++ SDK 实时将拍摄到的图片上传到对象存储OSS中, 在电脑端通过OSS 控制台或OSS 图形化界面(OSS-browser)观察到树莓派上传的照片[4]。如果想将一段时间内拍到的照片以视频的形式呈现出来,可以使用FFmpeg 软件将多张图片转换成视频。当视频性能稳定时,可以将视频讲解切割,所分割的分辨率不超过 320×180 像素,单声道 96 kbps 音质,控制每个文件尺寸不超过10 M, 就可以根据需要观察作物生长的情况。
考虑到长时间后自然环境对该设备的影响,可以通过把红外摄像头及OpenCV 所获取的图像信息提取,并且转换得到该图像的RGB 信息来进行坐标的计算,紧接着就是特征点的提取来进行特征匹配。整体工作是使用SURF 算法和RANSAC 算法来消除一些影响因素, 得到后续所需要的农作物在自然条件影响下的生长环境状况的图像。
通过图和视频这种直观性的叙述, 保证了监测到的农作物生长环境的真实性和准确性, 同时节省了大量的人力与物力资源, 避免了各种外界因素的影响, 由此用户可以对农作物的生长环境进行实时监测,以此可以及时对此进行各种改善。 从测试的结果来看,它极大地降低了信息的存储空间,提高了信息的共享能力,使作物的生长过程表现地更加直观。此种监测方法能够实现农作物生长中大范围内的监测。 之后还可以通过增加其他的一些传感器等智能化模块对其进行完善,进而实现更完整的监测,能够更好地应用到生产生活中。