nasa 开源_NASA使用开源工具进行图像处理

nasa 开源

去年夏天,我曾在NASA GlennGVIS实验室实习,在那里我将对开源的热情带入了实验室。 我的任务是提高实验室对Dan Schroeder开发的开源流体流动动力学仿真的贡献。 原始模拟显示了用户可以用鼠标拖入以模拟计算流体动力学的障碍。 我的团队通过添加图像处理代码做出了贡献,该代码分析了实时视频供稿的每一帧,以显示物理对象如何与流体相互作用。 但是,我们还有更多工作要做。

我们希望使图像处理更加健壮,因此我致力于改进图像处理库。

使用新的库,仿真将能够检测轮廓,就地执行坐标转换并找到对象的质心。 图像处理与流体动力学模拟的物理原理没有直接关系。 它使用相机检测物体,并通过获取物体的轮廓为流体流动仿真创建障碍。 然后,进行流体流动仿真,并将输出向下投影到实际对象上。

我的目标是通过三种方式改进仿真:

  1. 找到物体的精确轮廓
  2. 寻找物体的质心
  3. 能够围绕对象的中心进行准确的转换

我的导师建议我安装Node jsOpenCVNode JS 绑定 OpenCV的 。 在等待安装这些组件时,我在其GitHub 页面上的OpenCV绑定上查看了示例代码。 我发现示例代码在JavaScript中,所以因为我不了解JavaScript,所以我从Codecademy开始了短期课​​程。 两天后,我对JavaScript感到厌倦,但准备开始我的项目……其中涉及更多JavaScript。

示例轮廓查找代码效果很好。 实际上,它使我能够在几个小时内完成我的第一个目标! 要获取图像的轮廓,如下所示:

Image processsing at NASA: Lauren Egts' project

具有所有轮廓的原始图像。

这个例子轮廓发现代码工作有点清楚 。 代替检测到物体的轮廓,而是检测图像中的所有轮廓。 这将导致模拟与所有不需要的轮廓相互作用。 这是一个问题,因为它将返回不正确的数据。 为了防止仿真与不必要的轮廓交互,我添加了一个面积约束。 如果轮廓线在某个区域范围内,则将其绘制出来。 面积限制导致轮廓更加整洁。

Image processsing at NASA: Lauren Egts' project

具有阴影轮廓的过滤轮廓。

尽管没有检测到多余的轮廓,但是图像仍然存在问题。 图像中只有一个轮廓,但轮廓本身又翻了一番,并不完整。 面积在这里不是决定性因素,因此该尝试其他方法了。

这次,我没有立即找到轮廓,而是先将图像转换为二进制图像。 二值图像是每个像素为黑色或白色的图像。 为了获得二进制图像,我首先将彩色图像转换为灰度图像。 图像变为灰度后,我在图像上调用了阈值方法。 阈值方法逐像素处理图像,如果像素的颜色值小于30,则像素颜色将变为黑色。 否则,像素值将变为白色。 将原始图像转换为二进制图像后,所得图像如下所示:

Image processsing at NASA: Lauren Egts' project

二进制图像。

然后,我从二值图像中获得了轮廓,从而得到了更清晰的轮廓,没有阴影轮廓。

Image processsing at NASA: Lauren Egts' project

最终清洁轮廓。

在这一点上,我能够获得干净的轮廓并检测重心。 不幸的是,我没有足够的时间来完成关于质心的转换。 由于实习期只有几天,所以我开始考虑在有限的时间内可以做的其他事情。 其中之一是边界矩形。 边界矩形是一个最小的四边形,包含图像的整个轮廓。 边界矩形很重要,因为它是缩放页面轮廓的关键。 不幸的是,我没有时间处理边框,但是我仍然想学习它,因为它是一个有用的工具。

终于,经过所有这些,我能够完成图像处理!

Image processsing at NASA: Lauren Egts' project

最终的图像带有红色的边界矩形和质心。

图像处理代码完成后,我用代码替换了模拟中的旧图像处理代码。 令我惊讶的是,它起作用了!

好吧,主要是。

该程序有内存泄漏,每1/10秒泄漏100MB。 我很高兴不是因为我的代码。 不好的是,修复它是我无法控制的。 好消息是我可以使用一种解决方法。 它不理想,但是它检查了模拟使用的内存量,当使用的内存大于1 GiB时,模拟重新开始。

在NASA实验室,我们使用了许多开源软件,没有它,我的工作是不可能的。

翻译自: https://opensource.com/life/16/3/image-processing-nasa

nasa 开源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值