我正在尝试构建一个简单的系统来使用傅立叶描述符识别简单的形状:我在我的程序中使用快速傅立叶变换的这种实现:(下面的链接)
http://www.wikijava.org/wiki/The_Fast_Fourier_Transform_in_Java_%28part_1%29
fft(double[] inputReal, double[] inputImag, boolean direction)
输入是:real 和 imag 部分(本质上是我拥有的边界参数的 x,y 坐标),输出是转换后的 real 和 imag 数。
问题:如何使用输出(变换的 real,imag )作为我的简单形状的不变描述符?
这就是我的想法:
- 每N步计算
R = sqrt( real^2 + imag^2 )
。 - 将每个
R
除以R[1]
= 归一化因子以使其不变。
问题是对于略有不同的图像(例如应用轻微旋转等),我得到了非常不同的 R 值
换句话说:
我的描述符不是一成不变的......我认为我在获取 R 值方面做错了。