自动运动识别

计算科学 软件 图像处理 模式识别
2021-12-17 00:07:52

C使用能够读取高达 4096x4096 像素(或其他传感器几何形状)的天文学图像、搜索明亮或微弱的斑点、计算其亚像素质心、与其他相同位置进行比较的自动软件的编程难度有多大或下一张图像,在其中寻找其他斑点,如果图像之间的时间间隔相等,则最终通过其线性运动/等运动间隔找到相同的斑点?

此外,作为一个附加功能,拍摄其间具有相等时间间隔的后续图像并将它们叠加,使得通过信号累积和噪声平均可以看到非常微弱的斑点,并按照上面概述的方式进行操作,直到找到相同的线性运动斑点。

C为了编程,一个人需要具备哪些关键技能?

如果希望程序在 1 分钟内完成 3 个后续图像,那么哪种计算机硬件是合理的?

2个回答

您将从信号处理方面的知识中受益匪浅,但一些特定的有用知识将是计算机视觉和估计(如卡尔曼滤波器或 alpha beta 滤波器)。

关于跟踪 blob,您可以使用 blob 检测器算法来找到有意义的 blob,使用像 SIFT 这样的描述符来描述 blob,然后在图像之间进行特征匹配以找出匹配的 blob。然后根据图像之间的匹配和时间差异,您可以对速度进行某种卡尔曼滤波器估计。

正如我在下面的评论中提到的,您可以用来解决此问题的常用库之一是 OpenCV。它涵盖了您最终可能遇到的最常见的计算机视觉和图像处理问题。我会注意到,您可能必须尝试各种算法,因为它们并不总是表现得尽可能稳健。当我在喷气推进实验室的计算机视觉小组工作时,我发现与 NASA 工程师制作的内部算法相比,OpenCV 未能实现各种算法,使其尽可能快速和强大。即使对于像斑点检测和特征描述符这样的简单事情,NASA 的代码也要好得多。

量化难度的答案并非易事。它已经在很大程度上取决于您的编程技能。由于不被认为是一种简单的语言,因此更简单的答案并不那么容易。有理由不使用吗?如果您想改进基本但必不可少的功能,您仍然可以用风格的代码,并且不必被迫使用面向对象的编码风格。CCC++CC++

此外,寻找可用的库,例如openCV那将大大改善您的斑点检测。它是一个常用的图片分析库。blob 检测很可能是您运行时的关键步骤。您的输入数据大小约为 16 mio 点。找到质心是可以忽略的(可以在线性时间内完成)。由于 blob 的数量应远低于 16 mio,因此您算法的最后一部分可能会使用您可以快速接受OpenCV 的使用最有可能为您提供最大的运行时效率以及第一步的简短易读的代码。n2

计算机规格:一般来说,所描述的问题听起来并不难计算。最有可能的是标准计算机可以解决问题。您可以使用 Photoshop 或 Gimp 在测试图片上测试情节检测,以获得感觉。如果您遇到时间问题:只有在进行 GPU 计算时,更好的显卡才会对您有所帮助。很可能你不会。只有在使用多线程时,增加内核数量才会对您有所帮助。你需要确保你能够这样做。内存应该不是问题。4kx4k 像素不算什么。