在 matlab 中使用 2D fft 进行模式识别

信息处理 matlab 图像处理 fft
2022-01-31 23:01:04

我有一个包含两列(宽度和长度,均以毫米为单位)的数据集。当我制作散点图时(请参考第一张图),我看到了缺陷在平面上的位置。我想找出缺陷的位置是否有某种图案,或者它只是一种噪音。为此,我被建议使用 2D fft 来识别模式。我没有 2D fft 的任何背景,但我阅读了一些文章并使用了 matlab 函数 fft2。我得到了一个我现在不太了解的情节(请参阅第二个图)。任何人都可以暗示让我去吗?一篇不错的文章也可能会有所帮助。我也阅读了以下文章。

http://www.qsimaging.com/ccd_noise_interpret_ffts.html

提前致谢!

在此处输入图像描述

在此处输入图像描述

2个回答

DFT 是查找信号中周期性模式的绝佳工具。但是,您应该了解您想要找到什么样的时期。如果您想找到位于规则网格上的一系列点(间距均匀),或者更数学地说,是点 $(x_i,y_i)$ 的子集,这样存在 $(dx,dy)$以下等式成立:(xi,yi), such that there exists (dx,dy) for which the following equations hold:

xi=x1+dxi
$ y_i =y_1 + dy*j $yi=y1+dyj

(图案也可以旋转,DFT 仍然会找到它们)。

您应该计算具有大量 bin 的数据的 2D 直方图,并在其上运行 DFT。之后,您应该在除 DC 之外的任何位置寻找峰值。理想的噪声应该没有模式,因此频率响应的对比度应该非常低。

我认为您需要数据中的某种“分辨率”。认为您必须将其转换为常规网格。我会说:“没有数据就没有周期性分析,它有一个周期性网格”。如果我错了,请纠正我,但我认为 fft 需要一个较低的边界,即分辨率和较高的边界,即总列数和行数。如果您使用二维平面上的点,其位置由浮点数设置,则 fft 将不得不搜索无穷小的小频率。但是请按照这个关于不规则形状数据的 fft 的问题。也许有人想出了一个主意。

例如,您可以使用小到只能容纳一两个值的 bin 来制作 2d 直方图。这样你就得到了一个矩形网格。

我在一个矩形网格上进行了 2D fft,其数据分布方式与您的类似,并且得到了一个非常模糊的 2D 光谱仪,就像在我的问题中发布的一样仍然有一些突出的峰值。我认为您的光谱仪还应该显示分布在整个 2D 平面上的许多频率,所以我认为您推导它的方法不太正确。不幸的是,我无法帮助您使用 matlab。