虽然卫星照片和雷达提供了地球表面几乎每平方米的高分辨率图像,但海底的景象更加一尘不染,细节更少。然而,准确的海底地图对科学研究和许多工业应用至关重要。除了对海洋学、地球科学和生物学感兴趣外,对海底轮廓和组成的精确了解还有助于电力公司布置风电场和钻井平台,通信公司规划铺设光缆的位置,环境专家评估气候变化对海洋的影响。
海底相对模糊的视图并非由于缺乏数据;配备多波束回声测深仪(MBES)的船舶此外,侧扫声纳系统还可以测量广阔的海域,收集数TB的原始海洋学数据。然而,在科学家和工程师将这些信息应用到工作中之前,他们必须将其转化为有意义的数据。
虽然我不是一个专业的程序员,但是MATLAB®使我能够运用我在信号处理和声纳方面的专业知识来开发和部署声纳示波器®,一种用于处理、分析和可视化原始MBES数据的高性能软件产品。SonarScope具有高度的可定制性,为MBES数据处理提供了一种独创的方法,使其成为需要测试和校准MBES系统的研究人员和工程师的宝贵工具。
MATLAB被证明是开发SonarScope的理想环境,因为它使我能够开发算法,可视化结果,然后在迭代周期中优化算法。对于C++这样的语言,设计迭代需要更长的时间,这需要额外的编译和链接步骤,以及大量的附加编程来可视化结果。
从基本算法到独立软件
当我开始开发MBE和sonar数据分析算法时,我并不打算创建一个完整的软件包;我只是需要可靠的分析工具来进行研究。我用C开发了原始算法。由于C的编译、链接和执行周期缓慢,无法在调试器中检查数据,我发现C效率低下转向MATLAB。
在MATLAB中,我以交互方式开发算法,可以立即绘制结果,以查看任何更改的效果。信号处理工具箱中的函数™,图像处理工具箱™,优化工具箱™,以及统计和机器学习工具箱™进一步加快开发速度,因为我不必自己编写和调试它们。
在开发了最终将构成SonarScope基础的算法后不久,我意识到,如果我创建一个图形界面来驱动MBES数据的分析,我的工作可能会有更广泛的影响,我的更多同事可以利用我的专业知识。这促使我使用定制的标签和按钮构建SonarScope界面,这些标签和按钮的术语我的同事很容易理解(图1)。这个界面受到了我的同事们的欢迎。这也提高了其他机构研究人员对我工作的认识。
由于对SonaScope的兴趣超出了Ifremer,我使用了MATLAB编译器™构建一个独立的软件包,供研究人员使用,即使他们无法访问MATLAB。今天,任何希望处理海底测绘声纳数据的研究人员或工程师都可以使用声纳示波器。
收集数据
为了测量海底,配备MBES的船舶沿着一系列平行线覆盖待测绘区域。测量线两侧覆盖的线束宽可达20公里。它们重叠以确保没有未测绘的区域。当船舶沿着每个线束行驶时,MBES传输一系列高强度sho信号rt持续时间ping. 每一个ping都在几百根梁内接收和处理,这些梁在一个跨度内从船的正下方转向swath的边缘(图2)。
对于每个波束,MBE记录发送信号和接收回波之间的时间间隔。该度量用于计算从船舶到波束“看到”的海底点的倾斜范围,并最终建立描述海底的数字地形模型。记录回波强度是因为它与海底的反射率相关,因此也与海底的物理特征相关。这种反射率可用于区分岩石、沙子、植被和海底的其他特征。
要生成精确到厘米以内的海底地图,算法必须考虑回波延迟、波束的传输角度和运动(横摇、纵摇和垂荡)所有这些原始数据以及MBE传输的每一次ping的船舶纬度和经度都会被记录下来。在一次调查中收集的数据为千兆字节,有时为千兆字节,通常持续几天到几周。
执行复杂的转换
将从MBES设备获取的原始数据转换为海底地图需要进行涉及多个几何体的复杂转换。利用MATLAB和映射工具箱™,我开发了算法,用于处理单个ping的数据,并计算ping覆盖的海底深度(图3)。除了识别海底的特征外,这些算法还检测水的特征。例如,它们可以探测到由海底释放的气体引起的气泡羽流。
除了测深,SonaScope还执行许多不同类型的数据处理,所有这些都由MATLAB和相关工具箱支持。我使用MATLAB、统计和机器学习工具箱、图像处理工具箱和信号处理工万博1manbetx具箱来实现降噪、斑点滤波、分割和底部检测技术。我使用优化工具箱在整个范围内进行曲线拟合。我计划用地图工具箱中提供的地图投影替换我自己的地图投影。
分割算法基于纹理分析,使用共生矩阵和Gabor滤波器(图4)。边界线由基于MATLAB的分割算法自动绘制。
应用面向对象编程技术处理超大数据集
SonarScope包含大约270000行MATLAB代码。用C编写的类似软件包通常包含一百万行或更多的代码。然而,如果没有有效地组织和重用代码的方法,开发和维护任何具有数十万行代码的项目都可能是一项挑战。我使用MATLAB语言的面向对象(OO)编程功能为在整个应用程序中频繁重用的组件创建类。例如,我为图像定义了一个类,通过更改参数值,可以轻松地管理和操作图像实例。
通过应用OO原则,SonarScope处理的超大数据集也变得更容易。当对持有十亿字节数据的大矩阵执行操作时,很容易耗尽计算机内存。为了解决这个问题,我创建了一个使用MATLAB的类memmapfile
对象将动态内存映射到硬盘上的文件。使用这种方法,我可以轻松地处理10000 x 10000个矩阵,但在内存中仅使用120个字节。使用该类,无论变量是MATLAB矩阵还是矩阵,对变量值的访问都是相同的cl_memmapfile
对象
SonarScope接口利用可重用的类对象和由MATLAB启用的OO设计模式,提供拖放功能、属性编辑器、用于平移和缩放的键盘快捷键以及自定义菜单。
构建独立的应用程序
许多使用声纳示波器的研究人员、科学家和工程师都熟悉MATLAB。然而,并不是每个用户都是MATLAB专家,也不是所有用户的工作站上都安装了MATLAB。为了向这些用户提供解决方案,我使用MATLAB编译器创建了SonarScope for Windows的独立32位和64位版本®和Linux®操作系统。
凭借其详细且可定制的数据处理能力,SonarScope擅长帮助工程师验证、校准和排除MBE硬件故障。当MBE系统产生数据中显示的无关工件时,工程师使用SonaScope动态检查数据并确定工件的来源。在一个案例中,为了最大限度地减少测深数据中的尖峰数量,一家MBES制造商将他们使用的海底探测算法替换为SonaScope的算法。
SonarScope的发展是积极的和持续的。我继续更新代码,以利用MATLAB中可用的新特性,并使我能够与世界各地更多的研究同事有效协作。
SonarScope在新罕布什尔大学工作
Mashkoor Malik,新罕布什尔大学
在新罕布什尔大学(UNH)海岸和海洋制图中心,我们使用SonarScope进行评估。后向散射多波束声纳系统的特征。后向散射是返回到声纳的声能量。多波束声纳通常用于测量海底深度和获取海底的连续三维地图。多波束后向散射研究是一个新兴领域,具有许多有前途的应用。例如,它在海底沉积物的分类、渔业栖息地的特征、越洋电缆合适路线的评估以及矿物和自然资源的鉴定。
SonarScope使我们能够快速评估数据质量并应用一系列数据采集和处理参数,从而加速海底后向散射分析。
在最近的一个研究项目中,我们需要分析两周的连续MBES采样,该采样产生了超过600GB的数据。通过使用SonaScope对数据进行预处理,我们在项目上节省了数月的代码开发时间,然后将数据集成到MATLAB中进行进一步分析。如果没有声纳,我们所做的工作会慢得多,在某些情况下是不可能的。
马什库尔·马利克(Mashkoor Malik)是UNH的博士生,他与UNH海岸和海洋测绘中心主任拉里·迈耶教授合作。