【发布时间】:2015-02-16 15:02:52
【问题描述】:
我正在尝试使用傅里叶描述符在 Matlab 中区分图像的形状。我想要做的是: 1.为每个图像生成傅里叶描述符; 2. 计算这些傅里叶描述符之间的欧几里得距离以比较形状。
我的问题是我不能使计算傅里叶描述符的结果对几何变换不敏感(例如旋转和缩放)。
我现在使用的代码是“Gonzales matlab 版本”,即link 中的那个。我试图通过这样做来规范化结果:
% Normalization
DC = f(1);
f = f(2:11); % getting the first 20 & deleting the dc component
f = abs(f) ; % use magnitudes to be invariant to translation & rotation
f = f/DC; % devide the fourier coeffients by the DC-coefficient to be invariant to scale
但我认为它没有像我预期的那样工作。如果我改变同一图像的方向或比例,结果会有所不同。
我被这个问题困住了几天。如有任何建议,我将不胜感激,提前谢谢大家!
【问题讨论】:
-
注意傅里叶变换保留欧几里得距离...
-
@OliverCharlesworth 感谢您的回复。你说“傅立叶变换保留欧几里得距离”是什么意思?这个问题会导致我的错误吗?
-
您说您正在尝试计算傅里叶域中的欧几里得距离。我的意思是,这个值在未转换的域中将是相同的。
-
@OliverCharlesworth 哦,我明白你的意思了。实际上,我只需要实现傅里叶描述符来描述图像中涉及 fft 的形状。如果您认为有更好的方法来比较形状,请随时告诉我。非常感谢你。 :D
标签: matlab image-processing fft shape fourier-descriptors