处理多个图像以检测低信噪比条件下的运动物体

信息处理 图像处理 去噪 视觉跟踪
2022-02-20 01:57:05

我是这个论坛的新手,并且对快速傅立叶变换的使用不熟悉,尽管我可以在 Python 3 中编程一点。

我有一个不寻常的问题,我正在寻求一些关于 (a) 我提出的建议是否可行 (b) 它是否真的有效以及 (c) 如何在 3(或)4 维意义上将其应用到代码中的一般性建议。我很高兴按照自己的节奏完成编码,但我需要一些关于如何解决这个问题的建议。

这是故事。

多年前,我偶然发现了一个 NASA 网站:

https://sungrazer.nrl.navy.mil/

公民科学家可以检查来自 SOHO 宇宙飞船的图像以尝试发现彗星。宇宙飞船有一个用圆盘指向太阳的摄像头来阻挡太阳光,这样你就可以看到太阳附近发生了什么。定期可以看到掠日者彗星在图像中移动。

彗星穿过一系列图像,通常相隔 12 分钟,看起来像一个亮点或恒星以恒定的速度直线移动。我编写了一个 python 程序来识别图像中的亮点,然后查看在数学上看起来像彗星的许多图像中是否存在一系列亮点。它奏效了,通过处理 24 年的数据,我能够识别和发现 27 颗以前未被发现的彗星。每天的数据最多包含 120 张图像,通常相隔 12 分钟,大小为 1024 x 1024 像素,颜色 rgb 值为 0-255,尽管我在处理中只使用了红色值。

实现这一点后,我想尝试处理图像以滤除噪音,看看是否可以将微弱的彗星从噪音中带出来。

这是一个示例系列图像,说明了我在说什么。

wget -r -l1 --no-parent -e robots=off -A *c3_1024.jpg https://soho.nascom.nasa.gov/data/REPROCESSING/Completed/2016/c3/20160313/

这应该会拉下一系列 C3 相机图像。如果您使用 Irfanview 之类的图像查看程序并快速浏览所有图像,就像它是一部电影一样,您会看到一个移动的点出现在图像的左下角,因为噪点。那是一颗彗星。一旦物体足够亮并从噪音中消失,我就不关心识别物体。我希望能够处理一系列这样的图像,以便能够在更早的时间点看到彗星,即当它被埋在噪音中时。

我读过关于如何拍摄图像,使用 FFT 将其转换为频域,通过它放置高通或低通滤波器,然后进行逆 FFT 以重建新过滤的图像的方法。但这只是一个图像。在一张图片中,我的彗星只是一个微弱的点。

但是,如果您将一系列图像(仅限红色值)想象为一系列彼此堆叠的 1024 x 1024 numpy 数组,您最终会得到一个大小为 1024、x 1024 x 120 的立方体(假设有 120 个图像),其中一个轴是时间。在图像之间的时间间隔不是 12 分钟的层中会有间隙。看着那个立方体,彗星将显示为一条直线,例如从 [200][200][10] 到 [300][300][100]。沿着这条线的 3d 像素中的值将从噪声水平开始,随着时间的推移随着彗星接近图像中心(太阳)而逐渐增加。

如果将立方体转换为频域,我认为可以沿着彗星路径看到低频。从理论上讲,应该能够进行 FFT 变换,滤除高频噪声以使该线更明显,然后进行逆 FFT 以重建滤波后的图像。希望那时彗星会在更早的时间点更明显。

我提出的建议可行吗?如果可行,如何在 python 中进行 3d FFT 变换和逆变换以使其成为可能?另外,如何处理图像数据中存在间隙的问题,例如只有如下图像

图像时间

0000 0012 0012 0036 0048 0135 0148 0200 0212 等

我的提议是可行的,还是有更好或更简单的方法来处理这样一系列图像,使微弱的彗星更清晰,让它们远离噪音?

感谢彼得

0个回答
没有发现任何回复~